Tup: build static libraries into the dev output

This commit is contained in:
Ehmry - 2019-09-21 15:13:27 +02:00
parent 7d7659635c
commit 5587f0992b
20 changed files with 73 additions and 46 deletions

View File

@ -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)/<lib> $(GENODE_DIR)/<pkg-config> \
!prg = | $(GENODE_DIR)/<lib> $(DEV_DIR)/<lib> $(GENODE_DIR)/<pkg-config> \
|> ^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)/<lib> $(GENODE_DIR)/<pkg-config> |> ^o LD %o^ $(LD) $(LD_MARCH) %f $(LDFLAGS) `$(PKG_CONFIG) --libs genode-lib $(LIBS)` -L$(LIB_DIR) -o %o |>
!lib = | $(GENODE_DIR)/<lib> $(DEV_DIR)/<lib> $(GENODE_DIR)/<pkg-config> |> ^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)/<bin>
!collect_static = |> ^ COLLECT %b^ \
cp %f %o \
|> $(DEV_DIR)/lib/%b \
$(DEV_DIR)/<lib> \
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)/<pkg-config>
!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)/<pkg-config>

View File

@ -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)/<core> {bin}
CORE_PKGS += cxx startup
STATIC_LIBS += -L$(LIB_DIR) `$(PKG_CONFIG) --libs cxx startup`
: {obj} $(CORE_LIBS) | $(DEV_DIR)/<lib> $(GENODE_DIR)/<pkg-config> |> !ld $(STATIC_LIBS) |> core-linux $(REP_DIR)/<core> {bin}
: {bin} |> !collect_bin |>
include &(BIN_RULES)

View File

@ -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 \
|> \

View File

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

View File

@ -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
endif

View File

@ -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 |>

View File

@ -74,4 +74,6 @@ export OBJCOPY
: foreach *.c |> !cc |> {obj}
: {obj} |> !ar |> cxx.lib.a $(BASE_DIR)/<base-libs>
: {obj} |> !ar |> {bin}
: foreach {bin} |> !collect_static |>
: |> !emit_lib_pkg_config |>

View File

@ -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 |>

View File

@ -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)/<lib>

View File

@ -12,4 +12,6 @@ ifeq (@(TUP_ARCH),arm64)
: foreach spec/arm_64/*.s |> !asm |> {obj}
endif
: {obj} |> !ar |> startup.lib.a $(BASE_DIR)/<base-libs>
: {obj} |> !ar |> {bin}
: foreach {bin} |> !collect_static |>
: |> !emit_lib_pkg_config |>

View File

@ -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 |>

View File

@ -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)

View File

@ -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)

View File

@ -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 |>

View File

@ -0,0 +1,6 @@
include_rules
: foreach *.cc |> !cxx |> {obj}
: {obj} |> !ar |> %d.lib.a {bin}
: {bin} |> !collect_static |>
: |> !emit_lib_pkg_config |>

View File

@ -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 |>

View File

@ -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)

View File

@ -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)