mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-18 10:46:25 +00:00
Enforce use of a custom Nim compiler
Use a custom Nim compiler at '/usr/local/genode-nim' that can be built with a makefile at 'tool/tool_chain_nim'. Fix #2545
This commit is contained in:
parent
990b7945a7
commit
caba2d3021
@ -94,11 +94,16 @@ ifeq ($(NIM_CPU),)
|
||||
$(warning NIM_CPU not defined for any of the following SPECS: $(SPECS))
|
||||
else
|
||||
|
||||
ifeq ($(wildcard $(NIM)),)
|
||||
$(error Nim compiler not found at $(NIM), see the 'tool/tool_chain_nim' script)
|
||||
endif
|
||||
|
||||
NIM_MAKEFILES := $(foreach X,$(SRC_NIM),$(X).mk)
|
||||
|
||||
NIM_ARGS = --compileOnly --os:genode --cpu:$(NIM_CPU)
|
||||
NIM_ARGS += --verbosity:0 --hint[Processing]:off --nimcache:.
|
||||
NIM_ARGS += --noCppExceptions
|
||||
NIM_ARGS += $(foreach X,$(call select_from_repositories,include/nim),--path:$(X))
|
||||
NIM_ARGS += $(foreach DIR,$(foreach REP,$(REPOSITORIES),$(wildcard $(REP)/include/nim)), --path:$(DIR))
|
||||
NIM_ARGS += $(NIM_OPT)
|
||||
|
||||
# Generate the C++ sources and compilation info
|
||||
|
@ -55,7 +55,7 @@ HOST_CC = $(CUSTOM_HOST_CC)
|
||||
#
|
||||
# Nim toolchain
|
||||
#
|
||||
NIM ?= nim
|
||||
NIM ?= /usr/local/genode-nim/bin/nim
|
||||
|
||||
#
|
||||
# JSON parsing utility
|
||||
|
1
repos/libports/ports/nim-csources.hash
Normal file
1
repos/libports/ports/nim-csources.hash
Normal file
@ -0,0 +1 @@
|
||||
83abcf5efae001cbe80d473b18d8e5314f1e1500
|
11
repos/libports/ports/nim-csources.port
Normal file
11
repos/libports/ports/nim-csources.port
Normal file
@ -0,0 +1,11 @@
|
||||
LICENSE := MIT
|
||||
VERSION := 0.17.2
|
||||
DOWNLOADS := nim-csources.archive
|
||||
|
||||
OWNER = nim-lang
|
||||
REPO = csources
|
||||
REV = 08c310bb8277611711ca06619526ec08f1feffaf
|
||||
|
||||
URL(nim-csources) := https://github.com/$(OWNER)/$(REPO)/archive/$(REV).tar.gz
|
||||
SHA(nim-csources) := 659cbaf6081ede035342dbb05c70fd9184d1446b
|
||||
DIR(nim-csources) := .
|
1
repos/libports/ports/nim.hash
Normal file
1
repos/libports/ports/nim.hash
Normal file
@ -0,0 +1 @@
|
||||
11b0318a9b77aacfb46ec52a5d4df36bce2fd954
|
11
repos/libports/ports/nim.port
Normal file
11
repos/libports/ports/nim.port
Normal file
@ -0,0 +1,11 @@
|
||||
LICENSE := MIT
|
||||
VERSION := 0.17.2
|
||||
DOWNLOADS := nim.archive
|
||||
|
||||
OWNER := ehmry
|
||||
REPO := nim
|
||||
REV := c129528e8eff8ec8b84664d0b64e8ca89745df2a
|
||||
|
||||
URL(nim) := https://github.com/$(OWNER)/$(REPO)/archive/$(REV).tar.gz
|
||||
SHA(nim) := 5350686dfb42a871f6bdbbd634e30b68b39b9d46
|
||||
DIR(nim) := .
|
@ -32,7 +32,7 @@ set config {
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides> <service name="Rtc"/> </provides>
|
||||
</start>
|
||||
<start name="test-nim">
|
||||
<start name="test-nim" caps="128">
|
||||
<resource name="RAM" quantum="10M"/>
|
||||
<config>
|
||||
<vfs>
|
||||
|
@ -110,3 +110,4 @@ suite "garbage collector":
|
||||
echo GC_getStatistics()
|
||||
|
||||
echo "done"
|
||||
quit 0
|
||||
|
73
tool/tool_chain_nim
Executable file
73
tool/tool_chain_nim
Executable file
@ -0,0 +1,73 @@
|
||||
#!/usr/bin/make -f
|
||||
#
|
||||
# \brief Tool for preparing the Nim tool-chain for the Genode OS Framework
|
||||
# \author Emery Hemingway
|
||||
# \date 2017-07-04
|
||||
#
|
||||
|
||||
help:
|
||||
@$(ECHO)
|
||||
@$(ECHO) "Build Nim compiler for the Genode OS Framework tool chain"
|
||||
@$(ECHO)
|
||||
@$(ECHO) "--- available commands ---"
|
||||
@$(ECHO) "build - build Nim compiler"
|
||||
@$(ECHO) "clean - clean everything except contrib sources"
|
||||
@$(ECHO) "install - copy Nim compiler and standard library to '$(INSTALL_LOCATION)'"
|
||||
@$(ECHO)
|
||||
|
||||
.PHONY: build help install
|
||||
|
||||
GENODE_DIR ?= $(realpath $(dir $(firstword $(MAKEFILE_LIST)))/..)
|
||||
include $(GENODE_DIR)/tool/ports/mk/common.inc
|
||||
|
||||
LOCAL_INSTALL_LOCATION ?= /usr/local
|
||||
INSTALL_LOCATION := $(LOCAL_INSTALL_LOCATION)/genode-nim
|
||||
|
||||
NIM_CONTRIB_DIR = $(shell $(GENODE_DIR)/tool/ports/current nim)
|
||||
NIM_CSOURCES_CONTRIB_DIR = $(shell $(GENODE_DIR)/tool/ports/current nim-csources)
|
||||
|
||||
BUILD_DIR = build/nim
|
||||
|
||||
build: $(BUILD_DIR)/bin/nim $(BUILD_DIR)/koch
|
||||
|
||||
$(BUILD_DIR)/bin/nim: $(BUILD_DIR)/koch
|
||||
@$(ECHO) "$(BRIGHT_COL)building Nim compiler...$(DEFAULT_COL)"
|
||||
$(VERBOSE)cd $(BUILD_DIR) && ./koch boot -d:release --verbosity:0 --hint[Processing]:off
|
||||
|
||||
$(BUILD_DIR)/koch: $(BUILD_DIR)/koch.nim $(BUILD_DIR)/.bootstrap.tag
|
||||
@$(ECHO) "$(BRIGHT_COL)building Koch...$(DEFAULT_COL)"
|
||||
$(VERBOSE)cd $(BUILD_DIR) && ./bin/nim c koch
|
||||
|
||||
$(BUILD_DIR)/.bootstrap.tag: $(BUILD_DIR)/csources
|
||||
@$(ECHO) "$(BRIGHT_COL)building bootstrap compiler...$(DEFAULT_COL)"
|
||||
$(VERBOSE)cd $(BUILD_DIR)/csources && sh build.sh
|
||||
@touch $@
|
||||
|
||||
$(BUILD_DIR)/csources: $(NIM_CSOURCES_CONTRIB_DIR) $(BUILD_DIR)/koch.nim
|
||||
@$(ECHO) "$(BRIGHT_COL)copying Nim C sources...$(DEFAULT_COL)"
|
||||
$(VERBOSE)mkdir -p $@
|
||||
$(VERBOSE)cp -a $</* $@
|
||||
|
||||
$(BUILD_DIR)/koch.nim: $(NIM_CONTRIB_DIR)
|
||||
@$(ECHO) "$(BRIGHT_COL)copying Nim sources...$(DEFAULT_COL)"
|
||||
$(VERBOSE)mkdir -p $(BUILD_DIR)
|
||||
$(VERBOSE)cp -a $</* $(BUILD_DIR)
|
||||
|
||||
$(NIM_CONTRIB_DIR):
|
||||
@$(ECHO) "$(BRIGHT_COL)preparing Nim...$(DEFAULT_COL)"
|
||||
$(VERBOSE)$(GENODE_DIR)/tool/ports/prepare_port nim
|
||||
|
||||
$(NIM_CSOURCES_CONTRIB_DIR):
|
||||
@$(ECHO) "$(BRIGHT_COL)preparing Nim C sources...$(DEFAULT_COL)"
|
||||
$(VERBOSE)$(GENODE_DIR)/tool/ports/prepare_port nim-csources
|
||||
|
||||
copy: build
|
||||
@$(ECHO) "$(BRIGHT_COL)installing Nim to '$(INSTALL_LOCATION)'...$(DEFAULT_COL)"
|
||||
$(VERBOSE)rm -r $(BUILD_DIR)/csources
|
||||
$(VERBOSE)sudo mkdir -p $(INSTALL_LOCATION)
|
||||
$(VERBOSE)sudo cp -a $(BUILD_DIR)/* $(INSTALL_LOCATION)
|
||||
|
||||
install: copy
|
||||
|
||||
clean:
|
||||
$(VERBOSE)rm -rf $(BUILD_DIR)
|
Loading…
Reference in New Issue
Block a user