1
1
dnl Mac OS X configuration driver
2
dnl $Id: configure.in,v 1.16 2005/06/12 23:36:33 gbeauche Exp $
2
dnl $Id: configure.in,v 1.19 2006/03/11 11:45:25 nigel Exp $
3
3
dnl Process this file with autoconf to produce a configure script.
4
4
dnl Based on Unix/configure.in
5
5
dnl Written in 1999 by Christian Bauer et al.
6
dnl Occasionally re-synchronised (merged?) with latest version
7
dnl Written in 2002 by Christian Bauer et al.
7
9
dnl autoconf on 10.1 doesn't understand these
8
10
dnl AC_INIT([Basilisk II], 1.0, [Christian.Bauer@uni-mainz.de], BasiliskII)
159
163
dnl Checks for header files.
165
AC_CHECK_HEADERS(stdlib.h stdint.h)
161
166
AC_CHECK_HEADERS(unistd.h fcntl.h sys/types.h sys/time.h sys/mman.h mach/mach.h)
162
167
AC_CHECK_HEADERS(readline.h history.h readline/readline.h readline/history.h)
168
AC_CHECK_HEADERS(sys/socket.h sys/ioctl.h sys/filio.h sys/bitypes.h sys/wait.h)
169
AC_CHECK_HEADERS(sys/poll.h sys/select.h)
170
AC_CHECK_HEADERS(arpa/inet.h)
171
AC_CHECK_HEADERS(linux/if.h linux/if_tun.h net/if.h net/if_tun.h, [], [], [
172
#ifdef HAVE_SYS_TYPES_H
173
#include <sys/types.h>
175
#ifdef HAVE_SYS_SOCKET_H
176
#include <sys/socket.h>
179
AC_CHECK_HEADERS(AvailabilityMacros.h)
163
180
AC_CHECK_HEADERS(IOKit/storage/IOBlockStorageDevice.h)
165
182
dnl Checks for typedefs, structures, and compiler characteristics.
206
223
dnl Checks for library functions.
207
AC_CHECK_FUNCS(strdup cfmakeraw)
224
AC_CHECK_FUNCS(strdup strerror cfmakeraw)
208
225
AC_CHECK_FUNCS(clock_gettime timer_create)
209
226
AC_CHECK_FUNCS(sigaction signal)
210
227
AC_CHECK_FUNCS(mmap mprotect munmap)
211
228
AC_CHECK_FUNCS(vm_allocate vm_deallocate vm_protect)
229
AC_CHECK_FUNCS(poll inet_aton)
213
231
dnl Darwin seems to define mach_task_self() instead of task_self().
214
232
AC_CHECK_FUNCS(mach_task_self task_self)
234
dnl Check for headers and functions related to pty support (sshpty.c)
235
dnl From openssh-3.2.2p1 configure.ac
237
AC_CHECK_HEADERS(strings.h login.h sys/bsdtty.h sys/stat.h util.h pty.h)
238
AC_CHECK_FUNCS(_getpty vhangup strlcpy)
239
if test -z "$no_dev_ptmx" ; then
240
if test "x$disable_ptmx_check" != "xyes" ; then
241
AC_CHECK_FILE([/dev/ptmx],
243
AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx.])
249
AC_CHECK_FILE([/dev/ptc],
251
AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC, 1, [Define if you have /dev/ptc.])
256
dnl (end of code from openssh-3.2.2p1 configure.ac)
259
dnl Check for systems where POSIX-style non-blocking I/O (O_NONBLOCK)
260
dnl doesn't work or is unimplemented. On these systems (mostly older
261
dnl ones), use the old BSD-style FIONBIO approach instead. [tcl.m4]
262
AC_CACHE_CHECK([FIONBIO vs. O_NONBLOCK for non-blocking I/O],
263
ac_cv_nonblocking_io, [
266
ac_cv_nonblocking_io=FIONBIO
269
ac_cv_nonblocking_io=FIONBIO
272
ac_cv_nonblocking_io=FIONBIO
275
ac_cv_nonblocking_io=O_NONBLOCK
279
if [[ "$ac_cv_nonblocking_io" = "FIONBIO" ]]; then
280
AC_DEFINE(USE_FIONBIO, 1, [Define if BSD-style non-blocking I/O is to be used])
283
dnl Check whether compiler supports byte bit-fields
284
AC_CACHE_CHECK([whether compiler supports byte bit-fields],
285
ac_cv_have_byte_bitfields, [
299
return ! (sizeof(A) == 8 && &a.c == ((unsigned char *)&a + 1));
301
[ac_cv_have_byte_bitfields=yes],
302
[ac_cv_have_byte_bitfields=no],
303
dnl When cross-compiling, assume only GCC supports this
304
[if [[ "$GCC" = "yes" ]]; then
305
ac_cv_have_byte_bitfields="guessing yes"
307
ac_cv_have_byte_bitfields="guessing no"
313
dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES)
314
AC_DEFUN([AC_CHECK_FRAMEWORK], [
315
AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl
316
AC_CACHE_CHECK([whether compiler supports framework $1],
319
LIBS="$LIBS -framework $1"
321
[$2], [int main(void) { return 0; }],
322
[AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); LIBS="$saved_LIBS"]
325
AS_IF([test AS_VAR_GET(ac_Framework) = yes],
326
[AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])]
328
AS_VAR_POPDEF([ac_Framework])dnl
331
dnl Check for some MacOS X frameworks
332
AC_CHECK_FRAMEWORK(Carbon, [#include <Carbon/Carbon.h>])
333
AC_CHECK_FRAMEWORK(IOKit, [#include <IOKit/IOKitLib.h>])
334
AC_CHECK_FRAMEWORK(CoreFoundation, [#include <CoreFoundation/CoreFoundation.h>])
216
336
dnl Select system-dependant source files.
337
ETHERSRC=ether_unix.cpp
217
338
DEFINES="$DEFINES -DBSD_COMP"
218
339
CXXFLAGS="$CXXFLAGS -fpermissive"
219
340
dnl Check for the CAM library
358
dnl Is the slirp library supported?
359
case "$ac_cv_have_byte_bitfields" in
362
ETHERSRC=ether_unix.cpp
365
if [[ -n "$CAN_SLIRP" ]]; then
366
AC_DEFINE(HAVE_SLIRP, 1, [Define if slirp library is supported])
368
../slirp/bootp.c ../slirp/ip_output.c ../slirp/tcp_input.c \
369
../slirp/cksum.c ../slirp/mbuf.c ../slirp/tcp_output.c \
370
../slirp/debug.c ../slirp/misc.c ../slirp/tcp_subr.c \
371
../slirp/if.c ../slirp/sbuf.c ../slirp/tcp_timer.c \
372
../slirp/ip_icmp.c ../slirp/slirp.c ../slirp/tftp.c \
373
../slirp/ip_input.c ../slirp/socket.c ../slirp/udp.c"
237
377
dnl Use 68k CPU natively?
238
378
WANT_NATIVE_M68K=no
243
383
dnl $1 -- the macro to define
244
384
dnl $2 -- the value to translate
245
385
dnl $3 -- template name
246
AC_DEFUN(AC_TRANSLATE_DEFINE, [
386
AC_DEFUN([AC_TRANSLATE_DEFINE], [
247
387
if [[ "x$2" = "xyes" -o "x$2" = "xguessing yes" ]]; then
248
388
AC_DEFINE($1, 1, $3)
392
dnl Check that the host supports TUN/TAP devices
393
AC_CACHE_CHECK([whether TUN/TAP is supported],
394
ac_cv_tun_tap_support, [
396
#if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H)
397
#include <linux/if.h>
398
#include <linux/if_tun.h>
400
#if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H)
402
#include <net/if_tun.h>
406
memset(&ifr, 0, sizeof(ifr));
407
ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
409
ac_cv_tun_tap_support=yes, ac_cv_tun_tap_support=no
412
AC_TRANSLATE_DEFINE(ENABLE_TUNTAP, "$ac_cv_tun_tap_support",
413
[Define if your system supports TUN/TAP devices.])
252
415
dnl Various checks if the system supports vm_allocate() and the like functions.
254
417
if [[ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \
597
dnl Check if we have POSIX shared memory support
598
AC_CACHE_CHECK([whether POSIX shared memory is working],
599
ac_cv_have_posix_shm, [
603
#define HAVE_POSIX_SHM
604
#include "vm_alloc.cpp"
605
int main(void) { /* returns 0 if we have working POSIX shm */
606
if (vm_init() < 0) exit(2);
607
char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT);
608
if (m1 == VM_MAP_FAILED) exit(3);
611
], ac_cv_have_posix_shm=yes, ac_cv_have_posix_shm=no,
612
dnl When cross-compiling, do not assume anything.
613
ac_cv_have_posix_shm="guessing no"
618
AC_TRANSLATE_DEFINE(HAVE_POSIX_SHM, "$ac_cv_have_posix_shm",
619
[Define if your system supports POSIX shared memory.])
621
dnl Check if we have working 33-bit memory addressing
622
AC_CACHE_CHECK([whether 33-bit memory addressing is working],
623
ac_cv_have_33bit_addressing, [
627
#define USE_33BIT_ADDRESSING 1
628
#include "vm_alloc.cpp"
629
int main(void) { /* returns 0 if we have working 33-bit addressing */
630
if (sizeof(void *) < 8) exit(1);
631
if (vm_init() < 0) exit(2);
632
char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT);
633
if (m1 == VM_MAP_FAILED) exit(3);
634
char *m2 = m1 + (1L << 32);
635
m1[0] = 0x12; if (m2[0] != 0x12) exit(4);
636
m2[0] = 0x34; if (m1[0] != 0x34) exit(5);
639
], ac_cv_have_33bit_addressing=yes, ac_cv_have_33bit_addressing=no,
640
dnl When cross-compiling, do not assume anything.
641
ac_cv_have_33bit_addressing="guessing no"
434
647
dnl Check signal handlers need to be reinstalled
435
648
AC_CACHE_CHECK([whether signal handlers need to be reinstalled],
436
649
ac_cv_signal_need_reinstall, [
596
809
dnl A dummy program that returns always true
810
AC_PATH_PROG([BLESS], "true")
812
dnl Check for linker script support
813
case $target_os:$target_cpu in
814
linux*:i?86) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-i386.ld";;
815
linux*:x86_64) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-x86_64.ld";;
817
if [[ -n "$LINKER_SCRIPT_FLAGS" ]]; then
818
AC_CACHE_CHECK([whether linker script is usable],
819
ac_cv_linker_script_works, [
822
saved_LDFLAGS="$LDFLAGS"
823
LDFLAGS="$LDFLAGS $LINKER_SCRIPT_FLAGS"
825
[int main() {if ((char *)&main < (char *)0x70000000) return 1;}],
826
[ac_cv_linker_script_works=yes],
827
[ac_cv_linker_script_works=no],
828
dnl When cross-compiling, assume it works
829
[ac_cv_linker_script_works="guessing yes"]
832
if [[ "$ac_cv_linker_script_works" = "no" ]]; then
833
LDFLAGS="$saved_LDFLAGS"
834
LINKER_SCRIPT_FLAGS=""
838
AC_TRANSLATE_DEFINE(HAVE_LINKER_SCRIPT, "$ac_cv_linker_script_works",
839
[Define if there is a linker script to relocate the executable above 0x70000000.])
599
841
dnl Determine the addressing mode to use
600
842
if [[ "x$WANT_NATIVE_M68K" = "xyes" ]]; then
675
917
dnl Check for GCC 2.7 or higher.
677
919
AC_MSG_CHECKING(for GCC 2.7 or higher)
679
[#if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5
682
], [AC_MSG_RESULT(yes); HAVE_GCC27=yes], AC_MSG_RESULT(no))
920
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if ! (__GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5)
924
[AC_MSG_RESULT(yes); HAVE_GCC27=yes],
684
927
dnl Check for GCC 3.0 or higher.
686
929
AC_MSG_CHECKING(for GCC 3.0 or higher)
691
], [AC_MSG_RESULT(yes); HAVE_GCC30=yes], AC_MSG_RESULT(no))
930
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if ! (__GNUC__ >= 3)
934
[AC_MSG_RESULT(yes); HAVE_GCC30=yes],
938
AC_MSG_CHECKING(for ICC)
940
if $CXX -V -v 2>&1 | grep -q "Intel(R) C++ Compiler"; then
943
AC_MSG_RESULT($HAVE_ICC)
693
945
dnl Set "-fomit-frame-pointer" on i386 GCC 2.7 or higher.
694
946
dnl Also set "-fno-exceptions" for C++ because exception handling requires
972
dnl Store motion was introduced in 3.3-hammer branch and any gcc >= 3.4
973
dnl However, there are some corner cases exposed on x86-64
974
if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
975
SAVED_CXXFLAGS="$CXXFLAGS"
976
CXXFLAGS="$CXXFLAGS -fno-gcse-sm"
977
AC_CACHE_CHECK([whether GCC supports store motion], ac_cv_gcc_store_motion, [
980
AC_TRY_COMPILE([],[],[ac_cv_gcc_store_motion=yes],[ac_cv_gcc_store_motion=no])
983
if [[ "x$ac_cv_gcc_store_motion" != "xyes" ]]; then
984
CXXFLAGS="$SAVED_CXXFLAGS"
988
dnl Add -fno-strict-aliasing for slirp sources
989
if [[ "x$HAVE_GCC30" = "xyes" ]]; then
990
SAVED_CFLAGS="$CFLAGS"
991
CFLAGS="$CFLAGS -fno-strict-aliasing"
992
AC_CACHE_CHECK([whether the compiler supports -fno-strict-aliasing],
993
ac_cv_gcc_no_strict_aliasing, [
994
AC_TRY_COMPILE([],[],
995
[ac_cv_gcc_no_strict_aliasing=yes; AC_SUBST(SLIRP_CFLAGS, "-fno-strict-aliasing")],
996
[ac_cv_gcc_no_strict_aliasing=no])
998
CFLAGS="$SAVED_CFLAGS"
1001
dnl Add -mdynamic-no-pic for MacOS X (XXX icc10 will support MacOS X)
1002
if [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
1003
SAVED_CFLAGS="$CFLAGS"
1004
CFLAGS="$CFLAGS -mdynamic-no-pic"
1005
AC_CACHE_CHECK([whether the compiler supports -mdynamic-no-pic],
1006
ac_cv_gcc_mdynamic_no_pic, [
1007
AC_TRY_COMPILE([],[],[ac_cv_gcc_mdynamic_no_pic=yes],[ac_cv_gcc_mdynamic_no_pic=no])
1009
if [[ "x$ac_cv_gcc_mdynamic_no_pic" = "xyes" ]]; then
1010
CXXFLAGS="$CXXFLAGS -mdynamic-no-pic"
1012
CFLAGS="$SAVED_CFLAGS"
720
1016
dnl Select appropriate CPU source and REGPARAM define.
721
1017
ASM_OPTIMIZATIONS=none
722
1018
CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"