fix in-tree building of ppl, cloog, libelf

View: New views
5 Messages — Rating Filter:   Alert me  

fix in-tree building of ppl, cloog, libelf

by Alexandre Oliva-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

This patch fixes a number of problems I ran into attempting to bootstrap
gmp, mpfr, mpc, ppl, cloog and libelf along with GCC.  It's not so much
that I wanted to bootstrap them in the first place, but I wanted to
build graphite et al on machines on which I couldn't easily install
precompiled versions thereof.  I figured dropping them in the source
tree I pushed onto them would be simpler.  Big mistake ;-)

I got ppl adn cloog --with-* flag handling to actually set things up for
the in-tree headers and libraries to be used.  Setting with_cloog and
with_ppl by default was disabling the code that looked for the sources
in the build tree, so the include and link flags we're set up properly.

The top-level configure expected ppl to put headers and libraries at the
wrong place, so cloog would fail to configure and, getting past that,
gcc would fail to build.  I arranged for cloog to be fed the same
CPPFLAGS and LDFLAGS that we give GCC to locate ppl, and I fixed them so
that the ppl headers and libraries would be located in the build tree.

I arranged for the version checks applied to ppl, cloog and libelf to be
skipped for in-tree builds.

I improved the portability of the test for whether C++ is enabled as a
bootstrap language, and I arranged for us to use the standard C++
compiler and flags during stage2 and stage3 otherwise, so that ppl and
cloog can build in all stages.  Without a bootstrapped C++ compiler,
recompiling C++ stuff with the system C++ compiler is a bit of a waste,
but I couldn't think of a way to selectively disable bootstrapping of
certain programs.  And then, I figured it might be useful to support
drop-in C++-requiring programs (think gold) without failing or demanding
a C++ bootstrap.

I dropped the none-vendor-os triples passed to nearly all drop-in
libraries.  configure complains about it, and I can't figure out why
it's there at all.

Although there was some configury code (presumably cut&pasted from other
libs) that would have permitted libelf to build as a drop-in, that was
far from enough.  I added what was missing and fixed what was broken, so
that it works.

I'd appreciate if someone who's been more active in configury would take
a look at the changes below, but if nobody objects, I'll check this in
about a week from now, after I return from my next trip (the last of the
year, yay! :-)


for  ChangeLog
from  Alexandre Oliva  <aoliva@...>

        * configure.ac: Add libelf to host_libs.  Enable in-tree configury
        of ppl and cloog.  Fix in-tree configury of libelf, skip tests.
        Fix portability of test of C++ as bootstrap language.  Add
        ppl/src/ppl-config.o to the bootstrap compare exclusion list.
        * configure: Rebuild.
        * Makefile.def: Drop host and target settings from gmp, mpfr, ppl,
        and cloog.  Fix in-tree ppl configuration.  Introduce libelf
        in-tree building.
        * Makefile.tpl (POSTSTAGE1_CXX_EXPORT): New.
        (POSTSTAGE1_HOST_EXPORTS): Use it.
        (STAGE[+id+]_CXXFLAGS): New.
        (BASE_FLAGS_TO_PASS): Pass it down.
        (configure-stage[+id+]-[+prefix+][+module+]): Use it.  Add
        extra_exports.
        (all-stage[+id+]-[+prefix+][+module+]): Likewise.
        (configure-[+prefix+][+module+], all-[+prefix+][+module+]): Add
        extra_exports.
        * Makefile.in: Rebuild.

Index: configure.ac
===================================================================
--- configure.ac.orig 2009-11-08 05:09:49.000000000 -0200
+++ configure.ac 2009-11-08 05:17:17.000000000 -0200
@@ -161,7 +161,7 @@ build_tools="build-texinfo build-byacc b
 
 # these libraries are used by various programs built for the host environment
 #
-host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libiconv"
+host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv"
 
 # these tools are built for the host environment
 # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
@@ -1516,7 +1516,7 @@ pplinc=
 
 AC_ARG_WITH(ppl, [  --with-ppl=PATH         Specify prefix directory for the installed PPL package
                           Equivalent to --with-ppl-include=PATH/include
-                          plus --with-ppl-lib=PATH/lib],, with_ppl=yes)
+                          plus --with-ppl-lib=PATH/lib])
 AC_ARG_WITH(ppl_include, [  --with-ppl-include=PATH Specify directory for installed PPL include files])
 AC_ARG_WITH(ppl_lib, [  --with-ppl-lib=PATH     Specify the directory for the installed PPL library])
 
@@ -1524,7 +1524,7 @@ case $with_ppl in
   no)
     ppllibs=
     ;;
-  yes)
+  "" | yes)
     ;;
   *)
     ppllibs="-L$with_ppl/lib -lppl_c -lppl -lgmpxx"
@@ -1538,8 +1538,9 @@ if test "x$with_ppl_lib" != x; then
   ppllibs="-L$with_ppl_lib -lppl_c -lppl -lgmpxx"
 fi
 if test "x$with_ppl$with_ppl_include$with_ppl_lib" = x && test -d ${srcdir}/ppl; then
-  ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/.libs -L$$r/$(HOST_SUBDIR)/ppl/_libs -lppl_c -lppl -lgmpxx '
-  pplinc='-I$$r/$(HOST_SUBDIR)/ppl/include -I$$s/ppl/include '
+  ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/interfaces/C/.libs -L$$r/$(HOST_SUBDIR)/ppl/interfaces/C/_libs -L$$r/$(HOST_SUBDIR)/ppl/src/.libs -L$$r/$(HOST_SUBDIR)/ppl/src/_libs -lppl_c -lppl -lgmpxx '
+  pplinc='-I$$r/$(HOST_SUBDIR)/ppl/src -I$$r/$(HOST_SUBDIR)/ppl/interfaces/C '
+  enable_ppl_version_check=no
 fi
 
 AC_ARG_ENABLE(ppl-version-check,
@@ -1570,7 +1571,7 @@ clooginc=" -DCLOOG_PPL_BACKEND "
 
 AC_ARG_WITH(cloog, [  --with-cloog=PATH       Specify prefix directory for the installed CLooG-PPL package
                           Equivalent to --with-cloog-include=PATH/include
-                          plus --with-cloog-lib=PATH/lib],, with_cloog=yes)
+                          plus --with-cloog-lib=PATH/lib])
 AC_ARG_WITH(cloog_include, [  --with-cloog-include=PATH Specify directory for installed CLooG include files])
 AC_ARG_WITH(cloog_lib, [  --with-cloog-lib=PATH   Specify the directory for the installed CLooG library])
 
@@ -1583,7 +1584,7 @@ case $with_cloog in
     clooglibs=
     clooginc=
     ;;
-  yes)
+  "" | yes)
     ;;
   *)
     clooglibs="-L$with_cloog/lib -lcloog"
@@ -1599,6 +1600,7 @@ fi
 if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then
   clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/.libs -L$$r/$(HOST_SUBDIR)/cloog/_libs -lcloog '
   clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND '
+  enable_cloog_version_check=no
 fi
 
 AC_ARG_ENABLE(cloog-version-check,
@@ -1665,10 +1667,11 @@ if test x"$enable_lto" = x"yes" ; then
 
   if test "x$with_libelf$with_libelf_include$with_libelf_lib" = x \
      && test -d ${srcdir}/libelf; then
-    libelflibs='-L$$r/$(HOST_SUBDIR)/libelf/.libs -L$$r/$(HOST_SUBDIR)/libelf/_libs -lelf '
-    libelfinc='-I$$r/$(HOST_SUBDIR)/libelf/include -I$$s/libelf/include'
+    libelflibs='-L$$r/$(HOST_SUBDIR)/libelf/lib -lelf '
+    libelfinc='-D__LIBELF_INTERNAL__ -I$$r/$(HOST_SUBDIR)/libelf/lib -I$$s/libelf/lib'
     LIBS="$libelflibs $LIBS"
-  fi
+
+ else
 
   CFLAGS="$CFLAGS $libelfinc"
   CPPFLAGS="$CPPFLAGS $libelfinc"
@@ -1738,6 +1741,8 @@ to specify its location.])
   CPPFLAGS="$saved_CPPFLAGS"
   LIBS="$saved_LIBS"
 
+ fi
+
   # Flags needed for libelf.
   AC_SUBST(libelflibs)
   AC_SUBST(libelfinc)
@@ -1850,7 +1855,8 @@ if test -d ${srcdir}/gcc; then
           exit 1
         fi
 
- if test "$language" = "c++" -a "$ENABLE_BUILD_WITH_CXX" = "yes"; then
+ if test "$language" = "c++" \
+   && test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
   boot_language=yes
  fi
 
@@ -3368,6 +3374,9 @@ case "$target" in
   hppa*64*-*-hpux*) ;;
   hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/*" ;;
 esac
+case " $configdirs " in
+*" ppl "*) compare_exclusions="$compare_exclusions | ppl/src/ppl-config.o" ;;
+esac
 AC_SUBST(compare_exclusions)
 
 AC_CONFIG_FILES([Makefile],
Index: Makefile.def
===================================================================
--- Makefile.def.orig 2009-11-08 05:09:38.000000000 -0200
+++ Makefile.def 2009-11-08 05:09:57.000000000 -0200
@@ -62,27 +62,24 @@ host_modules= { module= gawk; };
 host_modules= { module= gettext; };
 host_modules= { module= gmp; lib_path=.libs; bootstrap=true;
  extra_configure_flags='--disable-shared';
- no_install= true;
-        host="none-${host_vendor}-${host_os}";
- target="none-${host_vendor}-${host_os}"; };
+ no_install= true; };
 host_modules= { module= mpfr; lib_path=.libs; bootstrap=true;
  extra_configure_flags='--disable-shared @extra_mpfr_configure_flags@';
- no_install= true;
-        host="none-${host_vendor}-${host_os}";
- target="none-${host_vendor}-${host_os}"; };
+ no_install= true; };
 host_modules= { module= mpc; lib_path=.libs; bootstrap=true;
  extra_configure_flags='--disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@';
  no_install= true; };
-host_modules= { module= ppl; lib_path=.libs; bootstrap=true;
+host_modules= { module= ppl; lib_path=src/.libs; bootstrap=true;
  extra_configure_flags='--disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/';
- no_install= true;
-        host="none-${host_vendor}-${host_os}";
- target="none-${host_vendor}-${host_os}"; };
+ no_install= true; };
 host_modules= { module= cloog; lib_path=.libs; bootstrap=true;
- extra_configure_flags='--disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp';
- no_install= true;
-        host="none-${host_vendor}-${host_os}";
- target="none-${host_vendor}-${host_os}"; };
+ extra_configure_flags='--disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl';
+ extra_exports='CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; ';
+ extra_make_flags='CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"';
+ no_install= true; };
+host_modules= { module= libelf; lib_path=.libs; bootstrap=true;
+ extra_configure_flags='--disable-shared';
+ no_install= true; };
 host_modules= { module= gnuserv; };
 host_modules= { module= gold; bootstrap=true; };
 host_modules= { module= gprof; };
@@ -326,6 +323,7 @@ dependencies = { module=all-gcc; on=all-
 dependencies = { module=all-gcc; on=all-mpc; };
 dependencies = { module=all-gcc; on=all-ppl; };
 dependencies = { module=all-gcc; on=all-cloog; };
+dependencies = { module=all-gcc; on=all-libelf; };
 dependencies = { module=all-gcc; on=all-build-texinfo; };
 dependencies = { module=all-gcc; on=all-build-bison; };
 dependencies = { module=all-gcc; on=all-build-byacc; };
Index: Makefile.tpl
===================================================================
--- Makefile.tpl.orig 2009-11-08 05:09:38.000000000 -0200
+++ Makefile.tpl 2009-11-08 05:09:57.000000000 -0200
@@ -229,6 +229,21 @@ HOST_EXPORTS = \
 @endif gcc-bootstrap
  $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR);
 
+POSTSTAGE1_CXX_EXPORT = \
+ CXX='$(CXX)'; export CXX; \
+ CXX_FOR_BUILD='$(CXX_FOR_BUILD)'; export CXX_FOR_BUILD;
+@if target-libstdc++-v3-bootstrap
+# Override the above if we're bootstrapping C++.
+POSTSTAGE1_CXX_EXPORT = \
+ CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \
+  -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
+  -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
+  -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
+  -I$$s/libstdc++-v3/libsupc++ \
+  -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \
+ CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD;
+@endif target-libstdc++-v3-bootstrap
+
 # Similar, for later GCC stages.
 POSTSTAGE1_HOST_EXPORTS = \
  $(HOST_EXPORTS) \
@@ -236,13 +251,7 @@ POSTSTAGE1_HOST_EXPORTS = \
   -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \
   $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \
  CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \
- CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \
-  -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
-  -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
-  -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
-  -I$$s/libstdc++-v3/libsupc++ \
-  -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \
- CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; \
+ $(POSTSTAGE1_CXX_EXPORT) \
  GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind"; export GNATBIND; \
  LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)"; export LDFLAGS; \
  HOST_LIBS="$(POSTSTAGE1_LIBS)"; export HOST_LIBS;
@@ -401,6 +410,11 @@ STAGE_CONFIGURE_FLAGS=@stage2_werror_fla
 [+ FOR bootstrap-stage +]
 # Defaults for stage [+id+]; some are overridden below.
 STAGE[+id+]_CFLAGS = $(STAGE_CFLAGS)
+STAGE[+id+]_CXXFLAGS = $(CXXFLAGS)
+@if target-libstdc++-v3-bootstrap
+# Override the above if we're bootstrapping C++.
+STAGE[+id+]_CXXFLAGS = $(STAGE[+id+]_CFLAGS)
+@endif target-libstdc++-v3-bootstrap
 STAGE[+id+]_TFLAGS = $(STAGE_TFLAGS)
 STAGE[+id+]_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS)
 [+ ENDFOR bootstrap-stage +]
@@ -412,8 +426,8 @@ STAGE[+id+]_CONFIGURE_FLAGS = $(STAGE_CO
 # overrideable (for a bootstrap build stage1 also builds gcc.info).
 
 STAGE1_CFLAGS = @stage1_cflags@
-STAGE1_CHECKING=@stage1_checking@
-STAGE1_LANGUAGES=@stage1_languages@
+STAGE1_CHECKING = @stage1_checking@
+STAGE1_LANGUAGES = @stage1_languages@
 # * We force-disable intermodule optimizations, even if
 #   --enable-intermodule was passed, since the installed compiler
 #   probably can't handle them.  Luckily, autoconf always respects
@@ -528,6 +542,7 @@ BASE_FLAGS_TO_PASS =[+ FOR flags_to_pass
  "`echo '[+flag+]=$([+flag+])' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"[+ ELSE optional +] \
  "[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +][+ FOR bootstrap-stage +] \
  "STAGE[+id+]_CFLAGS=$(STAGE[+id+]_CFLAGS)" \
+ "STAGE[+id+]_CXXFLAGS=$(STAGE[+id+]_CXXFLAGS)" \
  "STAGE[+id+]_TFLAGS=$(STAGE[+id+]_TFLAGS)"[+ ENDFOR bootstrap-stage +] \
  "TFLAGS=$(TFLAGS)" \
  "CONFIG_SHELL=$(SHELL)" \
@@ -575,8 +590,8 @@ POSTSTAGE1_FLAGS_TO_PASS = \
  CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
  CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \
  GNATBIND="$${GNATBIND}" \
- LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)" \
- HOST_LIBS="$(POSTSTAGE1_LIBS)" \
+ LDFLAGS="$${LDFLAGS}" \
+ HOST_LIBS="$${HOST_LIBS}" \
  "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
 
 # Flags to pass down to makes which are built with the target environment.
@@ -918,7 +933,7 @@ configure-[+prefix+][+module+]: [+ IF bo
  fi; \
  [+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \
  $(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \
- [+exports+] \
+ [+exports+] [+extra_exports+] \
  echo Configuring in [+subdir+]/[+module+]; \
  cd "[+subdir+]/[+module+]" || exit 1; \
  case $(srcdir) in \
@@ -967,9 +982,10 @@ configure-stage[+id+]-[+prefix+][+module
  CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
  LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;[+ ELSE prefix +] \
  CFLAGS="$(STAGE[+id+]_CFLAGS)"; export CFLAGS; \
- CXXFLAGS="$(STAGE[+id+]_CFLAGS)"; export CXXFLAGS;[+ IF prev +] \
+ CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"; export CXXFLAGS;[+ IF prev +] \
  LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \
- LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +]; export LIBCFLAGS;[+ ENDIF prefix +] \
+ LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +]; export LIBCFLAGS;[+
+  ENDIF prefix +] [+extra_exports+] \
  echo Configuring stage [+id+] in [+subdir+]/[+module+] ; \
  $(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \
  cd [+subdir+]/[+module+] || exit 1; \
@@ -1005,7 +1021,7 @@ all-[+prefix+][+module+]: configure-[+pr
  @: $(MAKE); $(unstage)[+ ENDIF bootstrap +]
  @r=`${PWD_COMMAND}`; export r; \
  s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- [+exports+] \
+ [+exports+] [+extra_exports+] \
  (cd [+subdir+]/[+module+] && \
   $(MAKE) $(BASE_FLAGS_TO_PASS) [+args+] [+extra_make_flags+] \
  $(TARGET-[+prefix+][+module+]))
@@ -1027,14 +1043,14 @@ all-stage[+id+]-[+prefix+][+module+]: co
  s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
  TFLAGS="$(STAGE[+id+]_TFLAGS)"; \
  [+exports+][+ IF prev +] \
- [+poststage1_exports+][+ ENDIF prev +] \
+ [+poststage1_exports+][+ ENDIF prev +] [+extra_exports+] \
  cd [+subdir+]/[+module+] && \
  $(MAKE) $(BASE_FLAGS_TO_PASS)[+ IF prefix +] \
  CFLAGS="$(CFLAGS_FOR_TARGET)" \
  CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
  LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"[+ ELSE prefix +] \
  CFLAGS="$(STAGE[+id+]_CFLAGS)" \
- CXXFLAGS="$(STAGE[+id+]_CFLAGS)"[+ IF prev +] \
+ CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"[+ IF prev +] \
  LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \
  LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +][+ ENDIF prefix +] \
  CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \


--
Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist      Red Hat Brazil Compiler Engineer

Re: fix in-tree building of ppl, cloog, libelf

by Paolo Bonzini-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 11/08/2009 09:45 AM, Alexandre Oliva wrote:
> I dropped the none-vendor-os triples passed to nearly all drop-in
> libraries.  configure complains about it, and I can't figure out why
> it's there at all.

Alex, thanks so much for this work!

The only doubt I have is about the changes to drop the host/target
triples for gmp.  This was done for two reasons: 1) it fixed at the time
bootstrap for Intel Macs, and this is no longer important; 2) it drops
the assembly code implementations, thus trading some performance with
stronger testing of the compiler.

However, it is definitely possible that this broke for other host
modules' configure scripts, and I must have overlooked it when reviewing
the cloog and ppl patches; it was totally unnecessary there.

I usually bootstrap with in-tree gmp/mpfr and it works for me, so it
should be left in for gmp (but still removed from cloog and ppl).
Besides that, the patch looks great, please check it in. :-)

Paolo


Re: fix in-tree building of ppl, cloog, libelf

by Alexandre Oliva-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Nov  8, 2009, Paolo Bonzini <bonzini@...> wrote:

> The only doubt I have is about the changes to drop the host/target
> triples for gmp.

Uhh.  Sorry, I forgot you had brought up this point before checking in
the patch.  I'm now testing the reversal of that change, and I'll check
it in as soon as I confirm it has the intended effect.

--
Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist      Red Hat Brazil Compiler Engineer

Re: fix in-tree building of ppl, cloog, libelf

by Paolo Bonzini-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, Nov 16, 2009 at 21:02, Alexandre Oliva <aoliva@...> wrote:
> On Nov  8, 2009, Paolo Bonzini <bonzini@...> wrote:
>
>> The only doubt I have is about the changes to drop the host/target
>> triples for gmp.
>
> Uhh.  Sorry, I forgot you had brought up this point before checking in
> the patch.  I'm now testing the reversal of that change, and I'll check
> it in as soon as I confirm it has the intended effect.

No problem.

Paolo

Re: fix in-tree building of ppl, cloog, libelf

by Alexandre Oliva-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Nov 16, 2009, Alexandre Oliva <aoliva@...> wrote:

> On Nov  8, 2009, Paolo Bonzini <bonzini@...> wrote:
>> The only doubt I have is about the changes to drop the host/target
>> triples for gmp.

> Uhh.  Sorry, I forgot you had brought up this point before checking in
> the patch.  I'm now testing the reversal of that change, and I'll check
> it in as soon as I confirm it has the intended effect.

Turns out my lapse had much worse effects than both you and I guessed:
gmp's configure aborts if --target is different from --host.

This patch fixes it, and documents the problems.  I'll install it
momentarily, as a partial reversal, rather than waiting for it to
complete a full test cycle.


for  ChangeLog
from  Alexandre Oliva  <aoliva@...>

        * Makefile.def: Restore host and target settings for gmp.
        * Makefile.in: Rebuild.

Index: Makefile.def
===================================================================
--- Makefile.def.orig 2009-11-16 20:08:36.000000000 -0200
+++ Makefile.def 2009-11-16 20:12:31.000000000 -0200
@@ -62,7 +62,13 @@ host_modules= { module= gawk; };
 host_modules= { module= gettext; };
 host_modules= { module= gmp; lib_path=.libs; bootstrap=true;
  extra_configure_flags='--disable-shared';
- no_install= true; };
+ no_install= true;
+ // none-*-* disables asm optimizations, bootstrap-testing
+ // the compiler more thoroughly.
+        host="none-${host_vendor}-${host_os}";
+ // gmp's configure will complain if given anything
+ // different from host for target.
+        target="none-${host_vendor}-${host_os}"; };
 host_modules= { module= mpfr; lib_path=.libs; bootstrap=true;
  extra_configure_flags='--disable-shared @extra_mpfr_configure_flags@';
  no_install= true; };
Index: Makefile.in
===================================================================
--- Makefile.in.orig 2009-11-16 20:08:36.000000000 -0200
+++ Makefile.in 2009-11-16 20:12:49.000000000 -0200
@@ -16299,8 +16299,8 @@ configure-gmp:
  srcdiroption="--srcdir=$${topdir}/gmp"; \
  libsrcdir="$$s/gmp"; \
  $(SHELL) $${libsrcdir}/configure \
-  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
-  --target=${target_alias} $${srcdiroption} --disable-shared \
+  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
+  --target=none-${host_vendor}-${host_os} $${srcdiroption} --disable-shared \
   || exit 1
 @endif gmp
 
@@ -16332,8 +16332,8 @@ configure-stage1-gmp:
  srcdiroption="--srcdir=$${topdir}/gmp"; \
  libsrcdir="$$s/gmp"; \
  $(SHELL) $${libsrcdir}/configure \
-  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
-  --target=${target_alias} $${srcdiroption} \
+  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
+  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
   $(STAGE1_CONFIGURE_FLAGS) \
   --disable-shared
 @endif gmp-bootstrap
@@ -16365,8 +16365,8 @@ configure-stage2-gmp:
  srcdiroption="--srcdir=$${topdir}/gmp"; \
  libsrcdir="$$s/gmp"; \
  $(SHELL) $${libsrcdir}/configure \
-  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
-  --target=${target_alias} $${srcdiroption} \
+  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
+  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
   --with-build-libsubdir=$(HOST_SUBDIR) \
   $(STAGE2_CONFIGURE_FLAGS) \
   --disable-shared
@@ -16399,8 +16399,8 @@ configure-stage3-gmp:
  srcdiroption="--srcdir=$${topdir}/gmp"; \
  libsrcdir="$$s/gmp"; \
  $(SHELL) $${libsrcdir}/configure \
-  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
-  --target=${target_alias} $${srcdiroption} \
+  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
+  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
   --with-build-libsubdir=$(HOST_SUBDIR) \
   $(STAGE3_CONFIGURE_FLAGS) \
   --disable-shared
@@ -16433,8 +16433,8 @@ configure-stage4-gmp:
  srcdiroption="--srcdir=$${topdir}/gmp"; \
  libsrcdir="$$s/gmp"; \
  $(SHELL) $${libsrcdir}/configure \
-  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
-  --target=${target_alias} $${srcdiroption} \
+  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
+  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
   --with-build-libsubdir=$(HOST_SUBDIR) \
   $(STAGE4_CONFIGURE_FLAGS) \
   --disable-shared
@@ -16467,8 +16467,8 @@ configure-stageprofile-gmp:
  srcdiroption="--srcdir=$${topdir}/gmp"; \
  libsrcdir="$$s/gmp"; \
  $(SHELL) $${libsrcdir}/configure \
-  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
-  --target=${target_alias} $${srcdiroption} \
+  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
+  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
   --with-build-libsubdir=$(HOST_SUBDIR) \
   $(STAGEprofile_CONFIGURE_FLAGS) \
   --disable-shared
@@ -16501,8 +16501,8 @@ configure-stagefeedback-gmp:
  srcdiroption="--srcdir=$${topdir}/gmp"; \
  libsrcdir="$$s/gmp"; \
  $(SHELL) $${libsrcdir}/configure \
-  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
-  --target=${target_alias} $${srcdiroption} \
+  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
+  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
   --with-build-libsubdir=$(HOST_SUBDIR) \
   $(STAGEfeedback_CONFIGURE_FLAGS) \
   --disable-shared


--
Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist      Red Hat Brazil Compiler Engineer