# configure.ac - Configure script for the GNU Hurd. # Copyright (C) 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Marcus Brinkmann. # # This file is part of the GNU Hurd. # # The GNU Hurd is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) AC_INIT(hurd, 0.0, l4-hurd@gnu.org) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE( dnl Don't define `PACKAGE' and `VERSION'. [no-define] dnl Do not clutter the main build directory. [subdir-objects] dnl This is only a very rough estimation of the version we actually need. Feel dnl free to refine that. [1.9] dnl We require GNU make. [-Wall -Wno-portability] ) AC_CONFIG_SRCDIR([laden/laden.c]) AC_CONFIG_HEADER([config.h]) AC_GNU_SOURCE # Find our cross compiler. p=$(readlink -f .)/bin case $PATH_SEPARATOR$PATH$PATH_SEPARATOR in *$PATH_SEPARATOR$p$PATH_SEPARATOR*) :;; *) PATH=$p$PATH_SEPARATOR$PATH;; esac AC_SUBST([PATH]) # Checks for programs. AC_PROG_CC AM_PROG_CC_C_O AM_PROG_AS AC_PROG_RANLIB AC_CHECK_TOOL([AR], [ar], :) AC_CHECK_TOOL([NM], [nm], :) AC_PATH_PROG([SED], [sed], :) AC_PATH_PROG([SORT], [sort], :) AC_PROG_LN_S # Required for building the documentation missing_doc_progs= AC_PATH_PROG([PDFLATEX], [pdflatex], no) if test "x$PDFLATEX" = xno; then missing_doc_progs="$missing_doc_progs pdflatex" fi AC_PATH_PROG([BIBTEX], [bibtex], no) if test "x$BIBTEX" = xno; then missing_doc_progs="$missing_doc_progs bibtex" fi DOC= if test x"$missing_doc_progs" != "x"; then AC_MSG_WARN([[The following programs were not found:$missing_doc_progs. ]]dnl [[No documentation files will be built.]]) else DOC=doc fi AC_SUBST([DOC]) # Check for program specialities. # From glibc HEAD, 2007-11-07. AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl cat > conftest.c <&AS_MESSAGE_LOG_FD]) then libc_cv_gnu89_inline=yes else libc_cv_gnu89_inline=no fi rm -f conftest*]) if test $libc_cv_gnu89_inline = yes; then libc_cv_gnu89_inline=-fgnu89-inline else libc_cv_gnu89_inline= fi # Set up the host information. AC_CANONICAL_HOST # Checks for header files. arch_ia32=false arch_x86_64=false arch_powerpc=false case $host_cpu in alpha) arch=alpha arch_alpha=true ;; x86_64) arch=x86_64 arch_x86_64=true ;; i386 | i486 | i586 | i686) arch=ia32 arch_ia32=true ;; ia64) arch=ia64 arch_ia64=true ;; powerpc) arch=powerpc arch_powerpc=true ;; powerpc64) arch=powerpc64 arch_powerpc64=true ;; *) AC_MSG_ERROR([unsupported architecture]) ;; esac AM_CONDITIONAL([ARCH_ALPHA], $arch_alpha) AM_CONDITIONAL([ARCH_X86_64], $arch_x86_64) AM_CONDITIONAL([ARCH_IA32], $arch_ia32) AM_CONDITIONAL([ARCH_IA64], $arch_ia64) AM_CONDITIONAL([ARCH_POWERPC], $arch_powerpc) AM_CONDITIONAL([ARCH_POWERPC64], $arch_powerpc64) # Whether to use L4. l4_abi=false l4_abi_x2=false AC_ARG_ENABLE([l4], AC_HELP_STRING([--enable-l4=yes], [Use L4 as a hardware abstraction layer.]), [ac_cv_use_l4=$enableval], [ac_cv_use_l4=no]) case $ac_cv_use_l4 in yes|true) l4_abi=x2 l4_abi_x2=true ;; no) l4_abi=false ;; *) AC_MSG_ERROR([invalid value passed to --enable-l4]) ;; esac AM_CONDITIONAL([USE_L4], test x$l4_abi != xfalse) AM_CONDITIONAL([L4_ABI_X2], $l4_abi_x2) if test $l4_abi != false then AC_MSG_NOTICE([compiling for L4.]) fi # Configure components. m4_include([laden/config.m4]) m4_include([viengoos/config.m4]) # Create links for header and library files. m4_include([libl4/headers.m4]) m4_include([libviengoos/headers.m4]) m4_include([platform/headers.m4]) m4_include([hurd/headers.m4]) m4_include([libhurd-ihash/headers.m4]) m4_include([libhurd-btree/headers.m4]) m4_include([libbitarray/headers.m4]) m4_include([libhurd-slab/headers.m4]) m4_include([libpthread/headers.m4]) m4_include([libhurd-mm/headers.m4]) m4_include([viengoos/headers.m4]) m4_include([newlib/headers.m4]) m4_include([libc-parts/headers.m4]) # Check for libc and components using it. AC_ARG_WITH([libc], [ --with-libc compile with the GNU C library (see libc/README)]) AM_CONDITIONAL(WITH_LIBC, test x"${with_libc-no}" != xno) AC_ARG_WITH([newlib], [ --with-newlib compile with Newlib's C library (see newlib/README)]) AM_CONDITIONAL(WITH_NEWLIB, test x"${with_newlib-no}" != xno) ABS_BUILDDIR=$(readlink -f .) AC_SUBST([ABS_BUILDDIR]) ABS_SRCDIR=$(readlink -f "$srcdir") AC_SUBST([ABS_SRCDIR]) # Location of the installed headers and .a's. We expect that # LIBC/libc.a and LIBC/include exists. LIBC= if test x"${with_libc-no}" != xno then LIBC=$ABS_BUILDDIR/libc elif test x"${with_newlib-no}" != xno then LIBC=$ABS_BUILDDIR/newlib fi AC_SUBST([LIBC]) LIBC_A= LIBC_M= if test x$LIBC != x then LIBC_A=$LIBC/libc.a LIBC_M=$LIBC/libm.a fi AC_SUBST([LIBC_A]) AC_SUBST([LIBC_M]) # Compute some variables that we need everywhere. AC_ARG_ENABLE([runtime-checks], AC_HELP_STRING([--enable-runtime-checks[=LEVEL]], [Runtime checks to enable. level=[0,1,2,3], 0: none, 1: debugging output, 2: and asserts (default), 3: and very computationally expensive checks]), [ac_cv_runtime_checks=$enableval], [ac_cv_runtime_checks=2]) case $ac_cv_runtime_checks in 3) CPP_CHECKS="" C_CHECKS="-fstack-protector-all" ;; yes | 2) CPP_CHECKS="-DNCHECK" C_CHECKS="-fstack-protector-all" ;; 1) CPP_CHECKS="-DNCHECK -DNDEBUG" C_CHECKS="-Wno-unused-variable -fstack-protector-all" ;; no | 0) CPP_CHECKS="-DNCHECK -DNDEBUG -DDEBUG_ELIDE=1" C_CHECKS="-Wno-unused-variable" ;; *) AC_MSG_ERROR([Invalid value passed to --enable-runtime-checks]) ;; esac if test $l4_abi != false then USE_L4="-DUSE_L4=1" fi USER_CPPFLAGS=" \ $CPP_CHECKS $USE_L4 \ -D_GNU_SOURCE \ -I${LIBC}/include \ -I${ABS_SRCDIR}/libc-parts" USER_CFLAGS="-std=gnu99 -Wall -g -O2 $libc_cv_gnu89_inline $C_CHECKS" USER_LDFLAGS="-u_start -e_start" KERNEL_CPPFLAGS="\ $CPP_CHECKS $USE_L4 \ -D_GNU_SOURCE -DRM_INTERN \ -I${ABS_SRCDIR}/libc-parts" KERNEL_CFLAGS="-std=gnu99 -Wall -g -O2 $libc_cv_gnu89_inline $C_CHECKS" # It is debatable whether these should really contain the libc-parts' include # path. Currently this is needed, as tests make use of (a few) specific # libc-parts macros etc. CHECK_CPPFLAGS="\ -D_GNU_SOURCE \ -D_ENABLE_TESTS \ -I${ABS_BUILDDIR}/sysroot/include -I${ABS_SRCDIR}/libc-parts" CHECK_CFLAGS="-std=gnu99 -Wall -g -O2 $libc_cv_gnu89_inline" AC_SUBST(USER_CPPFLAGS) AC_SUBST(USER_CFLAGS) AC_SUBST(USER_LDFLAGS) AC_SUBST(USER_LDADD) AC_SUBST(KERNEL_CPPFLAGS) AC_SUBST(KERNEL_CFLAGS) AC_SUBST(CHECK_CPPFLAGS) AC_SUBST(CHECK_CFLAGS) # Do we already have a cross compiler? have_cross="test -x bin/$host_alias-gcc" AM_CONDITIONAL([HAVE_CROSS], [[$have_cross]]) # Are we supposed to run the test suite only? AC_ARG_WITH([tests], [ --enable-tests only support running the test suite]) AM_CONDITIONAL([ENABLE_TESTS], [[test x"${enable_tests-no}" != xno]]) AM_CONDITIONAL([TRAVERSE_HIERARCHY], [[$have_cross || test x"${enable_tests-no}" != xno]]) # Checks for library functions. AC_CONFIG_FILES([Makefile sysroot/lib/libc.a:libc.a.in libl4/ia32/Makefile libl4/powerpc/Makefile libl4/v2/Makefile libl4/v2/ia32/Makefile libl4/x2/Makefile libl4/tests/Makefile libl4/Makefile libviengoos/Makefile platform/alpha/Makefile platform/x86_64/Makefile platform/ia32/Makefile platform/ia64/Makefile platform/powerpc/Makefile platform/powerpc64/Makefile platform/Makefile libc-parts/Makefile hurd/Makefile libhurd-ihash/Makefile libhurd-btree/Makefile libbitarray/Makefile libhurd-slab/Makefile libpthread/Makefile libhurd-mm/Makefile laden/Makefile viengoos/Makefile libc/Makefile newlib/Makefile hieronymus/Makefile ruth/Makefile benchmarks/Makefile benchmarks/boehm-gc/Makefile benchmarks/sqlite/Makefile doc/Makefile ]) AC_OUTPUT