Here is a patch that I came up with that builds libgnat and links the GNAT tools (gnatmake, gnatlink, gnatfind, gnatname, etc.) against it. I used it to build gnat-3.3 from the latest sources in testing (gcc-3.3-3.3.2ds4-1).
-- Ludovic Brenta. diff -u -r debian.orig/rules2 debian/rules2 --- debian.orig/rules2 2003-10-20 19:14:03.000000000 +0200 +++ debian/rules2 2003-11-03 16:52:46.000000000 +0100 @@ -339,15 +339,55 @@ > bootstrap-summary; \ fi -# TODO: Dynamic linking of the gnat tools ... ifeq ($(with_ada),yes) ifeq ($(with_libgnat),yes) + # BTW, the Ada part of GCC does not support parallel builds, so I + # removed the \$(NJOBS) parameter from the make command lines. + + # Build the static and shared libraries + rm -f $(builddir)/gcc/ada/rts/*.{o,ali} LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc/ada \ PATH=$(PWD)/bin:$$PATH \ - $(MAKE) -C $(builddir)/gcc $(NJOBS) \ - gnatlib-shared gnatlib gnattools + $(MAKE) -C $(builddir)/gcc gnatlib-shared + mkdir $(builddir)/gcc/ada/rts/obj + + # Move the object files away lest the tools include them in their + # executables. We want to link against libgnat.so instead. + mv $(builddir)/gcc/ada/rts/*.o $(builddir)/gcc/ada/rts/obj + ln -s libgnat-3.15.so.1 $(builddir)/gcc/ada/rts/libgnat.so + ln -s libgnarl-3.15.so.1 $(builddir)/gcc/ada/rts/libgnarl.so + + # Build gnatmake and gnatlink. + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc/ada/rts \ + PATH=$(PWD)/bin:$$PATH \ + $(MAKE) -C $(builddir)/gcc/ada \ + ADA_INCLUDES="-I- -I../rts" \ + CC="../../xgcc -B../../" \ + CFLAGS="-O2" \ + GNATMAKE="../../gnatmake" \ + GNATLINK="../../gnatlink" \ + GNATBIND="../../gnatbind -C" \ + STAGE_PREFIX="../../" \ + LIBGNAT="-L../rts -lgnat" \ + LN_S="ln -s" \ + gnattools1 + + # Use gnatmake, gnatbind and gnatlink to build the other tools. + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc/ada/rts \ + PATH=$(PWD)/bin:$$PATH \ + $(MAKE) -C $(builddir)/gcc/ada \ + ADA_INCLUDES="-I- -I../rts" \ + CC="../../xgcc -B../../" \ + CFLAGS="-O2" \ + GNATMAKE="../../gnatmake" \ + GNATLINK="../../gnatlink" \ + GNATBIND="../../gnatbind" \ + STAGE_PREFIX="../../" \ + LIBGNAT="-L../rts -lgnat" \ + LN_S="ln -s" \ + gnattools2 else - LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc/ada \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc/ada/rts \ PATH=$(PWD)/bin:$$PATH \ $(MAKE) -C $(builddir)/gcc $(NJOBS) gnatlib gnattools endif diff -u -r debian.orig/rules.defs debian/rules.defs --- debian.orig/rules.defs 2003-10-20 19:14:03.000000000 +0200 +++ debian/rules.defs 2003-11-03 17:43:58.000000000 +0100 @@ -369,7 +369,7 @@ with_ada := no endif -with_libgnat := no +with_libgnat := yes ada_no_archs := arm hurd-i386 m68k mips mipsel freebsd-i386 netbsd-i386 ifneq ($(DEB_TARGET_ARCH),i386) ifeq ($(DEB_TARGET_ARCH), $(findstring $(DEB_TARGET_ARCH),$(ada_no_archs)))