Skip to content

Commit

Permalink
go: build libgo dependencies automatically via LIBS variable (incompl…
Browse files Browse the repository at this point in the history
…ete)

Issue genodelabs#304
  • Loading branch information
cproc authored and tor-m6 committed Jan 30, 2023
1 parent bf12d97 commit a1f0384
Show file tree
Hide file tree
Showing 8 changed files with 43 additions and 62 deletions.
8 changes: 8 additions & 0 deletions lib/import/import-backtrace.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
LIBBACKTRACE_PORT_DIR := $(call select_from_ports,libgo)
INC_DIR += $(LIBBACKTRACE_PORT_DIR)/include

# checked by backtrace.h
CC_OPT += -DHAVE_STDINT_H

# for '_Unwind_Backtrace' and '_Unwind_GetIPInfo'
EXT_OBJECTS += $(shell $(CC) $(CC_MARCH) -print-file-name=libgcc_eh.a)
5 changes: 2 additions & 3 deletions lib/import/import-libbacktrace.mk
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
LIBBACKTRACE_PORT_DIR := $(call select_from_ports,libgo)
INC_DIR += $(LIB_CACHE_DIR)/libbacktrace
INC_DIR += $(LIBBACKTRACE_PORT_DIR)/include
# checked by backtrace.h
CFLAGS += -DHAVE_STDINT_H
14 changes: 14 additions & 0 deletions lib/mk/backtrace.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
MY_BUILD_DIR := $(LIB_CACHE_DIR)/backtrace
MY_TARGET := $(MY_BUILD_DIR)/.libs/libbacktrace.a

# to glue gnu_build.mk
CUSTOM_TARGET_DEPS := finished.tag

$(MY_TARGET): built.tag

finished.tag: $(MY_TARGET)
@$(MSG_INST)$*
ln -sf $(MY_TARGET) $(MY_BUILD_DIR)/backtrace.lib.a
@touch $@

include $(REP_DIR)/lib/mk/libbacktrace.inc
2 changes: 1 addition & 1 deletion lib/mk/libatomic.mk
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ $(MY_TARGET): built.tag

finished.tag: $(MY_TARGET)
@$(MSG_INST)$* ; \
ln -sf $(MY_TARGET) $(MY_BUILD_DIR)/libatomic.lib.a; \
#ln -sf $(MY_TARGET) $(MY_BUILD_DIR)/libatomic.lib.a; \
echo ".... copy h-files for to $(MY_BUILD_DIR)/include ....."; \
mkdir -p $(MY_BUILD_DIR)/include; \
find $(PKG_DIR)/ -name '*.h' -exec cp -fLp {} $(MY_BUILD_DIR)/include/ \;
Expand Down
13 changes: 13 additions & 0 deletions lib/mk/libbacktrace.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
include $(REP_DIR)/lib/import/import-libbacktrace.mk

LIBS += libc

PKG_DIR = $(call select_from_ports,libgo)/src/lib/gcc/libbacktrace
EXT_OBJECTS += $(shell $(CC) $(CC_MARCH) -print-file-name=libgcc_eh.a)

# to glue gnu_build.mk
CUSTOM_TARGET_DEPS += built.tag

CONFIGURE_ARGS += --disable-shared

include $(call select_from_repositories,mk/gnu_build.mk)
44 changes: 1 addition & 43 deletions lib/mk/libbacktrace.mk
Original file line number Diff line number Diff line change
@@ -1,43 +1 @@
MY_BUILD_DIR := $(LIB_CACHE_DIR)/libbacktrace
MY_TARGET := $(MY_BUILD_DIR)/.libs/libbacktrace.a

LIBS += libc

PKG_DIR = $(call select_from_ports,libgo)/src/lib/gcc/libbacktrace
LD_OPT_NOSTDLIB := -nostdlib -Wl,-nostdlib
EXT_OBJECTS += $(shell $(CC) $(CC_MARCH) -print-file-name=libgcc_eh.a)
SHARED_LIBS += ld.lib.so

# to glue gnu_build.mk
CUSTOM_TARGET_DEPS := finished.tag

$(MY_TARGET): built.tag

finished.tag: $(MY_TARGET)
@$(MSG_INST)$* ; \
ln -sf $(MY_TARGET) $(MY_BUILD_DIR)/libbacktrace.lib.a; \
echo ".... copy h-files for to $(MY_BUILD_DIR)/include ....."; \
mkdir -p $(MY_BUILD_DIR)/include; \
cp $(MY_BUILD_DIR)/gstdint.h $(MY_BUILD_DIR)/include/; \
find $(PKG_DIR)/ -name '*.h' -exec cp -fLp {} $(MY_BUILD_DIR)/include/ \;
@touch $@

# add libc include to INC_DIR
include $(call select_from_repositories,lib/mk/libc-common.inc)

CONFIGURE_ARGS += --srcdir=$(PKG_DIR)/ \
--cache-file=./config.cache \
--disable-multilib \
--disable-shared \
--disable-libada \
--with-gnu-as \
--with-gnu-ld \
--disable-tls \
--disable-threads \
--disable-hosted-libstdcxx \
--enable-multiarch \
--disable-sjlj-exceptions \
--enable-languages=c,ada,c++,go,lto \
--disable-option-checking

include $(call select_from_repositories,mk/noux.mk)
include $(REP_DIR)/lib/mk/libbacktrace.inc
4 changes: 2 additions & 2 deletions lib/mk/libffi.mk
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CUSTOM_TARGET_DEPS := finished.tag
$(MY_TARGET): built.tag

finished.tag: $(MY_TARGET)
@$(MSG_INST)$* ; \
ln -sf $(MY_TARGET) $(MY_BUILD_DIR)/libffi.lib.a
# @$(MSG_INST)$* ; \
# ln -sf $(MY_TARGET) $(MY_BUILD_DIR)/libffi.lib.a
@touch $@

# add libc include to INC_DIR
Expand Down
15 changes: 2 additions & 13 deletions lib/mk/libgo.mk
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,15 @@ MY_TARGET := $(MY_BUILD_DIR)/.libs/libgo.a
PKG_DIR = $(call select_from_ports,libgo)/src/lib/gcc/libgo
LD_OPT_NOSTDLIB := -nostdlib -Wl,-nostdlib

LIBS += libgo_support
LIBS += libgo_support libatomic libbacktrace libffi

INC_DIR += $(LIB_CACHE_DIR)/libbacktrace/include

# to glue gnu_build.mk
CUSTOM_TARGET_DEPS := check.tag finished.tag
CUSTOM_TARGET_DEPS := finished.tag

$(MY_TARGET): built.tag

# check that libatomic libbacktrace libffi already build
check.tag: $(LIB_CACHE_DIR)/libatomic/finished.tag \
$(LIB_CACHE_DIR)/libbacktrace/finished.tag \
$(LIB_CACHE_DIR)/libffi/finished.tag

$(LIB_CACHE_DIR)/libatomic/finished.tag \
$(LIB_CACHE_DIR)/libbacktrace/finished.tag \
$(LIB_CACHE_DIR)/libffi/finished.tag :
@$(warning *** $(lastword $(subst /, ,$(@D))) should be build before libgo, for each like)
@$(error make -C build/<ARCH> lib/$(lastword $(subst /, ,$(@D))))

finished.tag:: $(MY_TARGET)
@$(MSG_INST)$*
@ln -sf $(MY_TARGET) $(MY_BUILD_DIR)/libgo.lib.a
Expand Down

0 comments on commit a1f0384

Please sign in to comment.