Article View: gnu.utils.bug
Article #1345autoconf 1.3
From: Bruno Haible
Date: Wed, 27 Jan 1993 02:59
Date: Wed, 27 Jan 1993 02:59
191 lines
7242 bytes
7242 bytes
I had some problems when switching from autoconf 1.2 to autoconf 1.3.
1)
Autoconf 1.3 claims to "require GNU m4". In fact, it requires
GNU m4 1.0.3. An older version of GNU m4 (no version number, but contains the
string "Copyright (C) 1989, 1990, 1991 Free Software Foundation") dumps core
when autoconf 1.3 is called.
2)
When my config.h.in contains a default like
#define FEATURE
(an empty definition!) which is to be overriden by AC_DEFINE(FEATURE,something)
the sed commands from config.status fail to change this to
#define FEATURE something
Here is a simple patch for it:
diff -c3 -r ./acgeneral.m4 /usr/local/lib/acgeneral.m4
*** ./acgeneral.m4 Tue Jan 19 18:16:09 1993
--- /usr/local/lib/acgeneral.m4 Mon Jan 25 00:28:47 1993
***************
*** 242,260 ****
dnl
dnl Don't compare $2 to a blank, so we can support "-Dfoo=".
dnl If creating a configuration header file, we add
! dnl commands to SEDDEFS to define the variable. SED[due][ABCD]
dnl get defined in config.status. Here we just insert the
dnl variable parts of the string: the variable name to define
dnl and the value to give it.
define(AC_DEFINE,
[ifelse($#, 2, ifelse(regexp($2, \W), -1, DEFS="$DEFS -D$1=$2", DEFS="$DEFS -D'$1=$2'"), DEFS="$DEFS -D$1=1")ifdef([AC_CONFIG_NAME],
[
ifelse($#, 2, [SEDDEFS="${SEDDEFS}\${SEDdA}$1\${SEDdB}$1\${SEDdC}$2\${SEDdD}
\${SEDuA}$1\${SEDuB}$1\${SEDuC}$2\${SEDuD}
\${SEDeA}$1\${SEDeB}$1\${SEDeC}$2\${SEDeD}
"], [SEDDEFS="${SEDDEFS}\${SEDdA}$1\${SEDdB}$1\${SEDdC}1\${SEDdD}
\${SEDuA}$1\${SEDuB}$1\${SEDuC}1\${SEDuD}
\${SEDeA}$1\${SEDeB}$1\${SEDeC}1\${SEDeD}
"])])])dnl
dnl
define(AC_BEFORE,
--- 242,262 ----
dnl
dnl Don't compare $2 to a blank, so we can support "-Dfoo=".
dnl If creating a configuration header file, we add
! dnl commands to SEDDEFS to define the variable. SED[duef][ABCD]
dnl get defined in config.status. Here we just insert the
dnl variable parts of the string: the variable name to define
dnl and the value to give it.
define(AC_DEFINE,
[ifelse($#, 2, ifelse(regexp($2, \W), -1, DEFS="$DEFS -D$1=$2", DEFS="$DEFS -D'$1=$2'"), DEFS="$DEFS -D$1=1")ifdef([AC_CONFIG_NAME],
[
ifelse($#, 2, [SEDDEFS="${SEDDEFS}\${SEDdA}$1\${SEDdB}$1\${SEDdC}$2\${SEDdD}
\${SEDuA}$1\${SEDuB}$1\${SEDuC}$2\${SEDuD}
\${SEDeA}$1\${SEDeB}$1\${SEDeC}$2\${SEDeD}
+ \${SEDfA}$1\${SEDfB}$1\${SEDfC}$2\${SEDfD}
"], [SEDDEFS="${SEDDEFS}\${SEDdA}$1\${SEDdB}$1\${SEDdC}1\${SEDdD}
\${SEDuA}$1\${SEDuB}$1\${SEDuC}1\${SEDuD}
\${SEDeA}$1\${SEDeB}$1\${SEDeC}1\${SEDeD}
+ \${SEDfA}$1\${SEDfB}$1\${SEDfC}1\${SEDfD}
"])])])dnl
dnl
define(AC_BEFORE,
***************
*** 564,569 ****
--- 572,582 ----
SEDeB='<<$>>@\1#\2define\3'
SEDeC=' '
SEDeD='@g'
+ # SEDf turns "#define NAME" without trailing blanks into "#define NAME VALUE".
+ SEDfA='s@^\([ ]*\)#\([ ]*\)define\([ ][ ]*\)'
+ SEDfB='<<$>>@\1#\2define\3'
+ SEDfC=' '
+ SEDfD='@g'
changequote([,])dnl
rm -f conftest.sed
cat > conftest.sed <<CONFEOF
3)
A spurious #endif should be removed:
diff -c3 -r ./acgeneral.m4 /usr/local/lib/acgeneral.m4
*** ./acgeneral.m4 Tue Jan 19 18:16:09 1993
--- /usr/local/lib/acgeneral.m4 Mon Jan 25 00:28:47 1993
***************
*** 410,416 ****
#endif
],
$2, $3)])dnl
- #endif
])dnl
dnl
define(AC_HAVE_FUNCS,
--- 412,417 ----
4)
What was the purpose of removing "-O" from the CC options when
the compiler is known to be GCC?
diff -c3 -r ./acspecific.m4 /usr/local/lib/acspecific.m4
*** ./acspecific.m4 Thu Jan 14 21:59:13 1993
--- /usr/local/lib/acspecific.m4 Sun Jan 24 01:36:15 1993
***************
*** 34,39 ****
--- 34,40 ----
${CC-cc} -E conftest.c > conftest.out 2>&1
if egrep yes conftest.out >/dev/null 2>&1; then
GCC=1 # For later tests.
+ CC="$CC -O"
fi
rm -f conftest*
])dnl
5)
Defining RANLIB as '@:' is a Makefile usually produces a syntax error.
Defining it as '\#' avoids this (at least with some shells).
diff -c3 -r ./acspecific.m4 /usr/local/lib/acspecific.m4
*** ./acspecific.m4 Thu Jan 14 21:59:13 1993
--- /usr/local/lib/acspecific.m4 Sun Jan 24 01:36:15 1993
***************
*** 68,74 ****
rm -f conftest*
])dnl
dnl
! define(AC_PROG_RANLIB, [AC_PROGRAM_CHECK(RANLIB, ranlib, ranlib, @:)])dnl
dnl
define(AC_PROG_AWK, [AC_PROGRAMS_CHECK(AWK, mawk gawk nawk awk,)])dnl
dnl
--- 69,75 ----
rm -f conftest*
])dnl
dnl
! define(AC_PROG_RANLIB, [AC_PROGRAM_CHECK(RANLIB, ranlib, ranlib, [\\\#])])dnl
dnl
define(AC_PROG_AWK, [AC_PROGRAMS_CHECK(AWK, mawk gawk nawk awk,)])dnl
dnl
6)
An AC_DEFINE(FEATURE,void*) or AC_DEFINE(FEATURE,[void*]) results in
-D'FEATURE=void*' being added to DEFS. Even gcc 2.3.3 complains about such
an option. -DFEATURE=void* works, probably because no wildcard expansion
takes place.
diff -c3 -r ./acgeneral.m4 /usr/local/lib/acgeneral.m4
*** ./acgeneral.m4 Tue Jan 19 18:16:09 1993
--- /usr/local/lib/acgeneral.m4 Mon Jan 25 00:28:47 1993
***************
*** 242,256 ****
dnl
dnl Don't compare $2 to a blank, so we can support "-Dfoo=".
dnl If creating a configuration header file, we add
dnl commands to SEDDEFS to define the variable. SED[due][ABCD]
dnl get defined in config.status. Here we just insert the
dnl variable parts of the string: the variable name to define
dnl and the value to give it.
define(AC_DEFINE,
! [ifelse($#, 2, ifelse(regexp($2, \W), -1, DEFS="$DEFS -D$1=$2", DEFS="$DEFS -D'$1=$2'"), DEFS="$DEFS -D$1=1")ifdef([AC_CONFIG_NAME],
[
ifelse($#, 2, [SEDDEFS="${SEDDEFS}\${SEDdA}$1\${SEDdB}$1\${SEDdC}$2\${SEDdD}
\${SEDuA}$1\${SEDuB}$1\${SEDuC}$2\${SEDuD}
\${SEDeA}$1\${SEDeB}$1\${SEDeC}$2\${SEDeD}
--- 242,254 ----
dnl
dnl Don't compare $2 to a blank, so we can support "-Dfoo=".
dnl If creating a configuration header file, we add
dnl commands to SEDDEFS to define the variable. SED[due][ABCD]
dnl get defined in config.status. Here we just insert the
dnl variable parts of the string: the variable name to define
dnl and the value to give it.
define(AC_DEFINE,
! [ifelse($#, 2, DEFS="$DEFS -D$1=$2", DEFS="$DEFS -D$1=1")ifdef([AC_CONFIG_NAME],
[
ifelse($#, 2, [SEDDEFS="${SEDDEFS}\${SEDdA}$1\${SEDdB}$1\${SEDdC}$2\${SEDdD}
\${SEDuA}$1\${SEDuB}$1\${SEDuC}$2\${SEDuD}
\${SEDeA}$1\${SEDeB}$1\${SEDeC}$2\${SEDeD}
In any case, now I am happy with autoconf 1.3, especially since it removes the
dependence on awk. Consensys' awk didn't succeed in building a correct config.h.
Regards,
Bruno Haible
haible@ma2s2.mathematik.uni-karlsruhe.de
Technical Details
Message-ID:
<9301261049.AA22445@ma2s2.mathematik.uni-karlsruhe.de>Path:
arc1-ca.pugleaf.net!sparky!uunet!stanford.edu!ames!saimiri.primate.wisc.edu!zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!cis.ohio-state.edu!ma2s2.mathematik.uni-karlsruhe.de!haibleShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!stanford.edu!ames!saimiri.primate.wisc.edu!zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!cis.ohio-state.edu!ma2s2.mathematik.uni-karlsruhe.de!haible From: haible@ma2s2.mathematik.uni-karlsruhe.de (Bruno Haible) Newsgroups: gnu.utils.bug Subject: autoconf 1.3 Date: 26 Jan 1993 21:59:05 -0500 Organization: GNUs Not Usenet Lines: 192 Sender: daemon@cis.ohio-state.edu Approved: bug-gnu-utils@prep.ai.mit.edu Distribution: gnu Message-ID: <9301261049.AA22445@ma2s2.mathematik.uni-karlsruhe.de>