tool_chain: integrate 'ali2dep' tool

Fixes #3361
This commit is contained in:
Christian Prochaska 2019-05-17 18:47:41 +02:00 committed by Christian Helmuth
parent fc922d263c
commit 74260c96bf
2 changed files with 32 additions and 6 deletions

View File

@ -25,7 +25,7 @@ CUSTOM_STRIP ?= $(CROSS_DEV_PREFIX)strip
CUSTOM_GNATBIND ?= $(CROSS_DEV_PREFIX)gnatbind
CUSTOM_HOST_CC ?= gcc
CUSTOM_ADA_CC ?= $(CUSTOM_CC)
CUSTOM_ALI2DEP ?= echo " WARNING: ali2dep not used, get it from https://github.com/Componolit/ali2dep and make CUSTOM_ALI2DEP point to the binary." \#
CUSTOM_ALI2DEP ?= $(CROSS_DEV_PREFIX)ali2dep
#
# GNU utilities

View File

@ -165,9 +165,15 @@ HOST_GCC_VERSION := $(shell gcc -dumpfullversion -dumpversion)
GNAT_OK = $(call check_equal_f,$(shell gnatmake --version | sed -n -e 's/GNATMAKE //p'),$(HOST_GCC_VERSION),\
Need to have GNAT installed and the GNAT version must match the GCC version (found GCC $(HOST_GCC_VERSION)).)
#
# Check if 'gprbuild' is installed
#
GPRBUILD_OK = $(call check_nonempty_f,$(shell which gprbuild),\
Need to have 'gprbuild' installed.)
TOOLS_OK = $(AUTOCONF_OK) $(AUTOCONFINST_OK) $(PKG_CONFIG_OK) $(CURSES_OK) \
$(TEXINFO_OK) $(WGET_OK) $(AUTOGEN_OK) $(GPG_OK) $(EXPAT_OK) \
$(GNAT_OK)
$(GNAT_OK) $(GPRBUILD_OK)
ifneq ($(strip $(TOOLS_OK)),)
$(error Please install missing tools.)
@ -214,11 +220,9 @@ ifeq ($(PLATFORM),riscv)
LANGUAGES = c,c++
LIB_GCC = cd $(INSTALL_LOCATION)/lib/gcc/riscv64-unknown-elf/$(GCC_VERSION)/rv64imac/lp64 && \
$(SUDO) ln -sf ../../include include
INSTALL_ADA =
else
LANGUAGES = c,c++,ada
LIB_GCC =
INSTALL_ADA = $(SUDO) cp $(LOCAL_BOOTSTRAP_INSTALL_LOCATION)/bin/gnatmake $(INSTALL_LOCATION)/bin/genode-$(PLATFORM)-gnatmake
endif
GCC_BOOTSTRAP_CONFIG += $(COMMON_BOOTSTRAP_CONFIG) \
@ -332,8 +336,10 @@ GCC_BINARIES = $(BUILD_LOCATION)/$(PLATFORM)/gcc/gcc/g++-cross
GCC_INSTALLED_BINARIES = $(LOCAL_INSTALL_LOCATION)/bin/genode-$(PLATFORM)-g++
GDB_BINARIES = $(BUILD_LOCATION)/$(PLATFORM)/gdb/gdb/gdb
GDB_INSTALLED_BINARIES = $(LOCAL_INSTALL_LOCATION)/bin/genode-$(PLATFORM)-gdb
ALI2DEP_BINARY = $(BUILD_LOCATION)/ali2dep/ali2dep
ALI2DEP_INSTALLED_BINARY = $(LOCAL_INSTALL_LOCATION)/bin/genode-$(PLATFORM)-ali2dep
build_all: $(GCC_INSTALLED_BINARIES) $(GDB_INSTALLED_BINARIES)
build_all: $(GCC_INSTALLED_BINARIES) $(GDB_INSTALLED_BINARIES) $(ALI2DEP_INSTALLED_BINARY)
GMP_CONTRIB_DIR = $(shell $(GENODE_DIR)/tool/ports/current gmp)/src/lib/gmp
@ -503,6 +509,27 @@ $(GDB_INSTALLED_BINARIES): $(GDB_BINARIES)
$(ECHO) "$(BRIGHT_COL)installing gdb...$(DEFAULT_COL)"
$(VERBOSE)$(MAKE) -C $(BUILD_LOCATION)/$(PLATFORM)/gdb install $(MAKE_OPT) MAKEINFO=true
$(BUILD_LOCATION)/ali2dep/build/build.gpr:
$(ECHO) "$(BRIGHT_COL)preparing ali2dep...$(DEFAULT_COL)"
$(VERBOSE)git clone https://github.com/Componolit/ali2dep.git $(BUILD_LOCATION)/ali2dep
$(VERBOSE)sed -i -e '/Create_Missing_Dirs/d' $@
#
# Ubuntu 16.04 'gprconfig' looks for 'gnatgcc', so we create a symlink to 'gcc'
#
$(ALI2DEP_BINARY): $(GCC_BOOTSTRAP_INSTALLED_BINARIES) $(BUILD_LOCATION)/ali2dep/build/build.gpr
$(ECHO) "$(BRIGHT_COL)building ali2dep...$(DEFAULT_COL)"
$(VERBOSE)ln -sf gcc $(LOCAL_BOOTSTRAP_INSTALL_LOCATION)/bin/gnatgcc
$(VERBOSE)gprconfig --batch \
--config=Ada,,default,$(LOCAL_BOOTSTRAP_INSTALL_LOCATION)/bin,GNAT \
--config=C,,,$(LOCAL_BOOTSTRAP_INSTALL_LOCATION)/bin/,GCC \
-o $(BUILD_LOCATION)/ali2dep/genode_bootstrap_tool_chain.cgpr
$(VERBOSE)GPRBUILD_ARGS="--config=genode_bootstrap_tool_chain.cgpr" $(MAKE) -C $(BUILD_LOCATION)/ali2dep
$(ALI2DEP_INSTALLED_BINARY): $(ALI2DEP_BINARY)
$(ECHO) "$(BRIGHT_COL)installing ali2dep...$(DEFAULT_COL)"
$(VERBOSE)strip -o $@ $<
#
# Clean rules
#
@ -519,5 +546,4 @@ cleanall: clean
install: build_all
$(ECHO) "$(BRIGHT_COL)installing tool chain to '$(INSTALL_LOCATION)'...$(DEFAULT_COL)"
$(VERBOSE)$(SUDO) cp -a --remove-destination --no-target-directory $(LOCAL_INSTALL_LOCATION) $(INSTALL_LOCATION)
$(VERBOSE)$(INSTALL_ADA)
$(VERBOSE)$(LIB_GCC)