What am I doing wrong here then? AC_ARG_ENABLE([cpus], AC_HELP_STRING([--enable-CPUs=<N>], [use N CPUs in SMP mode (default is 4)]), AC_DEFINE([CPUS],$enable_cpus,[Enabled N CPUs in SMP mode]), AC_DEFINE([CPUS],4,[Enabled the default number of CPUs in SMP mode])) configure --enable-cpus=12 Then my config.h shows: #define CPUS $enable_cpus
Some notes:
(1) Use AC_DEFINE_UNQUOTED to get $enable_cpus to expand properly.
(2) You should handle the case when the user specifies --disable-cpus (or --enable-cpus=no).
(3) To avoid confusing users, your help message should reflect the actual option name (that is, --enable-cpus rather than --enable-CPUs).
(4) As a general rule, it is important to quote all arguments to all functions. For instance, you are using AC_HELP_STRING() and AC_DEFINE() as arguments to AC_ARG_ENABLE(), so those invocations should be quoted. For example: AC_ARG_ENABLE([cpus], [AC_HELP_STRING([--blah]...)], [AC_DEFINE([FOO]...)]).
Here is one possible implementation which will provide the output you desire, and which addresses the above issues.
AC_ARG_ENABLE([cpus], [AC_HELP_STRING([--enable-cpus=<N>], [use N CPUs in SMP mode (default is 4)])], [], [enable_cpus=4]) AS_IF([test $enable_cpus = no], [enable_cpus=1]) AC_DEFINE_UNQUOTED([CPUS],[$enable_cpus],[Enabled N CPUs in SMP mode])
-- ES