From 74260c96bf79d19ef9ae424c49ca0649649c7e7d Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Fri, 17 May 2019 18:47:41 +0200 Subject: [PATCH] tool_chain: integrate 'ali2dep' tool Fixes #3361 --- repos/base/mk/global.mk | 2 +- tool/tool_chain | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/repos/base/mk/global.mk b/repos/base/mk/global.mk index c0cfaace3d..7455cb90da 100644 --- a/repos/base/mk/global.mk +++ b/repos/base/mk/global.mk @@ -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 diff --git a/tool/tool_chain b/tool/tool_chain index 034c2a3a94..22b6801cd0 100755 --- a/tool/tool_chain +++ b/tool/tool_chain @@ -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)