3 dnl $Id: configure.in,v 1.52 2014/02/15 22:27:59 sjg Exp $
5 dnl Process this file with autoconf to produce a configure script
8 AC_INIT([bmake], [20140214], [sjg@NetBSD.org])
9 AC_CONFIG_HEADERS(config.h)
11 dnl make srcdir absolute
14 *) srcdir=`cd $srcdir && pwd`;;
19 [ --with-defshell=SHELL use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions],
21 yes) AC_MSG_ERROR(bad value ${withval} given for bmake DEFSHELL) ;;
23 *) case "$with_defshell" in
24 sh) DEFSHELL_INDEX=DEFSHELL_INDEX_SH;; # it's the default anyway
25 ksh) DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;;
26 csh) DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;; # kidding right?
27 *) defshell_path=$with_defshell;; # better be sh compatible!
34 [ --without-meta dissable use of meta-mode],
36 yes|no) use_meta=${withval};;
37 *) AC_MSG_ERROR(bad value ${withval} given for meta) ;;
41 [ --with-filemon=path/filemon.h indicate path to filemon.h for meta-mode],
42 [ case "/${withval}" in
43 /no|*/filemon.h) filemon_h="${withval}";;
44 */filemon*) filemon_h="${withval}/filemon.h";;
45 *) AC_MSG_ERROR(bad value ${withval} given for filemon) ;;
49 for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/filemon" "$srcdir/../filemon" "$srcdir/../../sys/dev/filemon"
53 filemon_h="$d$x/filemon.h"
54 test -s "$filemon_h" && break
56 test -s "$filemon_h" && break
58 test -s "${filemon_h:-/dev/null}" || filemon_h=no
60 dnl echo "Note: use_meta=$use_meta filemon_h=$filemon_h" >&6
64 *.h) echo "Using: filemon=$filemon_h" >&6;;
69 dnl Check for OS problems
70 dnl Solaris's signal.h only privides sigset_t etc if one of
71 dnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined.
72 dnl The later two seem to cause more problems than they solve so if we
73 dnl see _EXTENSIONS_ we use it.
74 AC_USE_SYSTEM_EXTENSIONS
75 dnl Checks for programs.
77 AC_PROG_GCC_TRADITIONAL
79 dnl Executable suffix - normally empty; .exe on os2.
80 AC_SUBST(ac_exe_suffix)dnl
82 dnl Hurd refuses to define PATH_MAX or MAXPATHLEN
83 if test -x /usr/bin/getconf; then
84 bmake_path_max=`getconf PATH_MAX / 2> /dev/null`
86 bmake_path_max=${bmake_path_max:-1024}
87 if test $bmake_path_max -gt 1024; then
88 # this is all we expect
91 echo "Using: BMAKE_PATH_MAX=$bmake_path_max" >&6
92 AC_SUBST(bmake_path_max)dnl
97 dnl Checks for header files.
101 dnl Keep this list sorted
120 dnl Both *BSD and Linux have sys/cdefs.h, most do not.
121 dnl If it is missing, we add -I${srcdir}/missing to CFLAGS
122 dnl also if sys/cdefs.h does not have __RCSID we need to use ours
123 dnl but we need to include the host's one too *sigh*
124 AC_CHECK_HEADER(sys/cdefs.h,
125 echo $ECHO_N "checking whether sys/cdefs.h is compatible... $ECHO_C" >&6
127 [#include <sys/cdefs.h>
133 echo no >&6; CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd` -DNEED_HOST_CDEFS_H"),
134 CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`")
136 dnl Checks for typedefs, structures, and compiler characteristics.
147 dnl Checks for library functions.
152 dnl Keep this list sorted
185 dnl functions which we may need to provide
193 AC_CHECK_LIB([util], [emalloc],
194 [ AC_CHECK_LIB([util], [erealloc],
195 [ AC_CHECK_LIB([util], [estrdup],
196 [ AC_CHECK_LIB([util], [estrndup],
197 [ LIBS="$LIBS -lutil"
198 CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])])
206 echo "checking if compiler supports __func__" >&6
208 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],,
209 AC_DEFINE(__func__, __FUNCTION__, C99 function name))
211 dnl we want this for unit-tests/Makefile
212 echo $ECHO_N "checking if diff -u works... $ECHO_C" >&6
213 if diff -u /dev/null /dev/null > /dev/null 2>&1; then
221 dnl AC_* don't quite cut it.
223 echo "checking for MACHINE & MACHINE_ARCH..." >&6
224 cat > conftest.$ac_ext <<EOF
225 #include "confdefs.h"
226 #include <sys/param.h>
231 machine_arch=MACHINE_ARCH
235 default_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
236 egrep machine= | tr -d ' "'`
238 if test "$default_machine"; then
239 eval "$default_machine"
241 machine=${machine:-`$srcdir/machine.sh`}
242 machine_arch=${machine_arch:-`$srcdir/machine.sh arch`}
243 echo "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
245 dnl now allow overrides
248 [ --with-machine=MACHINE explicitly set MACHINE],
249 [case "${withval}" in
250 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;;
252 generic) machine=`$srcdir/machine.sh`;;
253 *) machine=$with_machine;;
256 AC_ARG_WITH(force_machine,
257 [ --with-force-machine=MACHINE set FORCE_MACHINE],
258 [case "${withval}" in
259 yes) force_machine=FORCE_;;
261 *) force_machine=FORCE_; machine=$with_force_machine;;
265 AC_ARG_WITH(force_machine_arch,
266 [ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH],
267 [case "${withval}" in
268 yes) force_machine_arch=FORCE_;;
270 *) force_machine_arch=FORCE_; machine_arch=$with_force_machine;;
273 AC_ARG_WITH(machine_arch,
274 [ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH],
275 [case "${withval}" in
276 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;;
278 *) machine_arch=$with_machine_arch;;
281 dnl Tell them what we ended up with
283 echo "Using: ${force_machine}MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
285 dnl Allow folk to control _PATH_DEFSYSPATH
287 default_sys_path=\${prefix}/share/mk
288 AC_ARG_WITH(default-sys-path,
289 [ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH
290 MAKESYSPATH is a ':' separated list of directories
291 that bmake will search for system .mk files.
292 _PATH_DEFSYSPATH is its default value.],
293 [case "${withval}" in
294 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;;
296 *) default_sys_path="$with_default_sys_path"
300 dnl Some folk don't like this one
302 AC_ARG_WITH(path-objdirprefix,
303 [ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX],
304 [case "${withval}" in
305 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;;
306 no) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;;
307 *) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;;
310 dnl And this can be handy to do with out.
312 AC_ARG_ENABLE(pwd-override,
313 [ --disable-pwd-override disable \$PWD overriding getcwd()],
314 [case "${enableval}" in
316 no) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;;
317 *) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;;
322 AC_ARG_ENABLE(check-make-chdir,
323 [ --disable-check-make-chdir disable make trying to guess
324 when it should automatically cd \${.CURDIR}],
325 [case "${enableval}" in
327 no) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;;
328 *) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;;
331 dnl On non-BSD systems, bootstrap won't work without mk
334 [ --with-mksrc=PATH tell makefile.boot where to find mk src],
335 [case "${withval}" in
337 *) test -s $withval/install-mk && mksrc=$withval ||
338 AC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk)
343 dnl Now make sure we have a value
345 srcdir=`cd $srcdir && pwd`
346 for mksrc in $mksrc $srcdir/mk $srcdir/../mk mk
348 test -s $mksrc/install-mk || continue
349 mksrc=`cd $mksrc && pwd`
352 mksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"`
353 echo "Using: MKSRC=$mksrc" 1>&6
354 dnl On some systems we want a different default shell by default
355 if test -x /usr/xpg4/bin/sh; then
356 defshell_path=${defshell_path:-/usr/xpg4/bin/sh}
358 if test -n "$defshell_path"; then
359 echo "Using: SHELL=$defshell_path" >&6
360 AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell)
362 if test -n "$DEFSHELL_INDEX"; then
363 AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default)
367 AC_SUBST(force_machine)
368 AC_SUBST(machine_arch)
370 AC_SUBST(default_sys_path)
376 AC_OUTPUT(makefile Makefile.config make-bootstrap.sh unit-tests/Makefile)
382 sh ./make-bootstrap.sh
384 to produce a fully functional bmake.