[PATCH] rationalize makefile frag collection in toplevel configure.in
Nathanael Nerode
neroden@doctormoo.dyndns.org
Wed Apr 10 08:47:00 GMT 2002
OK, so I lied. I have in fact finished a functional autoconfiscation,
but in the process I found a few more items which are a lot clearer if done
in advance.
I have a preference for doing these in advance for another reason, too;
the debugging and review of the autoconfiscation patch may take a while, and
while it's happening, people will no doubt keep checking in changes to
configure.in. If I can get the pervasive, repetitive changes in first,
my autoconfiscation patch will still apply to a configure.in modified in the
typical ways. Otherwise it probably won't.
This patch changes the way makefile fragments are collected in configure.in,
so that it will be easy to convert to autoconf. It doesn't actually change
behavior.
Tested on i686-pc-linux-gnu.
This is against configure.in with the following of my patches applied
(in this order):
* pull cc configuration out of config/mh-* fragments
http://gcc.gnu.org/ml/gcc-patches/2002-04/msg00348.html
* remove redundant libgui check
http://gcc.gnu.org/ml/gcc-patches/2002-04/msg00140.html
* Replace [ with 'test'
http://gcc.gnu.org/ml/gcc-patches/2002-04/msg00389.html
2002-04-10 Nathanael Nerode <neroden@twcny.rr.com>
* configure.in: rationalize makefile fragment collection in
preparation for autoconfiscation
*** configure.in.base Wed Apr 10 11:12:04 2002
--- configure.in Wed Apr 10 11:41:06 2002
*************** appdirs=""
*** 121,136 ****
# Work in distributions that contain no compiler tools, like Autoconf.
tentative_cc=""
if test -d ${srcdir}/config ; then
case "${host}" in
m68k-hp-hpux*)
# Avoid "too much defining" errors from HPUX compiler.
tentative_cc="cc -Wp,-H256000"
! host_makefile_frag="${host_makefile_frag} config/mh-hp300"
;;
m68k-apollo-sysv*)
tentative_cc="cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DUSG"
! host_makefile_frag="${host_makefile_frag} config/mh-apollo68"
;;
m68k-apollo-bsd*)
#None of the Apollo compilers can compile gas or binutils. The preprocessor
--- 121,137 ----
# Work in distributions that contain no compiler tools, like Autoconf.
tentative_cc=""
+ host_mkfrag=/dev/null
if test -d ${srcdir}/config ; then
case "${host}" in
m68k-hp-hpux*)
# Avoid "too much defining" errors from HPUX compiler.
tentative_cc="cc -Wp,-H256000"
! host_mkfrag="config/mh-hp300"
;;
m68k-apollo-sysv*)
tentative_cc="cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DUSG"
! host_mkfrag="config/mh-apollo68"
;;
m68k-apollo-bsd*)
#None of the Apollo compilers can compile gas or binutils. The preprocessor
*************** case "${host}" in
*** 140,186 ****
# or whatever), but I'm not sure leaving CC as cc is any better...
#CC=cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DNO_STDARG
tentative_cc=gcc
! host_makefile_frag="${host_makefile_frag} config/mh-a68bsd"
;;
m88k-dg-dgux*)
tentative_cc="gcc -Wall -ansi -D__using_DGUX"
! host_makefile_frag="${host_makefile_frag} config/mh-dgux"
;;
m88k-harris-cxux*)
# Under CX/UX, we want to tell the compiler to use ANSI mode.
tentative_cc="cc -Xa"
! host_makefile_frag="${host_makefile_frag} config/mh-cxux"
;;
m88k-motorola-sysv*)
! host_makefile_frag="${host_makefile_frag} config/mh-delta88"
;;
mips*-dec-ultrix*)
tentative_cc="cc -Wf,-XNg1000"
! host_makefile_frag="${host_makefile_frag} config/mh-decstation"
;;
mips*-nec-sysv4*)
# The C compiler on NEC MIPS SVR4 needs bigger tables.
tentative_cc="cc -ZXNd=5000 -ZXNg=1000"
! host_makefile_frag="${host_makefile_frag} config/mh-necv4"
;;
mips*-sgi-irix6*)
! host_makefile_frag="${host_makefile_frag} config/mh-irix6"
;;
mips*-sgi-irix5*)
! host_makefile_frag="${host_makefile_frag} config/mh-irix5"
;;
mips*-sgi-irix4*)
# Tell compiler to use K&R C. We can't compile under the SGI Ansi
# environment. Also bump switch table size so that cp-parse will
# compile. Bump string length limit so linker builds.
tentative_cc="cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh2000 -Wf,-XNl8192"
! host_makefile_frag="${host_makefile_frag} config/mh-irix4"
;;
mips*-sgi-irix3*)
! host_makefile_frag="${host_makefile_frag} config/mh-sysv"
;;
mips*-*-sysv4*)
! host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
;;
mips*-*-sysv*)
# This is for a MIPS running RISC/os 4.52C.
--- 141,187 ----
# or whatever), but I'm not sure leaving CC as cc is any better...
#CC=cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DNO_STDARG
tentative_cc=gcc
! host_mkfrag="config/mh-a68bsd"
;;
m88k-dg-dgux*)
tentative_cc="gcc -Wall -ansi -D__using_DGUX"
! host_mkfrag="config/mh-dgux"
;;
m88k-harris-cxux*)
# Under CX/UX, we want to tell the compiler to use ANSI mode.
tentative_cc="cc -Xa"
! host_mkfrag="config/mh-cxux"
;;
m88k-motorola-sysv*)
! host_mkfrag="config/mh-delta88"
;;
mips*-dec-ultrix*)
tentative_cc="cc -Wf,-XNg1000"
! host_mkfrag="config/mh-decstation"
;;
mips*-nec-sysv4*)
# The C compiler on NEC MIPS SVR4 needs bigger tables.
tentative_cc="cc -ZXNd=5000 -ZXNg=1000"
! host_mkfrag="config/mh-necv4"
;;
mips*-sgi-irix6*)
! host_mkfrag="config/mh-irix6"
;;
mips*-sgi-irix5*)
! host_mkfrag="config/mh-irix5"
;;
mips*-sgi-irix4*)
# Tell compiler to use K&R C. We can't compile under the SGI Ansi
# environment. Also bump switch table size so that cp-parse will
# compile. Bump string length limit so linker builds.
tentative_cc="cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh2000 -Wf,-XNl8192"
! host_mkfrag="config/mh-irix4"
;;
mips*-sgi-irix3*)
! host_mkfrag="config/mh-sysv"
;;
mips*-*-sysv4*)
! host_mkfrag="config/mh-sysv4"
;;
mips*-*-sysv*)
# This is for a MIPS running RISC/os 4.52C.
*************** case "${host}" in
*** 196,219 ****
# This is not part of CFLAGS because perhaps not all C compilers have this
# option.
tentative_cc="cc -systype sysv"
! host_makefile_frag="${host_makefile_frag} config/mh-riscos"
;;
i370-ibm-opened*)
tentative_cc="c89"
! host_makefile_frag="${host_makefile_frag} config/mh-openedition"
;;
i[3456]86-*-sysv5*)
! host_makefile_frag="${host_makefile_frag} config/mh-sysv5"
;;
i[3456]86-*-dgux*)
tentative_cc="gcc -Wall -ansi -D__using_DGUX"
! host_makefile_frag="${host_makefile_frag} config/mh-dgux386"
;;
i[3456]86-ncr-sysv4.3*)
# The MetaWare compiler will generate a copyright message unless you
# turn it off by adding the -Hnocopyr flag.
tentative_cc="cc -Hnocopyr"
! host_makefile_frag="${host_makefile_frag} config/mh-ncrsvr43"
;;
i[3456]86-ncr-sysv4*)
# for an NCR 3000 (i486/SVR4) system.
--- 197,220 ----
# This is not part of CFLAGS because perhaps not all C compilers have this
# option.
tentative_cc="cc -systype sysv"
! host_mkfrag="config/mh-riscos"
;;
i370-ibm-opened*)
tentative_cc="c89"
! host_mkfrag="config/mh-openedition"
;;
i[3456]86-*-sysv5*)
! host_mkfrag="config/mh-sysv5"
;;
i[3456]86-*-dgux*)
tentative_cc="gcc -Wall -ansi -D__using_DGUX"
! host_mkfrag="config/mh-dgux386"
;;
i[3456]86-ncr-sysv4.3*)
# The MetaWare compiler will generate a copyright message unless you
# turn it off by adding the -Hnocopyr flag.
tentative_cc="cc -Hnocopyr"
! host_mkfrag="config/mh-ncrsvr43"
;;
i[3456]86-ncr-sysv4*)
# for an NCR 3000 (i486/SVR4) system.
*************** case "${host}" in
*** 222,306 ****
# you run it, but it chokes and dies on a whole bunch of GNU source
# files. Default to using the AT&T compiler installed in /usr/ccs/ATT/cc.
tentative_cc="/usr/ccs/ATT/cc"
! host_makefile_frag="${host_makefile_frag} config/mh-ncr3000"
;;
i[3456]86-*-sco3.2v5*)
! host_makefile_frag="${host_makefile_frag} config/mh-sysv"
;;
i[3456]86-*-sco*)
# The native C compiler botches some simple uses of const. Unfortunately,
# it doesn't defined anything like "__sco__" for us to test for in ansidecl.h.
tentative_cc="cc -Dconst="
! host_makefile_frag="${host_makefile_frag} config/mh-sco"
;;
i[3456]86-*-udk*)
! host_makefile_frag="${host_makefile_frag} config/mh-sysv5"
;;
i[3456]86-*-isc*)
! host_makefile_frag="${host_makefile_frag} config/mh-sysv"
;;
i[3456]86-*-solaris2*)
! host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
;;
i[3456]86-*-aix*)
! host_makefile_frag="${host_makefile_frag} config/mh-aix386"
;;
i[3456]86-*-msdosdjgpp*)
! host_makefile_frag="${host_makefile_frag} config/mh-djgpp"
;;
*-cygwin*)
! host_makefile_frag="${host_makefile_frag} config/mh-cygwin"
;;
*-mingw32*)
! host_makefile_frag="${host_makefile_frag} config/mh-mingw32"
;;
*-interix*)
! host_makefile_frag="${host_makefile_frag} config/mh-interix"
;;
*-windows*)
! host_makefile_frag="${host_makefile_frag} config/mh-windows"
;;
vax-*-ultrix2*)
# The old BSD pcc isn't up to compiling parts of gdb so use gcc
tentative_cc=gcc
! host_makefile_frag="${host_makefile_frag} config/mh-vaxult2"
;;
*-*-solaris2*)
! host_makefile_frag="${host_makefile_frag} config/mh-solaris"
;;
m68k-sun-sunos*)
# Sun's C compiler needs the -J flag to be able to compile cp-parse.c
# without overflowing the jump tables (-J says to use a 32 bit table)
tentative_cc="cc -J"
! host_makefile_frag="${host_makefile_frag} config/mh-sun3"
;;
*-hp-hpux[78]*)
tentative_cc="cc -Wp,-H256000"
! host_makefile_frag="${host_makefile_frag} config/mh-hpux8"
;;
*-hp-hpux*)
tentative_cc="cc -Wp,-H256000"
! host_makefile_frag="${host_makefile_frag} config/mh-hpux"
;;
*-*-hiux*)
tentative_cc="cc -Wp,-H256000"
! host_makefile_frag="${host_makefile_frag} config/mh-hpux"
;;
rs6000-*-lynxos*)
# /bin/cc is less than useful for our purposes. Always use GCC
tentative_cc="/usr/cygnus/progressive/bin/gcc"
! host_makefile_frag="${host_makefile_frag} config/mh-lynxrs6k"
;;
*-*-lynxos*)
# /bin/cc is less than useful for our purposes. Always use GCC
tentative_cc="/bin/gcc"
! host_makefile_frag="${host_makefile_frag} config/mh-lynxos"
;;
*-*-sysv4*)
! host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
;;
*-*-sysv*)
! host_makefile_frag="${host_makefile_frag} config/mh-sysv"
;;
esac
fi
--- 223,307 ----
# you run it, but it chokes and dies on a whole bunch of GNU source
# files. Default to using the AT&T compiler installed in /usr/ccs/ATT/cc.
tentative_cc="/usr/ccs/ATT/cc"
! host_mkfrag="config/mh-ncr3000"
;;
i[3456]86-*-sco3.2v5*)
! host_mkfrag="config/mh-sysv"
;;
i[3456]86-*-sco*)
# The native C compiler botches some simple uses of const. Unfortunately,
# it doesn't defined anything like "__sco__" for us to test for in ansidecl.h.
tentative_cc="cc -Dconst="
! host_mkfrag="config/mh-sco"
;;
i[3456]86-*-udk*)
! host_mkfrag="config/mh-sysv5"
;;
i[3456]86-*-isc*)
! host_mkfrag="config/mh-sysv"
;;
i[3456]86-*-solaris2*)
! host_mkfrag="config/mh-sysv4"
;;
i[3456]86-*-aix*)
! host_mkfrag="config/mh-aix386"
;;
i[3456]86-*-msdosdjgpp*)
! host_mkfrag="config/mh-djgpp"
;;
*-cygwin*)
! host_mkfrag="config/mh-cygwin"
;;
*-mingw32*)
! host_mkfrag="config/mh-mingw32"
;;
*-interix*)
! host_mkfrag="config/mh-interix"
;;
*-windows*)
! host_mkfrag="config/mh-windows"
;;
vax-*-ultrix2*)
# The old BSD pcc isn't up to compiling parts of gdb so use gcc
tentative_cc=gcc
! host_mkfrag="config/mh-vaxult2"
;;
*-*-solaris2*)
! host_mkfrag="config/mh-solaris"
;;
m68k-sun-sunos*)
# Sun's C compiler needs the -J flag to be able to compile cp-parse.c
# without overflowing the jump tables (-J says to use a 32 bit table)
tentative_cc="cc -J"
! host_mkfrag="config/mh-sun3"
;;
*-hp-hpux[78]*)
tentative_cc="cc -Wp,-H256000"
! host_mkfrag="config/mh-hpux8"
;;
*-hp-hpux*)
tentative_cc="cc -Wp,-H256000"
! host_mkfrag="config/mh-hpux"
;;
*-*-hiux*)
tentative_cc="cc -Wp,-H256000"
! host_mkfrag="config/mh-hpux"
;;
rs6000-*-lynxos*)
# /bin/cc is less than useful for our purposes. Always use GCC
tentative_cc="/usr/cygnus/progressive/bin/gcc"
! host_mkfrag="config/mh-lynxrs6k"
;;
*-*-lynxos*)
# /bin/cc is less than useful for our purposes. Always use GCC
tentative_cc="/bin/gcc"
! host_mkfrag="config/mh-lynxos"
;;
*-*-sysv4*)
! host_mkfrag="config/mh-sysv4"
;;
*-*-sysv*)
! host_mkfrag="config/mh-sysv"
;;
esac
fi
*************** case "${enable_shared}" in
*** 350,446 ****
*) shared=yes ;;
esac
if test x${shared} = xyes ; then
case "${host}" in
alpha*-*-linux*)
! host_makefile_frag="${host_makefile_frag} config/mh-elfalphapic"
;;
arm*-*-*)
! host_makefile_frag="${host_makefile_frag} config/mh-armpic"
;;
parisc*-*-* | hppa*-*-*)
! host_makefile_frag="${host_makefile_frag} config/mh-papic"
;;
i[3456]86-*-cygwin*)
# We don't want -fPIC on Cygwin.
;;
i[3456]86-*-*)
! host_makefile_frag="${host_makefile_frag} config/mh-x86pic"
;;
i370-*-*)
! host_makefile_frag="${host_makefile_frag} config/mh-i370pic"
;;
ia64-*-*)
! host_makefile_frag="${host_makefile_frag} config/mh-ia64pic"
;;
sparc64-*-*)
! host_makefile_frag="${host_makefile_frag} config/mh-sparcpic"
;;
powerpc*-*-aix*)
# We don't want -fPIC on AIX.
;;
powerpc*-*-*)
! host_makefile_frag="${host_makefile_frag} config/mh-ppcpic"
;;
*-*-*)
if test -f ${srcdir}/config/mh-${host_cpu}pic; then
! host_makefile_frag="${host_makefile_frag} config/mh-${host_cpu}pic"
fi
;;
esac
fi
rm -f mh-frag
! if test -n "${host_makefile_frag}" ; then
! for f in ${host_makefile_frag}
do
cat ${srcdir}/$f >> mh-frag
! done
host_makefile_frag=mh-frag
fi
# per-target:
case "${target}" in
v810*)
! target_makefile_frag="${target_makefile_frag} config/mt-v810"
;;
i[3456]86-*-netware*)
! target_makefile_frag="${target_makefile_frag} config/mt-netware"
;;
powerpc-*-netware*)
! target_makefile_frag="${target_makefile_frag} config/mt-netware"
;;
alpha*-*-linux*)
! target_makefile_frag="${target_makefile_frag} config/mt-linux"
! target_makefile_frag="${target_makefile_frag} config/mt-alphaieee"
;;
alpha*-*-*)
! target_makefile_frag="${target_makefile_frag} config/mt-alphaieee"
;;
*-*-linux*)
! target_makefile_frag="${target_makefile_frag} config/mt-linux"
;;
*-*-aix4.[3456789]* | *-*-aix[56789].*)
! target_makefile_frag="${target_makefile_frag} config/mt-aix43"
;;
mips*-*-pe | sh*-*-pe | *arm-wince-pe)
! target_makefile_frag="${target_makefile_frag} config/mt-wince"
;;
esac
# If --enable-target-optspace always use -Os instead of -O2 to build
# the target libraries, similarly if it is not specified, use -Os
# on selected platforms.
case "${enable_target_optspace}:${target}" in
yes:*)
! target_makefile_frag="${target_makefile_frag} config/mt-ospace"
;;
:d30v-*)
! target_makefile_frag="${target_makefile_frag} config/mt-d30v"
;;
:m32r-* | :d10v-* | :fr30-*)
! target_makefile_frag="${target_makefile_frag} config/mt-ospace"
;;
no:* | :*)
;;
--- 351,453 ----
*) shared=yes ;;
esac
+ host_shared_mkfrag=/dev/null
if test x${shared} = xyes ; then
case "${host}" in
alpha*-*-linux*)
! host_shared_mkfrag="config/mh-elfalphapic"
;;
arm*-*-*)
! host_shared_mkfrag="config/mh-armpic"
;;
parisc*-*-* | hppa*-*-*)
! host_shared_mkfrag="config/mh-papic"
;;
i[3456]86-*-cygwin*)
# We don't want -fPIC on Cygwin.
;;
i[3456]86-*-*)
! host_shared_mkfrag="config/mh-x86pic"
;;
i370-*-*)
! host_shared_mkfrag="config/mh-i370pic"
;;
ia64-*-*)
! host_shared_mkfrag="config/mh-ia64pic"
;;
sparc64-*-*)
! host_shared_mkfrag="config/mh-sparcpic"
;;
powerpc*-*-aix*)
# We don't want -fPIC on AIX.
;;
powerpc*-*-*)
! host_shared_mkfrag="config/mh-ppcpic"
;;
*-*-*)
if test -f ${srcdir}/config/mh-${host_cpu}pic; then
! host_shared_mkfrag="config/mh-${host_cpu}pic"
fi
;;
esac
fi
rm -f mh-frag
! for f in ${host_mkfrag} ${host_shared_mkfrag}
do
+ if test "$f" != "/dev/null" ; then
cat ${srcdir}/$f >> mh-frag
! fi
! done
! if test -f mh-frag ; then
host_makefile_frag=mh-frag
fi
# per-target:
+ target_mkfrag_one=/dev/null
+ target_mkfrag_two=/dev/null
case "${target}" in
v810*)
! target_mkfrag_one="config/mt-v810"
;;
i[3456]86-*-netware*)
! target_mkfrag_one="config/mt-netware"
;;
powerpc-*-netware*)
! target_mkfrag_one="config/mt-netware"
;;
alpha*-*-linux*)
! target_mkfrag_one="config/mt-linux"
! target_mkfrag_two="config/mt-alphaieee"
;;
alpha*-*-*)
! target_mkfrag_one="config/mt-alphaieee"
;;
*-*-linux*)
! target_mkfrag_one="config/mt-linux"
;;
*-*-aix4.[3456789]* | *-*-aix[56789].*)
! target_mkfrag_one="config/mt-aix43"
;;
mips*-*-pe | sh*-*-pe | *arm-wince-pe)
! target_mkfrag_one="config/mt-wince"
;;
esac
# If --enable-target-optspace always use -Os instead of -O2 to build
# the target libraries, similarly if it is not specified, use -Os
# on selected platforms.
+ target_mkfrag_ospace=/dev/null
case "${enable_target_optspace}:${target}" in
yes:*)
! target_mkfrag_ospace="config/mt-ospace"
;;
:d30v-*)
! target_mkfrag_ospace="config/mt-d30v"
;;
:m32r-* | :d10v-* | :fr30-*)
! target_mkfrag_ospace="config/mt-ospace"
;;
no:* | :*)
;;
*************** if test x${with_newlib} != xno && echo "
*** 1392,1431 ****
withoptions="$withoptions --with-newlib"
fi
if test x${shared} = xyes ; then
case "${target}" in
hppa* | parisc*)
! target_makefile_frag="${target_makefile_frag} config/mt-papic"
;;
i[3456]86-*)
! target_makefile_frag="${target_makefile_frag} config/mt-x86pic"
;;
ia64-*)
! target_makefile_frag="${target_makefile_frag} config/mt-ia64pic"
;;
powerpc*-*-aix*)
# We don't want -fPIC on AIX.
;;
powerpc*-*)
! target_makefile_frag="${target_makefile_frag} config/mt-ppcpic"
;;
alpha*-*-linux*)
! target_makefile_frag="${target_makefile_frag} config/mt-elfalphapic"
;;
*)
if test -f ${srcdir}/config/mt-${target_cpu}pic; then
! target_makefile_frag="${target_makefile_frag} config/mt-${target_cpu}pic"
fi
;;
esac
fi
rm -f mt-frag
! if test -n "${target_makefile_frag}" ; then
! for f in ${target_makefile_frag}
! do
cat ${srcdir}/$f >> mt-frag
! done
target_makefile_frag=mt-frag
fi
--- 1399,1441 ----
withoptions="$withoptions --with-newlib"
fi
+ target_mkfrag_shared=/dev/null
if test x${shared} = xyes ; then
case "${target}" in
hppa* | parisc*)
! target_mkfrag_shared="config/mt-papic"
;;
i[3456]86-*)
! target_mkfrag_shared="config/mt-x86pic"
;;
ia64-*)
! target_mkfrag_shared="config/mt-ia64pic"
;;
powerpc*-*-aix*)
# We don't want -fPIC on AIX.
;;
powerpc*-*)
! target_mkfrag_shared="config/mt-ppcpic"
;;
alpha*-*-linux*)
! target_mkfrag_shared="config/mt-elfalphapic"
;;
*)
if test -f ${srcdir}/config/mt-${target_cpu}pic; then
! target_mkfrag_shared="config/mt-${target_cpu}pic"
fi
;;
esac
fi
rm -f mt-frag
! for f in $target_mkfrag_one $target_mkfrag_two $target_mkfrag_ospace $target_mkfrag_shared
! do
! if test $f != /dev/null ; then
cat ${srcdir}/$f >> mt-frag
! fi
! done
! if test -f mt-frag ; then
target_makefile_frag=mt-frag
fi
More information about the Gcc-patches
mailing list