From c02ef3ec947d252507351fb6619f81113baa2e25 Mon Sep 17 00:00:00 2001 From: Johannes Kliemann Date: Mon, 16 Apr 2018 15:26:00 +0200 Subject: [PATCH] ada: compile runtime bodies, customizable tools This is a follow-up commit for "ada: runtime and library support". Issue #2748 --- repos/base/mk/generic.mk | 13 +++++++++++-- repos/libports/lib/mk/ada.mk | 9 +++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/repos/base/mk/generic.mk b/repos/base/mk/generic.mk index a1f383467..60655e8c9 100644 --- a/repos/base/mk/generic.mk +++ b/repos/base/mk/generic.mk @@ -70,13 +70,22 @@ endif # The mandatory runtime directories 'adainclude' and 'adalib' are expected in # the program directory. # + +# +# We need to override these to build the ada runtime +# +CUSTOM_ADA_MAKE ?= $(GNATMAKE) +CUSTOM_ADA_FLAGS ?= -q -c --GCC=$(CC) --RTS=$(ADA_RTS) +CUSTOM_ADA_OPT ?= -cargs $(CC_ADA_OPT) +CUSTOM_ADA_INCLUDE ?= $(INCLUDES) + %.o: %.adb $(MSG_COMP)$@ - $(VERBOSE)$(GNATMAKE) -q -c --GCC=$(CC) --RTS=$(ADA_RTS) $< -cargs $(CC_ADA_OPT) $(INCLUDES) + $(VERBOSE)$(CUSTOM_ADA_MAKE) $(CUSTOM_ADA_FLAGS) $< $(CUSTOM_ADA_OPT) $(CUSTOM_ADA_INCLUDE) %.ali %.o: %.ads $(MSG_COMP)$@ - $(VERBOSE)$(CC) -c -gnatg -gnatp -gnatpg -gnatn2 -I- -I$(ADA_RTS_SOURCE) $(CC_ADA_OPT) $< + $(VERBOSE)$(CUSTOM_ADA_MAKE) $(CUSTOM_ADA_FLAGS) $< $(CUSTOM_ADA_OPT) $(CUSTOM_ADA_INCLUDE) # # Compiling Rust sources diff --git a/repos/libports/lib/mk/ada.mk b/repos/libports/lib/mk/ada.mk index 737665675..87c94d7e4 100644 --- a/repos/libports/lib/mk/ada.mk +++ b/repos/libports/lib/mk/ada.mk @@ -5,9 +5,18 @@ ADAINCLUDE = $(ADA_RTS)/adainclude PACKAGES = system +body_exists := $(filter $1.adb,$(shell if [ -e $(ADA_RTS_SOURCE)/$1.adb ]; then echo $1.adb; fi)) + ADA_RTS_SOURCE = $(call select_from_ports,gcc)/src/noux-pkg/gcc/gcc/ada SRC_ADS += $(foreach package, $(PACKAGES), $(package).ads) +SRC_ADB += $(foreach package, $(PACKAGES), $(body_exists, $(package))) +CUSTOM_ADA_MAKE = $(CC) +CUSTOM_ADA_FLAGS = -c -gnatg -gnatp -gnatpg -gnatn2 +CUSTOM_ADA_OPT = $(CC_ADA_OPT) +CUSTOM_ADA_INCLUDE = -I- -I$(ADA_RTS_SOURCE) + +vpath %.adb $(ADA_RTS_SOURCE) vpath %.ads $(ADA_RTS_SOURCE) SHARED_LIB = yes