Thread View: gnu.utils.bug
1 messages
1 total messages
Started by Bruno Haible
Wed, 27 Jan 1993 02:59
autoconf 1.3
Author: 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
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads