3 dnl $Id: configure.in,v 1.49 2013/07/06 18:25:19 sjg Exp $
5 dnl Process this file with autoconf to produce a configure script
7 AC_INIT([bmake], [20130706], [sjg@NetBSD.org])
8 AC_CONFIG_HEADER(config.h)
10 dnl make srcdir absolute
13 *) srcdir=`cd $srcdir && pwd`;;
18 [ --with-defshell=SHELL use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions],
20 yes) AC_MSG_ERROR(bad value ${withval} given for bmake DEFSHELL) ;;
22 *) case "$with_defshell" in
23 sh) DEFSHELL_INDEX=DEFSHELL_INDEX_SH;; # it's the default anyway
24 ksh) DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;;
25 csh) DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;; # kidding right?
26 *) defshell_path=$with_defshell;; # better be sh compatible!
33 [ --without-meta dissable use of meta-mode],
35 yes|no) use_meta=${withval};;
36 *) AC_MSG_ERROR(bad value ${withval} given for meta) ;;
40 [ --with-filemon=path/filemon.h indicate path to filemon.h for meta-mode],
41 [ case "/${withval}" in
42 /no|*/filemon.h) filemon_h="${withval}";;
43 */filemon*) filemon_h="${withval}/filemon.h";;
44 *) AC_MSG_ERROR(bad value ${withval} given for filemon) ;;
48 for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/filemon" "$srcdir/../filemon" "$srcdir/../../sys/dev/filemon"
52 filemon_h="$d$x/filemon.h"
53 test -s "$filemon_h" && break
55 test -s "$filemon_h" && break
57 test -s "${filemon_h:-/dev/null}" || filemon_h=no
59 dnl echo "Note: use_meta=$use_meta filemon_h=$filemon_h" >&6
63 *.h) echo "Using: filemon=$filemon_h" >&6;;
68 dnl Check for OS problems
69 dnl Solaris's signal.h only privides sigset_t etc if one of
70 dnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined.
71 dnl The later two seem to cause more problems than they solve so if we
72 dnl see _EXTENSIONS_ we use it.
73 AC_USE_SYSTEM_EXTENSIONS
74 dnl Checks for programs.
76 AC_PROG_GCC_TRADITIONAL
78 dnl Executable suffix - normally empty; .exe on os2.
79 AC_SUBST(ac_exe_suffix)dnl
85 dnl Checks for header files.
89 dnl Keep this list sorted
107 dnl Both *BSD and Linux have sys/cdefs.h, most do not.
108 dnl If it is missing, we add -I${srcdir}/missing to CFLAGS
109 dnl also if sys/cdefs.h does not have __RCSID we need to use ours
110 dnl but we need to include the host's one too *sigh*
111 AC_CHECK_HEADER(sys/cdefs.h,
112 echo $ECHO_N "checking whether sys/cdefs.h is compatible... $ECHO_C" >&6
114 [#include <sys/cdefs.h>
120 echo no >&6; CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd` -DNEED_HOST_CDEFS_H"),
121 CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`")
123 dnl Checks for typedefs, structures, and compiler characteristics.
134 dnl Checks for library functions.
139 dnl Keep this list sorted
171 dnl functions which we may need to provide
179 AC_CHECK_LIB([util], [emalloc],
180 [ AC_CHECK_LIB([util], [erealloc],
181 [ AC_CHECK_LIB([util], [estrdup],
182 [ AC_CHECK_LIB([util], [estrndup],
183 [ LIBS="$LIBS -lutil"
184 CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])])
192 dnl we want this for unit-tests/Makefile
193 echo $ECHO_N "checking if diff -u works... $ECHO_C" >&6
194 if diff -u /dev/null /dev/null > /dev/null 2>&1; then
202 dnl AC_* don't quite cut it.
204 echo "checking for MACHINE & MACHINE_ARCH..." >&6
205 cat > conftest.$ac_ext <<EOF
206 #include "confdefs.h"
207 #include <sys/param.h>
212 machine_arch=MACHINE_ARCH
216 default_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
217 egrep machine= | tr -d ' "'`
219 if test "$default_machine"; then
220 eval "$default_machine"
222 machine=${machine:-`$srcdir/machine.sh`}
223 machine_arch=${machine_arch:-`$srcdir/machine.sh arch`}
224 echo "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
226 dnl now allow overrides
229 [ --with-machine=MACHINE explicitly set MACHINE],
230 [case "${withval}" in
231 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;;
233 generic) machine=`$srcdir/machine.sh`;;
234 *) machine=$with_machine;;
237 AC_ARG_WITH(force_machine,
238 [ --with-force-machine=MACHINE set FORCE_MACHINE],
239 [case "${withval}" in
240 yes) force_machine=FORCE_;;
242 *) force_machine=FORCE_; machine=$with_force_machine;;
246 AC_ARG_WITH(force_machine_arch,
247 [ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH],
248 [case "${withval}" in
249 yes) force_machine_arch=FORCE_;;
251 *) force_machine_arch=FORCE_; machine_arch=$with_force_machine;;
254 AC_ARG_WITH(machine_arch,
255 [ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH],
256 [case "${withval}" in
257 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;;
259 *) machine_arch=$with_machine_arch;;
262 dnl Tell them what we ended up with
264 echo "Using: ${force_machine}MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
266 dnl Allow folk to control _PATH_DEFSYSPATH
268 default_sys_path=\${prefix}/share/mk
269 AC_ARG_WITH(default-sys-path,
270 [ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH
271 MAKESYSPATH is a ':' separated list of directories
272 that bmake will search for system .mk files.
273 _PATH_DEFSYSPATH is its default value.],
274 [case "${withval}" in
275 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;;
277 *) default_sys_path="$with_default_sys_path"
281 dnl Some folk don't like this one
283 AC_ARG_WITH(path-objdirprefix,
284 [ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX],
285 [case "${withval}" in
286 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;;
287 no) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;;
288 *) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;;
291 dnl And this can be handy to do with out.
293 AC_ARG_ENABLE(pwd-override,
294 [ --disable-pwd-override disable \$PWD overriding getcwd()],
295 [case "${enableval}" in
297 no) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;;
298 *) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;;
303 AC_ARG_ENABLE(check-make-chdir,
304 [ --disable-check-make-chdir disable make trying to guess
305 when it should automatically cd \${.CURDIR}],
306 [case "${enableval}" in
308 no) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;;
309 *) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;;
312 dnl On non-BSD systems, bootstrap won't work without mk
315 [ --with-mksrc=PATH tell makefile.boot where to find mk src],
316 [case "${withval}" in
318 *) test -s $withval/install-mk && mksrc=$withval ||
319 AC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk)
324 dnl Now make sure we have a value
326 srcdir=`cd $srcdir && pwd`
327 for mksrc in $mksrc $srcdir/mk $srcdir/../mk mk
329 test -s $mksrc/install-mk || continue
330 mksrc=`cd $mksrc && pwd`
333 mksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"`
334 echo "Using: MKSRC=$mksrc" 1>&6
335 dnl On some systems we want a different default shell by default
336 if test -x /usr/xpg4/bin/sh; then
337 defshell_path=${defshell_path:-/usr/xpg4/bin/sh}
339 if test -n "$defshell_path"; then
340 echo "Using: SHELL=$defshell_path" >&6
341 AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell)
343 if test -n "$DEFSHELL_INDEX"; then
344 AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default)
348 AC_SUBST(force_machine)
349 AC_SUBST(machine_arch)
351 AC_SUBST(default_sys_path)
357 AC_OUTPUT(makefile Makefile.config make-bootstrap.sh unit-tests/Makefile)
363 sh ./make-bootstrap.sh
365 to produce a fully functional bmake.