From 5587f0992b6d39b12492aac372125b90bab2d933 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Sat, 21 Sep 2019 15:13:27 +0200 Subject: [PATCH] Tup: build static libraries into the dev output --- Tuprules.tup | 26 ++++++++++++++++--- repos/base-linux/src/core/Tupfile | 8 +++--- repos/base-linux/src/lib/ld/Tupfile | 9 +++---- repos/base-linux/src/lib/lx_hybrid/Tupfile | 4 +-- repos/base-nova/src/lib/ld/Tupfile | 11 ++++---- repos/base/src/lib/alarm/Tupfile | 4 ++- repos/base/src/lib/cxx/Tupfile | 4 ++- repos/base/src/lib/ldso-startup/Tupfile | 7 +++++ .../{ldso/startup => ldso-startup}/startup.cc | 0 .../startup => ldso-startup}/unwind_exidx.cc | 0 repos/base/src/lib/ldso/startup/Tupfile | 6 ----- repos/base/src/lib/startup/Tupfile | 4 ++- repos/base/src/lib/timeout/Tupfile | 4 ++- repos/gems/src/app/backdrop/Tupfile | 4 +-- repos/gems/src/server/nit_fader/Tupfile | 5 ++-- repos/os/src/lib/blit/Tupfile | 7 +++-- repos/os/src/lib/net/Tupfile | 6 +++++ repos/os/src/server/nic_dump/Tupfile | 2 +- repos/os/src/server/nic_router/Tupfile | 3 +-- repos/os/src/server/nitpicker/Tupfile | 5 ++-- 20 files changed, 73 insertions(+), 46 deletions(-) create mode 100644 repos/base/src/lib/ldso-startup/Tupfile rename repos/base/src/lib/{ldso/startup => ldso-startup}/startup.cc (100%) rename repos/base/src/lib/{ldso/startup => ldso-startup}/unwind_exidx.cc (100%) delete mode 100644 repos/base/src/lib/ldso/startup/Tupfile create mode 100644 repos/os/src/lib/net/Tupfile diff --git a/Tuprules.tup b/Tuprules.tup index c9ce54ae8..aa0a04d26 100644 --- a/Tuprules.tup +++ b/Tuprules.tup @@ -2,6 +2,7 @@ OUTPUTS_OUT=$(TUP_CWD)/out OUTPUTS_DEV=$(TUP_CWD)/dev +DEV_DIR = $(TUP_CWD)/dev ifeq (@(TUP_ARCH),i386) CC_MARCH = -march=i686 -m32 @@ -25,7 +26,7 @@ GENODE_DIR = $(TUP_CWD) LIBGCC = `$(CC) $(CC_MARCH) -print-libgcc-file-name` -!prg = | $(GENODE_DIR)/ $(GENODE_DIR)/ \ +!prg = | $(GENODE_DIR)/ $(DEV_DIR)/ $(GENODE_DIR)/ \ |> ^o LD %o^ \ $(LD) $(LD_MARCH) $(LDFLAGS) \ -L$(LIB_DIR) \ @@ -35,7 +36,7 @@ LIBGCC = `$(CC) $(CC_MARCH) -print-libgcc-file-name` -o %o \ |> %d -!lib = | $(GENODE_DIR)/ $(GENODE_DIR)/ |> ^o LD %o^ $(LD) $(LD_MARCH) %f $(LDFLAGS) `$(PKG_CONFIG) --libs genode-lib $(LIBS)` -L$(LIB_DIR) -o %o |> +!lib = | $(GENODE_DIR)/ $(DEV_DIR)/ $(GENODE_DIR)/ |> ^o LD %o^ $(LD) $(LD_MARCH) %f $(LDFLAGS) `$(PKG_CONFIG) --libs genode-lib $(LIBS)` -L$(LIB_DIR) -o %o |> ifeq ($(BIN_NAME),) BIN_NAME = $(TARGET_NAME) @@ -62,6 +63,11 @@ BIN_DIR = $(OUT_BIN_DIR)/$(BIN_NAME)/$(DEPOT_VERSION) $STRIP -o %o %f \ |> $(OUT_BIN_DIR)/$(BIN_NAME)/%b $(OUTPUTS_OUT)/ +!collect_static = |> ^ COLLECT %b^ \ + cp %f %o \ +|> $(DEV_DIR)/lib/%b \ + $(DEV_DIR)/ \ + export CC export CXX export LD @@ -145,10 +151,14 @@ BASE_DIR = $(GENODE_DIR)/repos/base |> binary_%b.o export AR -!ar = |> ^ MERGE %o^ $AR -rcs %o %f |> +!ar = |> ^ MERGE %o^ $AR -rcs %o %f |> %d.lib.a + +export version +GIT_VERSION = `git describe || echo $version` export TOOLCHAIN_DIR -SED_FLAGS += -e "s|@DEPOT_VERSION@|$(DEPOT_VERSION)|" +SED_PKGCONFIG_FLAGS += -e "s|@DEPOT_VERSION@|$(GIT_VERSION)|" +SED_PKGCONFIG_FLAGS += -e "s|@VERSION@|$(GIT_VERSION)|" !sed_pkgconfig_file = |> ^o SED %B^ \ sed $(SED_PKGCONFIG_FLAGS) $(SED_FLAGS) < %f > %o; \ @@ -159,3 +169,11 @@ SED_FLAGS += -e "s|@DEPOT_VERSION@|$(DEPOT_VERSION)|" sed $(SED_PKGCONFIG_FLAGS) $(SED_FLAGS) > %o; \ pkg-config --validate %o; \ |> $(PKG_CONFIG_DIR)/%d.pc $(GENODE_DIR)/ + +!emit_lib_pkg_config = |> \ + echo Name: %d >> %o; \ + echo Description: Genode %d library >> %o; \ + echo Version: $(GIT_VERSION) >> %o; \ + echo Libs: -l:%d.lib.a >> %o; \ + pkg-config --validate %o; \ +|> $(PKG_CONFIG_DIR)/%d.pc $(GENODE_DIR)/ diff --git a/repos/base-linux/src/core/Tupfile b/repos/base-linux/src/core/Tupfile index fbcb2d0d6..456741ed6 100644 --- a/repos/base-linux/src/core/Tupfile +++ b/repos/base-linux/src/core/Tupfile @@ -53,11 +53,13 @@ LDFLAGS += \ -T$(REP_DIR)/src/ld/stack_area.ld \ CORE_LIBS += \ - $(BASE_DIR)/src/lib/cxx/cxx.lib.a \ - $(BASE_DIR)/src/lib/startup/startup.lib.a \ $(REP_DIR)/src/lib/base/base-linux-common.lib.a \ $(REP_DIR)/src/lib/syscall/syscall-linux.lib.a \ -: {obj} $(CORE_LIBS) |> !ld |> core-linux $(REP_DIR)/ {bin} +CORE_PKGS += cxx startup + +STATIC_LIBS += -L$(LIB_DIR) `$(PKG_CONFIG) --libs cxx startup` + +: {obj} $(CORE_LIBS) | $(DEV_DIR)/ $(GENODE_DIR)/ |> !ld $(STATIC_LIBS) |> core-linux $(REP_DIR)/ {bin} : {bin} |> !collect_bin |> include &(BIN_RULES) diff --git a/repos/base-linux/src/lib/ld/Tupfile b/repos/base-linux/src/lib/ld/Tupfile index 7bc7657a2..8c4addff9 100644 --- a/repos/base-linux/src/lib/ld/Tupfile +++ b/repos/base-linux/src/lib/ld/Tupfile @@ -38,14 +38,13 @@ LDFLAGS += -T$(BASE_DIR)/src/ld/genode_rel.ld LDFLAGS += --entry=_start_initial_stack BASE_LIBS += \ - $(BASE_DIR)/src/lib/alarm/alarm.lib.a \ $(REP_DIR)/src/lib/base/base-linux-common.lib.a \ $(REP_DIR)/src/lib/base/base-linux.lib.a \ - $(BASE_DIR)/src/lib/cxx/cxx.lib.a \ - $(BASE_DIR)/src/lib/ldso/startup/ldso-startup.lib.a \ - $(BASE_DIR)/src/lib/startup/startup.lib.a \ $(REP_DIR)/src/lib/syscall/syscall-linux.lib.a \ - $(BASE_DIR)/src/lib/timeout/timeout.lib.a \ + +BASE_PKGS += alarm cxx ldso-startup startup timeout + +LDFLAGS += `pkg-config --static --libs $(BASE_PKGS)` : $(BASE_LIBS) {obj} | symbol.map \ |> \ diff --git a/repos/base-linux/src/lib/lx_hybrid/Tupfile b/repos/base-linux/src/lib/lx_hybrid/Tupfile index af63947db..211a42d68 100644 --- a/repos/base-linux/src/lib/lx_hybrid/Tupfile +++ b/repos/base-linux/src/lib/lx_hybrid/Tupfile @@ -4,9 +4,7 @@ include $(REP_DIR)/src/lib/syscall/headers.tup INCLUDES += -I$(REP_DIR)/src/include INCLUDES += -I$(BASE_DIR)/src/include -STATIC_LIBS = \ - ../base/base-linux-common.lib.a \ - $(BASE_DIR)/src/lib/timeout/timeout.lib.a \ +STATIC_LIBS = ../base/base-linux-common.lib.a : foreach *.cc $(BASE_DIR)/src/lib/cxx/new_delete.cc |> !cxx |> {obj} : foreach *.c |> !cc |> {obj} diff --git a/repos/base-nova/src/lib/ld/Tupfile b/repos/base-nova/src/lib/ld/Tupfile index c1bdd4c9f..5ccc377f4 100644 --- a/repos/base-nova/src/lib/ld/Tupfile +++ b/repos/base-nova/src/lib/ld/Tupfile @@ -40,13 +40,12 @@ LDFLAGS += -gc-sections -z max-page-size=0x1000 LDFLAGS += -T$(BASE_DIR)/src/ld/genode_rel.ld \ BASE_LIBS += \ - $(BASE_DIR)/src/lib/alarm/alarm.lib.a \ $(REP_DIR)/src/lib/base/base-nova-common.lib.a \ $(REP_DIR)/src/lib/base/base-nova.lib.a \ - $(BASE_DIR)/src/lib/cxx/cxx.lib.a \ - $(BASE_DIR)/src/lib/ldso/startup/ldso-startup.lib.a \ - $(BASE_DIR)/src/lib/startup/startup.lib.a \ - $(BASE_DIR)/src/lib/timeout/timeout.lib.a \ + +BASE_PKGS += alarm cxx ldso-startup startup timeout + +LDFLAGS += `pkg-config --static --libs $(BASE_PKGS)` : $(BASE_LIBS) {obj} | symbol.map \ |> \ @@ -61,4 +60,4 @@ BASE_LIBS += \ : {bin} |> !collect_bin |> include &(BIN_RULES) -endif \ No newline at end of file +endif diff --git a/repos/base/src/lib/alarm/Tupfile b/repos/base/src/lib/alarm/Tupfile index 24e6b1f17..15d6f7473 100644 --- a/repos/base/src/lib/alarm/Tupfile +++ b/repos/base/src/lib/alarm/Tupfile @@ -1,3 +1,5 @@ include_rules : foreach *.cc |> !cxx |> {obj} -: {obj} |> !ar |> alarm.lib.a +: {obj} |> !ar |> {bin} +: foreach {bin} |> !collect_static |> +: |> !emit_lib_pkg_config |> diff --git a/repos/base/src/lib/cxx/Tupfile b/repos/base/src/lib/cxx/Tupfile index f146c47e4..e6549f53b 100644 --- a/repos/base/src/lib/cxx/Tupfile +++ b/repos/base/src/lib/cxx/Tupfile @@ -74,4 +74,6 @@ export OBJCOPY : foreach *.c |> !cc |> {obj} -: {obj} |> !ar |> cxx.lib.a $(BASE_DIR)/ +: {obj} |> !ar |> {bin} +: foreach {bin} |> !collect_static |> +: |> !emit_lib_pkg_config |> diff --git a/repos/base/src/lib/ldso-startup/Tupfile b/repos/base/src/lib/ldso-startup/Tupfile new file mode 100644 index 000000000..15e47da84 --- /dev/null +++ b/repos/base/src/lib/ldso-startup/Tupfile @@ -0,0 +1,7 @@ +LIBS += base +include_rules + +: foreach startup.cc |> !cxx |> %B.o {obj} +: {obj} | |> !ar |> {bin} +: foreach {bin} |> !collect_static |> +: |> !emit_lib_pkg_config |> diff --git a/repos/base/src/lib/ldso/startup/startup.cc b/repos/base/src/lib/ldso-startup/startup.cc similarity index 100% rename from repos/base/src/lib/ldso/startup/startup.cc rename to repos/base/src/lib/ldso-startup/startup.cc diff --git a/repos/base/src/lib/ldso/startup/unwind_exidx.cc b/repos/base/src/lib/ldso-startup/unwind_exidx.cc similarity index 100% rename from repos/base/src/lib/ldso/startup/unwind_exidx.cc rename to repos/base/src/lib/ldso-startup/unwind_exidx.cc diff --git a/repos/base/src/lib/ldso/startup/Tupfile b/repos/base/src/lib/ldso/startup/Tupfile deleted file mode 100644 index 0bd18a3a5..000000000 --- a/repos/base/src/lib/ldso/startup/Tupfile +++ /dev/null @@ -1,6 +0,0 @@ -LIBS += base -include_rules - -: foreach startup.cc |> !cxx |> %B.o {obj} -: {obj} | |> !ar |> ldso-startup.lib.a -: {obj} | |> !ar |> $(LIB_DIR)/ldso-startup.lib.a $(GENODE_DIR)/ diff --git a/repos/base/src/lib/startup/Tupfile b/repos/base/src/lib/startup/Tupfile index fa7ce9bd1..ab736c6b5 100644 --- a/repos/base/src/lib/startup/Tupfile +++ b/repos/base/src/lib/startup/Tupfile @@ -12,4 +12,6 @@ ifeq (@(TUP_ARCH),arm64) : foreach spec/arm_64/*.s |> !asm |> {obj} endif -: {obj} |> !ar |> startup.lib.a $(BASE_DIR)/ +: {obj} |> !ar |> {bin} +: foreach {bin} |> !collect_static |> +: |> !emit_lib_pkg_config |> diff --git a/repos/base/src/lib/timeout/Tupfile b/repos/base/src/lib/timeout/Tupfile index 8eb87de05..f858c9acc 100644 --- a/repos/base/src/lib/timeout/Tupfile +++ b/repos/base/src/lib/timeout/Tupfile @@ -14,4 +14,6 @@ else endif : foreach $(SRC_CC) |> !cxx |> {obj} -: {obj} |> !ar |> %d.lib.a +: {obj} |> !ar |> {bin} +: foreach {bin} |> !collect_static |> +: |> !emit_lib_pkg_config |> diff --git a/repos/gems/src/app/backdrop/Tupfile b/repos/gems/src/app/backdrop/Tupfile index bfa40a46b..dafafb12c 100644 --- a/repos/gems/src/app/backdrop/Tupfile +++ b/repos/gems/src/app/backdrop/Tupfile @@ -3,9 +3,9 @@ LIBS += libpng libc include_rules -BLIT = $(GENODE_DIR)/repos/os/src/lib/blit/blit.lib.a +LIBS += blit : foreach *.cc $(REP_DIR)/src/lib/file/*.cc |> !cxx |> %B.o {obj} -: {obj} $(BLIT) |> !prg |> {bin} +: {obj} |> !prg |> {bin} : {bin} |> !collect_bin |> include &(BIN_RULES) diff --git a/repos/gems/src/server/nit_fader/Tupfile b/repos/gems/src/server/nit_fader/Tupfile index d49053de1..8b63c6b52 100644 --- a/repos/gems/src/server/nit_fader/Tupfile +++ b/repos/gems/src/server/nit_fader/Tupfile @@ -3,10 +3,9 @@ include_rules INCLUDES += -I. INCLUDES += -I$(REP_DIR)/../demo/include - -BLIT = $(GENODE_DIR)/repos/os/src/lib/blit/blit.lib.a +LIBS += blit : foreach *.cc |> !cxx |> %B.o {obj} -: {obj} $(BLIT) |> !prg |> {bin} +: {obj} |> !prg |> {bin} : {bin} |> !collect_bin |> include &(BIN_RULES) diff --git a/repos/os/src/lib/blit/Tupfile b/repos/os/src/lib/blit/Tupfile index 967644d2a..7286c3867 100644 --- a/repos/os/src/lib/blit/Tupfile +++ b/repos/os/src/lib/blit/Tupfile @@ -1,8 +1,5 @@ - include_rules -BLIT_DIR = $(GENODE_DIR)/repos/os/src/lib/blit - ifeq (@(TUP_ARCH),i386) BLIT_INCLUDES += -Ispec/x86_32 BLIT_INCLUDES += -Ispec/x86 @@ -24,4 +21,6 @@ endif INCLUDES += $(BLIT_INCLUDES) : foreach *.cc |> !cxx |> {obj} -: {obj} |> !ar |> %d.lib.a +: {obj} |> !ar |> {bin} +: {bin} |> !collect_static |> +: |> !emit_lib_pkg_config |> diff --git a/repos/os/src/lib/net/Tupfile b/repos/os/src/lib/net/Tupfile new file mode 100644 index 000000000..0ec674b24 --- /dev/null +++ b/repos/os/src/lib/net/Tupfile @@ -0,0 +1,6 @@ +include_rules + +: foreach *.cc |> !cxx |> {obj} +: {obj} |> !ar |> %d.lib.a {bin} +: {bin} |> !collect_static |> +: |> !emit_lib_pkg_config |> diff --git a/repos/os/src/server/nic_dump/Tupfile b/repos/os/src/server/nic_dump/Tupfile index 3f595808e..40a130ca1 100644 --- a/repos/os/src/server/nic_dump/Tupfile +++ b/repos/os/src/server/nic_dump/Tupfile @@ -1,9 +1,9 @@ TARGET_NAME = nic_dump INCLUDES += -I. include_rules +LIBS += net : foreach *.cc |> !cxx |> %B.o {obj} -: foreach ../../lib/net/*.cc |> !cxx |> %B.o {obj} : {obj} |> !prg |> {bin} : {bin} |> !collect_bin |> diff --git a/repos/os/src/server/nic_router/Tupfile b/repos/os/src/server/nic_router/Tupfile index 40125c09b..81e96e845 100644 --- a/repos/os/src/server/nic_router/Tupfile +++ b/repos/os/src/server/nic_router/Tupfile @@ -1,10 +1,9 @@ TARGET_NAME = nic_router INCLUDES += -I. include_rules +LIBS += net : foreach *.cc |> !cxx |> %B.o {obj} -: foreach ../../lib/net/*.cc |> !cxx |> %B.o {obj} - : {obj} |> !prg |> {bin} : {bin} |> !collect_bin |> include &(BIN_RULES) diff --git a/repos/os/src/server/nitpicker/Tupfile b/repos/os/src/server/nitpicker/Tupfile index 84b59016b..d873714b9 100644 --- a/repos/os/src/server/nitpicker/Tupfile +++ b/repos/os/src/server/nitpicker/Tupfile @@ -1,11 +1,10 @@ TARGET_NAME = nitpicker - include_rules -BLIT_LIB = $(REP_DIR)/src/lib/blit/blit.lib.a +LIBS += blit : foreach *.cc |> !cxx |> %B.o {obj} : default.tff |> !incbin |> {obj} -: {obj} $(BLIT_LIB) |> !prg |> {bin} +: {obj} |> !prg |> {bin} : {bin} |> !collect_bin |> include &(BIN_RULES)