Make-lang.in: In the fallback mechanim...

2017-09-13  Nicolas Roche  <roche@adacore.com>

	* Make-lang.in: In the fallback mechanim, parse the associated .ali
	file and try to guess the locations of dependencies.

From-SVN: r252082
This commit is contained in:
Nicolas Roche 2017-09-13 13:18:46 +00:00 committed by Pierre-Marie de Rodat
parent f216550dbb
commit 7dbe3736d5
2 changed files with 20 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2017-09-13 Nicolas Roche <roche@adacore.com>
* Make-lang.in: In the fallback mechanim, parse the associated .ali
file and try to guess the locations of dependencies.
2017-09-13 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch13.adb (Register_Address_Clause_Check): New procedure to save

View File

@ -106,14 +106,20 @@ ada/%.o: ada/gcc-interface/%.c
# Function that dumps the dependencies of an Ada object. Dependency only work
# fully if the compiler support -gnatd.n. Otherwise a fallback mechanism is
# used. The fallback mechanism add dependency on all ada sources in the same
# directory as the original source.
# used. The fallback mechanism parse the ali files to get the list of
# dependencies and try to guess their location. If the location cannot be found
# then the dependency is ignored.
ifeq ($(findstring -gnatd.n,$(ALL_ADAFLAGS)),)
ADA_DEPS=\
mkdir -p $(dir $@)/$(DEPDIR); \
(o="$@: $<"; \
for d in $(dir $<)/*.ad[sb]; do \
o="$$o $$d"; \
a="`echo $@ | sed -e 's/.o$$/.ali/'`"; \
for d in `cat $$a | sed -ne 's;^D \([a-z0-9_\.-]*\).*;\1;gp'`; do \
for l in ada $(srcdir)/ada ada/libgnat $(srcdir)/ada/libgnat; do \
if test -f $$l/$$d; then \
o="$$o $$l/$$d"; \
fi; \
done; \
done; \
echo "$$o"; echo) \
>$(dir $@)/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $@))
@ -121,11 +127,9 @@ ADA_OUTPUT_OPTION = $(OUTPUT_OPTION)
else
ADA_DEPS=\
mkdir -p $(dir $@)/$(DEPDIR); \
(o="$@: $<"; \
for d in `cat $@.gnatd.n`; do \
o="$$o $$d"; \
done; \
echo "$$o"; echo) \
(echo "$@: $< " | tr -d '\015' | tr -d '\n'; \
cat $@.gnatd.n | tr -d '\015' | tr '\n' ' '; \
echo; echo) \
>$(dir $@)/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $@))
ADA_OUTPUT_OPTION = $(OUTPUT_OPTION) > $@.gnatd.n
endif
@ -861,9 +865,11 @@ ada.uninstall:
ada.mostlyclean:
-$(RM) ada/*$(objext) ada/*.ali ada/b_gnat*.ads ada/b_gnat*.adb
-$(RM) ada/*$(objext).gnatd.n
-$(RM) ada/*$(coverageexts)
-$(RM) ada/sdefault.adb ada/stamp-sdefault ada/stamp-snames
-$(RMDIR) ada/tools
-$(RMDIR) ada/libgnat
-$(RM) gnatbind$(exeext) gnat1$(exeext)
ada.clean:
ada.distclean: