Move stub library generation to top-level Tuprules

This commit is contained in:
Ehmry - 2019-07-01 17:09:35 +02:00
parent cd81f893f2
commit b754139ffc
5 changed files with 28 additions and 54 deletions

View File

@ -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)/<pkg-config> |> ^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)/<pkg-config> |> ^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)/<pkg-config> |> ^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)/<pkg-config> |> ^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)/<lib> $(GENODE_DIR)/<pkg-config> |> ^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)/<stub>

View File

@ -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)/<pkg-config>

View File

@ -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
'';
}

View File

@ -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)/<pkg-config>

View File

@ -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
'';
}