diff --git a/Tuprules.tup b/Tuprules.tup index 664af91..5c86076 100644 --- a/Tuprules.tup +++ b/Tuprules.tup @@ -20,6 +20,7 @@ CC_MARCH = -march=armv8-a endif GENODE_DIR = $(TUP_CWD)/upstream +STUB_DIR = $(TUP_CWD)/stub export NIX_PATH NIX_BUILD = nix-build --option substitute false @@ -162,7 +163,7 @@ PKG_CONFIG = PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config !cc = | $(GENODE_DIR)/ |> ^o CC %f^ @(CC_WRAPPER) $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` $(INCLUDES) -c %f -o %o |> %B.o -!cc_port = | $(GENODE_DIR)/ |> ^o CC %o^ @(CC_WRAPPER) $(CC) -c $(DEFINES) $(CFLAGS) $(CFLAGS_%f) $(INCLUDES) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` -o %o |> %B.o +!cc_port = | $(GENODE_DIR)/ |> ^o CC %o^ @(CC_WRAPPER) $(CC) -c $(DEFINES) $(CFLAGS) $(CFLAGS_%o) $(INCLUDES) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` -o %o |> %B.o !cxx = | $(GENODE_DIR)/ |> ^o CXX %b^ @(CC_WRAPPER) $(CXX) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS)` $(INCLUDES) -c %f -o %o |> %B.o @@ -171,3 +172,29 @@ PKG_CONFIG = PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config !ld = | $(GENODE_DIR)/ $(GENODE_DIR)/ |> ^o LD %o^ $(LD) $(LDFLAGS) `$(PKG_CONFIG) --libs $(LIBS)` %f -o %o |> !strip = |> strip -o %o %f |> + +&LD_SCRIPT_SO = upstream/repos/base/src/ld/genode_rel.ld + +ifeq (@(TUP_ARCH),x86_64) + ASM_SYM_DEPENDENCY = movq \1@GOTPCREL(%rip), %rax +else + ASM_SYM_DEPENDENCY = .long \1 +endif + +!abi_stub = |> ^ STUB %o^\ + sed \ + -e "s/^\(\w\+\) D \(\w\+\)\$/.data; .global \1; .type \1,%%object; .size \1,\2; \1:/p" \ + -e "s/^\(\w\+\) V/.data; .weak \1; .type \1,%%object; \1:/p" \ + -e "s/^\(\w\+\) T/.text; .global \1; .type \1,%%function; \1:/p" \ + -e "s/^\(\w\+\) R \(\w\+\)\$/.section .rodata; .global \1; .type \1,%%object; .size \1,\2; \1:/p" \ + -e "s/^\(\w\+\) W/.text; .weak \1; .type \1,%%function; \1:/p" \ + -e "s/^\(\w\+\) B \(\w\+\)\$/.bss; .global \1; .type \1,%%object; .size \1,\2; \1:/p" \ + -e "s/^\(\w\+\) U/.text; .global \1; $(ASM_SYM_DEPENDENCY)/p" \ + %f \ + | $(CC) -x assembler -c - -o tmp.o; \ + $(LD) -o %o \ + -shared \ + -T &(LD_SCRIPT_SO) \ + tmp.o; \ + rm tmp.o; \ +|> $(STUB_DIR)/%B.lib.so $(GENODE_DIR)/ diff --git a/ports/chuck/Tupfile b/ports/chuck/Tupfile deleted file mode 100644 index ab79e9b..0000000 --- a/ports/chuck/Tupfile +++ /dev/null @@ -1,7 +0,0 @@ -include_rules - -: |> $(NIX_BUILD) .. --out-link port \ - --attr source --attr include |> port-source port-include {port} - -: port-source |> cp %f/%d.pc %o \ - |> $(PKG_CONFIG_DIR)/%d.pc $(GENODE_DIR)/ diff --git a/ports/chuck/default.nix b/ports/chuck/default.nix deleted file mode 100644 index 496472b..0000000 --- a/ports/chuck/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ preparePort, chuck }: - -preparePort rec { - inherit (chuck) name version src; - outputs = [ "source" ]; - - sourceRoot = "${name}/src"; - - installPhase = - '' - mkdir -p $source - cp -r core host scripts $source - ''; -} diff --git a/ports/rtaudio/Tupfile b/ports/rtaudio/Tupfile deleted file mode 100644 index ab79e9b..0000000 --- a/ports/rtaudio/Tupfile +++ /dev/null @@ -1,7 +0,0 @@ -include_rules - -: |> $(NIX_BUILD) .. --out-link port \ - --attr source --attr include |> port-source port-include {port} - -: port-source |> cp %f/%d.pc %o \ - |> $(PKG_CONFIG_DIR)/%d.pc $(GENODE_DIR)/ diff --git a/ports/rtaudio/default.nix b/ports/rtaudio/default.nix deleted file mode 100644 index cc8987a..0000000 --- a/ports/rtaudio/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ preparePort, rtaudio }: - -preparePort rec { - inherit (rtaudio) name version src; - outputs = [ "source" "include" ]; - buildPhase = - '' - mkdir $source $include - sed \ - -e "s|^includedir.*|include=$include|" \ - -e 's/@PACKAGE_VERSION@/${version}/' \ - -e 's/@req@/stdcxx/' \ - -e 's/^Libs:.*/Libs: -l:rtaudio.lib.so/' \ - -e '/pthread/d' \ - -e 's/@api@/-D__GENODE_AUDIO__/' \ - -e '/@/d' \ - -e '/prefix/d' \ - < rtaudio.pc.in > $source/rtaudio.pc - ''; - installPhase = - '' - cp -rv RtAudio.cpp rtaudio_c.cpp include $source - cp RtAudio.h rtaudio_c.h $include - ''; -}