101e196c8SJohn Marinodnl 201e196c8SJohn Marinodnl RCSid: 3*5f1e34d9SAlexandre Perrindnl $Id: configure.in,v 1.49 2013/07/06 18:25:19 sjg Exp $ 401e196c8SJohn Marinodnl 501e196c8SJohn Marinodnl Process this file with autoconf to produce a configure script 601e196c8SJohn Marinodnl 7*5f1e34d9SAlexandre PerrinAC_INIT([bmake], [20130706], [sjg@NetBSD.org]) 801e196c8SJohn MarinoAC_CONFIG_HEADER(config.h) 901e196c8SJohn Marino 10*5f1e34d9SAlexandre Perrindnl make srcdir absolute 11*5f1e34d9SAlexandre Perrincase "$srcdir" in 12*5f1e34d9SAlexandre Perrin/*) ;; 13*5f1e34d9SAlexandre Perrin*) srcdir=`cd $srcdir && pwd`;; 14*5f1e34d9SAlexandre Perrinesac 15*5f1e34d9SAlexandre Perrin 1601e196c8SJohn Marinodnl 1701e196c8SJohn MarinoAC_ARG_WITH(defshell, 1801e196c8SJohn Marino[ --with-defshell=SHELL use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions], 1901e196c8SJohn Marino[case "${withval}" in 2001e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake DEFSHELL) ;; 2101e196c8SJohn Marinono) ;; 2201e196c8SJohn Marino*) case "$with_defshell" in 2301e196c8SJohn Marino sh) DEFSHELL_INDEX=DEFSHELL_INDEX_SH;; # it's the default anyway 2401e196c8SJohn Marino ksh) DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;; 2501e196c8SJohn Marino csh) DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;; # kidding right? 2601e196c8SJohn Marino *) defshell_path=$with_defshell;; # better be sh compatible! 2701e196c8SJohn Marino esac 2801e196c8SJohn Marino ;; 2901e196c8SJohn Marino esac]) 3001e196c8SJohn Marinodnl 3101e196c8SJohn Marinouse_meta=yes 3201e196c8SJohn MarinoAC_ARG_WITH(meta, 3301e196c8SJohn Marino[ --without-meta dissable use of meta-mode], 3401e196c8SJohn Marino[case "${withval}" in 3501e196c8SJohn Marinoyes|no) use_meta=${withval};; 3601e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${withval} given for meta) ;; 3701e196c8SJohn Marinoesac]) 3801e196c8SJohn Marinodnl 3901e196c8SJohn MarinoAC_ARG_WITH(filemon, 4001e196c8SJohn Marino[ --with-filemon=path/filemon.h indicate path to filemon.h for meta-mode], 4101e196c8SJohn Marino[ case "/${withval}" in 4201e196c8SJohn Marino/no|*/filemon.h) filemon_h="${withval}";; 4301e196c8SJohn Marino*/filemon*) filemon_h="${withval}/filemon.h";; 4401e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${withval} given for filemon) ;; 4501e196c8SJohn Marinoesac], 4601e196c8SJohn Marino[ 4701e196c8SJohn MarinoOS=`uname -s` 4801e196c8SJohn Marinofor d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/filemon" "$srcdir/../filemon" "$srcdir/../../sys/dev/filemon" 4901e196c8SJohn Marinodo 5001e196c8SJohn Marino for x in "/$OS" "" 5101e196c8SJohn Marino do 5201e196c8SJohn Marino filemon_h="$d$x/filemon.h" 5301e196c8SJohn Marino test -s "$filemon_h" && break 5401e196c8SJohn Marino done 5501e196c8SJohn Marino test -s "$filemon_h" && break 5601e196c8SJohn Marinodone 5701e196c8SJohn Marinotest -s "${filemon_h:-/dev/null}" || filemon_h=no 5801e196c8SJohn Marino]) 5901e196c8SJohn Marinodnl echo "Note: use_meta=$use_meta filemon_h=$filemon_h" >&6 6001e196c8SJohn Marinocase "$use_meta" in 6101e196c8SJohn Marinoyes) 6201e196c8SJohn Marino case "$filemon_h" in 6301e196c8SJohn Marino *.h) echo "Using: filemon=$filemon_h" >&6;; 6401e196c8SJohn Marino esac 6501e196c8SJohn Marino ;; 6601e196c8SJohn Marinoesac 6701e196c8SJohn Marinodnl 6801e196c8SJohn Marinodnl Check for OS problems 6901e196c8SJohn Marinodnl Solaris's signal.h only privides sigset_t etc if one of 7001e196c8SJohn Marinodnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined. 7101e196c8SJohn Marinodnl The later two seem to cause more problems than they solve so if we 7201e196c8SJohn Marinodnl see _EXTENSIONS_ we use it. 7301e196c8SJohn MarinoAC_USE_SYSTEM_EXTENSIONS 7401e196c8SJohn Marinodnl Checks for programs. 7501e196c8SJohn MarinoAC_PROG_CC 7601e196c8SJohn MarinoAC_PROG_GCC_TRADITIONAL 7701e196c8SJohn MarinoAC_PROG_INSTALL 7801e196c8SJohn Marinodnl Executable suffix - normally empty; .exe on os2. 7901e196c8SJohn MarinoAC_SUBST(ac_exe_suffix)dnl 8001e196c8SJohn Marino 8101e196c8SJohn Marinodnl 8201e196c8SJohn Marinodnl AC_C_CROSS 8301e196c8SJohn Marinodnl 8401e196c8SJohn Marino 8501e196c8SJohn Marinodnl Checks for header files. 8601e196c8SJohn MarinoAC_HEADER_STDC 8701e196c8SJohn MarinoAC_HEADER_SYS_WAIT 8801e196c8SJohn MarinoAC_HEADER_DIRENT 8901e196c8SJohn Marinodnl Keep this list sorted 9001e196c8SJohn MarinoAC_CHECK_HEADERS( \ 9101e196c8SJohn Marino ar.h \ 9201e196c8SJohn Marino err.h \ 9301e196c8SJohn Marino fcntl.h \ 9401e196c8SJohn Marino paths.h \ 9501e196c8SJohn Marino poll.h \ 9601e196c8SJohn Marino ranlib.h \ 9701e196c8SJohn Marino string.h \ 9801e196c8SJohn Marino sys/mman.h \ 9901e196c8SJohn Marino sys/select.h \ 10001e196c8SJohn Marino sys/socket.h \ 10101e196c8SJohn Marino sys/time.h \ 10201e196c8SJohn Marino sys/uio.h \ 10301e196c8SJohn Marino unistd.h \ 10401e196c8SJohn Marino utime.h \ 10501e196c8SJohn Marino ) 10601e196c8SJohn Marino 10701e196c8SJohn Marinodnl Both *BSD and Linux have sys/cdefs.h, most do not. 10801e196c8SJohn Marinodnl If it is missing, we add -I${srcdir}/missing to CFLAGS 10901e196c8SJohn Marinodnl also if sys/cdefs.h does not have __RCSID we need to use ours 11001e196c8SJohn Marinodnl but we need to include the host's one too *sigh* 11101e196c8SJohn MarinoAC_CHECK_HEADER(sys/cdefs.h, 11201e196c8SJohn Marinoecho $ECHO_N "checking whether sys/cdefs.h is compatible... $ECHO_C" >&6 11301e196c8SJohn MarinoAC_EGREP_CPP(yes, 11401e196c8SJohn Marino[#include <sys/cdefs.h> 11501e196c8SJohn Marino#ifdef __RCSID 11601e196c8SJohn Marinoyes 11701e196c8SJohn Marino#endif 11801e196c8SJohn Marino], 11901e196c8SJohn Marinoecho yes >&6, 12001e196c8SJohn Marinoecho no >&6; CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd` -DNEED_HOST_CDEFS_H"), 12101e196c8SJohn MarinoCPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`") 12201e196c8SJohn Marino 12301e196c8SJohn Marinodnl Checks for typedefs, structures, and compiler characteristics. 12401e196c8SJohn MarinoAC_C___ATTRIBUTE__ 12501e196c8SJohn MarinoAC_C_BIGENDIAN 12601e196c8SJohn MarinoAC_C_CONST 12701e196c8SJohn MarinoAC_TYPE_OFF_T 12801e196c8SJohn MarinoAC_TYPE_PID_T 12901e196c8SJohn MarinoAC_TYPE_SIZE_T 13001e196c8SJohn MarinoAC_DECL_SYS_SIGLIST 13101e196c8SJohn MarinoAC_HEADER_TIME 13201e196c8SJohn MarinoAC_STRUCT_TM 13301e196c8SJohn Marino 13401e196c8SJohn Marinodnl Checks for library functions. 13501e196c8SJohn MarinoAC_TYPE_SIGNAL 13601e196c8SJohn MarinoAC_FUNC_VFORK 13701e196c8SJohn MarinoAC_FUNC_VPRINTF 13801e196c8SJohn MarinoAC_FUNC_WAIT3 13901e196c8SJohn Marinodnl Keep this list sorted 14001e196c8SJohn MarinoAC_CHECK_FUNCS( \ 14101e196c8SJohn Marino err \ 14201e196c8SJohn Marino errx \ 14301e196c8SJohn Marino getcwd \ 14401e196c8SJohn Marino getenv \ 14501e196c8SJohn Marino getopt \ 14601e196c8SJohn Marino getwd \ 14701e196c8SJohn Marino killpg \ 14801e196c8SJohn Marino mmap \ 14901e196c8SJohn Marino putenv \ 15001e196c8SJohn Marino select \ 15101e196c8SJohn Marino setenv \ 15201e196c8SJohn Marino setpgid \ 15301e196c8SJohn Marino setsid \ 15401e196c8SJohn Marino sigaction \ 15501e196c8SJohn Marino sigvec \ 15601e196c8SJohn Marino snprintf \ 15701e196c8SJohn Marino strerror \ 15801e196c8SJohn Marino strftime \ 15901e196c8SJohn Marino strsep \ 16001e196c8SJohn Marino strtod \ 16101e196c8SJohn Marino strtol \ 16201e196c8SJohn Marino unsetenv \ 16301e196c8SJohn Marino vsnprintf \ 16401e196c8SJohn Marino wait3 \ 16501e196c8SJohn Marino wait4 \ 16601e196c8SJohn Marino waitpid \ 16701e196c8SJohn Marino warn \ 16801e196c8SJohn Marino warnx \ 16901e196c8SJohn Marino ) 17001e196c8SJohn Marino 17101e196c8SJohn Marinodnl functions which we may need to provide 17201e196c8SJohn MarinoAC_REPLACE_FUNCS( \ 17301e196c8SJohn Marino realpath \ 17401e196c8SJohn Marino dirname \ 17501e196c8SJohn Marino stresep \ 17601e196c8SJohn Marino strlcpy \ 17701e196c8SJohn Marino ) 17801e196c8SJohn Marino 17901e196c8SJohn MarinoAC_CHECK_LIB([util], [emalloc], 18001e196c8SJohn Marino [ AC_CHECK_LIB([util], [erealloc], 18101e196c8SJohn Marino [ AC_CHECK_LIB([util], [estrdup], 18201e196c8SJohn Marino [ AC_CHECK_LIB([util], [estrndup], 18301e196c8SJohn Marino [ LIBS="$LIBS -lutil" 18401e196c8SJohn Marino CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])]) 18501e196c8SJohn Marino 18601e196c8SJohn Marinodnl 18701e196c8SJohn Marinodnl Structures 18801e196c8SJohn Marinodnl 18901e196c8SJohn MarinoAC_HEADER_STAT 19001e196c8SJohn MarinoAC_STRUCT_ST_RDEV 19101e196c8SJohn Marinodnl 19201e196c8SJohn Marinodnl we want this for unit-tests/Makefile 19301e196c8SJohn Marinoecho $ECHO_N "checking if diff -u works... $ECHO_C" >&6 19401e196c8SJohn Marinoif diff -u /dev/null /dev/null > /dev/null 2>&1; then 19501e196c8SJohn Marino diff_u=-u 19601e196c8SJohn Marino echo yes >&6 19701e196c8SJohn Marinoelse 19801e196c8SJohn Marino diff_u= 19901e196c8SJohn Marino echo no >&6 20001e196c8SJohn Marinofi 20101e196c8SJohn Marinodnl 20201e196c8SJohn Marinodnl AC_* don't quite cut it. 20301e196c8SJohn Marinodnl 20401e196c8SJohn Marinoecho "checking for MACHINE & MACHINE_ARCH..." >&6 20501e196c8SJohn Marinocat > conftest.$ac_ext <<EOF 20601e196c8SJohn Marino#include "confdefs.h" 20701e196c8SJohn Marino#include <sys/param.h> 20801e196c8SJohn Marino#ifdef MACHINE 20901e196c8SJohn Marinomachine=MACHINE 21001e196c8SJohn Marino#endif 21101e196c8SJohn Marino#ifdef MACHINE_ARCH 21201e196c8SJohn Marinomachine_arch=MACHINE_ARCH 21301e196c8SJohn Marino#endif 21401e196c8SJohn MarinoEOF 21501e196c8SJohn Marino 21601e196c8SJohn Marinodefault_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | 21701e196c8SJohn Marino egrep machine= | tr -d ' "'` 21801e196c8SJohn Marinorm -rf conftest* 21901e196c8SJohn Marinoif test "$default_machine"; then 22001e196c8SJohn Marino eval "$default_machine" 22101e196c8SJohn Marinofi 22201e196c8SJohn Marinomachine=${machine:-`$srcdir/machine.sh`} 22301e196c8SJohn Marinomachine_arch=${machine_arch:-`$srcdir/machine.sh arch`} 22401e196c8SJohn Marinoecho "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6 22501e196c8SJohn Marinodnl 22601e196c8SJohn Marinodnl now allow overrides 22701e196c8SJohn Marinodnl 22801e196c8SJohn MarinoAC_ARG_WITH(machine, 22901e196c8SJohn Marino[ --with-machine=MACHINE explicitly set MACHINE], 23001e196c8SJohn Marino[case "${withval}" in 23101e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;; 23201e196c8SJohn Marinono) ;; 23301e196c8SJohn Marinogeneric) machine=`$srcdir/machine.sh`;; 23401e196c8SJohn Marino*) machine=$with_machine;; 23501e196c8SJohn Marinoesac]) 23601e196c8SJohn Marinoforce_machine= 23701e196c8SJohn MarinoAC_ARG_WITH(force_machine, 23801e196c8SJohn Marino[ --with-force-machine=MACHINE set FORCE_MACHINE], 23901e196c8SJohn Marino[case "${withval}" in 24001e196c8SJohn Marinoyes) force_machine=FORCE_;; 24101e196c8SJohn Marinono) ;; 24201e196c8SJohn Marino*) force_machine=FORCE_; machine=$with_force_machine;; 24301e196c8SJohn Marinoesac]) 24401e196c8SJohn Marinodnl 24501e196c8SJohn Marinoforce_machine_arch= 24601e196c8SJohn MarinoAC_ARG_WITH(force_machine_arch, 24701e196c8SJohn Marino[ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH], 24801e196c8SJohn Marino[case "${withval}" in 24901e196c8SJohn Marinoyes) force_machine_arch=FORCE_;; 25001e196c8SJohn Marinono) ;; 25101e196c8SJohn Marino*) force_machine_arch=FORCE_; machine_arch=$with_force_machine;; 25201e196c8SJohn Marinoesac]) 25301e196c8SJohn Marinodnl 25401e196c8SJohn MarinoAC_ARG_WITH(machine_arch, 25501e196c8SJohn Marino[ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH], 25601e196c8SJohn Marino[case "${withval}" in 25701e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;; 25801e196c8SJohn Marinono) ;; 25901e196c8SJohn Marino*) machine_arch=$with_machine_arch;; 26001e196c8SJohn Marinoesac]) 26101e196c8SJohn Marinodnl 26201e196c8SJohn Marinodnl Tell them what we ended up with 26301e196c8SJohn Marinodnl 26401e196c8SJohn Marinoecho "Using: ${force_machine}MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6 26501e196c8SJohn Marinodnl 26601e196c8SJohn Marinodnl Allow folk to control _PATH_DEFSYSPATH 26701e196c8SJohn Marinodnl 26801e196c8SJohn Marinodefault_sys_path=\${prefix}/share/mk 26901e196c8SJohn MarinoAC_ARG_WITH(default-sys-path, 27001e196c8SJohn Marino[ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH 27101e196c8SJohn Marino MAKESYSPATH is a ':' separated list of directories 27201e196c8SJohn Marino that bmake will search for system .mk files. 27301e196c8SJohn Marino _PATH_DEFSYSPATH is its default value.], 27401e196c8SJohn Marino[case "${withval}" in 27501e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;; 27601e196c8SJohn Marinono) ;; 27701e196c8SJohn Marino*) default_sys_path="$with_default_sys_path" 27801e196c8SJohn Marino ;; 27901e196c8SJohn Marinoesac]) 28001e196c8SJohn Marinodnl 28101e196c8SJohn Marinodnl Some folk don't like this one 28201e196c8SJohn Marinodnl 28301e196c8SJohn MarinoAC_ARG_WITH(path-objdirprefix, 28401e196c8SJohn Marino[ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX], 28501e196c8SJohn Marino[case "${withval}" in 28601e196c8SJohn Marinoyes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;; 28701e196c8SJohn Marinono) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;; 28801e196c8SJohn Marino*) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;; 28901e196c8SJohn Marinoesac]) 29001e196c8SJohn Marinodnl 29101e196c8SJohn Marinodnl And this can be handy to do with out. 29201e196c8SJohn Marinodnl 29301e196c8SJohn MarinoAC_ARG_ENABLE(pwd-override, 29401e196c8SJohn Marino[ --disable-pwd-override disable \$PWD overriding getcwd()], 29501e196c8SJohn Marino[case "${enableval}" in 29601e196c8SJohn Marinoyes) ;; 29701e196c8SJohn Marinono) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;; 29801e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;; 29901e196c8SJohn Marinoesac]) 30001e196c8SJohn Marinodnl 30101e196c8SJohn Marinodnl Just for grins 30201e196c8SJohn Marinodnl 30301e196c8SJohn MarinoAC_ARG_ENABLE(check-make-chdir, 30401e196c8SJohn Marino[ --disable-check-make-chdir disable make trying to guess 30501e196c8SJohn Marino when it should automatically cd \${.CURDIR}], 30601e196c8SJohn Marino[case "${enableval}" in 30701e196c8SJohn Marinoyes) ;; 30801e196c8SJohn Marinono) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;; 30901e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;; 31001e196c8SJohn Marinoesac]) 31101e196c8SJohn Marinodnl 31201e196c8SJohn Marinodnl On non-BSD systems, bootstrap won't work without mk 31301e196c8SJohn Marinodnl 31401e196c8SJohn MarinoAC_ARG_WITH(mksrc, 31501e196c8SJohn Marino[ --with-mksrc=PATH tell makefile.boot where to find mk src], 31601e196c8SJohn Marino[case "${withval}" in 31701e196c8SJohn Marino""|yes|no) ;; 31801e196c8SJohn Marino*) test -s $withval/install-mk && mksrc=$withval || 31901e196c8SJohn MarinoAC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk) 32001e196c8SJohn Marino;; 32101e196c8SJohn Marinoesac 32201e196c8SJohn Marino]) 32301e196c8SJohn Marinodnl 32401e196c8SJohn Marinodnl Now make sure we have a value 32501e196c8SJohn Marinodnl 32601e196c8SJohn Marinosrcdir=`cd $srcdir && pwd` 32701e196c8SJohn Marinofor mksrc in $mksrc $srcdir/mk $srcdir/../mk mk 32801e196c8SJohn Marinodo 32901e196c8SJohn Marino test -s $mksrc/install-mk || continue 33001e196c8SJohn Marino mksrc=`cd $mksrc && pwd` 33101e196c8SJohn Marino break 33201e196c8SJohn Marinodone 33301e196c8SJohn Marinomksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"` 33401e196c8SJohn Marinoecho "Using: MKSRC=$mksrc" 1>&6 33501e196c8SJohn Marinodnl On some systems we want a different default shell by default 33601e196c8SJohn Marinoif test -x /usr/xpg4/bin/sh; then 33701e196c8SJohn Marino defshell_path=${defshell_path:-/usr/xpg4/bin/sh} 33801e196c8SJohn Marinofi 33901e196c8SJohn Marinoif test -n "$defshell_path"; then 34001e196c8SJohn Marino echo "Using: SHELL=$defshell_path" >&6 34101e196c8SJohn Marino AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell) 34201e196c8SJohn Marinofi 34301e196c8SJohn Marinoif test -n "$DEFSHELL_INDEX"; then 34401e196c8SJohn Marino AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default) 34501e196c8SJohn Marinofi 34601e196c8SJohn Marinodnl 34701e196c8SJohn MarinoAC_SUBST(machine) 34801e196c8SJohn MarinoAC_SUBST(force_machine) 34901e196c8SJohn MarinoAC_SUBST(machine_arch) 35001e196c8SJohn MarinoAC_SUBST(mksrc) 35101e196c8SJohn MarinoAC_SUBST(default_sys_path) 35201e196c8SJohn MarinoAC_SUBST(INSTALL) 35301e196c8SJohn MarinoAC_SUBST(GCC) 35401e196c8SJohn MarinoAC_SUBST(diff_u) 35501e196c8SJohn MarinoAC_SUBST(use_meta) 35601e196c8SJohn MarinoAC_SUBST(filemon_h) 357*5f1e34d9SAlexandre PerrinAC_OUTPUT(makefile Makefile.config make-bootstrap.sh unit-tests/Makefile) 35801e196c8SJohn Marino 35901e196c8SJohn Marinocat <<EOF 36001e196c8SJohn Marino 36101e196c8SJohn MarinoYou can now run 36201e196c8SJohn Marino 36301e196c8SJohn Marino sh ./make-bootstrap.sh 36401e196c8SJohn Marino 36501e196c8SJohn Marinoto produce a fully functional bmake. 36601e196c8SJohn Marino 36701e196c8SJohn MarinoEOF 368