ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/MacOSX/configure.in
Revision: 1.16
Committed: 2005-06-12T23:36:33Z (18 years, 11 months ago) by gbeauche
Branch: MAIN
Changes since 1.15: +2 -1 lines
Log Message:
Check for CoreFoundation framework (Darwin 8.0.1). Likewise for
IOKit/storage/IOBlockStorageDevice.h which is not available there on x86

File Contents

# Content
1 dnl Mac OS X configuration driver
2 dnl $Id: configure.in,v 1.15 2004/01/29 12:28:53 nigel Exp $
3 dnl Process this file with autoconf to produce a configure script.
4 dnl Based on Unix/configure.in
5 dnl Written in 1999 by Christian Bauer et al.
6
7 dnl autoconf on 10.1 doesn't understand these
8 dnl AC_INIT([Basilisk II], 1.0, [Christian.Bauer@uni-mainz.de], BasiliskII)
9 dnl AC_CONFIG_SRCDIR(main_macosx.mm)
10 AC_INIT(main_macosx.mm)
11 AC_PREREQ(2.12)
12 AC_CONFIG_HEADER(config.h)
13
14 dnl Aliases for PACKAGE and VERSION macros.
15 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE_NAME", [Define this program name.])
16 AC_DEFINE_UNQUOTED(VERSION, "$PACKAGE_VERSION", [Define this program version.])
17
18 dnl Some systems do not put corefiles in the currect directory, avoid saving
19 dnl cores for the configure tests since some are intended to dump core.
20 ulimit -c 0
21
22 dnl Video options.
23 AC_ARG_ENABLE(multiwin,
24 [ --enable-multiwin allow multiple emulator windows [default=no]], [ENABLE_MULTIPLE=$enableval], [ENABLE_MULTIPLE=no])
25
26 dnl JIT compiler options.
27 AC_ARG_ENABLE(jit-compiler, [ --enable-jit-compiler enable JIT compiler [default=no]], [WANT_JIT=$enableval], [WANT_JIT=no])
28 AC_ARG_ENABLE(jit-debug, [ --enable-jit-debug activate native code disassemblers [default=no]], [WANT_JIT_DEBUG=$enableval], [WANT_JIT_DEBUG=no])
29
30 dnl FPU emulation core.
31 AC_ARG_ENABLE(fpe,
32 [ --enable-fpe=FPE specify which fpu emulator to use [default=auto]],
33 [ case "$enableval" in
34 dnl default is always ieee, if architecture has this fp format
35 auto) FPE_CORE_TEST_ORDER="ieee uae";;
36 ieee) FPE_CORE_TEST_ORDER="ieee";;
37 uae) FPE_CORE_TEST_ORDER="uae";;
38 x86) FPE_CORE_TEST_ORDER="x86";;
39 *) AC_MSG_ERROR([--enable-fpe takes only one of the following values: auto, x86, ieee, uae]);;
40 esac
41 ],
42 [ FPE_CORE_TEST_ORDER="ieee uae"
43 ])
44
45 dnl Addressing modes.
46 AC_ARG_ENABLE(addressing,
47 [ --enable-addressing=AM specify the addressing mode to use [default=fastest]],
48 [ case "$enableval" in
49 real) ADDRESSING_TEST_ORDER="real";;
50 direct) ADDRESSING_TEST_ORDER="direct";;
51 banks) ADDRESSING_TEST_ORDER="banks";;
52 fastest)ADDRESSING_TEST_ORDER="direct banks";;
53 *) AC_MSG_ERROR([--enable-addressing takes only one of the following values: fastest, real, direct, banks]);;
54 esac
55 ],
56 [ ADDRESSING_TEST_ORDER="direct banks"
57 ])
58
59 dnl External packages.
60 AC_ARG_WITH(mon, [ --with-mon use mon as debugger [default=yes]], [WANT_MON=$withval], [WANT_MON=yes])
61
62 dnl Canonical system information.
63 AC_CANONICAL_HOST
64 AC_CANONICAL_TARGET
65
66 dnl Target OS type (target is host if not cross-compiling).
67 case "$target_os" in
68 linux*) OS_TYPE=linux;;
69 netbsd*) OS_TYPE=netbsd;;
70 freebsd*) OS_TYPE=freebsd;;
71 solaris*) OS_TYPE=solaris;;
72 darwin*) OS_TYPE=darwin;;
73 *) OS_TYPE=`echo $target_os | sed -e 's/-/_/g' | sed -e 's/\./_/g'`;;
74 esac
75 DEFINES="$DEFINES -DOS_$OS_TYPE"
76
77 dnl Target CPU type.
78 HAVE_I386=no
79 HAVE_M68K=no
80 HAVE_SPARC=no
81 HAVE_POWERPC=no
82 HAVE_X86_64=no
83 case "$target_cpu" in
84 i386* | i486* | i586* | i686* | i786* ) HAVE_I386=yes;;
85 m68k* ) HAVE_M68K=yes;;
86 sparc* ) HAVE_SPARC=yes;;
87 powerpc* ) HAVE_POWERPC=yes;;
88 x86_64* ) HAVE_X86_64=yes;;
89 esac
90
91 dnl Checks for programs.
92 AC_PROG_CC
93 AC_PROG_CC_C_O
94 AC_PROG_CPP
95 AC_PROG_CXX
96 AC_PROG_MAKE_SET
97 AC_PROG_INSTALL
98
99 dnl We use mon if possible.
100 MONSRCS=
101 if [[ "x$WANT_MON" = "xyes" ]]; then
102 AC_MSG_CHECKING(for mon)
103 mon_srcdir=../../../mon/src
104 if grep mon_init $mon_srcdir/mon.h >/dev/null 2>/dev/null; then
105 AC_MSG_RESULT(yes)
106 AC_DEFINE(ENABLE_MON, 1, [Define if using "mon".])
107 MONSRCS="$mon_srcdir/mon.cpp $mon_srcdir/mon_6502.cpp $mon_srcdir/mon_z80.cpp $mon_srcdir/mon_cmd.cpp $mon_srcdir/mon_disass.cpp $mon_srcdir/mon_ppc.cpp $mon_srcdir/mon_lowmem.cpp $mon_srcdir/disass/floatformat.c $mon_srcdir/disass/i386-dis.c $mon_srcdir/disass/m68k-dis.c $mon_srcdir/disass/m68k-opc.c"
108 CXXFLAGS="$CXXFLAGS -I$mon_srcdir -I$mon_srcdir/disass"
109 AC_CHECK_LIB(ncurses, tgetent, ,
110 AC_CHECK_LIB(termcap, tgetent, ,
111 AC_CHECK_LIB(termlib, tgetent, ,
112 AC_CHECK_LIB(terminfo, tgetent, ,
113 AC_CHECK_LIB(Hcurses, tgetent, ,
114 AC_CHECK_LIB(curses, tgetent))))))
115 AC_CHECK_LIB(readline, readline)
116 else
117 AC_MSG_RESULT(no)
118 AC_MSG_WARN([Could not find mon, ignoring --with-mon.])
119 WANT_MON=no
120 fi
121 fi
122
123 dnl We want pthreads. Try libpthread first, then libc_r (FreeBSD), then PTL.
124 HAVE_PTHREADS=yes
125 AC_CHECK_LIB(pthread, pthread_create, , [
126 AC_CHECK_LIB(c_r, pthread_create, , [
127 AC_CHECK_LIB(PTL, pthread_create, , [
128 HAVE_PTHREADS=no
129 ])
130 ])
131 ])
132 dnl OS X does have pthreads, but not in any of the above locations:
133 HAVE_PTHREADS=yes
134 if [[ "x$HAVE_PTHREADS" = "xyes" ]]; then
135 AC_DEFINE(HAVE_PTHREADS, 1, [Define if pthreads are available.])
136 fi
137 AC_CHECK_FUNCS(pthread_cancel)
138 AC_CHECK_FUNCS(pthread_mutexattr_setprotocol)
139 AC_CHECK_FUNCS(pthread_mutexattr_settype)
140 AC_CHECK_FUNCS(pthread_mutexattr_setpshared)
141
142 dnl If POSIX.4 semaphores are not available, we emulate them with pthread mutexes.
143 SEMSRC=
144 AC_CHECK_FUNCS(sem_init, , [
145 if test "x$HAVE_PTHREADS" = "xyes"; then
146 SEMSRC=posix_sem.cpp
147 fi
148 ])
149
150 dnl We want to enable multiple window support if possible
151 if [[ "x$WANT_MWIN" = "xyes" ]]; then
152 WANT_MWIN=yes
153 DEFINES="$DEFINES -DENABLE_MULTIPLE"
154 fi
155
156 dnl We use 64-bit file size support if possible.
157 AC_SYS_LARGEFILE
158
159 dnl Checks for header files.
160 AC_HEADER_STDC
161 AC_CHECK_HEADERS(unistd.h fcntl.h sys/types.h sys/time.h sys/mman.h mach/mach.h)
162 AC_CHECK_HEADERS(readline.h history.h readline/readline.h readline/history.h)
163 AC_CHECK_HEADERS(IOKit/storage/IOBlockStorageDevice.h)
164
165 dnl Checks for typedefs, structures, and compiler characteristics.
166 AC_C_BIGENDIAN
167 AC_C_CONST
168 AC_C_INLINE
169 AC_CHECK_SIZEOF(short, 2)
170 AC_CHECK_SIZEOF(int, 4)
171 AC_CHECK_SIZEOF(long, 4)
172 AC_CHECK_SIZEOF(long long, 8)
173 AC_CHECK_SIZEOF(float, 4)
174 AC_CHECK_SIZEOF(double, 8)
175 AC_CHECK_SIZEOF(long double, 12)
176 AC_CHECK_SIZEOF(void *, 4)
177 AC_TYPE_OFF_T
178 dnl These two symbols are not defined in 10.1's autoconf:
179 dnl AC_CHECK_TYPE(loff_t, off_t)
180 dnl AC_CHECK_TYPE(caddr_t, [char *])
181 dnl We define loff_t as a typedef of off_t in sysdeps.h if we don't have LOFF_T
182 dnl OS X does have caddr_t, but the above check doesn't work, so we have to do:
183 AC_DEFINE(HAVE_CADDR_T, 1, [The type "caddr_t" does exist on MacOS X.])
184 AC_TYPE_SIZE_T
185 AC_TYPE_SIGNAL
186 AC_HEADER_TIME
187 AC_STRUCT_TM
188
189 dnl Check whether sys/socket.h defines type socklen_t.
190 dnl (extracted from ac-archive/Miscellaneous)
191 AC_CACHE_CHECK([for socklen_t],
192 ac_cv_type_socklen_t, [
193 AC_TRY_COMPILE([
194 #include <sys/types.h>
195 #include <sys/socket.h>
196 ], [socklen_t len = 42; return 0;],
197 ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no,
198 dnl When cross-compiling, do not assume anything.
199 ac_cv_type_socklen_t="guessing no"
200 )
201 ])
202 if [[ "x$ac_cv_type_socklen_t" != "xyes" ]]; then
203 AC_DEFINE(socklen_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
204 fi
205
206 dnl Checks for library functions.
207 AC_CHECK_FUNCS(strdup cfmakeraw)
208 AC_CHECK_FUNCS(clock_gettime timer_create)
209 AC_CHECK_FUNCS(sigaction signal)
210 AC_CHECK_FUNCS(mmap mprotect munmap)
211 AC_CHECK_FUNCS(vm_allocate vm_deallocate vm_protect)
212
213 dnl Darwin seems to define mach_task_self() instead of task_self().
214 AC_CHECK_FUNCS(mach_task_self task_self)
215
216 dnl Select system-dependant source files.
217 DEFINES="$DEFINES -DBSD_COMP"
218 CXXFLAGS="$CXXFLAGS -fpermissive"
219 dnl Check for the CAM library
220 AC_CHECK_LIB(cam, cam_open_btl, HAVE_LIBCAM=yes, HAVE_LIBCAM=no)
221 if [[ "x$HAVE_LIBCAM" = "xno" ]]; then
222 AC_MSG_WARN([Cannot find libcam for SCSI management, disabling SCSI support.])
223 else
224 dnl Check for the sys kernel includes
225 AC_CHECK_HEADER(camlib.h)
226 if [[ "x$ac_cv_header_camlib_h" = "xno" ]]; then
227 dnl In this case I should fix this thing including a "patch"
228 dnl to access directly to the functions in the kernel :) --Orlando
229 AC_MSG_WARN([Cannot find includes for CAM library, disabling SCSI support.])
230 else
231 SCSISRC=FreeBSD/scsi_freebsd.cpp
232 LIBS="$LIBS -lcam"
233 DEFINES="$DEFINES -DCAM"
234 fi
235 fi
236
237 dnl Use 68k CPU natively?
238 WANT_NATIVE_M68K=no
239
240
241 dnl Define a macro that translates a yesno-variable into a C macro definition
242 dnl to be put into the config.h file
243 dnl $1 -- the macro to define
244 dnl $2 -- the value to translate
245 dnl $3 -- template name
246 AC_DEFUN(AC_TRANSLATE_DEFINE, [
247 if [[ "x$2" = "xyes" -o "x$2" = "xguessing yes" ]]; then
248 AC_DEFINE($1, 1, $3)
249 fi
250 ])
251
252 dnl Various checks if the system supports vm_allocate() and the like functions.
253 have_mach_vm=no
254 if [[ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \
255 "x$ac_cv_func_vm_protect" = "xyes" ]]; then
256 have_mach_vm=yes
257 fi
258 AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
259 [Define if your system has a working vm_allocate()-based memory allocator.])
260
261 dnl Check that vm_allocate(), vm_protect() work
262 if [[ "x$have_mach_vm" = "xyes" ]]; then
263
264 AC_CACHE_CHECK([whether vm_protect works],
265 ac_cv_vm_protect_works, [
266 AC_LANG_SAVE
267 AC_LANG_CPLUSPLUS
268 ac_cv_vm_protect_works=yes
269 dnl First the tests that should segfault
270 for test_def in NONE_READ NONE_WRITE READ_WRITE; do
271 AC_TRY_RUN([
272 #define CONFIGURE_TEST_VM_MAP
273 #define TEST_VM_PROT_$test_def
274 #include "../Unix/vm_alloc.cpp"
275 ], ac_cv_vm_protect_works=no, rm -f core,
276 dnl When cross-compiling, do not assume anything
277 ac_cv_vm_protect_works="guessing no"
278 )
279 done
280 AC_TRY_RUN([
281 #define CONFIGURE_TEST_VM_MAP
282 #define TEST_VM_PROT_RDWR_WRITE
283 #include "../Unix/vm_alloc.cpp"
284 ], , ac_cv_vm_protect_works=no,
285 dnl When cross-compiling, do not assume anything
286 ac_cv_vm_protect_works="guessing no"
287 )
288 AC_LANG_RESTORE
289 ]
290 )
291
292 dnl Remove support for vm_allocate() if vm_protect() does not work
293 if [[ "x$have_mach_vm" = "xyes" ]]; then
294 case $ac_cv_vm_protect_works in
295 *yes) have_mach_vm=yes;;
296 *no) have_mach_vm=no;;
297 esac
298 fi
299 AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
300 [Define if your system has a working vm_allocate()-based memory allocator.])
301
302 fi dnl HAVE_MACH_VM
303
304 dnl Various checks if the system supports mmap() and the like functions.
305 dnl ... and Mach memory allocators are not supported
306 have_mmap_vm=no
307 if [[ "x$ac_cv_func_mmap" = "xyes" -a "x$ac_cv_func_munmap" = "xyes" -a \
308 "x$ac_cv_func_mprotect" = "xyes" ]]; then
309 if [[ "x$have_mach_vm" = "xno" ]]; then
310 have_mmap_vm=yes
311 fi
312 fi
313 AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, "$have_mmap_vm",
314 [Define if your system has a working mmap()-based memory allocator.])
315
316 dnl Check that mmap() and associated functions work.
317 if [[ "x$have_mmap_vm" = "xyes" ]]; then
318
319 dnl Check if we have a working anonymous mmap()
320 AC_CACHE_CHECK([whether mmap supports MAP_ANON],
321 ac_cv_mmap_anon, [
322 AC_LANG_SAVE
323 AC_LANG_CPLUSPLUS
324 AC_TRY_RUN([
325 #define HAVE_MMAP_ANON
326 #define CONFIGURE_TEST_VM_MAP
327 #define TEST_VM_MMAP_ANON
328 #include "../Unix/vm_alloc.cpp"
329 ], ac_cv_mmap_anon=yes, ac_cv_mmap_anon=no,
330 dnl When cross-compiling, do not assume anything.
331 ac_cv_mmap_anon="guessing no"
332 )
333 AC_LANG_RESTORE
334 ]
335 )
336 AC_TRANSLATE_DEFINE(HAVE_MMAP_ANON, "$ac_cv_mmap_anon",
337 [Define if <sys/mman.h> defines MAP_ANON and mmap()'ing with MAP_ANON works.])
338
339 AC_CACHE_CHECK([whether mmap supports MAP_ANONYMOUS],
340 ac_cv_mmap_anonymous, [
341 AC_LANG_SAVE
342 AC_LANG_CPLUSPLUS
343 AC_TRY_RUN([
344 #define HAVE_MMAP_ANONYMOUS
345 #define CONFIGURE_TEST_VM_MAP
346 #define TEST_VM_MMAP_ANON
347 #include "../Unix/vm_alloc.cpp"
348 ], ac_cv_mmap_anonymous=yes, ac_cv_mmap_anonymous=no,
349 dnl When cross-compiling, do not assume anything.
350 ac_cv_mmap_anonymous="guessing no"
351 )
352 AC_LANG_RESTORE
353 ]
354 )
355 AC_TRANSLATE_DEFINE(HAVE_MMAP_ANONYMOUS, "$ac_cv_mmap_anonymous",
356 [Define if <sys/mman.h> defines MAP_ANONYMOUS and mmap()'ing with MAP_ANONYMOUS works.])
357
358 AC_CACHE_CHECK([whether mprotect works],
359 ac_cv_mprotect_works, [
360 AC_LANG_SAVE
361 AC_LANG_CPLUSPLUS
362 ac_cv_mprotect_works=yes
363 dnl First the tests that should segfault
364 for test_def in NONE_READ NONE_WRITE READ_WRITE; do
365 AC_TRY_RUN([
366 #define CONFIGURE_TEST_VM_MAP
367 #define TEST_VM_PROT_$test_def
368 #include "../Unix/vm_alloc.cpp"
369 ], ac_cv_mprotect_works=no, rm -f core,
370 dnl When cross-compiling, do not assume anything
371 ac_cv_mprotect_works="guessing no"
372 )
373 done
374 AC_TRY_RUN([
375 #define CONFIGURE_TEST_VM_MAP
376 #define TEST_VM_PROT_RDWR_WRITE
377 #include "../Unix/vm_alloc.cpp"
378 ], , ac_cv_mprotect_works=no,
379 dnl When cross-compiling, do not assume anything
380 ac_cv_mprotect_works="guessing no"
381 )
382 AC_LANG_RESTORE
383 ]
384 )
385
386 dnl Remove support for mmap() if mprotect() does not work
387 if [[ "x$have_mmap_vm" = "xyes" ]]; then
388 case $ac_cv_mprotect_works in
389 *yes) have_mmap_vm=yes;;
390 *no) have_mmap_vm=no;;
391 esac
392 fi
393 AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm,
394 [Define if your system has a working mmap()-based memory allocator.])
395
396 fi dnl HAVE_MMAP_VM
397
398 dnl Check if we can modify the __PAGEZERO segment for use as Low Memory
399 AC_CACHE_CHECK([whether __PAGEZERO can be Low Memory area 0x0000-0x2000],
400 ac_cv_pagezero_hack, [
401 ac_cv_pagezero_hack=no
402 if AC_TRY_COMMAND([Darwin/testlmem.sh 0x2000]); then
403 ac_cv_pagezero_hack=yes
404 dnl might as well skip the test for mmap-able low memory
405 ac_cv_can_map_lm=no
406 fi
407 ])
408 AC_TRANSLATE_DEFINE(PAGEZERO_HACK, "$ac_cv_pagezero_hack",
409 [Define if the __PAGEZERO Mach-O Low Memory Globals hack works on this system.])
410
411 dnl Check if we can mmap 0x2000 bytes from 0x0000
412 AC_CACHE_CHECK([whether we can map Low Memory area 0x0000-0x2000],
413 ac_cv_can_map_lm, [
414 AC_LANG_SAVE
415 AC_LANG_CPLUSPLUS
416 AC_TRY_RUN([
417 #include "../Unix/vm_alloc.cpp"
418 int main(void) { /* returns 0 if we could map the lowmem globals */
419 volatile char * lm = 0;
420 if (vm_init() < 0) exit(1);
421 if (vm_acquire_fixed(0, 0x2000) < 0) exit(1);
422 lm[0] = 'z';
423 if (vm_release((char *)lm, 0x2000) < 0) exit(1);
424 vm_exit(); exit(0);
425 }
426 ], ac_cv_can_map_lm=yes, ac_cv_can_map_lm=no,
427 dnl When cross-compiling, do not assume anything.
428 ac_cv_can_map_lm="guessing no"
429 )
430 AC_LANG_RESTORE
431 ]
432 )
433
434 dnl Check signal handlers need to be reinstalled
435 AC_CACHE_CHECK([whether signal handlers need to be reinstalled],
436 ac_cv_signal_need_reinstall, [
437 AC_LANG_SAVE
438 AC_LANG_CPLUSPLUS
439 AC_TRY_RUN([
440 #include <stdlib.h>
441 #ifdef HAVE_UNISTD_H
442 #include <unistd.h>
443 #endif
444 #include <signal.h>
445 static int handled_signal = 0;
446 RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
447 int main(void) { /* returns 0 if signals need not to be reinstalled */
448 signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
449 exit(handled_signal == 2);
450 }
451 ], ac_cv_signal_need_reinstall=yes, ac_cv_signal_need_reinstall=no,
452 dnl When cross-compiling, do not assume anything.
453 ac_cv_signal_need_reinstall="guessing yes"
454 )
455 AC_LANG_RESTORE
456 ]
457 )
458 AC_TRANSLATE_DEFINE(SIGNAL_NEED_REINSTALL, "$ac_cv_signal_need_reinstall",
459 [Define if your system requires signals to be reinstalled.])
460
461 dnl Check if sigaction handlers need to be reinstalled
462 AC_CACHE_CHECK([whether sigaction handlers need to be reinstalled],
463 ac_cv_sigaction_need_reinstall, [
464 AC_LANG_SAVE
465 AC_LANG_CPLUSPLUS
466 AC_TRY_RUN([
467 #include <stdlib.h>
468 #ifdef HAVE_UNISTD_H
469 #include <unistd.h>
470 #endif
471 #include <signal.h>
472 static int handled_signal = 0;
473 RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
474 typedef RETSIGTYPE (*signal_handler)(int);
475 static signal_handler mysignal(int sig, signal_handler handler) {
476 struct sigaction old_sa;
477 struct sigaction new_sa;
478 new_sa.sa_handler = handler;
479 return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler);
480 }
481 int main(void) { /* returns 0 if signals need not to be reinstalled */
482 mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
483 exit(handled_signal == 2);
484 }
485 ], ac_cv_sigaction_need_reinstall=yes, ac_cv_sigaction_need_reinstall=no,
486 dnl When cross-compiling, do not assume anything.
487 ac_cv_sigaction_need_reinstall="guessing yes"
488 )
489 AC_LANG_RESTORE
490 ]
491 )
492 AC_TRANSLATE_DEFINE(SIGACTION_NEED_REINSTALL, "$ac_cv_sigaction_need_reinstall",
493 [Define if your system requires sigactions to be reinstalled.])
494
495 dnl Check if Mach exceptions supported.
496 AC_CACHE_CHECK([whether your system supports Mach exceptions],
497 ac_cv_have_mach_exceptions, [
498 AC_LANG_SAVE
499 AC_LANG_CPLUSPLUS
500 AC_TRY_RUN([
501 #define HAVE_MACH_EXCEPTIONS 1
502 #define CONFIGURE_TEST_SIGSEGV_RECOVERY
503 #include "../Unix/vm_alloc.cpp"
504 #include "../Unix/sigsegv.cpp"
505 ], [
506 sigsegv_recovery=mach
507 ac_cv_have_mach_exceptions=yes
508 ],
509 ac_cv_have_mach_exceptions=no,
510 dnl When cross-compiling, do not assume anything.
511 ac_cv_have_mach_exceptions=no
512 )
513 AC_LANG_RESTORE
514 ]
515 )
516 AC_TRANSLATE_DEFINE(HAVE_MACH_EXCEPTIONS, "$ac_cv_have_mach_exceptions",
517 [Define if your system supports Mach exceptions.])
518
519 dnl Otherwise, check if extended signals are supported.
520 if [[ -z "$sigsegv_recovery" ]]; then
521 AC_CACHE_CHECK([whether your system supports extended signal handlers],
522 ac_cv_have_extended_signals, [
523 AC_LANG_SAVE
524 AC_LANG_CPLUSPLUS
525 AC_TRY_RUN([
526 #define HAVE_SIGINFO_T 1
527 #define CONFIGURE_TEST_SIGSEGV_RECOVERY
528 #include "../Unix/vm_alloc.cpp"
529 #include "../Unix/sigsegv.cpp"
530 ], [
531 sigsegv_recovery=siginfo
532 ac_cv_have_extended_signals=yes
533 ],
534 ac_cv_have_extended_signals=no,
535 dnl When cross-compiling, do not assume anything.
536 ac_cv_have_extended_signals=no
537 )
538 AC_LANG_RESTORE
539 ]
540 )
541 AC_TRANSLATE_DEFINE(HAVE_SIGINFO_T, "$ac_cv_have_extended_signals",
542 [Define if your system support extended signals.])
543 fi
544
545 dnl Otherwise, check for subterfuges.
546 if [[ -z "$sigsegv_recovery" ]]; then
547 AC_CACHE_CHECK([whether we then have a subterfuge for your system],
548 ac_cv_have_sigcontext_hack, [
549 AC_LANG_SAVE
550 AC_LANG_CPLUSPLUS
551 AC_TRY_RUN([
552 #define HAVE_SIGCONTEXT_SUBTERFUGE 1
553 #define CONFIGURE_TEST_SIGSEGV_RECOVERY
554 #include "../Unix/vm_alloc.cpp"
555 #include "../Unix/sigsegv.cpp"
556 ], [
557 sigsegv_recovery=sigcontext
558 ac_cv_have_sigcontext_hack=yes
559 ],
560 ac_cv_have_sigcontext_hack=no,
561 dnl When cross-compiling, do not assume anything.
562 ac_cv_have_sigcontext_hack=no
563 )
564 AC_LANG_RESTORE
565 ])
566 AC_TRANSLATE_DEFINE(HAVE_SIGCONTEXT_SUBTERFUGE, "$ac_cv_have_sigcontext_hack",
567 [Define if we know a hack to replace siginfo_t->si_addr member.])
568 fi
569
570 dnl Check if we can ignore the fault (instruction skipping in SIGSEGV handler)
571 AC_CACHE_CHECK([whether we can skip instruction in SIGSEGV handler],
572 ac_cv_have_skip_instruction, [
573 AC_LANG_SAVE
574 AC_LANG_CPLUSPLUS
575 AC_TRY_RUN([
576 #define HAVE_SIGSEGV_SKIP_INSTRUCTION 1
577 #define CONFIGURE_TEST_SIGSEGV_RECOVERY
578 #include "../Unix/vm_alloc.cpp"
579 #include "../Unix/sigsegv.cpp"
580 ], ac_cv_have_skip_instruction=yes, ac_cv_have_skip_instruction=no,
581 dnl When cross-compiling, do not assume anything.
582 ac_cv_have_skip_instruction=no
583 )
584 AC_LANG_RESTORE
585 ]
586 )
587 AC_TRANSLATE_DEFINE(HAVE_SIGSEGV_SKIP_INSTRUCTION, "$ac_cv_have_skip_instruction",
588 [Define if we can ignore the fault (instruction skipping in SIGSEGV handler).])
589
590 dnl Can we do Video on SEGV Signals ?
591 CAN_VOSF=no
592 if [[ -n "$sigsegv_recovery" ]]; then
593 CAN_VOSF=yes
594 fi
595
596 dnl A dummy program that returns always true
597 BLESS=/usr/bin/touch
598
599 dnl Determine the addressing mode to use
600 if [[ "x$WANT_NATIVE_M68K" = "xyes" ]]; then
601 ADDRESSING_MODE="real"
602 else
603 ADDRESSING_MODE=""
604 AC_MSG_CHECKING([for the addressing mode to use])
605 for am in $ADDRESSING_TEST_ORDER; do
606 case $am in
607 real)
608 dnl Requires ability to mmap() Low Memory globals
609 if [[ "x$ac_cv_can_map_lm$ac_cv_pagezero_hack" = "xnono" ]]; then
610 continue
611 fi
612 dnl Requires VOSF screen updates
613 if [[ "x$CAN_VOSF" = "xno" ]]; then
614 continue
615 fi
616 dnl Real addressing will probably work.
617 ADDRESSING_MODE="real"
618 WANT_VOSF=yes dnl we can use VOSF and we need it actually
619 DEFINES="$DEFINES -DREAL_ADDRESSING"
620 AC_DEFINE(REAL_ADDRESSING, 1, [Emulated memory is memory mapped to actual address.])
621 if [[ "x$ac_cv_pagezero_hack" = "xyes" ]]; then
622 BLESS=Darwin/lowmem
623 LDFLAGS="$LDFLAGS -pagezero_size 0x2000"
624 fi
625 break
626 ;;
627 direct)
628 dnl Requires VOSF screen updates
629 if [[ "x$CAN_VOSF" = "xyes" ]]; then
630 ADDRESSING_MODE="direct"
631 WANT_VOSF=yes dnl we can use VOSF and we need it actually
632 DEFINES="$DEFINES -DDIRECT_ADDRESSING"
633 AC_DEFINE(DIRECT_ADDRESSING, 1, [Emulated memory is an offset from actual address.])
634 break
635 fi
636 ;;
637 banks)
638 dnl Default addressing mode
639 ADDRESSING_MODE="memory banks"
640 break
641 ;;
642 *)
643 AC_MSG_ERROR([Internal configure.in script error for $am addressing mode])
644 esac
645 done
646 AC_MSG_RESULT($ADDRESSING_MODE)
647 if [[ "x$ADDRESSING_MODE" = "x" ]]; then
648 AC_MSG_WARN([Sorry, no suitable addressing mode in $ADDRESSING_TEST_ORDER])
649 ADDRESSING_MODE="memory banks"
650 fi
651 fi
652
653 dnl Banked Memory Addressing mode is not supported by the JIT compiler
654 if [[ "x$WANT_JIT" = "xyes" -a "x$ADDRESSING_MODE" = "xmemory banks" ]]; then
655 AC_MSG_ERROR([Sorry, the JIT Compiler requires Direct Addressing, at least])
656 fi
657
658 dnl Enable VOSF screen updates with this feature is requested and feasible
659 if [[ "x$WANT_VOSF" = "xyes" -a "x$CAN_VOSF" = "xyes" ]]; then
660 AC_DEFINE(ENABLE_VOSF, 1, [Define if using video enabled on SEGV signals.])
661 else
662 WANT_VOSF=no
663 fi
664
665 dnl Check for GAS.
666 HAVE_GAS=no
667 AC_MSG_CHECKING(for GAS .p2align feature)
668 cat >conftest.S << EOF
669 .text
670 .p2align 5
671 EOF
672 if $CC conftest.S -c -o conftest.o >/dev/null 2>&1 ; then HAVE_GAS=yes; fi
673 AC_MSG_RESULT($HAVE_GAS)
674
675 dnl Check for GCC 2.7 or higher.
676 HAVE_GCC27=no
677 AC_MSG_CHECKING(for GCC 2.7 or higher)
678 AC_EGREP_CPP(xyes,
679 [#if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5
680 xyes
681 #endif
682 ], [AC_MSG_RESULT(yes); HAVE_GCC27=yes], AC_MSG_RESULT(no))
683
684 dnl Check for GCC 3.0 or higher.
685 HAVE_GCC30=no
686 AC_MSG_CHECKING(for GCC 3.0 or higher)
687 AC_EGREP_CPP(xyes,
688 [#if __GNUC__ >= 3
689 xyes
690 #endif
691 ], [AC_MSG_RESULT(yes); HAVE_GCC30=yes], AC_MSG_RESULT(no))
692
693 dnl Set "-fomit-frame-pointer" on i386 GCC 2.7 or higher.
694 dnl Also set "-fno-exceptions" for C++ because exception handling requires
695 dnl the frame pointer.
696 if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
697 CFLAGS="$CFLAGS -fomit-frame-pointer"
698 CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -fno-exceptions"
699 fi
700
701 dnl (gb) Do not merge constants since it breaks fpu/fpu_x86.cpp.
702 dnl As of 2001/08/02, this affects the following compilers:
703 dnl Official: probably gcc-3.1 (mainline CVS)
704 dnl Mandrake: gcc-2.96 >= 0.59mdk, gcc-3.0.1 >= 0.1mdk
705 dnl Red Hat : gcc-2.96 >= 89, gcc-3.0 >= 1
706 if [[ "x$HAVE_GCC27" = "xyes" ]]; then
707 SAVED_CXXFLAGS="$CXXFLAGS"
708 CXXFLAGS="$CXXFLAGS -fno-merge-constants"
709 AC_CACHE_CHECK([whether GCC supports constants merging], ac_cv_gcc_constants_merging, [
710 AC_LANG_SAVE
711 AC_LANG_CPLUSPLUS
712 AC_TRY_COMPILE([],[],[ac_cv_gcc_constants_merging=yes],[ac_cv_gcc_constants_merging=no])
713 AC_LANG_RESTORE
714 ])
715 if [[ "x$ac_cv_gcc_constants_merging" != "xyes" ]]; then
716 CXXFLAGS="$SAVED_CXXFLAGS"
717 fi
718 fi
719
720 dnl Select appropriate CPU source and REGPARAM define.
721 ASM_OPTIMIZATIONS=none
722 CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"
723
724 dnl (gb) JITSRCS will be emptied later if the JIT is not available
725 dnl Other platforms should define their own set of noflags file variants
726 CAN_JIT=no
727 JITSRCS="compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp"
728
729 if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
730 dnl i386 CPU
731 DEFINES="$DEFINES -DUNALIGNED_PROFITABLE -DREGPARAM=\"__attribute__((regparm(3)))\""
732 if [[ "x$HAVE_GAS" = "xyes" ]]; then
733 ASM_OPTIMIZATIONS=i386
734 DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE"
735 JITSRCS="cpuemu1_nf.cpp cpuemu2_nf.cpp cpuemu3_nf.cpp cpuemu4_nf.cpp cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp $JITSRCS"
736 CAN_JIT=yes
737 fi
738 elif [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_X86_64" = "xyes" ]]; then
739 dnl x86-64 CPU
740 DEFINES="$DEFINES -DUNALIGNED_PROFITABLE"
741 if [[ "x$HAVE_GAS" = "xyes" ]]; then
742 ASM_OPTIMIZATIONS="x86-64"
743 DEFINES="$DEFINES -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS"
744 fi
745 elif [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_SPARC" = "xyes" -a "x$HAVE_GAS" = "xyes" ]]; then
746 dnl SPARC CPU
747 case "$target_os" in
748 solaris*)
749 AC_MSG_CHECKING(SPARC CPU architecture)
750 SPARC_TYPE=`Solaris/which_sparc`
751 AC_MSG_RESULT($SPARC_TYPE)
752 case "$SPARC_TYPE" in
753 SPARC_V8)
754 ASM_OPTIMIZATIONS="SPARC V8 architecture"
755 DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" dnl -DOPTIMIZED_FLAGS"
756 CFLAGS="$CFLAGS -Wa,-Av8"
757 CXXFLAGS="$CXXFLAGS -Wa,-Av8"
758 ;;
759 SPARC_V9)
760 ASM_OPTIMIZATIONS="SPARC V9 architecture"
761 DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" dnl -DOPTIMIZED_FLAGS"
762 CFLAGS="$CFLAGS -Wa,-Av9"
763 CXXFLAGS="$CXXFLAGS -Wa,-Av9"
764 ;;
765 esac
766 ;;
767 esac
768 elif [[ "x$WANT_NATIVE_M68K" = "xyes" ]]; then
769 dnl Native m68k, no emulation
770 CPUINCLUDES="-I../native_cpu"
771 CPUSRCS="asm_support.s"
772 fi
773
774 dnl Enable JIT compiler, if possible.
775 if [[ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" ]]; then
776 JITSRCS="$JITSRCS ../uae_cpu/compiler/compemu_support.cpp ../uae_cpu/compiler/compemu_fpp.cpp compstbl.o cpustbl_nf.o"
777 DEFINES="$DEFINES -DUSE_JIT -DUSE_JIT_FPU"
778
779 if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then
780 if [[ "x$WANT_MON" = "xyes" ]]; then
781 DEFINES="$DEFINES -DJIT_DEBUG=1"
782 else
783 AC_MSG_WARN([cxmon not found, ignoring --enable-jit-debug])
784 WANT_JIT_DEBUG=no
785 fi
786 fi
787
788 dnl IEEE core is the only FPU emulator to use with the JIT compiler
789 case $FPE_CORE_TEST_ORDER in
790 ieee*) ;;
791 *) AC_MSG_WARN([Forcing use of the IEEE FPU core, as the JIT compiler supports only this one.]) ;;
792 esac
793 FPE_CORE_TEST_ORDER="ieee"
794 else
795 WANT_JIT=no
796 WANT_JIT_DEBUG=no
797 JITSRCS=""
798 fi
799
800 dnl Utility macro used by next two tests.
801 dnl AC_EXAMINE_OBJECT(C source code,
802 dnl commands examining object file,
803 dnl [commands to run if compile failed]):
804 dnl
805 dnl Compile the source code to an object file; then convert it into a
806 dnl printable representation. All unprintable characters and
807 dnl asterisks (*) are replaced by dots (.). All white space is
808 dnl deleted. Newlines (ASCII 0x10) in the input are preserved in the
809 dnl output, but runs of newlines are compressed to a single newline.
810 dnl Finally, line breaks are forcibly inserted so that no line is
811 dnl longer than 80 columns and the file ends with a newline. The
812 dnl result of all this processing is in the file conftest.dmp, which
813 dnl may be examined by the commands in the second argument.
814 dnl
815 AC_DEFUN([gcc_AC_EXAMINE_OBJECT],
816 [AC_LANG_SAVE
817 AC_LANG_C
818 dnl Next bit cribbed from AC_TRY_COMPILE.
819 cat > conftest.$ac_ext <<EOF
820 [#line __oline__ "configure"
821 #include "confdefs.h"
822 $1
823 ]EOF
824 if AC_TRY_EVAL(ac_compile); then
825 od -c conftest.o |
826 sed ['s/^[0-7]*[ ]*/ /
827 s/\*/./g
828 s/ \\n/*/g
829 s/ [0-9][0-9][0-9]/./g
830 s/ \\[^ ]/./g'] |
831 tr -d '
832 ' | tr -s '*' '
833 ' | fold | sed '$a\
834 ' > conftest.dmp
835 $2
836 ifelse($3, , , else
837 $3
838 )dnl
839 fi
840 rm -rf conftest*
841 AC_LANG_RESTORE])
842
843 dnl Floating point format probe.
844 dnl The basic concept is the same as the above: grep the object
845 dnl file for an interesting string. We have to watch out for
846 dnl rounding changing the values in the object, however; this is
847 dnl handled by ignoring the least significant byte of the float.
848 dnl
849 dnl Does not know about VAX G-float or C4x idiosyncratic format.
850 dnl It does know about PDP-10 idiosyncratic format, but this is
851 dnl not presently supported by GCC. S/390 "binary floating point"
852 dnl is in fact IEEE (but maybe we should have that in EBCDIC as well
853 dnl as ASCII?)
854 dnl
855 AC_DEFUN([gcc_AC_C_FLOAT_FORMAT],
856 [AC_CACHE_CHECK(floating point format, ac_cv_c_float_format,
857 [gcc_AC_EXAMINE_OBJECT(
858 [/* This will not work unless sizeof(double) == 8. */
859 extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1];
860
861 /* This structure must have no internal padding. */
862 struct possibility {
863 char prefix[8];
864 double candidate;
865 char postfix[8];
866 };
867
868 #define C(cand) { "\nformat:", cand, ":tamrof\n" }
869 struct possibility table [] =
870 {
871 C( 3.25724264705901305206e+01), /* @@IEEEFP - IEEE 754 */
872 C( 3.53802595280598432000e+18), /* D__float - VAX */
873 C( 5.32201830133125317057e-19), /* D.PDP-10 - PDP-10 - the dot is 0x13a */
874 C( 1.77977764695171661377e+10), /* IBMHEXFP - s/390 format, ascii */
875 C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */
876 };],
877 [if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then
878 ac_cv_c_float_format='IEEE (big-endian)'
879 elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then
880 ac_cv_c_float_format='IEEE (big-endian)'
881 elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then
882 ac_cv_c_float_format='IEEE (little-endian)'
883 elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then
884 ac_cv_c_float_format='IEEE (little-endian)'
885 elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then
886 ac_cv_c_float_format='VAX D-float'
887 elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then
888 ac_cv_c_float_format='PDP-10'
889 elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then
890 ac_cv_c_float_format='IBM 370 hex'
891 else
892 AC_MSG_ERROR(Unknown floating point format)
893 fi],
894 [AC_MSG_ERROR(compile failed)])
895 ])
896 # IEEE is the default format. If the float endianness isn't the same
897 # as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN
898 # (which is a tristate: yes, no, default). This is only an issue with
899 # IEEE; the other formats are only supported by a few machines each,
900 # all with the same endianness.
901 format=IEEE_FLOAT_FORMAT
902 fbigend=
903 case $ac_cv_c_float_format in
904 'IEEE (big-endian)' )
905 if test $ac_cv_c_bigendian = no; then
906 fbigend=1
907 fi
908 ;;
909 'IEEE (little-endian)' )
910 if test $ac_cv_c_bigendian = yes; then
911 fbigend=0
912 fi
913 ;;
914 'VAX D-float' )
915 format=VAX_FLOAT_FORMAT
916 ;;
917 'PDP-10' )
918 format=PDP10_FLOAT_FORMAT
919 ;;
920 'IBM 370 hex' )
921 format=IBM_FLOAT_FORMAT
922 ;;
923 esac
924 AC_DEFINE_UNQUOTED(HOST_FLOAT_FORMAT, $format,
925 [Define to the floating point format of the host machine.])
926 if test -n "$fbigend"; then
927 AC_DEFINE_UNQUOTED(HOST_FLOAT_WORDS_BIG_ENDIAN, $fbigend,
928 [Define to 1 if the host machine stores floating point numbers in
929 memory with the word containing the sign bit at the lowest address,
930 or to 0 if it does it the other way around.
931
932 This macro should not be defined if the ordering is the same as for
933 multi-word integers.])
934 fi
935 ])
936
937 dnl Select appropriate FPU source.
938 gcc_AC_C_FLOAT_FORMAT
939 AC_CHECK_HEADERS(ieee754.h ieeefp.h floatingpoint.h nan.h)
940
941 for fpe in $FPE_CORE_TEST_ORDER; do
942 case $fpe in
943 ieee)
944 case $ac_cv_c_float_format in
945 IEEE*)
946 FPE_CORE="IEEE fpu core"
947 DEFINES="$DEFINES -DFPU_IEEE"
948 AC_DEFINE(FPU_IEEE, 1, [Floating Point Core emulation method is IEEE.])
949 FPUSRCS="../uae_cpu/fpu/fpu_ieee.cpp"
950 dnl Math functions not mandated by C99 standard
951 AC_CHECK_FUNCS(isnanl isinfl)
952 dnl Math functions required by C99 standard, but probably not
953 dnl implemented everywhere. In that case, we fall back to the
954 dnl regular variant for doubles.
955 AC_CHECK_FUNCS(logl log10l expl powl fabsl sqrtl)
956 AC_CHECK_FUNCS(sinl cosl tanl sinhl coshl tanhl)
957 AC_CHECK_FUNCS(asinl acosl atanl asinhl acoshl atanhl)
958 AC_CHECK_FUNCS(floorl ceill)
959 break
960 ;;
961 esac
962 ;;
963 x86)
964 if [[ ":$HAVE_GCC27:$HAVE_I386:$HAVE_GAS:" = ":yes:yes:yes:" ]]; then
965 FPE_CORE="i387 fpu core"
966 DEFINES="$DEFINES -DFPU_X86"
967 FPUSRCS="../uae_cpu/fpu/fpu_x86.cpp"
968 break
969 fi
970 ;;
971 uae)
972 FPE_CORE="uae fpu core"
973 DEFINES="$DEFINES -DFPU_UAE"
974 AC_DEFINE(FPU_UAE, 1, [Floating Point Core emulation is standard UAE.])
975 FPUSRCS="../uae_cpu/fpu/fpu_uae.cpp"
976 break
977 ;;
978 *)
979 AC_MSG_ERROR([Internal configure.in script error for $fpe fpu core])
980 ;;
981 esac
982 done
983 if [[ "x$FPE_CORE" = "x" ]]; then
984 AC_MSG_ERROR([Sorry, no suitable FPU core found in $FPE_CORE_TEST_ORDER])
985 fi
986
987 dnl Check for certain math functions
988 AC_CHECK_FUNCS(atanh)
989 AC_CHECK_FUNCS(isnan isinf finite isnormal signbit)
990
991 dnl UAE CPU sources for all non-m68k-native architectures.
992 if [[ "x$WANT_NATIVE_M68K" = "xno" ]]; then
993 CPUINCLUDES="-I../uae_cpu"
994 CPUSRCS="../uae_cpu/basilisk_glue.cpp ../uae_cpu/memory.cpp ../uae_cpu/newcpu.cpp ../uae_cpu/readcpu.cpp $FPUSRCS cpustbl.cpp cpudefs.cpp $CPUSRCS $JITSRCS"
995 fi
996
997 dnl Remove the "-g" option if set for GCC.
998 if [[ "x$HAVE_GCC27" = "xyes" ]]; then
999 CFLAGS=`echo $CFLAGS | sed -e 's/-g//g'`
1000 CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g//g'`
1001 fi
1002
1003 dnl Or if we have -IPA (MIPSPro compilers)
1004 if [[ "x$HAVE_IPA" = "xyes" ]]; then
1005 CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1006 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1007 CXXFLAGS="-LANG:std $CXXFLAGS"
1008 LDFLAGS="$LDFLAGS -O3 -OPT:Olimit=0 -IPA"
1009 fi
1010
1011 dnl
1012 dnl Some Mac OS X specific stuff:
1013 dnl
1014
1015 dnl MacOS 10.2 (and later?) have a particular header for defining the OS version
1016 AC_CHECK_HEADER(AvailabilityMacros.h)
1017 if [[ "x$ac_cv_header_AvailabilityMacros_h" = "xyes" ]]; then
1018 AC_DEFINE(AVAILABILITYMACROS, 1, [Header specific to 10.2 and later.])
1019 fi
1020
1021 dnl Which IDE do we use?
1022 if test -d "/Developer/Applications/Xcode.app"; then
1023 IDE=xcodebuild
1024 PROJECT=BasiliskII.xcode
1025 IDEARGS="-project BasiliskII.xcode"
1026 else
1027 IDE=pbxbuild
1028 PROJECT=BasiliskII.pbproj
1029 IDEARGS=""
1030 fi
1031
1032 dnl Generate Makefile.
1033 AC_SUBST(DEFINES)
1034 AC_SUBST(SYSSRCS)
1035 AC_SUBST(CPUINCLUDES)
1036 AC_SUBST(CPUSRCS)
1037 AC_SUBST(BLESS)
1038 AC_SUBST(IDE)
1039 AC_SUBST(PROJECT)
1040 AC_SUBST(IDEARGS)
1041 dnl autoconf on 10.1 doesn't understand these
1042 dnl AC_CONFIG_FILES([Makefile])
1043 dnl AC_OUTPUT
1044 AC_OUTPUT(Makefile)
1045
1046 dnl Print summary.
1047 echo
1048 echo Basilisk II configuration summary:
1049 echo
1050 echo Multiple emulator windows .............. : $ENABLE_MULTIPLE
1051 echo Enable video on SEGV signals ........... : $WANT_VOSF
1052 echo mon debugger support ................... : $WANT_MON
1053 echo Use JIT compiler ....................... : $WANT_JIT
1054 echo JIT debug mode ......................... : $WANT_JIT_DEBUG
1055 echo Floating-Point emulation core .......... : $FPE_CORE
1056 echo Assembly optimizations ................. : $ASM_OPTIMIZATIONS
1057 echo Addressing mode ........................ : $ADDRESSING_MODE
1058 echo Bad memory access recovery type ........ : $sigsegv_recovery
1059 echo Mac OS X development environment ....... : $IDE
1060 echo
1061 echo "Configuration done. Now type \"make\" (or \"make ide\")."