1dnl 2dnl RCSid: 3dnl $Id: configure.in,v 1.114 2026/04/13 18:40:26 sjg Exp $ 4dnl 5dnl Process this file with autoconf to produce a configure script 6dnl 7AC_PREREQ([2.71]) 8AC_INIT([bmake],[20260406],[sjg@NetBSD.org]) 9AC_CONFIG_HEADERS(config.h) 10 11dnl make srcdir absolute 12case "$srcdir" in 13/*) ;; 14*) srcdir=`cd $srcdir && 'pwd'`;; 15esac 16 17dnl get _MAKE_VERSION 18. $srcdir/VERSION 19OS=`uname -s` 20 21dnl do not trust return from type 22have() { 23 case `(type "$1") 2>&1` in 24 *" found") return 1;; 25 esac 26 return 0 27} 28 29dnl function to set DEFSHELL_INDEX 30use_defshell() { 31 case "$defshell_path$DEFSHELL_INDEX" in 32 "") ;; 33 *) return 0;; 34 esac 35 case "$1" in 36 *csh) # we must be desperate 37 DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;; 38 *ksh*) 39 DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;; 40 sh|/bin/sh|*/bsh) 41 DEFSHELL_INDEX=DEFSHELL_INDEX_SH;; 42 *=*) # eg. sh=/bin/bsh 43 eval `IFS="="; set -- $1; echo name=$1 defshell_path=$2` 44 case "$name" in 45 csh) DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;; 46 ksh) DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;; 47 sh) DEFSHELL_INDEX=DEFSHELL_INDEX_SH;; 48 *) DEFSHELL_INDEX=DEFSHELL_INDEX_CUSTOM;; 49 esac 50 ;; 51 *) DEFSHELL_INDEX=DEFSHELL_INDEX_CUSTOM 52 defshell_path=$1 53 ;; 54 esac 55 case "$defshell_path,$1" in 56 ,/bin/*) ;; 57 ,*/*) defshell_path=$1;; 58 esac 59} 60dnl 61AC_ARG_WITH(defshell, 62[ --with-defshell=[[name=]]SHELL use SHELL by default 63 optional 'name' can be 'sh' to indicate SHELL is sh compatible 64 eg. --with-defshell=sh=/bin/bsh 65 use just 'sh' or 'ksh' to pick the internal definitions], 66[case "${withval}" in 67yes) AC_MSG_ERROR(bad value ${withval} given for bmake DEFSHELL) ;; 68no) ;; 69*) use_defshell $with_defshell;; 70esac]) 71dnl 72dnl sometimes uname -s output is not useful 73FORCE_MAKE_OS= 74make_os= 75case "$OS" in 76CYGWIN*) 77 use_makefile=no 78 OS=Cygwin 79 FORCE_MAKE_OS=$OS 80 ;; 81Darwin|MINGW*) use_makefile=no;; 82*) use_makefile=yes;; 83esac 84if test "x$FORCE_MAKE_OS" != x; then 85 force_make_os=FORCE_ 86 make_os=${FORCE_MAKE_OS} 87fi 88AC_ARG_WITH(makefile, 89[ --without-makefile disable use of generated makefile], 90[case "${withval}" in 91yes|no) use_makefile=${withval};; 92*) AC_MSG_ERROR(bad value ${withval} given for makefile) ;; 93esac]) 94dnl 95use_meta=yes 96AC_ARG_WITH(meta, 97[ --without-meta disable use of meta-mode], 98[case "${withval}" in 99yes|no) use_meta=${withval};; 100*) AC_MSG_ERROR(bad value ${withval} given for meta) ;; 101esac]) 102dnl 103AC_ARG_WITH(filemon, 104[ --with-filemon={no,dev,ktrace,path/filemon.h} indicate filemon method for meta-mode. Path to filemon.h implies dev], 105[ case "/${withval}" in 106/no) use_filemon=no;; 107/*trace) filemon_h=no use_filemon="${withval}";; 108*/filemon.h) filemon_h="${withval}";; 109*/filemon*) filemon_h="${withval}/filemon.h";; 110*) AC_MSG_ERROR(bad value ${withval} given for filemon) ;; 111esac 112case "$use_filemon,$filemon_h" in 113,*.h) use_filemon=dev;; 114esac 115], 116[ 117case "$OS" in 118Cygwin*|MINGW*) use_filemon=no;; 119NetBSD) filemon_h=no use_filemon=ktrace;; 120*) 121 for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/../../sys/dev/filemon" 122 do 123 for x in "/$OS" "" 124 do 125 filemon_h="$d$x/filemon.h" 126 test -s "$filemon_h" && break 127 done 128 test -s "$filemon_h" && { use_filemon=dev; break; } 129 done 130 ;; 131esac 132use_filemon=${use_filemon:-no} 133case "$use_filemon" in 134dev) ;; 135*) filemon_h=no;; 136esac 137]) 138dnl 139dnl in 2020 NetBSD make changed the handling of $$ in := 140dnl bmake introduced .MAKE.SAVE_DOLLARS defaulting to "no" to retain 141dnl the traditional behavior. 142dnl Use "yes" to be compatible with NetBSD make. 143dnl 144save_dollars=no 145AC_ARG_WITH(save_dollars, 146[ --with-save-dollars={yes,no} control default for .MAKE.SAVE_DOLLARS - default is "no"], 147[case "${withval}" in 148yes|no) MAKE_SAVE_DOLLARS_DEFAULT=${withval} ;; 149*) AC_MSG_ERROR(bad value ${withval} given for save_dollars) ;; 150esac]) 151dnl 152dnl some systems have broken/incomplete strftime 153AC_ARG_WITH(bmake_strftime, 154[ --with-bmake-strftime force use of bmake strftime], 155[case "${withval}" in 156yes|no) bmake_strftime=$withval;; 157esac]) 158dnl 159dnl echo "Note: use_meta=$use_meta use_filemon=$use_filemon filemon_h=$filemon_h" >&6 160case "$use_meta" in 161yes) 162 case "$use_filemon" in 163 no) ;; 164 *) echo "Using: filemon_${use_filemon}.c" >&6;; 165 esac 166 ;; 167esac 168dnl 169dnl Check for OS problems 170dnl 171dnl Minix 3 at least has bugs in headers where _NETBSD_SOURCE 172dnl is needed for compilation 173case "$OS" in 174Minix) CPPFLAGS="${CPPFLAGS} -D_NETBSD_SOURCE" 175 test -x /usr/pkg/bin/clang && CC=${CC:-clang} 176 ;; 177SCO_SV) # /bin/sh is not usable 178 ALT_DEF_SHELLS="/bin/lsh /usr/bin/bash /bin/ksh" 179 FORCE_USE_SHELL=1 180 ;; 181esac 182if test "x$FORCE_USE_SHELL" != x; then 183 CPPFLAGS="${CPPFLAGS} -DFORCE_USE_SHELL" 184fi 185dnl 186# Not everyone groks TZ=Europe/Berlin 187# which is used by the localtime tests 188echo $ECHO_N "checking whether system has timezone Europe/Berlin... $ECHO_C" >&6 189eval `TZ=UTC date '+utc_H=%H utc_d=%d' 2> /dev/null` 190eval `TZ=Europe/Berlin date '+utc1_H=%H utc1_d=%d' 2> /dev/null` 191if test ${utc1_d-0} = 01 -a ${utc_d-0} -gt ${utc1_d-0} || 192 test ${utc_d-0} -lt ${utc1_d-0} -o ${utc_H-0} -lt ${utc1_H-0}; then 193 echo yes >&6 194 UTC_1=Europe/Berlin 195else 196 eval `TZ=UTC-1 date '+utc1_H=%H utc1_d=%d' 2> /dev/null` 197 if test ${utc1_d-0} = 01 -a ${utc_d-0} -gt ${utc1_d-0} || 198 test ${utc_d-0} -lt ${utc1_d-0} -o ${utc_H-0} -lt ${utc1_H-0}; then 199 UTC_1=UTC-1 200 echo no, using UTC-1 >&6 201 fi 202fi 203test "x$UTC_1" = x && echo no >&6 204dnl 205dnl Add some places to look for compilers 206oldPATH=$PATH 207for d in /usr/gnu/bin 208do 209 test -d $d || continue 210 PATH=$PATH:$d 211done 212export PATH 213dnl 214dnl if lua is available check it is version 5.2 or later 215lua=$LUA 216AC_ARG_WITH(lua, 217[ --without-lua do not use check-expect.lua], 218[case "${withval}" in 219no) lua=:;; 220yes) lua= ;; 221/*lua*) lua=$withval;; 222*) AC_MSG_ERROR(bad value ${withval} given for lua);; 223esac]) 224if test "x$lua" != x:; then 225 if have lua; then 226 lua_version=`${lua:-lua} -v | sed 's/Lua //;s/ *Copy.*//;'` 227 echo $ECHO_N "checking whether lua version ($lua_version) > 5.2... $ECHO_C" >&6 228 case "$lua_version" in 229 4.*|5.1.*) lua=:; echo no >&6;; 230 *) echo yes >&6;; 231 esac 232 fi 233fi 234dnl 235dnl Solaris's signal.h only privides sigset_t etc if one of 236dnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined. 237dnl The later two seem to cause more problems than they solve so if we 238dnl see _EXTENSIONS_ we use it. 239AC_USE_SYSTEM_EXTENSIONS 240dnl Checks for programs. 241AC_PROG_CC 242AC_PROG_INSTALL 243# We have to override that on some systems 244case "$OS" in 245IRIX*) ac_INSTALL=$srcdir/install-sh;; 246esac 247dnl Executable suffix - normally empty; .exe on os2. 248AC_SUBST(ac_exe_suffix)dnl 249dnl 250dnl Hurd refuses to define PATH_MAX or MAXPATHLEN 251if test -x /usr/bin/getconf; then 252 bmake_path_max=`getconf PATH_MAX / 2> /dev/null` 253 # only a numeric response is useful 254 test ${bmake_path_max:-0} -gt 0 2> /dev/null || bmake_path_max= 255fi 256bmake_path_max=${bmake_path_max:-1024} 257if test $bmake_path_max -gt 1024; then 258 # this is all we expect 259 bmake_path_max=1024 260fi 261if test ${bmake_strftime:-no} = yes; then 262 CPPFLAGS="${CPPFLAGS} -DFORCE_BMAKE_STRFTIME" 263fi 264echo "Using: BMAKE_PATH_MAX=$bmake_path_max" >&6 265AC_SUBST(bmake_path_max)dnl 266dnl 267# if type does not work which(1) had better! 268# note we cannot rely on type returning non-zero on failure 269if (type cat) > /dev/null 2>&1; then 270: which 271which() { 272 type "$@" | sed 's,[[()]],,g;s,^[[^/]][[^/]]*,,;q' 273} 274fi 275dnl if CC is somewhere that was not in PATH we need its full path 276dnl watch out for included flags! 277case "$CC" in 278/*) ;; 279*) 280 for x in $CC 281 do 282 _cc=`which $x` 283 break 284 done 285 if test -x ${_cc:-/dev/null}; then 286 _cc_dir=`dirname $_cc` 287 case ":$oldPATH:" in 288 *:$_cc_dir:*) ;; 289 *) CC=$_cc_dir/$CC;; 290 esac 291 fi 292 ;; 293esac 294dnl Checks for header files. 295AC_HEADER_SYS_WAIT 296AC_HEADER_DIRENT 297dnl Keep this list sorted 298AC_CHECK_HEADERS(sys/param.h) 299dnl On BSDi at least we really need sys/param.h for sys/sysctl.h 300AC_CHECK_HEADERS([sys/sysctl.h], [], [], 301[#ifdef HAVE_SYS_PARAM_H 302# include <sys/param.h> 303# endif 304]) 305 306AC_CHECK_HEADERS( \ 307 ar.h \ 308 err.h \ 309 fcntl.h \ 310 libgen.h \ 311 limits.h \ 312 paths.h \ 313 poll.h \ 314 ranlib.h \ 315 regex.h \ 316 sys/mman.h \ 317 sys/select.h \ 318 sys/socket.h \ 319 sys/time.h \ 320 sys/uio.h \ 321 utime.h \ 322 ) 323 324dnl Both *BSD and Linux have sys/cdefs.h, most do not. 325dnl If it is missing, we add -I${srcdir}/missing to CFLAGS 326AC_CHECK_HEADER(sys/cdefs.h,, 327CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`") 328 329dnl Checks for typedefs, structures, and compiler characteristics. 330AC_C___ATTRIBUTE__ 331AC_C_BIGENDIAN 332AC_C_CONST 333AC_C_INLINE 334AC_TYPE_INT64_T 335AC_TYPE_LONG_LONG_INT 336AC_TYPE_MODE_T 337AC_TYPE_OFF_T 338AC_TYPE_PID_T 339AC_TYPE_SIZE_T 340AC_TYPE_UINT32_T 341AC_CHECK_DECLS([sys_siglist],[],[],[#include <signal.h> 342/* NetBSD declares sys_siglist in unistd.h. */ 343#ifdef HAVE_UNISTD_H 344# include <unistd.h> 345#endif 346]) 347 348AC_CHECK_HEADERS_ONCE([sys/time.h]) 349 350AC_STRUCT_TM 351 352dnl we need sig_atomic_t 353AH_TEMPLATE([sig_atomic_t],[type that signal handlers can safely frob]) 354AC_CHECK_TYPES([sig_atomic_t],[],[], 355[ 356#ifdef HAVE_SYS_TYPES_H 357#include <sys/types.h> 358#endif 359#include <signal.h> 360]) 361 362dnl Checks for library functions. 363AC_FUNC_FORK 364AC_FUNC_VPRINTF 365AC_FUNC_WAIT3 366dnl Keep this list sorted 367AC_CHECK_FUNCS( \ 368 err \ 369 errx \ 370 getcwd \ 371 getenv \ 372 getwd \ 373 killpg \ 374 putenv \ 375 select \ 376 setenv \ 377 setpgid \ 378 setrlimit \ 379 setsid \ 380 sigaddset \ 381 sigpending \ 382 sigprocmask \ 383 sigsetmask \ 384 sigsuspend \ 385 sigvec \ 386 snprintf \ 387 strerror \ 388 stresep \ 389 strftime \ 390 strsep \ 391 strtod \ 392 strtol \ 393 strtoll \ 394 strtoul \ 395 sysctl \ 396 unsetenv \ 397 vsnprintf \ 398 wait3 \ 399 wait4 \ 400 waitpid \ 401 warn \ 402 warnx \ 403 ) 404 405dnl functions which we may need to provide 406AC_REPLACE_FUNCS( \ 407 getopt \ 408 realpath \ 409 dirname \ 410 sigaction \ 411 stresep \ 412 strlcpy \ 413 ) 414 415AC_CHECK_LIB([util], [emalloc], 416 [ AC_CHECK_LIB([util], [erealloc], 417 [ AC_CHECK_LIB([util], [estrdup], 418 [ AC_CHECK_LIB([util], [estrndup], 419 [ LIBS="$LIBS -lutil" 420 CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])]) 421 422dnl 423dnl Structures 424dnl 425AC_HEADER_STAT 426dnl 427echo "checking if compiler supports __func__" >&6 428AC_LANG(C) 429AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],, 430 AC_DEFINE(__func__, __FUNCTION__, C99 function name)) 431dnl 432dnl we want this for unit-tests/Makefile 433dnl GNU diff is known to support -u 434if test -x /usr/gnu/bin/diff; then 435 diff=/usr/gnu/bin/diff 436 diff_u=-u 437else 438 diff=${diff:-diff} 439 echo $ECHO_N "checking if $diff -u works... $ECHO_C" >&6 440 if $diff -u /dev/null /dev/null > /dev/null 2>&1; then 441 diff_u=-u 442 echo yes >&6 443 else 444 diff_u= 445 echo no >&6 446 fi 447fi 448dnl 449dnl AC_* don't quite cut it. 450dnl 451echo "checking for MACHINE & MACHINE_ARCH..." >&6 452cat > conftest.$ac_ext <<EOF 453#include "confdefs.h" 454#include <sys/param.h> 455#ifdef MACHINE 456machine=MACHINE 457#endif 458#ifdef MACHINE_ARCH 459machine_arch=MACHINE_ARCH 460#endif 461EOF 462 463default_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | 464 grep machine= | tr -d ' "'` 465rm -rf conftest* 466if test "$default_machine"; then 467 eval "$default_machine" 468fi 469machine=${machine:-`$srcdir/machine.sh`} 470machine_arch=${machine_arch:-`$srcdir/machine.sh arch`} 471echo "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6 472dnl 473dnl now allow overrides 474dnl 475AC_ARG_WITH(machine, 476[ --with-machine=MACHINE explicitly set MACHINE], 477[case "${withval}" in 478yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;; 479no) ;; 480generic) machine=`$srcdir/machine.sh`;; 481*) machine=$with_machine;; 482esac]) 483force_machine= 484AC_ARG_WITH(force_machine, 485[ --with-force-machine=MACHINE set FORCE_MACHINE], 486[case "${withval}" in 487yes) force_machine=FORCE_;; 488no) ;; 489*) force_machine=FORCE_; machine=$with_force_machine;; 490esac]) 491dnl 492force_machine_arch= 493AC_ARG_WITH(force_machine_arch, 494[ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH], 495[case "${withval}" in 496yes) force_machine_arch=FORCE_;; 497no) ;; 498*) force_machine_arch=FORCE_; machine_arch=$with_force_machine_arch;; 499esac]) 500dnl 501AC_ARG_WITH(machine_arch, 502[ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH], 503[case "${withval}" in 504yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;; 505no) ;; 506*) machine_arch=$with_machine_arch;; 507esac]) 508dnl 509dnl Tell them what we ended up with 510dnl 511echo "Using: ${force_machine}MACHINE=$machine, ${force_machine_arch}MACHINE_ARCH=$machine_arch" 1>&6 512dnl 513dnl Allow folk to control _PATH_DEFSYSPATH 514dnl 515default_sys_path=\${prefix}/share/mk 516AC_ARG_WITH(default-sys-path, 517[ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH 518 MAKESYSPATH is a ':' separated list of directories 519 that bmake will search for system .mk files. 520 _PATH_DEFSYSPATH is its default value.], 521[case "${withval}" in 522yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;; 523no) ;; 524*) default_sys_path="$with_default_sys_path" 525 ;; 526esac]) 527dnl 528dnl Some folk don't like this one 529dnl 530AC_ARG_WITH(path-objdirprefix, 531[ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX], 532[case "${withval}" in 533yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;; 534no) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;; 535*) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;; 536esac]) 537dnl 538dnl And this can be handy to do with out. 539dnl 540AC_ARG_ENABLE(pwd-override, 541[ --disable-pwd-override disable $PWD overriding getcwd()], 542[case "${enableval}" in 543yes) ;; 544no) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;; 545*) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;; 546esac]) 547dnl 548dnl Just for grins 549dnl 550AC_ARG_ENABLE(check-make-chdir, 551[ --disable-check-make-chdir disable make trying to guess 552 when it should automatically cd ${.CURDIR}], 553[case "${enableval}" in 554yes) ;; 555no) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;; 556*) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;; 557esac]) 558dnl 559dnl On non-BSD systems, bootstrap won't work without mk 560dnl 561AC_ARG_WITH(mksrc, 562[ --with-mksrc=PATH tell makefile.boot where to find mk src], 563[case "${withval}" in 564""|yes|no) ;; 565*) test -s $withval/install-mk && mksrc=$withval || 566AC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk) 567;; 568esac 569]) 570dnl 571dnl Now make sure we have a value 572dnl 573srcdir=`cd $srcdir && pwd` 574for mksrc in $mksrc $srcdir/mk $srcdir/../mk mk 575do 576 test -s $mksrc/install-mk || continue 577 mksrc=`cd $mksrc && pwd` 578 break 579done 580mksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"` 581echo "Using: MKSRC=$mksrc" 1>&6 582dnl On some systems we want a different default shell by default 583for sh in /usr/xpg4/bin/sh $ALT_DEF_SHELLS 584do 585 test -x $sh || continue 586 use_defshell $sh 587 break 588done 589case "$defshell_path$DEFSHELL_INDEX" in 590"") ;; 591*DEFSHELL_INDEX_CUSTOM) 592 echo "Using: SHELL=$defshell_path" >&6 593 AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell) 594 ;; 595/*INDEX*) 596 echo "Using: SHELL=$DEFSHELL_INDEX ($defshell_path)" | sed 's,DEFSHELL_INDEX_,,' >&6 597 AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default) 598AC_DEFINE_UNQUOTED(DEFSHELL_PATH, "$defshell_path", Path of default shell) 599 ;; 600*) 601 echo "Using: SHELL=$DEFSHELL_INDEX" | sed 's,DEFSHELL_INDEX_,,' >&6 602 AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default) 603 ;; 604esac 605dnl 606dnl Some systems have deprecated egrep in favor of grep -E 607case "`echo bmake | egrep 'a|b' 2>&1`" in 608bmake) egrep=egrep;; 609*) egrep='grep -E';; 610esac 611dnl 612AC_SUBST(egrep) 613AC_SUBST(make_os) 614AC_SUBST(force_make_os) 615AC_SUBST(machine) 616AC_SUBST(force_machine) 617AC_SUBST(machine_arch) 618AC_SUBST(force_machine_arch) 619AC_SUBST(mksrc) 620AC_SUBST(default_sys_path) 621AC_SUBST(INSTALL) 622AC_SUBST(GCC) 623AC_SUBST(diff) 624AC_SUBST(diff_u) 625AC_SUBST(save_dollars) 626AC_SUBST(use_meta) 627AC_SUBST(use_filemon) 628AC_SUBST(filemon_h) 629AC_SUBST(lua) 630AC_SUBST(_MAKE_VERSION) 631AC_SUBST(UTC_1) 632bm_outfiles="Makefile.config unit-tests/Makefile.config make-bootstrap.sh" 633if test $use_makefile = yes; then 634 bm_outfiles="makefile $bm_outfiles" 635fi 636 637here=`'pwd'` 638: srcdir=$srcdir 639: here= $here 640case "$here" in 641$srcdir/obj*) # make sure we put unit-tests/Makefile.config in the right place 642 obj=`basename $here` 643 mkdir -p $srcdir/unit-tests/$obj 644 test -d unit-tests || ln -s ../unit-tests/$obj unit-tests 645 ;; 646esac 647 648AC_CONFIG_FILES([$bm_outfiles]) 649AC_OUTPUT 650cat <<EOF 651 652You can now run 653 654 sh ./make-bootstrap.sh 655 656to produce a fully functional bmake. 657 658EOF 659