This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: weirdness with ada/Make-lang.in on 3.4 branch


Jim Wilson wrote:

Joel Sherrill wrote:

I have
noticed that when I install the cross gnat tools
(XXX-rtems-gnatmake, etc), the native version of the
same tool is deleted from ${prefix}/bin.


Use "make -d" instead of just "make". Pipe the output to a file, and then browse through it to see what went wrong.

The install rules come from ada/Make-lang.in, in the ada.install-common rule. Just from a casual glance, it appears to be OK.

After more head scratching and searching over multiple log files, I have
a suspicion that the build order is critical. RTEMS is a newlib target
so you only have a C library installed when the toolset being built
is installed. gnatlib requires the C library to be installed. The procedure
I was using is (simplified):


make make install if ada
make cross-gnattools
make ada.all.cross
make gnatlib make install


This used to use the LANGUAGE override to avoid getting ada at all.
Now the above procedure ends up with gnat1 installed as before the
"if ada" and the 1st make install gets confused because there is a
gnat1 but no gnatmake. It then ends up destroying the native gnat tools
that are installed at the $prefix. I put echos in the following if to figure this
out:


=======================
-if [ -f gnat1$(exeext) ] ; \
then \
if [ -f gnatmake-cross$(exeext) ] ; \
then \
echo JOELA; \
$(RM) $(DESTDIR)$(bindir)/$(target_noncanonical)-gnatmake$(exeext); \
$(INSTALL_PROGRAM) gnatmake-cross$(exeext) $(DESTDIR)$(bindir)/$(target_noncanonical)-gnatmake$(exeext); \
if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
echo JOELB; \
rm -f $(DESTDIR)$(tooldir)/bin/gnatmake$(exeext); \
$(INSTALL_PROGRAM) gnatmake-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatmake$(exeext); \
fi; \
else \
echo JOELC; \
$(RM) $(DESTDIR)$(bindir)/gnatmake$(exeext); \
$(INSTALL_PROGRAM) gnatmake$(exeext) $(DESTDIR)$(bindir)/gnatmake$(exeext); \
fi ; \
fi


=======================

On the first make install, you get JOELC while on the second you
correctly get JOELA followed by JOELB

I think that where I have the JOELC, there should be a check to
make sure gnatmake exists in the build directory before removing
something at the install point.

Is this a bug or just a fragile procedure for a cross embedded build?

--joel


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]