101e196c8SJohn Marinodnl 201e196c8SJohn Marinodnl RCSid: 3*6eef5f0cSAntonio Huete Jimenezdnl $Id: configure.in,v 1.87 2022/09/09 20:00:53 sjg Exp $ 401e196c8SJohn Marinodnl 501e196c8SJohn Marinodnl Process this file with autoconf to produce a configure script 601e196c8SJohn Marinodnl 7*6eef5f0cSAntonio Huete JimenezAC_PREREQ([2.71]) 8*6eef5f0cSAntonio Huete JimenezAC_INIT([bmake],[20220909],[sjg@NetBSD.org]) 96a91b982SJohn MarinoAC_CONFIG_HEADERS(config.h) 1001e196c8SJohn Marino 115f1e34d9SAlexandre Perrindnl make srcdir absolute 125f1e34d9SAlexandre Perrincase "$srcdir" in 135f1e34d9SAlexandre Perrin/*) ;; 14*6eef5f0cSAntonio Huete Jimenez*) srcdir=`cd $srcdir && 'pwd'`;; 155f1e34d9SAlexandre Perrinesac 165f1e34d9SAlexandre Perrin 17ca58f742SDaniel Fojtdnl get _MAKE_VERSION 18ca58f742SDaniel Fojt. $srcdir/VERSION 19ca58f742SDaniel FojtOS=`uname -s` 20ca58f742SDaniel Fojt 21*6eef5f0cSAntonio Huete Jimenezdnl function to set DEFSHELL_INDEX 22*6eef5f0cSAntonio Huete Jimenezuse_defshell() { 23*6eef5f0cSAntonio Huete Jimenez case "$defshell_path$DEFSHELL_INDEX" in 24*6eef5f0cSAntonio Huete Jimenez "") ;; 25*6eef5f0cSAntonio Huete Jimenez *) return 0;; 26*6eef5f0cSAntonio Huete Jimenez esac 27*6eef5f0cSAntonio Huete Jimenez case "$1" in 28*6eef5f0cSAntonio Huete Jimenez *csh) # we must be desperate 29*6eef5f0cSAntonio Huete Jimenez DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;; 30*6eef5f0cSAntonio Huete Jimenez *ksh) 31*6eef5f0cSAntonio Huete Jimenez DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;; 32*6eef5f0cSAntonio Huete Jimenez sh|/bin/sh) 33*6eef5f0cSAntonio Huete Jimenez DEFSHELL_INDEX=DEFSHELL_INDEX_SH;; 34*6eef5f0cSAntonio Huete Jimenez *) DEFSHELL_INDEX=DEFSHELL_INDEX_CUSTOM 35*6eef5f0cSAntonio Huete Jimenez defshell_path=$1 36*6eef5f0cSAntonio Huete Jimenez ;; 37*6eef5f0cSAntonio Huete Jimenez esac 38*6eef5f0cSAntonio Huete Jimenez case "$1" in 39*6eef5f0cSAntonio Huete Jimenez /bin/*) ;; 40*6eef5f0cSAntonio Huete Jimenez */*) defshell_path=$1;; 41*6eef5f0cSAntonio Huete Jimenez esac 42*6eef5f0cSAntonio Huete Jimenez} 4301e196c8SJohn Marinodnl 4401e196c8SJohn MarinoAC_ARG_WITH(defshell, 4501e196c8SJohn Marino[ --with-defshell=SHELL use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions], 4601e196c8SJohn Marino[case "${withval}" in 4701e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake DEFSHELL) ;; 4801e196c8SJohn Marinono) ;; 49*6eef5f0cSAntonio Huete Jimenez*) use_defshell $with_defshell;; 5001e196c8SJohn Marinoesac]) 5101e196c8SJohn Marinodnl 52ca58f742SDaniel Fojtcase "$OS" in 53ca58f742SDaniel FojtCYGWIN*|MINGW*) use_makefile=no;; 54ca58f742SDaniel Fojt*) use_makefile=yes;; 55ca58f742SDaniel Fojtesac 56ca58f742SDaniel FojtAC_ARG_WITH(makefile, 57a34d5fb1SAntonio Huete Jimenez[ --without-makefile disable use of generated makefile], 58ca58f742SDaniel Fojt[case "${withval}" in 59ca58f742SDaniel Fojtyes|no) use_makefile=${withval};; 60ca58f742SDaniel Fojt*) AC_MSG_ERROR(bad value ${withval} given for makefile) ;; 61ca58f742SDaniel Fojtesac]) 62ca58f742SDaniel Fojtdnl 6301e196c8SJohn Marinouse_meta=yes 6401e196c8SJohn MarinoAC_ARG_WITH(meta, 65a34d5fb1SAntonio Huete Jimenez[ --without-meta disable use of meta-mode], 6601e196c8SJohn Marino[case "${withval}" in 6701e196c8SJohn Marinoyes|no) use_meta=${withval};; 6801e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${withval} given for meta) ;; 6901e196c8SJohn Marinoesac]) 7001e196c8SJohn Marinodnl 7101e196c8SJohn MarinoAC_ARG_WITH(filemon, 72ca58f742SDaniel Fojt[ --with-filemon={no,dev,ktrace,path/filemon.h} indicate filemon method for meta-mode. Path to filemon.h implies dev], 7301e196c8SJohn Marino[ case "/${withval}" in 74ca58f742SDaniel Fojt/no) use_filemon=no;; 75ca58f742SDaniel Fojt/*trace) filemon_h=no use_filemon="${withval}";; 76ca58f742SDaniel Fojt*/filemon.h) filemon_h="${withval}";; 7701e196c8SJohn Marino*/filemon*) filemon_h="${withval}/filemon.h";; 7801e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${withval} given for filemon) ;; 79ca58f742SDaniel Fojtesac 80ca58f742SDaniel Fojtcase "$use_filemon,$filemon_h" in 81ca58f742SDaniel Fojt,*.h) use_filemon=dev;; 82ca58f742SDaniel Fojtesac 83ca58f742SDaniel Fojt], 8401e196c8SJohn Marino[ 85ca58f742SDaniel Fojtcase "$OS" in 86ca58f742SDaniel FojtNetBSD) filemon_h=no use_filemon=ktrace;; 87ca58f742SDaniel Fojt*) 88ca58f742SDaniel Fojt for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/../../sys/dev/filemon" 8901e196c8SJohn Marino do 9001e196c8SJohn Marino for x in "/$OS" "" 9101e196c8SJohn Marino do 9201e196c8SJohn Marino filemon_h="$d$x/filemon.h" 9301e196c8SJohn Marino test -s "$filemon_h" && break 9401e196c8SJohn Marino done 95ca58f742SDaniel Fojt test -s "$filemon_h" && { use_filemon=dev; break; } 9601e196c8SJohn Marino done 97ca58f742SDaniel Fojt ;; 98ca58f742SDaniel Fojtesac 99ca58f742SDaniel Fojtuse_filemon=${use_filemon:-no} 100ca58f742SDaniel Fojtcase "$use_filemon" in 101ca58f742SDaniel Fojtdev) ;; 102ca58f742SDaniel Fojt*) filemon_h=no;; 103ca58f742SDaniel Fojtesac 10401e196c8SJohn Marino]) 105ca58f742SDaniel Fojtdnl echo "Note: use_meta=$use_meta use_filemon=$use_filemon filemon_h=$filemon_h" >&6 10601e196c8SJohn Marinocase "$use_meta" in 10701e196c8SJohn Marinoyes) 108ca58f742SDaniel Fojt case "$use_filemon" in 109ca58f742SDaniel Fojt no) ;; 110ca58f742SDaniel Fojt *) echo "Using: filemon_${use_filemon}.c" >&6;; 11101e196c8SJohn Marino esac 11201e196c8SJohn Marino ;; 11301e196c8SJohn Marinoesac 11401e196c8SJohn Marinodnl 11501e196c8SJohn Marinodnl Check for OS problems 116*6eef5f0cSAntonio Huete Jimenezdnl 117*6eef5f0cSAntonio Huete Jimenezdnl Minix 3 at least has bugs in headers where _NETBSD_SOURCE 118*6eef5f0cSAntonio Huete Jimenezdnl is needed for compilation 119*6eef5f0cSAntonio Huete Jimenezcase "$OS" in 120*6eef5f0cSAntonio Huete JimenezMinix) CPPFLAGS="${CPPFLAGS} -D_NETBSD_SOURCE" 121*6eef5f0cSAntonio Huete Jimenez test -x /usr/pkg/bin/clang && CC=${CC:-clang} 122*6eef5f0cSAntonio Huete Jimenez ;; 123*6eef5f0cSAntonio Huete JimenezSCO_SV) # /bin/sh is not usable 124*6eef5f0cSAntonio Huete Jimenez ALT_DEF_SHELLS="/bin/lsh /usr/bin/bash /bin/ksh" 125*6eef5f0cSAntonio Huete Jimenez CPPFLAGS="${CPPFLAGS} -DFORCE_USE_SHELL" 126*6eef5f0cSAntonio Huete Jimenez ;; 127*6eef5f0cSAntonio Huete Jimenezesac 128*6eef5f0cSAntonio Huete Jimenezdnl 129*6eef5f0cSAntonio Huete Jimenezdnl Not everyone groks TZ=Europe/Berlin 130*6eef5f0cSAntonio Huete Jimenezdnl which is used by the localtime tests 131*6eef5f0cSAntonio Huete Jimenezecho $ECHO_N "checking whether system has timezone Europe/Berlin... $ECHO_C" >&6 132*6eef5f0cSAntonio Huete Jimenezif test -f /usr/share/zoneinfo/Europe/Berlin; then 133*6eef5f0cSAntonio Huete Jimenez echo yes >&6 134*6eef5f0cSAntonio Huete Jimenez # seems a safe bet 135*6eef5f0cSAntonio Huete Jimenez UTC_1=Europe/Berlin 136*6eef5f0cSAntonio Huete Jimenezelse 137*6eef5f0cSAntonio Huete Jimenez utcH=`TZ=UTC date +%H 2> /dev/null` 138*6eef5f0cSAntonio Huete Jimenez utc_1H=`TZ=UTC-1 date +%H 2> /dev/null` 139*6eef5f0cSAntonio Huete Jimenez if test ${utcH-0} -lt ${utc_1H-0}; then 140*6eef5f0cSAntonio Huete Jimenez UTC_1=UTC-1 141*6eef5f0cSAntonio Huete Jimenez echo no, using UTC-1 >&6 142*6eef5f0cSAntonio Huete Jimenez else 143*6eef5f0cSAntonio Huete Jimenez echo no >&6 144*6eef5f0cSAntonio Huete Jimenez fi 145*6eef5f0cSAntonio Huete Jimenezfi 146*6eef5f0cSAntonio Huete Jimenezdnl 147*6eef5f0cSAntonio Huete Jimenezdnl Add some places to look for compilers 148*6eef5f0cSAntonio Huete JimenezoldPATH=$PATH 149*6eef5f0cSAntonio Huete Jimenezfor d in /usr/gnu/bin 150*6eef5f0cSAntonio Huete Jimenezdo 151*6eef5f0cSAntonio Huete Jimenez test -d $d || continue 152*6eef5f0cSAntonio Huete Jimenez PATH=$PATH:$d 153*6eef5f0cSAntonio Huete Jimenezdone 154*6eef5f0cSAntonio Huete Jimenezexport PATH 15501e196c8SJohn Marinodnl Solaris's signal.h only privides sigset_t etc if one of 15601e196c8SJohn Marinodnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined. 15701e196c8SJohn Marinodnl The later two seem to cause more problems than they solve so if we 15801e196c8SJohn Marinodnl see _EXTENSIONS_ we use it. 15901e196c8SJohn MarinoAC_USE_SYSTEM_EXTENSIONS 16001e196c8SJohn Marinodnl Checks for programs. 16101e196c8SJohn MarinoAC_PROG_CC 16201e196c8SJohn MarinoAC_PROG_INSTALL 16301e196c8SJohn Marinodnl Executable suffix - normally empty; .exe on os2. 16401e196c8SJohn MarinoAC_SUBST(ac_exe_suffix)dnl 1656a91b982SJohn Marinodnl 1666a91b982SJohn Marinodnl Hurd refuses to define PATH_MAX or MAXPATHLEN 1676a91b982SJohn Marinoif test -x /usr/bin/getconf; then 1686a91b982SJohn Marino bmake_path_max=`getconf PATH_MAX / 2> /dev/null` 1696a91b982SJohn Marino # only a numeric response is useful 1706a91b982SJohn Marino test ${bmake_path_max:-0} -gt 0 2> /dev/null || bmake_path_max= 1716a91b982SJohn Marinofi 1726a91b982SJohn Marinobmake_path_max=${bmake_path_max:-1024} 1736a91b982SJohn Marinoif test $bmake_path_max -gt 1024; then 1746a91b982SJohn Marino # this is all we expect 1756a91b982SJohn Marino bmake_path_max=1024 1766a91b982SJohn Marinofi 1776a91b982SJohn Marinoecho "Using: BMAKE_PATH_MAX=$bmake_path_max" >&6 1786a91b982SJohn MarinoAC_SUBST(bmake_path_max)dnl 17901e196c8SJohn Marinodnl 180*6eef5f0cSAntonio Huete Jimenezdnl if type does not work which(1) had better! 181*6eef5f0cSAntonio Huete Jimenezdnl note we cannot rely on type returning non-zero on failure 182*6eef5f0cSAntonio Huete Jimenezif (type cat) > /dev/null 2>&1; then 183*6eef5f0cSAntonio Huete Jimenez: which 184*6eef5f0cSAntonio Huete Jimenezwhich() { 185*6eef5f0cSAntonio Huete Jimenez type "$@" | sed 's,[[()]],,g;s,^[[^/]][[^/]]*,,;q' 186*6eef5f0cSAntonio Huete Jimenez} 187*6eef5f0cSAntonio Huete Jimenezfi 188*6eef5f0cSAntonio Huete Jimenezdnl if CC is somewhere that was not in PATH we need its full path 189*6eef5f0cSAntonio Huete Jimenezdnl watch out for included flags! 190*6eef5f0cSAntonio Huete Jimenezcase "$CC" in 191*6eef5f0cSAntonio Huete Jimenez/*) ;; 192*6eef5f0cSAntonio Huete Jimenez*) 193*6eef5f0cSAntonio Huete Jimenez for x in $CC 194*6eef5f0cSAntonio Huete Jimenez do 195*6eef5f0cSAntonio Huete Jimenez _cc=`which $x` 196*6eef5f0cSAntonio Huete Jimenez break 197*6eef5f0cSAntonio Huete Jimenez done 198*6eef5f0cSAntonio Huete Jimenez if test -x ${_cc:-/dev/null}; then 199*6eef5f0cSAntonio Huete Jimenez _cc_dir=`dirname $_cc` 200*6eef5f0cSAntonio Huete Jimenez case ":$oldPATH:" in 201*6eef5f0cSAntonio Huete Jimenez *:$_cc_dir:*) ;; 202*6eef5f0cSAntonio Huete Jimenez *) CC=$_cc_dir/$CC;; 203*6eef5f0cSAntonio Huete Jimenez esac 204*6eef5f0cSAntonio Huete Jimenez fi 205*6eef5f0cSAntonio Huete Jimenez ;; 206*6eef5f0cSAntonio Huete Jimenezesac 20701e196c8SJohn Marinodnl Checks for header files. 20801e196c8SJohn MarinoAC_HEADER_SYS_WAIT 20901e196c8SJohn MarinoAC_HEADER_DIRENT 21001e196c8SJohn Marinodnl Keep this list sorted 211f445c897SJohn MarinoAC_CHECK_HEADERS(sys/param.h) 212f445c897SJohn Marinodnl On BSDi at least we really need sys/param.h for sys/sysctl.h 213f445c897SJohn MarinoAC_CHECK_HEADERS([sys/sysctl.h], [], [], 214f445c897SJohn Marino[#ifdef HAVE_SYS_PARAM_H 215f445c897SJohn Marino# include <sys/param.h> 216f445c897SJohn Marino# endif 217f445c897SJohn Marino]) 218f445c897SJohn Marino 21901e196c8SJohn MarinoAC_CHECK_HEADERS( \ 22001e196c8SJohn Marino ar.h \ 22101e196c8SJohn Marino err.h \ 22201e196c8SJohn Marino fcntl.h \ 223f445c897SJohn Marino libgen.h \ 224f445c897SJohn Marino limits.h \ 22501e196c8SJohn Marino paths.h \ 22601e196c8SJohn Marino poll.h \ 22701e196c8SJohn Marino ranlib.h \ 22801e196c8SJohn Marino sys/mman.h \ 22901e196c8SJohn Marino sys/select.h \ 23001e196c8SJohn Marino sys/socket.h \ 23101e196c8SJohn Marino sys/time.h \ 23201e196c8SJohn Marino sys/uio.h \ 23301e196c8SJohn Marino utime.h \ 23401e196c8SJohn Marino ) 23501e196c8SJohn Marino 23601e196c8SJohn Marinodnl Both *BSD and Linux have sys/cdefs.h, most do not. 23701e196c8SJohn Marinodnl If it is missing, we add -I${srcdir}/missing to CFLAGS 238*6eef5f0cSAntonio Huete JimenezAC_CHECK_HEADER(sys/cdefs.h,, 23901e196c8SJohn MarinoCPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`") 24001e196c8SJohn Marino 24101e196c8SJohn Marinodnl Checks for typedefs, structures, and compiler characteristics. 24201e196c8SJohn MarinoAC_C___ATTRIBUTE__ 24301e196c8SJohn MarinoAC_C_BIGENDIAN 24401e196c8SJohn MarinoAC_C_CONST 245*6eef5f0cSAntonio Huete JimenezAC_C_INLINE 246*6eef5f0cSAntonio Huete JimenezAC_TYPE_INT64_T 247*6eef5f0cSAntonio Huete JimenezAC_TYPE_LONG_LONG_INT 248f445c897SJohn MarinoAC_TYPE_MODE_T 24901e196c8SJohn MarinoAC_TYPE_OFF_T 25001e196c8SJohn MarinoAC_TYPE_PID_T 25101e196c8SJohn MarinoAC_TYPE_SIZE_T 252f445c897SJohn MarinoAC_TYPE_UINT32_T 253*6eef5f0cSAntonio Huete JimenezAC_CHECK_DECLS([sys_siglist],[],[],[#include <signal.h> 254*6eef5f0cSAntonio Huete Jimenez/* NetBSD declares sys_siglist in unistd.h. */ 255*6eef5f0cSAntonio Huete Jimenez#ifdef HAVE_UNISTD_H 256*6eef5f0cSAntonio Huete Jimenez# include <unistd.h> 257*6eef5f0cSAntonio Huete Jimenez#endif 258*6eef5f0cSAntonio Huete Jimenez]) 259*6eef5f0cSAntonio Huete Jimenez 260*6eef5f0cSAntonio Huete JimenezAC_CHECK_HEADERS_ONCE([sys/time.h]) 261*6eef5f0cSAntonio Huete Jimenez 26201e196c8SJohn MarinoAC_STRUCT_TM 26301e196c8SJohn Marino 264a34d5fb1SAntonio Huete Jimenezdnl we need sig_atomic_t 265a34d5fb1SAntonio Huete JimenezAH_TEMPLATE([sig_atomic_t],[type that signal handlers can safely frob]) 266*6eef5f0cSAntonio Huete JimenezAC_CHECK_TYPES([sig_atomic_t],[],[], 267*6eef5f0cSAntonio Huete Jimenez[ 268a34d5fb1SAntonio Huete Jimenez#ifdef HAVE_SYS_TYPES_H 269a34d5fb1SAntonio Huete Jimenez#include <sys/types.h> 270a34d5fb1SAntonio Huete Jimenez#endif 271a34d5fb1SAntonio Huete Jimenez#include <signal.h> 272a34d5fb1SAntonio Huete Jimenez]) 273a34d5fb1SAntonio Huete Jimenez 27401e196c8SJohn Marinodnl Checks for library functions. 275*6eef5f0cSAntonio Huete JimenezAC_FUNC_FORK 27601e196c8SJohn MarinoAC_FUNC_VPRINTF 27701e196c8SJohn MarinoAC_FUNC_WAIT3 27801e196c8SJohn Marinodnl Keep this list sorted 27901e196c8SJohn MarinoAC_CHECK_FUNCS( \ 28001e196c8SJohn Marino err \ 28101e196c8SJohn Marino errx \ 28201e196c8SJohn Marino getcwd \ 28301e196c8SJohn Marino getenv \ 28401e196c8SJohn Marino getwd \ 28501e196c8SJohn Marino killpg \ 28601e196c8SJohn Marino mmap \ 28701e196c8SJohn Marino putenv \ 28801e196c8SJohn Marino select \ 28901e196c8SJohn Marino setenv \ 29001e196c8SJohn Marino setpgid \ 291*6eef5f0cSAntonio Huete Jimenez setrlimit \ 29201e196c8SJohn Marino setsid \ 293*6eef5f0cSAntonio Huete Jimenez sigaddset \ 294*6eef5f0cSAntonio Huete Jimenez sigpending \ 295*6eef5f0cSAntonio Huete Jimenez sigprocmask \ 296*6eef5f0cSAntonio Huete Jimenez sigsetmask \ 297*6eef5f0cSAntonio Huete Jimenez sigsuspend \ 29801e196c8SJohn Marino sigvec \ 29901e196c8SJohn Marino snprintf \ 30001e196c8SJohn Marino strerror \ 301*6eef5f0cSAntonio Huete Jimenez stresep \ 30201e196c8SJohn Marino strftime \ 30301e196c8SJohn Marino strsep \ 30401e196c8SJohn Marino strtod \ 30501e196c8SJohn Marino strtol \ 306*6eef5f0cSAntonio Huete Jimenez strtoll \ 307*6eef5f0cSAntonio Huete Jimenez strtoul \ 3086a91b982SJohn Marino sysctl \ 30901e196c8SJohn Marino unsetenv \ 31001e196c8SJohn Marino vsnprintf \ 31101e196c8SJohn Marino wait3 \ 31201e196c8SJohn Marino wait4 \ 31301e196c8SJohn Marino waitpid \ 31401e196c8SJohn Marino warn \ 31501e196c8SJohn Marino warnx \ 31601e196c8SJohn Marino ) 31701e196c8SJohn Marino 31801e196c8SJohn Marinodnl functions which we may need to provide 31901e196c8SJohn MarinoAC_REPLACE_FUNCS( \ 320*6eef5f0cSAntonio Huete Jimenez getopt \ 32101e196c8SJohn Marino realpath \ 32201e196c8SJohn Marino dirname \ 323*6eef5f0cSAntonio Huete Jimenez sigaction \ 32401e196c8SJohn Marino stresep \ 32501e196c8SJohn Marino strlcpy \ 32601e196c8SJohn Marino ) 32701e196c8SJohn Marino 32801e196c8SJohn MarinoAC_CHECK_LIB([util], [emalloc], 32901e196c8SJohn Marino [ AC_CHECK_LIB([util], [erealloc], 33001e196c8SJohn Marino [ AC_CHECK_LIB([util], [estrdup], 33101e196c8SJohn Marino [ AC_CHECK_LIB([util], [estrndup], 33201e196c8SJohn Marino [ LIBS="$LIBS -lutil" 33301e196c8SJohn Marino CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])]) 33401e196c8SJohn Marino 33501e196c8SJohn Marinodnl 33601e196c8SJohn Marinodnl Structures 33701e196c8SJohn Marinodnl 33801e196c8SJohn MarinoAC_HEADER_STAT 33901e196c8SJohn Marinodnl 3406a91b982SJohn Marinoecho "checking if compiler supports __func__" >&6 3416a91b982SJohn MarinoAC_LANG(C) 3426a91b982SJohn MarinoAC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],, 3436a91b982SJohn Marino AC_DEFINE(__func__, __FUNCTION__, C99 function name)) 3446a91b982SJohn Marinodnl 34501e196c8SJohn Marinodnl we want this for unit-tests/Makefile 346*6eef5f0cSAntonio Huete Jimenezdnl GNU diff is known to support -u 347*6eef5f0cSAntonio Huete Jimenezif test -x /usr/gnu/bin/diff; then 348*6eef5f0cSAntonio Huete Jimenez diff=/usr/gnu/bin/diff 349*6eef5f0cSAntonio Huete Jimenez diff_u=-u 350*6eef5f0cSAntonio Huete Jimenezelse 351*6eef5f0cSAntonio Huete Jimenez diff=${diff:-diff} 352*6eef5f0cSAntonio Huete Jimenez echo $ECHO_N "checking if $diff -u works... $ECHO_C" >&6 353*6eef5f0cSAntonio Huete Jimenez if $diff -u /dev/null /dev/null > /dev/null 2>&1; then 35401e196c8SJohn Marino diff_u=-u 35501e196c8SJohn Marino echo yes >&6 35601e196c8SJohn Marino else 35701e196c8SJohn Marino diff_u= 35801e196c8SJohn Marino echo no >&6 35901e196c8SJohn Marino fi 360*6eef5f0cSAntonio Huete Jimenezfi 36101e196c8SJohn Marinodnl 36201e196c8SJohn Marinodnl AC_* don't quite cut it. 36301e196c8SJohn Marinodnl 36401e196c8SJohn Marinoecho "checking for MACHINE & MACHINE_ARCH..." >&6 36501e196c8SJohn Marinocat > conftest.$ac_ext <<EOF 36601e196c8SJohn Marino#include "confdefs.h" 36701e196c8SJohn Marino#include <sys/param.h> 36801e196c8SJohn Marino#ifdef MACHINE 36901e196c8SJohn Marinomachine=MACHINE 37001e196c8SJohn Marino#endif 37101e196c8SJohn Marino#ifdef MACHINE_ARCH 37201e196c8SJohn Marinomachine_arch=MACHINE_ARCH 37301e196c8SJohn Marino#endif 37401e196c8SJohn MarinoEOF 37501e196c8SJohn Marino 37601e196c8SJohn Marinodefault_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | 377*6eef5f0cSAntonio Huete Jimenez grep machine= | tr -d ' "'` 37801e196c8SJohn Marinorm -rf conftest* 37901e196c8SJohn Marinoif test "$default_machine"; then 38001e196c8SJohn Marino eval "$default_machine" 38101e196c8SJohn Marinofi 38201e196c8SJohn Marinomachine=${machine:-`$srcdir/machine.sh`} 38301e196c8SJohn Marinomachine_arch=${machine_arch:-`$srcdir/machine.sh arch`} 38401e196c8SJohn Marinoecho "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6 38501e196c8SJohn Marinodnl 38601e196c8SJohn Marinodnl now allow overrides 38701e196c8SJohn Marinodnl 38801e196c8SJohn MarinoAC_ARG_WITH(machine, 38901e196c8SJohn Marino[ --with-machine=MACHINE explicitly set MACHINE], 39001e196c8SJohn Marino[case "${withval}" in 39101e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;; 39201e196c8SJohn Marinono) ;; 39301e196c8SJohn Marinogeneric) machine=`$srcdir/machine.sh`;; 39401e196c8SJohn Marino*) machine=$with_machine;; 39501e196c8SJohn Marinoesac]) 39601e196c8SJohn Marinoforce_machine= 39701e196c8SJohn MarinoAC_ARG_WITH(force_machine, 39801e196c8SJohn Marino[ --with-force-machine=MACHINE set FORCE_MACHINE], 39901e196c8SJohn Marino[case "${withval}" in 40001e196c8SJohn Marinoyes) force_machine=FORCE_;; 40101e196c8SJohn Marinono) ;; 40201e196c8SJohn Marino*) force_machine=FORCE_; machine=$with_force_machine;; 40301e196c8SJohn Marinoesac]) 40401e196c8SJohn Marinodnl 40501e196c8SJohn Marinoforce_machine_arch= 40601e196c8SJohn MarinoAC_ARG_WITH(force_machine_arch, 40701e196c8SJohn Marino[ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH], 40801e196c8SJohn Marino[case "${withval}" in 40901e196c8SJohn Marinoyes) force_machine_arch=FORCE_;; 41001e196c8SJohn Marinono) ;; 411a34d5fb1SAntonio Huete Jimenez*) force_machine_arch=FORCE_; machine_arch=$with_force_machine_arch;; 41201e196c8SJohn Marinoesac]) 41301e196c8SJohn Marinodnl 41401e196c8SJohn MarinoAC_ARG_WITH(machine_arch, 41501e196c8SJohn Marino[ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH], 41601e196c8SJohn Marino[case "${withval}" in 41701e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;; 41801e196c8SJohn Marinono) ;; 41901e196c8SJohn Marino*) machine_arch=$with_machine_arch;; 42001e196c8SJohn Marinoesac]) 42101e196c8SJohn Marinodnl 42201e196c8SJohn Marinodnl Tell them what we ended up with 42301e196c8SJohn Marinodnl 424a34d5fb1SAntonio Huete Jimenezecho "Using: ${force_machine}MACHINE=$machine, ${force_machine_arch}MACHINE_ARCH=$machine_arch" 1>&6 42501e196c8SJohn Marinodnl 42601e196c8SJohn Marinodnl Allow folk to control _PATH_DEFSYSPATH 42701e196c8SJohn Marinodnl 42801e196c8SJohn Marinodefault_sys_path=\${prefix}/share/mk 42901e196c8SJohn MarinoAC_ARG_WITH(default-sys-path, 43001e196c8SJohn Marino[ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH 43101e196c8SJohn Marino MAKESYSPATH is a ':' separated list of directories 43201e196c8SJohn Marino that bmake will search for system .mk files. 43301e196c8SJohn Marino _PATH_DEFSYSPATH is its default value.], 43401e196c8SJohn Marino[case "${withval}" in 43501e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;; 43601e196c8SJohn Marinono) ;; 43701e196c8SJohn Marino*) default_sys_path="$with_default_sys_path" 43801e196c8SJohn Marino ;; 43901e196c8SJohn Marinoesac]) 44001e196c8SJohn Marinodnl 44101e196c8SJohn Marinodnl Some folk don't like this one 44201e196c8SJohn Marinodnl 44301e196c8SJohn MarinoAC_ARG_WITH(path-objdirprefix, 44401e196c8SJohn Marino[ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX], 44501e196c8SJohn Marino[case "${withval}" in 44601e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;; 44701e196c8SJohn Marinono) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;; 44801e196c8SJohn Marino*) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;; 44901e196c8SJohn Marinoesac]) 45001e196c8SJohn Marinodnl 45101e196c8SJohn Marinodnl And this can be handy to do with out. 45201e196c8SJohn Marinodnl 45301e196c8SJohn MarinoAC_ARG_ENABLE(pwd-override, 454a34d5fb1SAntonio Huete Jimenez[ --disable-pwd-override disable $PWD overriding getcwd()], 45501e196c8SJohn Marino[case "${enableval}" in 45601e196c8SJohn Marinoyes) ;; 45701e196c8SJohn Marinono) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;; 45801e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;; 45901e196c8SJohn Marinoesac]) 46001e196c8SJohn Marinodnl 46101e196c8SJohn Marinodnl Just for grins 46201e196c8SJohn Marinodnl 46301e196c8SJohn MarinoAC_ARG_ENABLE(check-make-chdir, 46401e196c8SJohn Marino[ --disable-check-make-chdir disable make trying to guess 465a34d5fb1SAntonio Huete Jimenez when it should automatically cd ${.CURDIR}], 46601e196c8SJohn Marino[case "${enableval}" in 46701e196c8SJohn Marinoyes) ;; 46801e196c8SJohn Marinono) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;; 46901e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;; 47001e196c8SJohn Marinoesac]) 47101e196c8SJohn Marinodnl 47201e196c8SJohn Marinodnl On non-BSD systems, bootstrap won't work without mk 47301e196c8SJohn Marinodnl 47401e196c8SJohn MarinoAC_ARG_WITH(mksrc, 47501e196c8SJohn Marino[ --with-mksrc=PATH tell makefile.boot where to find mk src], 47601e196c8SJohn Marino[case "${withval}" in 47701e196c8SJohn Marino""|yes|no) ;; 47801e196c8SJohn Marino*) test -s $withval/install-mk && mksrc=$withval || 47901e196c8SJohn MarinoAC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk) 48001e196c8SJohn Marino;; 48101e196c8SJohn Marinoesac 48201e196c8SJohn Marino]) 48301e196c8SJohn Marinodnl 48401e196c8SJohn Marinodnl Now make sure we have a value 48501e196c8SJohn Marinodnl 48601e196c8SJohn Marinosrcdir=`cd $srcdir && pwd` 48701e196c8SJohn Marinofor mksrc in $mksrc $srcdir/mk $srcdir/../mk mk 48801e196c8SJohn Marinodo 48901e196c8SJohn Marino test -s $mksrc/install-mk || continue 49001e196c8SJohn Marino mksrc=`cd $mksrc && pwd` 49101e196c8SJohn Marino break 49201e196c8SJohn Marinodone 49301e196c8SJohn Marinomksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"` 49401e196c8SJohn Marinoecho "Using: MKSRC=$mksrc" 1>&6 49501e196c8SJohn Marinodnl On some systems we want a different default shell by default 496*6eef5f0cSAntonio Huete Jimenezfor sh in /usr/xpg4/bin/sh $ALT_DEF_SHELLS 497*6eef5f0cSAntonio Huete Jimenezdo 498*6eef5f0cSAntonio Huete Jimenez test -x $sh || continue 499*6eef5f0cSAntonio Huete Jimenez use_defshell $sh 500*6eef5f0cSAntonio Huete Jimenez break 501*6eef5f0cSAntonio Huete Jimenezdone 502*6eef5f0cSAntonio Huete Jimenezcase "$defshell_path$DEFSHELL_INDEX" in 503*6eef5f0cSAntonio Huete Jimenez"") ;; 504*6eef5f0cSAntonio Huete Jimenez*DEFSHELL_INDEX_CUSTOM) 50501e196c8SJohn Marino echo "Using: SHELL=$defshell_path" >&6 50601e196c8SJohn Marino AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell) 507*6eef5f0cSAntonio Huete Jimenez ;; 508*6eef5f0cSAntonio Huete Jimenez/*INDEX*) 509*6eef5f0cSAntonio Huete Jimenez echo "Using: SHELL=$DEFSHELL_INDEX ($defshell_path)" | sed 's,DEFSHELL_INDEX_,,' >&6 51001e196c8SJohn Marino AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default) 511*6eef5f0cSAntonio Huete JimenezAC_DEFINE_UNQUOTED(DEFSHELL_PATH, "$defshell_path", Path of default shell) 512*6eef5f0cSAntonio Huete Jimenez ;; 513*6eef5f0cSAntonio Huete Jimenez*) 514*6eef5f0cSAntonio Huete Jimenez echo "Using: SHELL=$DEFSHELL_INDEX" | sed 's,DEFSHELL_INDEX_,,' >&6 515*6eef5f0cSAntonio Huete Jimenez AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default) 516*6eef5f0cSAntonio Huete Jimenez ;; 517*6eef5f0cSAntonio Huete Jimenezesac 51801e196c8SJohn Marinodnl 519*6eef5f0cSAntonio Huete Jimenezdnl Some systems have deprecated egrep in favor of grep -E 520*6eef5f0cSAntonio Huete Jimenezcase "`echo bmake | egrep 'a|b' 2>&1`" in 521*6eef5f0cSAntonio Huete Jimenezbmake) egrep=egrep;; 522*6eef5f0cSAntonio Huete Jimenez*) egrep='grep -E';; 523*6eef5f0cSAntonio Huete Jimenezesac 524*6eef5f0cSAntonio Huete Jimenezdnl 525*6eef5f0cSAntonio Huete JimenezAC_SUBST(egrep) 52601e196c8SJohn MarinoAC_SUBST(machine) 52701e196c8SJohn MarinoAC_SUBST(force_machine) 52801e196c8SJohn MarinoAC_SUBST(machine_arch) 529a34d5fb1SAntonio Huete JimenezAC_SUBST(force_machine_arch) 53001e196c8SJohn MarinoAC_SUBST(mksrc) 53101e196c8SJohn MarinoAC_SUBST(default_sys_path) 53201e196c8SJohn MarinoAC_SUBST(INSTALL) 53301e196c8SJohn MarinoAC_SUBST(GCC) 534*6eef5f0cSAntonio Huete JimenezAC_SUBST(diff) 53501e196c8SJohn MarinoAC_SUBST(diff_u) 53601e196c8SJohn MarinoAC_SUBST(use_meta) 537ca58f742SDaniel FojtAC_SUBST(use_filemon) 53801e196c8SJohn MarinoAC_SUBST(filemon_h) 539ca58f742SDaniel FojtAC_SUBST(_MAKE_VERSION) 540*6eef5f0cSAntonio Huete JimenezAC_SUBST(UTC_1) 541ca58f742SDaniel Fojtbm_outfiles="Makefile.config unit-tests/Makefile.config make-bootstrap.sh" 542ca58f742SDaniel Fojtif test $use_makefile = yes; then 543ca58f742SDaniel Fojt bm_outfiles="makefile $bm_outfiles" 544ca58f742SDaniel Fojtfi 545*6eef5f0cSAntonio Huete Jimenez 546*6eef5f0cSAntonio Huete Jimenezhere=`'pwd'` 547*6eef5f0cSAntonio Huete Jimenez: srcdir=$srcdir 548*6eef5f0cSAntonio Huete Jimenez: here= $here 549*6eef5f0cSAntonio Huete Jimenezcase "$here" in 550*6eef5f0cSAntonio Huete Jimenez$srcdir/obj*) # make sure we put unit-tests/Makefile.config in the right place 551*6eef5f0cSAntonio Huete Jimenez obj=`basename $here` 552*6eef5f0cSAntonio Huete Jimenez mkdir -p $srcdir/unit-tests/$obj 553*6eef5f0cSAntonio Huete Jimenez test -d unit-tests || ln -s ../unit-tests/$obj unit-tests 554*6eef5f0cSAntonio Huete Jimenez ;; 555*6eef5f0cSAntonio Huete Jimenezesac 556*6eef5f0cSAntonio Huete Jimenez 557*6eef5f0cSAntonio Huete JimenezAC_CONFIG_FILES([$bm_outfiles]) 558*6eef5f0cSAntonio Huete JimenezAC_OUTPUT 55901e196c8SJohn Marinocat <<EOF 56001e196c8SJohn Marino 56101e196c8SJohn MarinoYou can now run 56201e196c8SJohn Marino 56301e196c8SJohn Marino sh ./make-bootstrap.sh 56401e196c8SJohn Marino 56501e196c8SJohn Marinoto produce a fully functional bmake. 56601e196c8SJohn Marino 56701e196c8SJohn MarinoEOF 568