diff --git a/.gitignore b/.gitignore index 00dd0c105..d1c065e87 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,16 @@ /toolchain-* /sdk-* /.gitignore +result +##### TUP GITIGNORE ##### +##### Lines below automatically generated by Tup. +##### Do not edit. +.tup +/.gitignore +/Makefile +/bin-list +/depot +/pkg.sed +/public +/raw-list +/versions.sed diff --git a/Tuprules.tup b/Tuprules.tup index e7ed3776d..ee0ffc1b3 100644 --- a/Tuprules.tup +++ b/Tuprules.tup @@ -1,5 +1,17 @@ .gitignore +ifeq (@(TUP_ARCH),i386) +CC_MARCH = -march=i686 -m32 +LD_MARCH = -melf_i386 +endif + +ifeq (@(TUP_ARCH),x86_64) +CC_MARCH = -m64 -mcmodel=large +LD_MARCH = -melf_x86_64 +endif + +GENODE_DIR = $(TUP_CWD)/upstream + ifeq ($(RAW_NAME),) RAW_NAME = $(TARGET_NAME) endif @@ -22,7 +34,7 @@ endif DEPOT_DIR = $(TUP_CWD)/depot DEPOT_RAW_DIR = $(DEPOT_DIR)/raw -DEPOT_BIN_DIR = $(DEPOT_DIR)/bin/@(TUP_ARCH) +DEPOT_BIN_DIR = $(DEPOT_DIR)/bin DEPOT_PKG_DIR = $(DEPOT_DIR)/pkg PUBLIC_DIR = $(TUP_CWD)/public @@ -99,17 +111,19 @@ SDK_INCLUDE = $(TUP_CWD)/sdk.tup ERRATA_DIR = $(TUP_CWD)/errata -PKG_CONFIG = PKG_CONFIG_PATH=@(PKG_CONFIG_PATH) pkg-config +export PKG_CONFIG_PATH +PKG_CONFIG = PKG_CONFIG_PATH=$(GENODE_DIR)/pkg-config:$PKG_CONFIG_PATH pkg-config ifndef TOOL_CHAIN_PREFIX error TOOL_CHAIN_PREFIX not configured endif -CC = $(TOOL_CHAIN_PREFIX)gcc -CXX = $(TOOL_CHAIN_PREFIX)g++ -LD= $(TOOL_CHAIN_PREFIX)ld -AR = $(TOOL_CHAIN_PREFIX)ar +CC = @(TOOL_CHAIN_PREFIX)gcc +CXX = @(TOOL_CHAIN_PREFIX)g++ +LD= @(TOOL_CHAIN_PREFIX)ld +AR = @(TOOL_CHAIN_PREFIX)ar +OBJCOPY = @(TOOL_CHAIN_PREFIX)objcopy !cc = |> ^ CC %f^ $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) -c %f -o %o |> -!cxx = |> ^ CC %f^ $(CC) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) -c %f -o %o |> +!cxx = | $(GENODE_DIR)/ |> ^ CC %f^ $(CC) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) -c %f -o %o |> !ld = |> ^ LD %o^ $(LD) $(LDFLAGS) %f -o %o |> diff --git a/default.nix b/default.nix index 1fc80ec9a..594d55c38 100644 --- a/default.nix +++ b/default.nix @@ -1,9 +1,15 @@ { pkgs ? import {} }: with pkgs; +let + lddir = ./upstream/repos/base/src/ld; + toolchain = import ./errata/toolchain.nix { inherit pkgs; }; + sdk = import ./sdk { inherit pkgs toolchain; }; + ports = import ./upstream/repos/libports/ports { }; +in pkgs.mkShell { name = "genode-dev-env"; nativeBuildInputs = - [ (import ./errata/toolchain.nix { inherit pkgs; }) + [ toolchain stdenv.glibc.dev git tup ccache @@ -13,6 +19,7 @@ pkgs.mkShell { findutils autoconf264 autogen + cdrtools expect libxml2 syslinux qemu xorriso @@ -38,8 +45,15 @@ pkgs.mkShell { ncurses ]; + passthru = { inherit lddir sdk toolchain; }; + shellHook = '' + export SDK_DIR=${sdk} + export LD_DIR=${lddir} + export PKG_CONFIG_PATH=${sdk}/pkg-config + export TOOLCHAIN_DIR=${toolchain} + export SYSLINUX=${syslinux} export PROMPT_DIRTRIM=2 export PS1="\[\033[1;30m\]Genode-dev [\[\033[1;37m\]\w\[\033[1;30m\]] $\[\033[0m\] " export PS2="\[\033[1;30m\]>\[\033[0m\] " diff --git a/tests/iso/Tupfile b/tests/iso/Tupfile index 66b0c6b95..8e32789f5 100644 --- a/tests/iso/Tupfile +++ b/tests/iso/Tupfile @@ -1,31 +1,30 @@ include_rules export SYSLINUX +: config |> \ + echo %f | awk -f a.awk >> %o; \ + echo %f | awk -f b.awk >> %o; \ + echo %f | awk -f c.awk >> %o; \ +|> modules.s -# boot_modules.o {modules} +: modules.s |> $(CC) $(CC_MARCH) -c %f -o %o |> boot_modules.o LINK_ADDRESS = 0x01000000 -# : {modules} - -: modules.txt |> \ - awk -f a.awk < %f >> %o; \ - awk -f b.awk < %f >> %o; \ - awk -f c.awk < %f >> %o; \ -|> modules.s - -: | \ +: boot_modules.o | \ $(GENODE_DIR)/repos/base-nova/ \ - $(GENODE_DIR)/repos/base-nova/ \ |> \ - $(CXX) -nostdlib \ + $(CXX) $(CC_MARCH) -nostdlib \ + -Wl,-T -Wl,$(GENODE_DIR)/repos/base/src/ld/genode.ld \ -Wl,-z -Wl,max-page-size=0x1000 \ -Wl,-Ttext=$(LINK_ADDRESS) -Wl,-gc-sections \ -Wl,-nostdlib \ -Wl,--whole-archive -Wl,--start-group \ - % % \ + % %f \ -Wl,--no-whole-archive \ - -Wl,--end-group $libgcc -o %o \ + -Wl,--end-group \ + `$(CXX) $(CC_MARCH) -print-libgcc-file-name` \ + -o %o \ |> image.elf : image.elf |> gzip --keep %f |> %b.gz diff --git a/upstream b/upstream index 11d2a2957..49098b9af 160000 --- a/upstream +++ b/upstream @@ -1 +1 @@ -Subproject commit 11d2a2957af3794ba9776d0958c2165699a77ffd +Subproject commit 49098b9af3d089ca4a367d8e12c95d7b792460df