dnl
dnl
dnl Copyright (C) , Karlsruhe University
dnl
dnl File path: configure.in
dnl
dnl Redistribution and use in source and binary forms, with or without
dnl modification, are permitted provided that the following conditions
dnl are met:
dnl 1. Redistributions of source code must retain the above copyright
dnl notice, this list of conditions and the following disclaimer.
dnl 2. Redistributions in binary form must reproduce the above copyright
dnl notice, this list of conditions and the following disclaimer in the
dnl documentation and/or other materials provided with the distribution.
dnl
dnl THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
dnl ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
dnl SUCH DAMAGE.
dnl
dnl $Id: configure.in,v 1.18.2.23 2005/03/21 01:15:15 cvansch Exp $
dnl
dnl
dnl Process this file with autoconf to produce a configure script.
AC_INIT(sdiOS, [0.1])
AC_CONFIG_SRCDIR([serv/sigma0/sigma0.cc])
if test "x$host_alias" != x; then
LDFLAGS="-nostdlib $LDFLAGS"
HOST=$host_alias
else
HOST=`(uname -m) 2>/dev/null || echo unknown`
fi
case ${libdir} in
\${exec_prefix}/lib)
libdir='${exec_prefix}/lib/l4'
;;
esac
case ${libexecdir} in
\${exec_prefix}/libexec)
libexecdir='${exec_prefix}/libexec/l4'
;;
esac
case $HOST in
ia32|x86|i386*|i486*|i586*|i686*)
ARCH=ia32
ARCHSW=IA32
BITS=32
;;
ia64*)
ARCH=ia64
ARCHSW=IA64
BITS=64
;;
powerpc64*|ppc64*)
ARCH=powerpc64
ARCHSW=PPC64
BITS=64
;;
powerpc*)
ARCH=powerpc
ARCHSW=PPC
BITS=32
;;
arm*)
ARCH=arm
ARCHSW=ARM
BITS=32
;;
amd64*)
ARCH=amd64
ARCHSW=AMD64
BITS=64
;;
mips64*)
ARCH=mips64
ARCHSW=MIPS64
BITS=64
;;
alpha*)
ARCH=alpha
ARCHSW=ALPHA
BITS=64
;;
*)
AC_MSG_ERROR([Unknown hardware architecture: $HOST.
Please specify hardware architecture using --host=ARCH.])
;;
esac
CROSSCC=
if test "x$CC" = x -a "x$host_alias" != x; then
if test "x$gcc_prefix" = x; then
case $ARCH in
ia32)
gcc_prefix=i386
;;
amd64)
gcc_prefix=x86_64
;;
*)
gcc_prefix=$ARCH
;;
esac
fi
AC_CHECK_PROGS(CROSSCC,
[$host_alias-gcc $gcc_prefix-elf-gcc $gcc_prefix-unknown-elf-gcc \
$gcc_prefix-linux-gcc $gcc_prefix-unknown-linux-gcc \
$gcc_prefix-unknown-linux-gnu-gcc $gcc_prefix-pc-linux-gnu-gcc])
fi
if test "x$CROSSCC" != x; then
CC=$CROSSCC
fi
dnl Autoheader stuff.
AC_CONFIG_HEADERS([config.h])
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_PROG_LN_S
AC_PROG_AWK
AC_DEFINE([SDIOS], [], [Always defined on sdios])
dnl Configure parameters
AC_ARG_WITH([comport],
[AC_HELP_STRING([--with-comport=PORT],
[comport to user for serial I/O [[0]]])],
[CONFIG_COMPORT=`echo $withval | sed 's/yes/0/'`], [CONFIG_COMPORT=0])
if test "x$CONFIG_COMPORT" != xno; then
AC_DEFINE_UNQUOTED([CONFIG_COMPORT], [$CONFIG_COMPORT],
[Define to the appropriate I/O comport (0-3).])
fi
AC_ARG_WITH([comspeed],
[AC_HELP_STRING([--with-comspeed=SPEED],
[select speed for comport [[115200]]])],
[COMSPEED=$withval], [COMSPEED=115200])
if test "x$CONFIG_COMPORT" != xno; then
AC_DEFINE_UNQUOTED([CONFIG_COMSPEED], [$COMSPEED],
[Baud rate for comport (typically 115200, 57600, or 38400).])
fi
AC_ARG_WITH([kickstart-linkbase],
[AC_HELP_STRING([--with-kickstart-linkbase=BASE],
[link-base for kickstart [[architecture-dependent]]])],
[KICKSTART_LINKBASE=$withval], [KICKSTART_LINKBASE=no])
AC_ARG_WITH([s0-linkbase],
[AC_HELP_STRING([--with-s0-linkbase=BASE],
[link-base for sigma0 [[architecture-dependent]]])],
[SIGMA0_LINKBASE=$withval], [SIGMA0_LINKBASE=no])
AC_ARG_WITH([roottask-linkbase],
[AC_HELP_STRING([--with-roottask-linkbase=BASE],
[link-base for root task [[architecture-dependent]]])],
[ROOTTASK_LINKBASE=$withval], [ROOTTASK_LINKBASE=no])
AC_ARG_WITH([kerneldir],
[AC_HELP_STRING([--with-kerneldir=DIR],
[build directory of kernel [[guess]]])],
[kerneldir=$withval], [kerneldir=no])
dnl Find prefix to use for gcc/binutils programs.
TOOLPREFIX=`echo $CC | sed 's,gcc[[^/]]*$,,'`
AC_SUBST([TOOLPREFIX])
dnl Find location of libgcc.a
AC_MSG_CHECKING([location of libgcc.a])
LIBGCC=`$CC -print-libgcc-file-name`
LIBGCCDIR=`echo $LIBGCC | sed 's,/[[^/]]*$,,'`
AC_MSG_RESULT([$LIBGCCDIR])
dnl Find location of stdarg.h include file
AC_MSG_CHECKING([location of stdarg.h])
testdir=`echo $LIBGCC | sed 's,/[[^/]]*$,/include,'`
if test -f "$testdir/stdarg.h"; then
STDARGDIR=$testdir
else
testdir=`echo $LIBGCC | sed 's,/lib/[[^/]]*$,/include,'`
STDARGDIR="\$(top_builddir)"
rm -f "stdarg.h"
if test -f "$testdir/stdarg.h"; then
grep -q '#include' "$testdir/stdarg.h" || cp "$testdir/stdarg.h" .
fi
if test ! -f "stdarg.h"; then
STDARGDIR="\$(top_srcdir)/../contrib/include"
fi
fi
if test "x$STDARGDIR" != x; then
AC_MSG_RESULT([$STDARGDIR])
else
AC_MSG_ERROR([stdarg.h not found])
fi
dnl Guess build directory of kernel
AC_MSG_CHECKING([kernel build directory])
case $kerneldir in
yes|no)
my_builddir=`pwd`
my_srcdir=`(cd $srcdir && pwd)`
my_confname=`echo $my_builddir | sed s,.*/,,`
if test -f $my_builddir/../kernel/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../kernel
elif test -f $my_builddir/../kernel-$ARCH/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../kernel-$ARCH
elif test -f $my_builddir/../pistachio-kernel/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../pistachio-kernel
elif test -f $my_builddir/../pistachio-$ARCH-kernel/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../pistachio-$ARCH-kernel
elif test -f $my_builddir/../pistachio-kernel-$ARCH/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../pistachio-kernel-$ARCH
elif test -f $my_builddir/../pistachio-$ARCH/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../pistachio-$ARCH
elif test -f $my_builddir/../build-kernel/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../build-kernel
elif test -f $my_builddir/../build-kernel-$ARCH/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../build-kernel-$ARCH
elif test -f $my_builddir/../build-$ARCH-kernel/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../build-$ARCH-kernel
elif test -f $my_builddir/../build-$ARCH/$ARCH-kernel; then
kerneldir='$(top_builddir)'/../build-$ARCH
elif test -f $my_srcdir/../kernel/$my_confname/$ARCH-kernel; then
kerneldir='$(top_srcdir)'/../kernel/$my_confname
elif test -f $my_srcdir/../kernel/$ARCH/$ARCH-kernel; then
kerneldir='$(top_srcdir)'/../kernel/$ARCH
else
kerneldir='$(top_builddir)'
fi
;;
esac
AC_MSG_RESULT([$kerneldir])
dnl Checking for idl and stuff
AC_CHECK_PROGS([IDL], [idl4])
if test -z "$IDL"; then
AC_MSG_ERROR([idl4 binary required])
fi
test ".$CFLAGS" = "." && CFLAGS=" "
test ".CXXFLAGS" = "." && CXXFLAGS=" "
dnl Set compiler/linker flags.
INCLUDES="-I. -I\$(top_srcdir)/include -I\$(top_srcdir)/include/libc -I\$(top_srcdir)/include/libstdc++ -I\$(top_builddir) -I$STDARGDIR"
CPPFLAGS="$INCLUDES -DCONFIG_ARCH_$ARCHSW $CPPFLAGS"
case $LDFLAGS in
*-nostdlib*)
;;
*)
LDFLAGS="-nostdlib $LDFLAGS"
;;
esac
LDFLAGS="-N -L\$(top_builddir)/lib -L$LIBGCCDIR $LDFLAGS"
CFLAGS="-nostdinc -O0 -g3 -fno-strict-aliasing $CFLAGS"
CXXFLAGS="-fno-exceptions -fno-rtti -fno-use-cxa-atexit \$(CFLAGS) $CXXFLAGS"
IDLFLAGS="$INCLUDES -I\$(top_srcdir)/if -mc++ -DCONFIG_ARCH_$ARCHSW"
dnl Architecture dependent settings.
case $ARCH in
ia32)
default_kickstart_linkbase=00800000
default_sigma0_linkbase=00020000
default_roottask_linkbase=00300000
;;
ia64)
default_sigma0_linkbase=01000000
default_roottask_linkbase=02000000
;;
powerpc)
default_kickstart_linkbase=00400000
default_sigma0_linkbase=00200000
default_roottask_linkbase=00300000
;;
powerpc64)
default_sigma0_linkbase=00100000
default_roottask_linkbase=00300000
;;
arm)
default_sigma0_linkbase=C0A00000
default_roottask_linkbase=C0B00000
;;
amd64)
default_kickstart_linkbase=00180000
default_sigma0_linkbase=000800000
default_roottask_linkbase=00A00000
;;
alpha)
default_sigma0_linkbase=d00000
default_roottask_linkbase=e00000
;;
mips64)
default_sigma0_linkbase=00100000
default_roottask_linkbase=00180000
;;
esac
dnl Platform dependent settings.
case $HOST in
arm-pleb)
PLAT=pleb
CFLAGS="$CFLAGS -O2 -march=armv4 -mtune=strongarm1100 -DARM_LITTLE_ENDIAN"
AC_SUBST([PLAT])
;;
arm-pleb2)
PLAT=pleb2
CFLAGS="$CFLAGS -O2 -march=armv5 -mtune=xscale -DARM_LITTLE_ENDIAN"
AC_SUBST([PLAT])
default_sigma0_linkbase=A00A0000
default_roottask_linkbase=A00B0000
;;
arm-ixdp425)
PLAT=ixdp425
CFLAGS="$CFLAGS -O2 -march=armv5 -mbig-endian -DARM_BIG_ENDIAN"
LDFLAGS="$LDFLAGS -EB"
AC_SUBST([PLAT])
default_sigma0_linkbase=00A00000
default_roottask_linkbase=00B00000
;;
arm-innovator)
PLAT=innovator
CFLAGS="$CFLAGS -O2 -march=armv4 -mtune=arm9tdmi -mshort-load-bytes -DARM_LITTLE_ENDIAN"
default_sigma0_linkbase=10200000
default_roottask_linkbase=10300000
AC_SUBST([PLAT])
;;
arm-csb337)
PLAT=csb337
CFLAGS="$CFLAGS -O2 -march=armv4 -mtune=arm9tdmi -mshort-load-bytes -DARM_LITTLE_ENDIAN"
default_sigma0_linkbase=20500000
default_roottask_linkbase=20550000
AC_SUBST([PLAT])
;;
mips64-erpcn01)
CFLAGS="$CFLAGS -G 0 -mlong64 -mno-abicalls -non_shared -msplit-addresses -EL -mcpu=r5000 -mips4 -mabi=64 -Wa,-mabi=o64 -DMIPS64_LITTLE_ENDIAN"
LDFLAGS="$LDFLAGS -EL"
PLAT=erpcn01
AC_SUBST([PLAT])
;;
mips64-sb1)
CFLAGS="$CFLAGS -O3 -G 0 -mlong64 -mno-abicalls -non_shared -msplit-addresses -EB -mcpu=sb1 -mips4 -mabi=64 -Wa,-mabi=o64 -DMIPS64_BIG_ENDIAN"
LDFLAGS="$LDFLAGS -EB"
PLAT=sb1
AC_SUBST([PLAT])
;;
mips64-vr41xx)
CFLAGS="$CFLAGS -G 0 -mlong64 -mno-abicalls -non_shared -msplit-addresses -EL -mcpu=r4000 -mips3 -mabi=64 -Wa,-mabi=o64 -DMIPS64_LITTLE_ENDIAN"
LDFLAGS="$LDFLAGS -EL"
PLAT=vr41xx
AC_SUBST([PLAT])
;;
mips64-u4600|mips64*)
CFLAGS="$CFLAGS -G 0 -mlong64 -mno-abicalls -non_shared -msplit-addresses -EB -mcpu=r4000 -mips3 -mabi=64 -Wa,-mabi=o64 -DMIPS64_BIG_ENDIAN"
LDFLAGS="$LDFLAGS -EB"
PLAT=u4600
AC_SUBST([PLAT])
;;
alpha*)
CFLAGS="$CFLAGS -freg-struct-return"
PLAT=srm
AC_SUBST([PLAT])
;;
amd64*)
PLAT=amd64-pc99
CFLAGS="$CFLAGS -m64 -mno-red-zone"
AC_SUBST([PLAT])
;;
powerpc64*)
CFLAGS="$CFLAGS -msoft-float -mminimal-toc"
;;
esac
case $KICKSTART_LINKBASE in
yes|no)
KICKSTART_LINKBASE=$default_kickstart_linkbase
;;
esac
case $SIGMA0_LINKBASE in
yes|no)
SIGMA0_LINKBASE=$default_sigma0_linkbase
;;
esac
case $ROOTTASK_LINKBASE in
yes|no)
ROOTTASK_LINKBASE=$default_roottask_linkbase
;;
esac
AC_SUBST([CXXFLAGS])
AC_SUBST([ARCH])
AC_SUBST(ARCHSW)
AC_SUBST(BITS)
AC_SUBST([KICKSTART_LINKBASE])
AC_SUBST([SIGMA0_LINKBASE])
AC_SUBST([ROOTTASK_LINKBASE])
AC_SUBST([kerneldir])
AC_SUBST([IDLFLAGS])
AC_SUBST([IDL])
dnl Modified files.
AC_CONFIG_FILES([
config.mk
Makefile
if/Makefile
lib/Makefile
lib/l4/Makefile
lib/io/Makefile
lib/sdi/Makefile
lib/libc/Makefile
lib/libstdc++/Makefile
lib/zlib/Makefile
lib/png/Makefile
lib/SDL/Makefile
lib/SDL_image/Makefile
lib/jpeg/Makefile
serv/Makefile
serv/sigma0/Makefile
src/Makefile
src/root/Makefile
src/locator/Makefile
src/shell/Makefile
src/test/Makefile
src/test2/Makefile
src/console/Makefile
src/pci/Makefile
src/pager/Makefile
src/vmwarevideo/Makefile
src/minixfs/Makefile
src/cat/Makefile
src/sdltest/Makefile
src/sdljump/Makefile
src/sdljump/src/Makefile
src/supertux/Makefile
src/ls/Makefile
util/Makefile
util/kickstart/Makefile
util/piggybacker/Makefile
util/piggybacker/ofppc/Makefile
util/piggybacker/ofppc64/Makefile
])
AC_OUTPUT