Replaced Exit() by exit() because Exit() is like abort().
[AROS.git] / configure.in
blobff9c21f1547a5071372caaf3f1a1067b2287ab54
1 dnl Copyright © 1997-2012, The AROS Development Team. All rights reserved.
2 dnl $Id$
3 dnl
4 dnl Desc: Autoconf source for configuration file
5 dnl Lang: english 
7 # Note: After file changes, generate configure anew and commit _both_ files.
9 #TODO
10 # method of getting shared/non-shared ld/ar tool for target.
12 # ------------------------------------------------------------------------
13 # Here starts the first section of the configure.in file.
14 # ------------------------------------------------------------------------
16 AC_INIT(mmakefile)
17 AC_PREREQ(2.61)
18 AC_CONFIG_AUX_DIR(scripts/autoconf)
20 # Check what host we are running on.
21 # If a target is not suggested, we use this one.
22 # Note that what we call a target, Autoconf calls a host.
23 AC_CANONICAL_HOST
25 # The AROS target is slightly different to the normal GNU style
26 # format. We don't have the middle part, and we reverse the order
27 # of the $(CPU) and $(OS) bits.
29 # Don't strip the version of the target yet, it might be
30 # useful on some systems.
32 AC_MSG_CHECKING([for AROS style target])
34 if test "$target" = "NONE" ; then
35     target=$host_os-$host_cpu
36 else
37     if test "$target" = "" ; then
38         target=$host_os-$host_cpu
39     fi
41 AC_MSG_RESULT($target)
43 if test "$host_os" = "mingw32" ; then
44     PWDCMD="pwd -W"
47 # Don't know where else to put this...
48 AC_MSG_CHECKING([building AROS in])
49 AROS_BUILDDIR=`${PWDCMD-pwd}`
50 AROS_BUILDDIR_UNIX=${PWD}
51 AC_MSG_RESULT($AROS_BUILDDIR)
53 AC_MSG_CHECKING([AROS source in])
54 srcpwd=`cd ${srcdir} ; ${PWDCMD-pwd}`
55 SRCDIR=${srcpwd}
56 AC_MSG_RESULT($SRCDIR)
58 # Parse the target field into something useful.
59 changequote(<<,>>)
60 target_os=`echo $target | sed 's/^\([^-].*\)-\(.*\)$/\1/'`
61 target_cpu=`echo $target | sed 's/^\([^-].*\)-\(.*\)$/\2/'`
62 changequote([,])
64 # Some debug output, to be removed again.
65 AC_MSG_CHECKING([for target system (debug output)])
66 AC_MSG_RESULT($target_os)
67 AC_MSG_CHECKING([for target cpu (debug output)])
68 AC_MSG_RESULT($target_cpu)
70 dnl --------------------------------------------------------------------
71 dnl Set the default Workbench resolution
72 dnl --------------------------------------------------------------------
73 aros_default_wbwidth=800
74 aros_default_wbheight=600
75 aros_default_wbdepth=4
77 dnl --------------------------------------------------------------------
78 dnl Host Configuration Section
79 dnl --------------------------------------------------------------------
80 dnl
81 dnl The idea here is to find out all the information we need about the
82 dnl host. This means things like tools for building directory structures,
83 dnl copying files around and the like.
85 # The first step is to find the host binaries.
86 # Check for a compiler.
87 # Due to a bug in autoconf check for c++ compiler first.
88 # For mor info see, http://osdir.com/ml/bug-autoconf-gnu/2010-05/msg00001.html.
89 AC_PROG_CXX
90 AC_PROG_CC
91 AC_PROG_CC_STDC
92 AC_PROG_CPP
94 # Check for a compatible awk
95 AC_CHECK_PROGS(AWK,[gawk nawk])
96 AROS_REQUIRED(gawk,$AWK)
97 AROS_PROG(MMAKE,mmake)
99 # Perform some default variable assignments. Note all of these will be
100 # Regenerated from the script, so there is no need to cache them.
102 aros_host_cpp="$CPP"
103 aros_host_cc="$CC"
104 aros_host_cxx="$CXX"
105 AROS_TOOL_CCPATH(aros_host_ld,ld)
106 AROS_REQUIRED(ld,$aros_host_ld)
107 aros_host_make="make"
108 aros_host_cflags=$CFLAGS
109 aros_host_cxxflags=$CXXFLAGS
110 aros_host_ldflags=$LDFLAGS
111 aros_host_debug="-g -O0"
112 aros_host_mkdep="\$(SRCDIR)/scripts/mkdep"
113 aros_host_mkargs="--no-print-directory"
114 aros_host_exe_suffix="$EXEEXT"
115 aros_host_lib_suffix=""
117 # Ignore all compliance, AROS ROMs = 0
118 # KickStart v1.0 = 30
119 # KickStart v1.3 = 34
120 # KickStart v2.0 = 37
121 # KickStart v3.0 = 39
122 # KickStart v3.1 = 40
123 # AmigaOS   v3.5 = 44
124 aros_amigaos_compliance=0
126 AC_CHECK_PROGS(aros_host_aclocal,[aclocal aclocal19 aclocal-1.9])
127 AC_CHECK_PROGS(aros_host_autoconf,[autoconf autoconf259 autoconf253])
128 AC_CHECK_PROGS(aros_host_autoheader,[autoheader autoheader259 autoheader253])
129 AC_CHECK_PROGS(aros_host_automake,[automake automake19 automake-1.9])
131 AROS_REQUIRED(aclocal/aclocal19/aclocal-1.9, $aros_host_aclocal)
132 AROS_REQUIRED(automake/automake19/automake-1.9, $aros_host_automake)
134 case "$aros_host_cc" in
135     *gcc*)
136         aros_host_cc_pipe="-pipe"
137         ;;
138     icc)
139         aros_host_cc_pipe=""
140         ;;
141     *)
142         aros_host_cc_pipe=""
143         ;;
144 esac
146 aros_kernel_cc_includes=""
147 aros_target_cc_includes=""
148 host_cc_elf=yes
150 # ----------------------------------------------------------------------------------------
151 # Host-specific defaults
153 # This is the main host configuration section. It is where the host
154 # can change the values of any variables it needs to change. We do
155 # not look at anything that compiles to the target yet, we'll get
156 # to that later.
158 case "$host_os" in
159     aros*)
160         aros_host_arch="aros"
161         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
162         case "$host_cpu" in
163             *i?86*)
164                 aros_host_cpu="i386"
165                 ;;
166             *x86_64*)
167                 aros_host_cpu="x86_64"
168                 ;;
169             *powerpc*)
170                 aros_host_cpu="ppc"
171                 ;;
172             *)
173                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
174                 aros_host_cpu="$host_cpu"
175                 ;;
176         esac
177         ;;
179     linux*)
180         aros_host_arch="linux"
181         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
182         android_build_os="linux-x86"
183         android_tool="android"
184         default_android_sdk="/opt/android-sdk-linux_x86"
185         case "$host_cpu" in
186             *i?86*)
187                 aros_host_cpu="i386"
188                 ;;
189             *x86_64*)
190                 aros_host_cpu="x86_64"
191                 ;;
192             *m68k*)
193                 aros_host_cpu="m68k"
194                 ;;
195             *powerpc*)
196                 aros_host_cpu="ppc"
197                 ;;
198             *arm*)
199                 aros_host_cpu="arm"
200                 ;;
201             *)
202                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
203                 aros_host_cpu="$host_cpu"
204                 ;;
205         esac
206         ;;
208     freebsd*)
209         aros_host_cc="$aros_host_cc $aros_host_cc_pipe -I/usr/local/include"
210         aros_host_make="gmake"
211         aros_host_arch="freebsd"
212         aros_host_cpu="i386"
214         aros_host_ldflags="$aros_host_ldflags -L/usr/local/lib -liconv"
216         dnl FreeBSD 5.x (and later) has changed the default object format.
217         dnl The double [[]] is necessary to get around m4's quoting rules.
218         case $host_os in
219             freebsd[[234]]*)
220                 aros_object_format="elf_i386"
221                 ;;
223             *)
224                 aros_object_format="elf_i386_fbsd"
225                 ;;
226         esac
228         ;;
230     darwin*)
231         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
232         aros_host_arch="darwin"
233         host_cc_elf=no
234         android_build_os="darwin-x86"
235         android_tool="android"
236         default_android_sdk="/android-sdk-mac_x86"
237         case "$host_cpu" in
238             *i?86*)
239                 aros_host_cpu="i386"
240                 ;;
241             *x86_64*)
242                 aros_host_cpu="x86_64"
243                 ;;
244             *powerpc*)
245                 aros_host_cpu="ppc"
246                 ;;
247             *)
248                 AC_MSG_WARN("Unknown CPU for Darwin host -- $host_cpu")
249                 aros_host_cpu="$host_cpu"
250                 ;;
251         esac
253         aros_host_ldflags="$aros_host_ldflags -liconv"
255         ;;
257     dragonfly*)
258         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
259         aros_host_make="gmake"
260         aros_host_arch="dragonfly"
261         case $host_cpu in
262             *i?86*)
263                 aros_host_cpu="i386"
264                 ;;
265             *amd64*)
266                 aros_host_cpu="x86_64"
267                 ;;
268             *)
269                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
270                 aros_host_cpu="$host_cpu"
271                 ;;
272         esac
273         ;;
275     netbsd*)
276         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
277         aros_host_make="gmake"
278         aros_host_arch="netbsd"
279         case "$host_cpu" in
280             *i?86*)
281                 aros_host_cpu="i386"
282                 ;;
283             *m68k*)
284                 aros_host_cpu="m68k"
285                 ;;
286             *)
287                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
288                 aros_host_cpu="$host_cpu"
289                 ;;
290         esac    
291         aros_host_lib_suffix=".0.0"
292         ;;
294     openbsd*)
295         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
296         aros_host_make="gmake"
297         aros_host_arch="openbsd"
298         case "$host_cpu" in
299             *i?86*)
300                 aros_host_cpu="i386"
301                 ;;
302             *)
303                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
304                 aros_host_cpu="$host_cpu"
305                 ;;
306         esac
307         ;;
308         
309     solaris*)
310         aros_host_arch="solaris"
311         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
312         case "$host_cpu" in
313             *i?86*)
314                 aros_host_cpu="i386"
315                 ;;
316             *sparc*)
317                 aros_host_cpu="sparc"
318                 ;;
319             *)
320                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
321                 aros_host_cpu="$host_cpu"
322                 ;;
323         esac
324         ;;
326     morphos*)
327         aros_host_arch="morphos"
328         aros_host_cpu="ppc"
329         host_cc_elf=no
330         ;;
332     amiga*)
333         aros_host_arch="amiga"
334         host_cc_elf=no
335         SORT="/gg/bin/sort"
336         TEST="/gg/bin/test"
337         UNIQ="/gg/bin/uniq"
338         FOR="for"
339         TOUCH="/gg/bin/touch"
340         case "$host_cpu" in
341             *m68k*)
342                 aros_host_cpu="m68k"
343                 ;;
344             *powerpc*)
345                 aros_host_cpu="ppc"
346                 ;;
347             *)
348                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
349                 aros_host_cpu="$host_cpu"
350                 ;;
351         esac
352         ;;
354     cygwin*)
355         aros_host_arch="cygwin"
356         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
357         host_cc_elf=no
358         android_build_os="windows"
359         android_tool="android.bat"
360         default_android_sdk="/cygdrive/c/android-sdk-windows-1.6_r1"
362         case "$host_cpu" in
363             *i?86*)
364                 aros_host_cpu="i386"
365                 ;;
366             *)
367                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
368                 aros_host_cpu="$host_cpu"
369                 ;;
370         esac
371         ;;
373     mingw32*)
374         aros_host_arch="mingw32"
375         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
376         host_cc_elf=no
377         android_build_os="windows"
378         android_tool="android.bat"
379         default_android_sdk="/c/android-sdk-windows-1.6_r1"
381         case "$host_cpu" in
382         *i?86*)
383             dnl Currently there's neither 64-bit MinGW nor MSYS. Both environments are 32-bit
384             dnl and run under emulation. Consequently, uname reports i386 even on 64-bit systems.
385             dnl Here we attempt to detect Windows home platform by asking gcc about its target.
386             dnl 64-bit gcc will output "x86_64-w64-mingw32" here.
388             AC_MSG_CHECKING([for Windows native gcc target])
389             host_cpu=`gcc -dumpmachine`
390             AC_MSG_RESULT($host_cpu)
391             ;;
393         esac
395         case "$host_cpu" in
396         *i?86*)
397             aros_host_cpu="i386"
398             ;;
400         mingw32*)
401             dnl Native i386 gcc for MinGW32 reports 'mingw32' with -dumpmachine switch
402             aros_host_cpu="i386"
403             ;;
405         *x86_64*)
406             aros_host_cpu="x86_64"
407             dnl Dragon's x86_64-w64-mingw32-gcc is a bit broken. It ignores standard $prefix/include
408             dnl directory, so we have to add it explicitly here.
409             aros_host_cflags="$aros_host_cflags -isystem /mingw/include"
410             ;;
412         *)
413             AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
414             aros_host_cpu="$host_cpu"
415             ;;
416         esac
417         ;;
418     *)
419         AC_MSG_ERROR([Unsupported host architecture $host])
420         ;;
421 esac
423 AROS_PROG(aros_host_ar,[ar],[cr])
424 AROS_REQUIRED(ar,$aros_host_ar)
425 AROS_PROG(aros_host_ranlib,ranlib)
426 AROS_REQUIRED(ranlib,$aros_host_ranlib)
427 AROS_PROG(aros_host_strip,strip)
428 AROS_REQUIRED(strip,$aros_host_strip)
430 AROS_PROG(RM,[rm],[-rf])
431 AROS_REQUIRED(rm,$RM)
432 AROS_PROG(CP,[cp])
433 AROS_REQUIRED(cp,$CP)
434 AROS_PROG(MV,[mv])
435 AROS_REQUIRED(mv,$MV)
436 AROS_PROG(ECHO,[echo])
437 AROS_REQUIRED(echo,$ECHO)
438 AROS_PROG(MKDIR,[mkdir],[-p])
439 AROS_REQUIRED(mkdir,$MKDIR)
440 AROS_PROG(TOUCH,[touch])
441 AROS_REQUIRED(touch,$TOUCH)
442 AROS_PROG(SORT,[sort])
443 AROS_REQUIRED(sort,$SORT)
444 AROS_PROG(UNIQ,[uniq])
445 AROS_REQUIRED(uniq,$UNIQ)
446 AROS_PROG(NOP,[true])
447 AROS_REQUIRED(true,$NOP)
448 AROS_PROG(CAT,[cat])
449 AROS_REQUIRED(cat,$CAT)
450 AROS_PROG(BISON,[bison])
451 AROS_REQUIRED(bison,$BISON)
452 AROS_PROG(FLEX,[flex])
453 AROS_REQUIRED(flex,$FLEX)
454 AROS_PROG(PNGTOPNM,[pngtopnm])
455 AROS_REQUIRED(pngtopnm,$PNGTOPNM)
456 AROS_PROG(PPMTOILBM,[ppmtoilbm])
457 AROS_REQUIRED(ppmtoilbm,$PPMTOILBM)
458 AROS_PROG(SED,[sed])
459 AROS_REQUIRED(sed,$SED)
460 AROS_PROG(CHMOD,[chmod])
461 AROS_REQUIRED(chmod,$CHMOD)
462 AROS_PROG(PATCH,[patch])
463 AROS_REQUIRED(patch,$PATCH)
465 AM_PATH_PYTHON(2.5)
467 AC_CHECK_LIB(png, png_read_png)
468 AROS_REQUIRED(libpng, $ac_cv_lib_png_png_read_png)
470 AC_SUBST(FOR, for)
471 AC_SUBST(IF, if)
472 AC_SUBST(TEST, test)
473 AC_SUBST(CMP, cmp)
475 dnl ---------------------------------------------------------------------------
476 dnl Look for things about the host system, good for hosted targets.
477 dnl ---------------------------------------------------------------------------
479 # Check for some includes for the X11 HIDD and the kernel
480 AC_CHECK_HEADERS([sys/ipc.h sys/shm.h \
481     sys/mmap.h sys/mman.h sysexits.h \
482     sys/statfs.h sys/statvfs.h sys/vfs.h sys/param.h \
485 AC_CHECK_HEADERS([sys/mount.h],,,[#include <sys/param.h>])
487 AC_HEADER_DIRENT
488 AC_HEADER_STAT
489 AC_HEADER_STDC
490 AC_HEADER_SYS_WAIT
491 AC_HEADER_TIME
492 AC_STRUCT_ST_BLKSIZE
493 AC_STRUCT_ST_BLOCKS
494 AC_STRUCT_ST_RDEV
495 AC_STRUCT_TM
496 AC_STRUCT_TIMEZONE
497 AC_TYPE_OFF_T
498 AC_TYPE_PID_T
499 AC_TYPE_SIZE_T
500 AC_TYPE_UID_T
502 AC_CHECK_MEMBERS(struct tm.tm_gmtoff)
504 # Look for some functions
505 AC_CHECK_FUNCS([getpagesize kqueue statfs statvfs \
506     clone kse_create rfork_thread thr_create sa_register \
507     getcontext makecontext setcontext sigaltstack swapcontext])
509 AC_FUNC_MMAP
512 dnl --------------------------------------------------------------------
513 dnl Target Configuration Section
514 dnl --------------------------------------------------------------------
516 dnl The target configuration section is responsible for setting up all
517 dnl the paths for includes, and tools required to build AROS to some
518 dnl particular target.
520 aros_config_cflags="-Wall -Werror-implicit-function-declaration"
521 aros_config_aflags="-Wall -x assembler-with-cpp -c"
522 aros_config_ldflags=""
524 aros_shared_default=yes
526 aros_shared_cflags="-fPIC"
527 aros_shared_aflags=""
528 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
529 aros_kernel_ldflags="-Wl,-rpath,./lib"
531 aros_kernel_ar_flags="cr"
532 aros_target_ar_flags="cr"
533 aros_target_nm_flags="-C -ul"
534 aros_target_strip_flags="--strip-unneeded -R.comment"
536 aros_compiler_libs=
537 aros_arch_libs=
539 aros_target_genmap="-Wl,-Map -Xlinker"
541 # Native flavour stuff
542 aros_serial_debug="0"
544 # Palm native flavour stuff
545 aros_palm_debug_hack="0"
547 # Unix flavour stuff
548 aros_nesting_supervisor="0"
550 # Collect-aros stuff: "-ius" to ignore undefined symbols
551 ignore_undefined_symbols=""
553 # Check for X11 by default
554 need_x11="auto"
556 #-----------------------------------------------------------------------------
559 # GCC 4.1+ has a stack protection feature that requires OS support. Ubuntu has
560 # it switched on by default, and we use the host compiler, so it compiles AROS
561 # code with this enabled resulting in link failures as we don't have support
562 # for it.
564 # We use two methods to disable it. For the host compiler (used to compile
565 # some hosted modules), we test to see if the compiler supports stack
566 # protection, and if it does we disable it in AROS_CONFIG_CFLAGS. This should
567 # work on all platforms.
569 # For the "cross" compiler we clear the "ssp_default" spec in config/specs.in
570 # (this is done unconditionally, as it should have no effect on compilers
571 # without the stack protection feature). This may be specific to the way that
572 # Ubuntu enables the feature, so may not work everywhere. My specs-fu isn't
573 # strong enough to disable it in a generic way though, so we'll live with it
574 # until another vendor ships GCC with it enabled in a different way, and deal
575 # with it then.
578 AC_MSG_CHECKING([whether ${CC} accepts -fno-stack-protector])
579 save_cflags="$CFLAGS"
580 CFLAGS="$CFLAGS -fno-stack-protector"
581 AC_TRY_COMPILE(,, use_no_stack_protector="yes", use_no_stack_protector="no")
582 AC_MSG_RESULT($use_no_stack_protector)
583 if test "x-$use_no_stack_protector" = "x-yes" ; then
584     aros_host_cflags="$aros_host_cflags -fno-stack-protector"
586 CFLAGS="$save_cflags"
588 #-----------------------------------------------------------------------------
590 # Disable pointer-signedness warnings if the compiler recognises the option
591 # (this only works for the host compiler at the moment)
593 AC_MSG_CHECKING([whether ${CC} accepts -Wno-pointer-sign])
594 save_cflags="$CFLAGS"
595 CFLAGS="$CFLAGS -Wno-pointer-sign"
596 AC_TRY_COMPILE(,, use_no_sign_warning="yes", use_no_sign_warning="no")
597 AC_MSG_RESULT($use_no_sign_warning)
598 if test "x-$use_no_sign_warning" = "x-yes" ; then
599     aros_host_cflags="$aros_host_cflags -Wno-pointer-sign"
601 CFLAGS="$save_cflags"
603 #-----------------------------------------------------------------------------
605 # Check if host compiler supports -fgnu89-inline, can be needed for crosstools.
607 AC_MSG_CHECKING([whether ${CC} accepts -fgnu89-inline])
608 save_cflags="$CFLAGS"
609 CFLAGS="$CFLAGS -fgnu89-inline"
610 AC_TRY_COMPILE(,, use_gnu89_inline="yes", use_gnu89_inline="no")
611 AC_MSG_RESULT($use_gnu89_inline)
612 if test "x-$use_gnu89_inline" = "x-yes" ; then
613     gnu89_inline="-fgnu89-inline"
615 CFLAGS="$save_cflags"
617 #-----------------------------------------------------------------------------
619 AC_MSG_CHECKING([for type of build])
620 AC_ARG_ENABLE(build_type,AC_HELP_STRING([--enable-build-type=TYPE],[Select the build type. Available types are: personal, nightly, snapshot, milestone, release. Do NOT use this option unless you know what you are doing! (default=personal)]),build_type=$enableval,build_type="personal")
622 if test "$build_type" = "nightly"; then
623     build_type_string="NIGHTLY"
624 elif test "$build_type" = "snapshot"; then
625     build_type_string="SNAPSHOT"
626 elif test "$build_type" = "milestone"; then
627     build_type_string="MILESTONE"
628 elif test "$build_type" = "release"; then
629     build_type_string="RELEASE"
630 else
631     build_type_string="PERSONAL"
632     build_type="personal"
635 aros_config_cflags="$aros_config_cflags -DAROS_BUILD_TYPE=AROS_BUILD_TYPE_$build_type_string"
637 AC_MSG_RESULT($build_type)
639 #-----------------------------------------------------------------------------
640 all_debug_types="messages stack modules mungwall symbols"
642 AC_MSG_CHECKING([which debug types to enable])
643 AC_ARG_ENABLE(debug,AC_HELP_STRING([--enable-debug=list],[Enable different types of debug. Commas or whitespaces can be used to separate the items in the list. Available types of debug are: all, none, messages, stack, mungwall, modules, symbols. If no list is provided then "all" is assumed. (default=none)]),
644  debug="$enableval",debug="")
646 if test "$debug" = "" -o "$debug" = "no"; then
647     debug="none"
648 elif test "$debug" = "yes"; then
649     debug="all"
652 if test "$debug" = "all" ; then
653     debug="messages stack modules symbols"
654     for d in $all_debug_types; do
655         export aros_${d}_debug="1"
656     done
657 else
658     for d in $all_debug_types; do
659         export aros_${d}_debug="0"
660     done
663 if test "$debug" != "none"; then
664     debug=`echo $debug | sed s/,/\ /g`
665     for d in $debug; do
666         found="0"
667         for d2 in $all_debug_types; do
668             if test "$d2" = "$d"; then
669                 found="1"
670                 break
671             fi
672         done
673         if test "$found" = "0"; then
674             AC_MSG_ERROR([unrecognized debug type "$d". Available types are: all none $all_debug_types])
675         fi
676         export aros_${d}_debug="1"
677     done
678     aros_debug="yes"
680 AC_MSG_RESULT($debug)
682 if test "$aros_messages_debug" = "1"; then
683     aros_messages_debug="-DADEBUG=1 -DMDEBUG=1"
684 else
685     aros_messages_debug=""
687 if test "$aros_symbols_debug" = "1"; then
688     aros_symbols_debug="-g"
689 else
690     aros_symbols_debug=""
693 # These are the flags to pass when compiling debugged programs
694 aros_debug_cflags="$aros_symbols_debug $aros_messages_debug"
695 aros_debug_aflags=""
696 aros_debug_ldflags="$aros_symbols_debug"
698 #-----------------------------------------------------------------------------
699 #   Checking for distcc and ccache.
701 #   Always apply the transforms in this particular order. Basically you should
702 #   always run 'ccache distcc compiler' in that order for the best performance.
704 AC_MSG_CHECKING([whether to enable distcc])
705 AC_ARG_ENABLE(distcc,AC_HELP_STRING([--enable-distcc],[Use distcc as a front end to the compiler (default=no).]),distcc="$enableval",distcc="no")
706 if test "$distcc" != "" -a "$distcc" != "no"; then
707     # AC_CHECK_PROG will print out the result in this case
708     AC_PATH_PROG(DISTCC,[distcc],distcc,)
709 else
710     AC_MSG_RESULT(no)
713 AC_MSG_CHECKING([whether to enable ccache])
714 AC_ARG_ENABLE(ccache,AC_HELP_STRING([--enable-ccache],[Use ccache as a front end to the compiler (default=no).]),ccache="$enableval",ccache="no")
715 if test "$ccache" != "" -a "$ccache" != "no"; then
716     # AC_CHECK_PROG will print out the result in this case
717     AC_CHECK_PROG(CCACHE,[ccache],ccache,)
718 else
719     AC_MSG_RESULT(no)
722 #-----------------------------------------------------------------------------
723 AC_MSG_CHECKING([what specific host gcc version to use])
724 AC_ARG_WITH(kernel-gcc-version,AC_HELP_STRING([--with-kernel-gcc-version=VERSION],[Use host gcc-VERSION for building AROS]),kernel_tool_version="-$withval",kernel_tool_version="")
725 AC_MSG_RESULT($kernel_tool_version)
727 #-----------------------------------------------------------------------------
728 AC_MSG_CHECKING([what specific target gcc version to use])
729 AC_ARG_WITH(gcc-version,AC_HELP_STRING([--with-gcc-version=VERSION],[Use host gcc-VERSION for building AROS]),target_tool_version="$withval",target_tool_version="default")
730 AC_MSG_RESULT($target_tool_version)
732 #-----------------------------------------------------------------------------
733 AC_MSG_CHECKING([what optimization flags to use])
734 AC_ARG_WITH(optimization,AC_HELP_STRING([--with-optimization=FLAGS],[Use optimization flags FLAGS (default=-O2).]),optimization="$withval",optimization="unknown")
735 if test "$optimization" = "unknown"; then
736     dnl default is -O2 for normal builds, -O0 for debug builds
737     if test "$debug" != "none"; then
738         optimization="-O0"
739     else
740         optimization="-O2"
741     fi
743 aros_config_cflags="$aros_config_cflags $optimization"
744 AC_MSG_RESULT($optimization)
746 #-----------------------------------------------------------------------------
747 AC_MSG_CHECKING([what paranoia flags to use])
748 AC_ARG_WITH(paranoia,AC_HELP_STRING([--with-paranoia=FLAGS],[CC flags to enable paranoia]),[paranoia_flags="$withval"],[paranoia_flags="default"])
749 if test "$paranoia_flags" = "default"; then
750         paranoia_flags=""
751 else if test "$paranoia_flags" = "yes"; then
752         paranoia_flags="-Wall -Werror"
753 fi fi
754 AC_MSG_RESULT($paranoia_flags)
755 aros_config_cflags="$aros_config_cflags $paranoia_flags"
757 #-----------------------------------------------------------------------------
758 AC_MSG_CHECKING([what target variant to enable])
759 AC_ARG_ENABLE(target_variant,AC_HELP_STRING([--enable-target-variant=NAME],[Enable a specific target variant(default=none)]),target_variant=$enableval,target_variant="")
760 if test "$target_variant" = ""; then
761     aros_target_variant=""
762     aros_target_suffix=""
763     enableval="none"
764 else
765     aros_target_variant="$target_variant"
766     aros_target_suffix="-$target_variant"
768 AC_MSG_RESULT($enableval)
770 #-----------------------------------------------------------------------------
771 # Target-specific defaults. You can override then on a per-target basis.
773 # Bootloader name. Currently used by PC target.
774 target_bootloader="none"
776 #-----------------------------------------------------------------------------
777 # Additional options for some specific targets
779 case "$aros_target_variant" in
780 ios)
781     AC_MSG_CHECKING([XCode path])
782     AC_ARG_WITH(xcode,AC_HELP_STRING([--with-xcode=PATH],[Specify XCode path for iOS targets (default=/Developer).]),aros_xcode_path="$withval",aros_xcode_path="/Developer")
783     AC_MSG_RESULT($aros_xcode_path)
785     AC_MSG_CHECKING([what iOS SDK version to use])
786     AC_ARG_WITH(sdk-version,AC_HELP_STRING([--with-sdk-version=VERSION],[Use iOS SDK version VERSION (default=4.1).]),aros_sdk_version="$withval",aros_sdk_version="4.1")
787     AC_MSG_RESULT($aros_sdk_version)
789     ;;
791 "android")
792     AC_MSG_CHECKING([Android SDK path])
793     AC_ARG_WITH(sdk,AC_HELP_STRING([--with-sdk=PATH],[Specify Android SDK path (default=$default_android_sdk).]),aros_android_sdk="$withval",aros_android_sdk=$default_android_sdk)
794     AC_MSG_RESULT($aros_android_sdk)
796     AC_MSG_CHECKING([Android NDK path])
797     AC_ARG_WITH(ndk,AC_HELP_STRING([--with-ndk=PATH],[Specify Android NDK path (default=none).]),aros_android_ndk="$withval",aros_android_ndk="none")
798     AC_MSG_RESULT($aros_android_ndk)
800     AC_MSG_CHECKING([what Android SDK version to use])
801     AC_ARG_WITH(sdk-version,AC_HELP_STRING([--with-sdk-version=LEVEL],[Use Android SDK for API LEVEL (default=12).]),aros_sdk_version="$withval",aros_sdk_version="12")
802     AC_MSG_RESULT($aros_sdk_version)
804     if test "$aros_android_ndk" != "none"; then
805         AC_MSG_CHECKING([what Android NDK version to use])
806         AC_ARG_WITH(ndk-version,AC_HELP_STRING([--with-ndk-version=LEVEL],[Use Android NDK for API LEVEL (default=9).]),aros_ndk_version="$withval",aros_ndk_version="9")
807         AC_MSG_RESULT($aros_ndk_version)
808     fi
810     export PATH="$aros_android_sdk/tools:$PATH"
811     AC_PATH_PROG(android_tool, $android_tool)
812     AROS_REQUIRED(android,$android_tool)
814     aros_android_level=android-$aros_sdk_version
815     if test ! -d $aros_android_sdk/platforms/$aros_android_level; then
816         echo "Platform $aros_android_level is not installed in your SDK"
817         echo "Use --with-sdk-version=<API level number> to select another platform version"
818         echo "You can check what plaform versions are installed in your SDK"
819         echo "by examining contents of $aros_android_sdk/platforms directory"
820         AC_MSG_ERROR([Android platform $aros_android_level is not installed])
821     fi
823     AC_PATH_PROG(ant, ant)
824     if test "$ant" = ""; then
825         AC_MSG_WARN([Apache Ant is missing, Java bootstrap can't be built automatically])
826     fi
828     dnl MSYS bash can't run .bat files directly, then need to be started via cmd.exe
829     if test "$host_os" = "mingw32"; then
830         android_tool="cmd //c $android_tool"
831     fi
833     ;;
834 esac
836 #-----------------------------------------------------------------------------
837 # External toolchains
838 kernel_tool_prefix="none"
839 aros_tool_prefix="none"
840 elf_tool_prefix="${target_cpu}-elf-"
842 # This is the target configuration switch.
843 case "$target_os" in
844     linux*)
845         aros_target_arch="linux"
846         aros_target_family="unix"
847         case "$target_cpu" in
848             *m68k*)
849                 aros_target_cpu="m68k"
850                 aros_object_format="m68kelf"
851                 aros_flavour="emulcompat"
852                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__linux__"
853                 aros_shared_ldflags="-Wl,-T,\$(TOP)/config/linux/m68k/script.so"
854                 aros_kernel_ldflags="-Wl,-rpath,./lib,-T,\$(TOP)/config/linux/m68k/script.normal"
855                 gcc_target_cpu="mc68000"
856                 ;;
857             *i?86*)
858                 aros_target_cpu="i386"
859                 aros_object_format="elf_i386"
860                 aros_flavour="emulation"
861                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__linux__"
862                 aros_config_cflags="$aros_config_cflags -m32 -march=i486"
863                 aros_kernel_cflags="$aros_kernel_cflags -m32 -march=i486"
864                 aros_config_aflags="$aros_config_aflags -m32 -march=i486"
865                 aros_config_ldflags="-m32 -march=i486"
866                 aros_kernel_ldflags="-melf_i386"
867                 aros_default_wbdepth=8
868                 gcc_target_cpu="i386"
869                 pci_hidd_target="hidd-pci-linux"
870                 android_tool_dir_prefix="x86"
871                 android_tool_prefix="i686-android-linux"
872                 android_ndk_arch="x86"
873                 ;;
874             *x86_64*)
875                 aros_target_cpu="x86_64"
876                 aros_object_format="elf_x86_64"
877                 aros_flavour="emulation"
878                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64 -D__linux__"
879                 aros_config_cflags="$aros_config_cflags -mno-red-zone -fno-omit-frame-pointer"
880                 aros_default_wbdepth=8
881                 pci_hidd_target="hidd-pci-linux"
882                 ;;
883             *powerpc*)
884                 aros_target_cpu="ppc"
885                 aros_object_format="elf32ppc"
886                 aros_flavour="emulation"
887                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
888                 aros_default_wbdepth=8
889                 gcc_target_cpu="ppc"
890                 ;;
891 # TODO
892 # Same as powerpc, but I need this for the nightly build to work again.
893 # Actually, the nightly should be made working with powerpc target.
894 # That just was too much work for the moment, another week or two.
895             *ppc*)
896                 aros_target_cpu="ppc"
897                 aros_object_format="elf32ppc"
898                 aros_flavour="emulation"
899                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
900                 aros_default_wbdepth=8
901                 gcc_target_cpu="ppc"
902                 ;;
903             *armhf*)
904                 aros_target_cpu="arm"
905                 target_cpu="arm"
906                 aros_object_format="armelf_linux_eabi"
907                 aros_flavour="emulation"
908                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Darm -D__linux__"
909                 gcc_target_cpu="arm"
910                 aros_config_cflags="$aros_config_cflags -fno-strict-aliasing -fno-omit-frame-pointer"
911                 aros_config_aflags="$aros_config_aflags -fno-strict-aliasing"
912                 aros_arch_libs="-laeabi"
913                 gcc_default_fpu="vfpv3-d16"
914                 gcc_default_float_abi="hard"
915                 android_tool_dir_prefix="arm-linux-androideabi"
916                 android_tool_prefix="arm-linux-androideabi"
917                 android_ndk_arch="arm"
918                 kernel_tool_prefix="arm-linux-gnueabihf-"
919                 ;;
920             *arm*)
921                 aros_target_cpu="arm"
922                 aros_object_format="armelf_linux_eabi"
923                 aros_flavour="emulation"
924                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Darm -D__linux__"
925                 gcc_target_cpu="arm"
926                 aros_config_cflags="$aros_config_cflags -fno-strict-aliasing -fno-omit-frame-pointer"
927                 aros_config_aflags="$aros_config_aflags -fno-strict-aliasing"
928                 aros_arch_libs="-laeabi"
929                 android_tool_dir_prefix="arm-linux-androideabi"
930                 android_tool_prefix="arm-linux-androideabi"
931                 android_ndk_arch="arm"
932                 kernel_tool_prefix="arm-linux-gnueabi-"
933                 ;;
934             *)
935                 AC_MSG_ERROR("Unknown CPU for Linux -- $target_cpu")
936                 ;;
937         esac
938         case "$aros_target_variant" in
939             android)
941                 dnl Not all Linux CPUs are supported by Android
942                 if test "$android_ndk_arch" = ""; then
943                     AC_MSG_ERROR("Unsupported CPU for Android -- $target_cpu")
944                 fi
946                 aros_default_wbwidth=320
947                 aros_default_wbheight=480
948                 if test "$aros_android_ndk" = "none"; then
949                     dnl Use standalone toolchain, don't adjust paths
950                     aros_kernel_cflags="-mandroid"
951                     aros_kernel_ldflags="-mandroid"
952                     CFLAGS="-mandroid"
953                 else
954                     export PATH="$aros_android_ndk/toolchains/$android_tool_dir_prefix-$target_tool_version/prebuilt/$android_build_os/bin:$PATH"
955                     aros_android_ndk="$aros_android_ndk/platforms/android-$aros_ndk_version/arch-$android_ndk_arch"
956                     aros_kernel_cflags="--sysroot $aros_android_ndk -mandroid"
957                     aros_kernel_ldflags="--sysroot $aros_android_ndk -mandroid"
958                     CFLAGS="$CFLAGS --sysroot $aros_android_ndk -mandroid"
959                     aros_kernel_includes="-isystem $aros_android_ndk/usr/include"
960                 fi
961                 need_x11=no
962                 dnl (Ab)use $(X11_HIDD_TARGET) as "Default display driver target"
963                 dnl in order not to fill mmakefiles with garbage
964                 x11_hidd_target=kernel-hidd-androidgfx-kobj
965                 # Disable implicit PIC mode
966                 aros_target_cflags="$aros_target_cflags -fno-pic"
967                 kernel_tool_prefix="$android_tool_prefix-"
968             ;;
969         esac
970     ;;
972     pc)
973         aros_target_arch="pc"
974         aros_shared_default="no"
975         target_bootloader="grub2"
976         case "$target_cpu" in
977             *i?86*)
978                 aros_target_cpu="i386"
980                 dnl If somebody hasn't already set the target object
981                 dnl format, then use this value. Mostly to support
982                 dnl FreeBSD cross-compilation.
983                 dnl TODO: Remove when we always use our compiler.
985                 if test "$aros_object_format" = "" ; then
986                     aros_object_format="elf_i386"
987                 fi
988                 aros_flavour="standalone"
989                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
990                 aros_config_cflags="$aros_config_cflags -m32 -march=i486"
991                 aros_kernel_cflags="$aros_kernel_cflags -m32 -march=i486"
992                 aros_config_aflags="$aros_config_aflags -m32 -march=i486"
993                 aros_config_ldflags="-m32 -march=i486"
994                 aros_kernel_ldflags="-melf_i386"
995                 aros_default_wbwidth=640
996                 aros_default_wbheight=480
997                 gcc_target_cpu="i386"
998                 ;;
999             *x86_64*)
1000                 aros_target_cpu="x86_64"
1001                 aros_serial_debug=1
1002                 if test "$aros_object_format" = "" ; then
1003                     aros_object_format="elf_x86_64"
1004                 fi
1005                 aros_flavour="standalone"
1006                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64"
1007                 aros_config_cflags="$aros_config_cflags -fno-asynchronous-unwind-tables -mno-red-zone -fno-omit-frame-pointer"
1008                 aros_kernel_ldflags=""
1009                 aros_default_wbwidth=640
1010                 aros_default_wbheight=480
1011                 ;;
1012             *)
1013                 AC_MSG_ERROR("Unknown native CPU -- $target_cpu")
1014                 ;;
1015         esac
1016         ;;
1018     prep)
1019         aros_target_arch="prep"
1020         aros_shared_default="no"
1021         aros_target_cpu="ppc"
1022         aros_object_format="elf32ppc"
1023         aros_flavour="ppcnative"
1024         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
1025         aros_kernel_ldflags=""
1026         aros_default_wbwidth=640
1027         aros_default_wbheight=480
1028         gcc_target_cpu="ppc"
1029         ;;
1031     freebsd*)
1032         aros_target_arch="freebsd"
1033         aros_target_family="unix"
1034         aros_target_cpu="i386"
1035         aros_flavour="emulation"
1036         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
1037         gcc_target_cpu="i386"
1039         aros_target_strip_flags="-x"
1040         ;;
1042     darwin*)
1043         aros_target_arch="darwin"
1044         aros_target_family="unix"
1045         aros_flavour="emulation"
1046         case "$target_cpu" in
1047             *i?86*)
1048                 aros_ios_platform="iPhoneSimulator"
1049                 aros_target_cpu="i386"
1050                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
1051                 aros_kernel_ldflags=""
1052                 aros_macosx_version="10.4"
1053                 aros_default_wbdepth=8
1054                 gcc_target_cpu="i386"
1055                 aros_object_format="elf_i386"
1056                 aros_kernel_ar_flags="-cr"
1057                 aros_target_strip_flags="-x"
1058                 kernel_tool_flags="-m32"
1059                 ;;
1060             *x86_64*)
1061                 aros_target_cpu="x86_64"
1062                 aros_object_format="elf_x86_64"
1063                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64"
1064                 aros_macosx_version="10.6"
1065                 aros_config_cflags="$aros_config_cflags -fno-omit-frame-pointer"
1066                 aros_kernel_cflags="-m64"
1067                 aros_kernel_ldflags="-m64"
1068                 aros_target_cflags="-mcmodel=large"
1069                 aros_default_wbdepth=8
1070                 aros_kernel_ar="ar"
1071                 aros_kernel_ar_flags="-cr"
1072                 aros_kernel_ld="ld"
1073                 aros_kernel_as="as"
1074                 aros_kernel_ranlib="ranlib"
1075                 aros_kernel_nm="nm"
1076                 aros_kernel_strip="strip"
1077                 kernel_tool_prefix="i686-apple-darwin10-"
1078                 ;;
1079             *ppc*)
1080                 aros_target_cpu="ppc"
1081                 aros_object_format="elf32ppc"
1082                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
1083                 aros_kernel_ldflags=""
1084                 aros_macosx_version="10.0"
1085                 aros_default_wbdepth=8
1086                 gcc_target_cpu="ppc"
1087                 aros_kernel_ar="ar"
1088                 aros_kernel_ar_flags="-cr"
1089                 aros_kernel_ld="ld -arch ppc"
1090                 aros_kernel_as="as -arch ppc"
1091                 aros_kernel_ranlib="ranlib -arch ppc"
1092                 aros_kernel_nm="nm -arch ppc"
1093                 aros_kernel_strip="strip -arch ppc"
1094                 kernel_tool_prefix="powerpc-apple-darwin10-"
1095                 ;;
1096             *arm*)
1097                 aros_ios_platform="iPhoneOS"
1098                 aros_target_cpu="arm"
1099                 aros_object_format="armelf_linux_eabi"
1100                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Darm"
1101                 aros_arch_libs="-laeabi"
1102                 aros_default_wbdepth=8
1103                 gcc_target_cpu="arm"
1104                 aros_kernel_ar="ar"
1105                 aros_kernel_ar_flags="-cr"
1106                 aros_kernel_ld="ld -arch arm"
1107                 aros_kernel_ranlib="ranlib -arch arm"
1108                 kernel_tool_prefix="arm-apple-darwin10-" 
1109                 export PATH="$aros_xcode_path/Platforms/$aros_ios_platform.platform/Developer/usr/bin:$PATH"
1110                 ;;
1111             *)
1112                 AC_MSG_ERROR("Unsupported target CPU for darwin hosted flavour -- $target_cpu")
1113                 ;;
1114         esac
1115         case "$aros_target_variant" in
1116             ios)
1117                 aros_ios_version="3.0"
1118                 aros_default_wbwidth=320
1119                 aros_default_wbheight=480
1120                 aros_ios_sdk="$aros_xcode_path/Platforms/$aros_ios_platform.platform/Developer/SDKs/$aros_ios_platform$aros_sdk_version.sdk"
1121                 kernel_tool_flags="$target_tool_flags -isysroot $aros_ios_sdk"
1122                 aros_kernel_includes="-isystem $aros_ios_sdk/usr/include"
1123                 need_x11=no
1124                 # This is here because it may depend on iOS or SDK version
1125                 aros_kernel_cflags="$aros_kernel_cflags -miphoneos-version-min=$aros_ios_version"
1126                 aros_kernel_ldflags="$aros_kernel_ldflags -miphoneos-version-min=$aros_ios_version"
1127                 aros_kernel_objcflags="-fobjc-abi-version=2 -fobjc-legacy-dispatch"
1128             ;;
1129             *)
1130                 aros_kernel_cflags="$aros_kernel_cflags -mmacosx-version-min=$aros_macosx_version"
1131                 aros_kernel_ldflags="$aros_kernel_ldflags -mmacosx-version-min=$aros_macosx_version"
1132             ;;
1133         esac
1134         ;;
1136     dragonfly*)
1137         aros_target_arch="dragonfly"
1138         aros_target_family="unix"
1139         aros_flavour="emulation"
1140         case "$target_cpu" in
1141             *i?86*)
1142                 aros_target_cpu="i386"
1143                 aros_object_format="elf_i386"
1144                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__DragonFly__"
1145                 ;;
1146             *x86_64*)
1147                 aros_config_cflags="$aros_config_cflags -fno-omit-frame-pointer"
1148                 aros_target_cpu="x86_64"
1149                 aros_object_format="elf_x86_64"
1150                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64 -D__DragonFly__"
1151                 ;;
1152             *)
1153                 AC_MSG_ERROR("Unknown CPU for DragonFly -- $target_cpu")
1154                 ;;
1155         esac
1156         ;;
1158     netbsd*)
1159         aros_target_arch="netbsd"
1160         aros_target_family="unix"
1161         case "$target_cpu" in
1162             *m68k*)
1163                 aros_target_cpu="m68k"
1164                 aros_object_format="m68kelf"
1165                 aros_flavour="emulcompat"
1166                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__NetBSD__"
1167                 gcc_target_cpu="mc68000"
1168                 ;;
1169             *i?86*)
1170                 aros_target_cpu="i386"
1171                 aros_object_format="elf_i386"
1172                 aros_flavour="emulation"
1173                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__NetBSD__"
1174                 aros_default_wbdepth=8
1175                 gcc_target_cpu="i386"
1176                 ;;
1177             *)
1178                 AC_MSG_ERROR("Unknown CPU for NetBSD -- $target_cpu")
1179                 ;;
1180         esac
1181         aros_target_genmap="-Wl,-M -Xlinker >"
1182         aros_flavour="emulation"
1183         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
1184         ;;   
1186     openbsd*)
1187         aros_target_arch="openbsd"
1188         aros_target_family="unix"
1189         case "$target_cpu" in
1190             *i?86*)
1191                 aros_target_cpu="i386"
1192                 aros_object_format="elf_i386"
1193                 aros_flavour="emulation"
1194                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__OpenBSD__"
1195                 gcc_target_cpu="i386"
1196                 ;;
1197             *)
1198                 AC_MSG_ERROR("Unknown CPU for OpenBSD -- $target_cpu")
1199                 ;;
1200         esac
1201         aros_target_genmap="-Wl,-M -Xlinker >"
1202         aros_target_nm_flags="-u"
1203         aros_flavour="emulation"
1204         ;;
1206     solaris*)
1207         aros_target_arch="solaris"
1208         aros_target_family="unix"
1209         case "$target_cpu" in
1210            *i?86*)
1211                aros_target_cpu="i386"
1212                aros_object_format="elf_i386"
1213                aros_flavour="emulation"
1214                aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__Solaris__"
1215                aros_default_wbdepth=8
1216                gcc_target_cpu="i386"
1217                ;;
1218             *sparc*)
1219                 aros_target_cpu="sparc"
1220                 aros_object_format="elf_sparc"
1221                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dsparc -D__Solaris__"
1222                 gcc_target_cpu="sparc"
1223                 ;;
1224             *)
1225                 AC_MSG_ERROR("Unknown CPU for Solaris -- $target_cpu")
1226                 ;;
1227         esac
1228         aros_config_cflags="$aros_config_cflags -D$aros_target_cpu"
1229         aros_flavour="emulation"
1230         ;;
1232     morphos*)
1233         aros_target_arch="morphos"
1234         aros_shared_default="no"
1235         aros_target_cpu="ppc"
1236         aros_object_format="elf_ppc"
1237         aros_flavour="nativecompat"
1238         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
1239         gcc_target_cpu="ppc"
1240         ;;
1242     sam440)
1243         aros_target_arch="sam440"
1244         aros_shared_default="no"
1245         aros_target_cpu="ppc"
1246         aros_object_format="elf32ppc"
1247         aros_flavour="ppcnative"
1248         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
1249         aros_kernel_ldflags=""
1250         aros_default_wbwidth=1024
1251         aros_default_wbheight=768
1252         aros_default_wbdepth=24
1253         aros_config_cflags="$aros_config_cflags -mcpu=440fp -mno-toc -fno-asynchronous-unwind-tables"
1254         gcc_target_cpu="powerpc"
1255         ;;
1257     efika)
1258         aros_target_arch="efika"
1259         aros_shared_default="no"
1260         aros_target_cpu="arm"
1261         aros_object_format="armelf_linux_eabi"
1262         aros_flavour="standalone"
1263         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Darm"
1264         aros_kernel_ldflags=""
1265         aros_default_wbwidth=1024
1266         aros_default_wbheight=600
1267         aros_arch_libs="-laeabi"
1268         gcc_default_cpu="armv7-a"
1269         gcc_default_fpu="vfpv3"
1270         gcc_default_float_abi="softfp"
1271         aros_config_cflags="$aros_config_cflags -mtune=cortex-a8 -fno-strict-aliasing"
1272         aros_config_aflags="$aros_config_aflags -mtune=cortex-a8 -fno-strict-aliasing"
1273         ;;
1274         
1275     chrp)
1276     aros_target_arch="chrp"
1277     aros_shared_default="no"
1278     aros_target_cpu="ppc"
1279     aros_object_format="elf32ppc"
1280     aros_flavour="ppcnative"
1281     aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
1282     aros_kernel_ldflags=""
1283     aros_default_wbwidth=640
1284     aros_default_wbheight=480
1285     aros_config_cflags="$aros_config_cflags -mno-toc -fno-asynchronous-unwind-tables"    
1286     gcc_target_cpu="powerpc"
1287         case "$aros_target_variant" in
1288             efika)
1289             aros_config_cflags="$aros_config_cflags -DBIG_ENDIAN_OHCI=1 -mcpu=603e"
1290             ;;
1291         esac
1292     ;;
1294     r*pi)
1295         aros_flavour="standalone"
1296         aros_target_arch="raspi"
1297         aros_target_cpu="arm"
1298         aros_object_format="armelf_linux_eabi"
1299         aros_shared_default="no"
1300         aros_arch_libs="-laeabi"
1302         gcc_default_cpu="armv6"
1303         gcc_default_cpu_tune="arm1176jzf-s"
1304         case "$target_cpu" in
1305             *armhf*)
1306                 gcc_default_fpu="vfp"
1307                 gcc_default_float_abi="hard"
1308                 ;;
1309             *arm*)
1310                 gcc_default_fpu="vfp"
1311                 gcc_default_float_abi="softfp"
1312                 ;;
1313             *)
1314                 AC_MSG_ERROR("Unknown CPU for RasPi $target_cpu")
1315                 ;;
1316         esac
1318         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Darm"
1319         aros_config_cflags="$aros_config_cflags -marm -Wno-error -fno-asynchronous-unwind-tables -fno-exceptions"
1320         aros_config_aflags="$aros_config_aflags -marm -Wno-error -fno-asynchronous-unwind-tables -fno-exceptions"
1321         aros_kernel_cflags="$aros_kernel_cflags -marm -Wno-error -fno-asynchronous-unwind-tables -fno-exceptions"
1322         aros_target_cflags="$aros_kernel_cflags -marm -Wno-error -fno-asynchronous-unwind-tables -fno-exceptions"
1323         ;;
1325     amiga*)
1326         aros_target_arch="amiga"
1327         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D_AMIGA -DAMIGA"
1328         aros_shared_default="no"
1330         case "$target_cpu" in
1331             *m68k*)
1332                 AC_ARG_ENABLE(amigaos_compliance,AC_HELP_STRING([--enable-amigaos-compliance=VERSION],[Enforce userspace AmigaOS compliance to a specific KickStart version (default=none).]),aros_amigaos_compliance="$enableval")
1333                 aros_enable_mmu=no
1334                 aros_target_cpu="m68k"
1335                 aros_object_format="m68kelf"
1336                 aros_flavour="standcompat"
1337                 gcc_target_cpu="m68000"
1338                 aros_config_cflags="$aros_config_cflags -fno-strict-aliasing -ffreestanding -fomit-frame-pointer -fbuiltin -Wno-volatile-register-var -Os -DNOLIBINLINE"
1339                 aros_config_aflags="$aros_config_aflags"
1340                 aros_target_strip_flags="-R.comment --strip-debug"
1341                 aros_default_wbwidth=640
1342                 aros_default_wbheight=256
1343                 aros_default_wbdepth=2
1344                 ;;
1345             *ppc*)
1346                 aros_cpu="ppc"
1347                 aros_flavour="native"
1348                 gcc_target_cpu="ppc"
1349                 ;;
1350             *)
1351                 AC_MSG_ERROR("Unknown CPU for Amiga $target_cpu")
1352                 ;;
1353         esac
1354         ;;
1356     mingw*)
1357         aros_target_arch="mingw32"
1358         aros_shared_default="no"
1359         aros_flavour="emulation"
1360         aros_shared_cflags=""
1361         need_crosstools="yes"
1362         need_dlopen="no"
1363         rescomp="windres"
1364         case "$target_cpu" in
1365             *i?86*)
1366                 aros_target_cpu="i386"
1367                 aros_object_format="elf_i386"
1368                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
1369                 aros_default_wbdepth=8
1370                 gcc_target_cpu="i386"
1372                 kernel_tool_prefix="i386-mingw32-"
1373                 ;;
1374             *x86_64*)
1375                 aros_target_cpu="x86_64"
1376                 aros_object_format="elf_x86_64"
1377                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64"
1378                 aros_config_cflags="$aros_config_cflags -fno-omit-frame-pointer"
1379                 aros_default_wbdepth=8
1380                 kernel_tool_prefix="x86_64-w64-mingw32-"
1381                 ;;
1382             *arm*)
1383                 aros_target_cpu="arm"
1384                 aros_object_format="armelf_linux_eabi"
1385                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Darm"
1386                 aros_arch_libs="-laeabi"
1387                 aros_default_wbdepth=8
1388                 gcc_target_cpu="arm"
1389                 gcc_default_float_abi="soft"
1390                 kernel_tool_prefix="arm-mingw32ce-"
1391                 aros_default_wbwidth=160
1392                 aros_default_wbheight=160
1393                 ;;
1394             *)
1395                 AC_MSG_ERROR("Unknown CPU for Mingw32 -- $target_cpu")
1396                 ;;
1397         esac
1398         if test $host_os = "cygwin"; then
1399                 aros_kernel_cflags="-mno-cygwin"
1400         fi
1401     ;;
1402     pp*)
1403         aros_target_arch="pp"
1404         aros_shared_default="no"
1405         case "$target_cpu" in
1406             *m68k*)
1407                 aros_target_cpu="m68k"
1408                 aros_object_format="m68kelf"
1409                 aros_flavour="palmnative"
1410                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
1411                 aros_default_wbwidth=160
1412                 aros_default_wbheight=160
1413                 aros_default_wbdepth=1
1414                 aros_target_ar_flags="cru"
1415                 aros_compiler_libs="-lgcc1"
1416                 aros_shared_default=no
1417                 aros_shared_cflags="-fpic"
1418                 aros_shared_aflags=""
1419                 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1420                 aros_kernel_ldflags="-Wl,-rpath,./lib"
1421                 aros_debug_cflags="$aros_symbols_debug  $aros_messages_debug"
1422                 aros_debug_aflags=""
1423                 aros_debug_ldflags="$aros_symbols_debug"
1424                 aros_mungwall_debug="0"
1425                 aros_modules_debug="0"
1426                 gcc_target_cpu="mc68000"
1427                 ignore_undefined_symbols="-ius"
1428                 ;;
1429            *)
1430                 AC_MSG_ERROR("Unknown CPU for PalmPilot -- $target_cpu")
1431                 ;;
1432         esac
1433         ;;
1435     mac*)
1436         aros_target_arch="mac"
1437         aros_shared_default="no"
1438         case "$target_cpu" in
1439             *m68k*)
1440                 aros_target_cpu="m68k"
1441                 aros_object_format="m68kelf"
1442                 aros_flavour="mac68knative"
1443                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
1444                 aros_default_wbwidth=512
1445                 aros_default_wbheight=384
1446                 aros_default_wbdepth=8
1447                 aros_target_ar_flags="cru"
1448                 aros_compiler_libs="-lgcc1"
1449                 aros_shared_default=no
1450                 aros_shared_cflags="-fpic"
1451                 aros_shared_aflags=""
1452                 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1453                 aros_kernel_ldflags="-Wl,-rpath,./lib"
1454                 aros_debug_cflags="$aros_symbols_debug $aros_messages_debug"
1455                 aros_debug_aflags=""
1456                 aros_debug_ldflags="$aros_symbols_debug"
1457                 aros_mungwall_debug="0"
1458                 aros_modules_debug="0"
1459                 gcc_target_cpu="mc68000"
1460                 ignore_undefined_symbols="-ius"
1461                 ;;
1462            *)
1463                 AC_MSG_ERROR("Unknown CPU for Mac68k -- $target_cpu")
1464                 ;;
1465         esac
1466         ;;
1468     *)
1469         AC_MSG_ERROR([Unsupported target architecture $target])
1470         ;;
1471 esac
1473 #-----------------------------------------------------------------------------
1474 crosstools_guess=yes
1476 AC_MSG_CHECKING([Kernel toolchain prefix])
1477 AC_ARG_WITH(kernel-toolchain-prefix,AC_HELP_STRING([--with-kernel-toolchain-prefix=...],[Specify crosscompile toolchain prefix for kernel objects]),[kernel_tool_prefix="$withval"])
1478 AC_MSG_RESULT($kernel_tool_prefix)
1480 AC_MSG_CHECKING([ELF toolchain prefix])
1481 AC_ARG_WITH(elf-toolchain-prefix,AC_HELP_STRING([--with-elf-toolchain-prefix=...],[Specify crosscompile toolchain prefix to wrap for AROS objects]),[elf_tool_prefix="$withval"
1482                                                  crosstools_guess=no])
1483 AC_MSG_RESULT($elf_tool_prefix)
1485 AC_MSG_CHECKING([AROS toolchain prefix])
1486 AC_ARG_WITH(aros-toolchain,AC_HELP_STRING([--with-aros-toolchain=PREFIX],[Specify prebuilt AROS toolchain]),[aros_tool_prefix="$withval"
1487                 crosstools_guess=no])
1488 if test "$aros_tool_prefix" = "yes" ; then
1489     aros_tool_prefix=$aros_target_cpu-aros-
1491 AC_MSG_RESULT($aros_tool_prefix)
1493 #-----------------------------------------------------------------------------
1494 #   Checking if we should build crosstools..
1495 AC_MSG_CHECKING([whether to build crosstools])
1496 AC_ARG_ENABLE(crosstools,AC_HELP_STRING([--disable-crosstools],[Do not build cross-compiler toolchain]),crosstools="$enableval",crosstools="$crosstools_guess")
1497 AC_MSG_RESULT($crosstools)
1499 if test "${crosstools}" = "yes"; then
1500     if test "${crosstools_guess}" = "no"; then
1501         AC_MSG_ERROR([Cannot build external toolchain if an external ELF or AROS toolchain is specified])
1502     fi
1505 AC_MSG_CHECKING([where to install the crosstools binaries])
1506 AC_ARG_WITH(aros-toolchain-install,AC_HELP_STRING([--with-aros-toolchain-install=DIR],[Where to install or search for cross tools binaries]),[aros_toolchain_install=$withval])
1507 if test "x$aros_toolchain_install" = "x"; then
1508     AROS_CROSSTOOLSDIR="$AROS_BUILDDIR_UNIX/bin/$aros_host_arch-$aros_host_cpu/tools/crosstools"
1509 else
1510     AROS_CROSSTOOLSDIR="$aros_toolchain_install"
1511     PATH="$AROS_CROSSTOOLSDIR:$PATH"
1513 AC_MSG_RESULT($AROS_CROSSTOOLSDIR)
1515 AC_MSG_CHECKING([whether to include Objective-C suppport])
1516 AC_ARG_ENABLE(objc,AC_HELP_STRING([--disable-objc],[Build without Objectve-C support]),objc="$enableval",objc="yes")
1517 AC_MSG_RESULT($objc)
1518 if test "x$objc" = "xyes"; then
1519     objc_target="objc"
1520 else
1521     objc_target="no-objc"
1524 # Now process extra architecture-specific options.
1525 # Currently this is implemented only for ARM. We can specify which minimum CPU and FPU to use,\
1526 # as well as floating-point ABI.
1527 case "$aros_target_cpu" in
1528 arm)
1529     dnl ARM defaults are: armv6 + vfp (unless overriden in per-target section above)
1530     if test "$gcc_default_cpu" = ""; then
1531         gcc_default_cpu="armv6"
1532     fi
1533     if test "$gcc_default_fpu" = ""; then
1534         gcc_default_fpu="vfp"
1535     fi
1536     if test "$gcc_default_float_abi" = ""; then
1537         gcc_default_float_abi="softfp"
1538     fi
1540     AC_MSG_CHECKING([Which minimum CPU to use])
1541     AC_ARG_WITH(cpu,AC_HELP_STRING([--with-cpu=<spec>],[Specify minumum CPU (default=$gcc_default_cpu).]),aros_gcc_cpu="$withval",aros_gcc_cpu=$gcc_default_cpu)
1542     AC_MSG_RESULT($aros_gcc_cpu)
1544     AC_MSG_CHECKING([Which minimum FPU to use])
1545     AC_ARG_WITH(fpu,AC_HELP_STRING([--with-fpu=<spec>],[Specify minumum FPU (default=$gcc_default_fpu).]),aros_gcc_fpu="$withval",aros_gcc_fpu=$gcc_default_fpu)
1546     AC_MSG_RESULT($aros_gcc_fpu)
1548     AC_MSG_CHECKING([Which floating point ABI to use])
1549     AC_ARG_WITH(float,AC_HELP_STRING([--with-float=<spec>],[Specify floating point ABI (default=$gcc_default_float_abi).]),aros_gcc_float_abi="$withval",aros_gcc_float_abi=$gcc_default_float_abi)
1550     AC_MSG_RESULT($aros_gcc_float_abi)
1552     aros_config_cflags="$aros_config_cflags -marm -mthumb-interwork -march=$aros_gcc_cpu -mfpu=$aros_gcc_fpu -mfloat-abi=$aros_gcc_float_abi -fno-asynchronous-unwind-tables -fno-exceptions"
1553     aros_config_aflags="$aros_config_aflags -marm -mthumb-interwork -march=$aros_gcc_cpu -mfpu=$aros_gcc_fpu -mfloat-abi=$aros_gcc_float_abi -fno-asynchronous-unwind-tables -fno-exceptions"
1554     ;;
1555 esac
1557 # Some formats need custom ELF specs.
1558 # For example for x86_64 it is needed in order for -m32 switch to work correctly.
1559 if test -f $SRCDIR/config/${aros_object_format}-specs.in; then
1560     elf_specs_in=config/${aros_object_format}-specs.in
1561 else
1562     elf_specs_in=config/elf-specs.in
1565 AC_MSG_CHECKING([what specific AROS gcc version to use])
1566 AC_ARG_WITH(aros-gcc,AC_HELP_STRING([--with-aros-gcc=VERSION],[Use aros-gcc-VERSION for building AROS]),aros_gcc_version="-$withval",aros_gcc_version="")
1567 AC_MSG_RESULT($aros_gcc_version)
1569 # Some compilers (ppc-elf-gcc is known to) have CPU defines in specs
1570 # Since we override specs, we may need to put these defines there
1571 if test "$gcc_target_cpu" != ""; then
1572     gcc_target_cpu="-D__${gcc_target_cpu}__"
1575 AC_MSG_CHECKING([where to download sourcecode for external ports])
1576 AC_ARG_WITH(portssources,AC_HELP_STRING([--with-portssources=DIR],[Where to download sourcecode for external ports]),with_portssrcdir=$withval,with_portssrcdir="default")
1577 if test "$with_portssrcdir" = "default"; then
1578     AROS_PORTSSRCDIR="$AROS_BUILDDIR_UNIX/bin/Sources"
1579 else
1580     AROS_PORTSSRCDIR="$with_portssrcdir"
1582 AC_MSG_RESULT($AROS_PORTSSRCDIR)
1584 AC_MSG_CHECKING([which bootloader to use])
1585 AC_ARG_WITH(bootloader,AC_HELP_STRING([--with-bootloader=NAME],[Use a specific bootloader]),target_bootloader=$withval,target_bootloader=$target_bootloader)
1586 if test "$target_bootloader" = "none"; then
1587     aros_target_bootloader=""
1588 else
1589     aros_target_bootloader="$target_bootloader"
1591 AC_MSG_RESULT($target_bootloader)
1593 AC_MSG_CHECKING([which icon-set to use])
1594 AC_ARG_WITH(iconset,AC_HELP_STRING([--with-iconset=NAME],[Use a specific Icon-set (default=Gorilla).]),target_iconset=$withval,target_iconset="default")
1595 if test "$target_iconset" = "default"; then
1596     aros_target_iconset="Gorilla"
1597     target_iconset="default (Gorilla)"
1598 else
1599     aros_target_iconset="$target_iconset"
1601 AC_MSG_RESULT($target_iconset)
1603 AC_MSG_CHECKING([which GUI Theme to use])
1604 AC_ARG_WITH(theme,AC_HELP_STRING([--with-theme=NAME],[Use a specific GUI Theme]),target_guitheme=$withval,target_guitheme="default")
1605 if test "$target_guitheme" = "default"; then
1606     aros_target_guitheme="Ice"
1607 else
1608     aros_target_guitheme="$target_guitheme"
1610 AC_MSG_RESULT($aros_target_guitheme)
1612 # Find out if we are cross-compiling (i.e. if we can't use the host compiler
1613 # for target code)
1614 cross_compiling=no
1616 dnl The first case is simple. If we are compiling for another CPU, we are cross-compiling for sure
1617 if test "$aros_host_cpu" != "$aros_target_cpu" ; then
1618     cross_compiling=yes
1621 dnl x86-64 toolchains can also produce i386 binaries, given -m32 flag.
1622 dnl The flag itself is given in per-target section, because some targets require to pass it
1623 dnl in a different manner, otherwise some tests fail.
1624 dnl TODO: Justify this.
1625 if test "$aros_host_cpu" == "x86_64" ; then
1626     if test "$aros_target_cpu" == "i386" ; then
1627         cross_compiling=no
1628     fi
1631 if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
1632     dnl For a hosted build we are cross-compiling if host OS differs from build OS.
1633     dnl TODO: This might get a little bit more tricky if we ever cross-compile ARM-Android-hosted
1634     dnl AROS on ARM Linux, or even vice versa (Linux-hosted ARM AROS building on ARM Android).
1635     dnl ARM ABIs of Linux and Android are not compatible (despite very close), so host_cc can't be
1636     dnl used to build bootstrap for target arch in either case.
1637     dnl For us Android is not a separate OS, but a variant of Linux, so both systems will be
1638     dnl identified as 'linux'. If this ever involves, we'll have to implement some additional check,
1639     dnl perhaps introducing aros_host_variant
1640     if test "$aros_host_arch" != "$aros_target_arch" ; then
1641         cross_compiling=yes
1642     fi
1643 else
1644     dnl For a native build we only care if our host_cc can produce static ELF files. If so, we can use
1645     dnl it as kernel_cc. If not, (e. g. we are on Windows or Darwin), we need a crosscompiler.
1646     if test "$host_cc_elf" = "no" ; then
1647         cross_compiling=yes
1648     fi
1651 if test "$cross_compiling" = "no" ; then
1652     kernel_tool_prefix=""
1653     if test "$host_cc_elf" = "yes" ; then
1654         elf_tool_prefix=""
1655     fi
1658 #######################################################################
1659 ## Compute what toolchains to use, and their paths                   ##
1660 #######################################################################
1662 # This takes, as input:
1663 #   crosstools             {yes,no}
1664 #   kernel_tool_version    {"",[version]}
1665 #   aros_gcc_version       {"",[version]}
1666 #   kernel_tool_prefix     {none,[some-arch-os-]}
1667 #   target_tool_prefix     ${aros_target_cpu}-aros-
1668 #   aros_tool_prefix       ${aros_target_cpu}-aros-
1670 # The output is
1671 #   aros_kernel_{cpp,cc,ar,ld,as,ranlib,nm,strip}
1672 #        Where the 'kernel' binaries are located
1673 #   orig_target_{cpp,cc,ar,ld,as,ranlib,nm,strip}
1674 #        Where the 'target' binaries are located
1675 #        (not the symlink farm - that is aros_target_*!)
1677 # The rules are:
1678 #   if crosstools then
1679 #      if kernel_tools_prefix = "no-kernel-prefix-"
1680 #          aros_kernel_* = crosstools cc paths
1681 #          aros_kernel_cc = elf cc wrapper around crosstools cc
1682 #      else
1683 #          VALIDATE(${kernel_tools_prefix}*)
1684 #          aros_kernel_* = ${kernel_tools_prefix}*
1685 #          if ${kernel_tools_prefix}cc is an AROS gcc
1686 #              aros_kernel_cc = ${kernel_tools_prefix}cc
1687 #          else
1688 #              aros_kernel_cc = elf cc wrapper around ${kernel_tools_prefix}cc
1689 #          fi
1690 #      fi
1692 #      orig_target_* = aros built crosstools
1693 #      orig_target_cc = elf cc wrapper around crosstools cc
1694 #   else
1695 #      VALIDATE(${kernel_tools_prefix}*)
1697 #      orig_target_* = aros_kernel_*
1698 #      if aros_kernel_cc is an AROS gcc
1699 #          orig_target_cc = aros_kernel_cc
1700 #      else
1701 #          orig_target_cc = aros cc wrapper around aros_kernel_cc
1702 #      fi
1703 #   fi
1705 target_tool_prefix="${aros_target_cpu}-aros-"
1707 AC_MSG_CHECKING([which kernel tools])
1708 AC_MSG_RESULT([$kernel_tool_prefix]);
1710 if test "$kernel_tool_prefix" = "none" ; then
1711     dnl ELF wrapper can be used only for native bootstrap
1712     if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
1713         AC_MSG_ERROR([--with-kernel-toolchain-prefix= is required for this arch])
1714     fi
1715 else
1716     # Kernel tools required - find them
1717     # Note that 'normally', aros_kernel_* overrides will be
1718     # empty, unless specified in the per-arch sections above.
1719     if test "x$aros_kernel_cpp" = "x"; then
1720         aros_kernel_cpp=${kernel_tool_prefix}cpp
1721     fi
1722     AROS_TOOL_KERNEL(aros_kernel_cpp,cpp,$aros_kernel_cpp${kernel_tool_version})
1723     AROS_REQUIRED(cpp,$aros_kernel_cpp)
1724     if test "x$aros_kernel_cc" = "x"; then
1725         aros_kernel_cc=${kernel_tool_prefix}gcc
1726     fi
1727     AROS_TOOL_KERNEL(aros_kernel_cc,cc,$aros_kernel_cc${kernel_tool_version})
1728     AROS_REQUIRED(cc,$aros_kernel_cc)
1729     if test "x$aros_kernel_cxx" = "x"; then
1730         aros_kernel_cxx=${kernel_tool_prefix}g++
1731     fi
1732     AROS_TOOL_KERNEL(aros_kernel_cxx,cxx,$aros_kernel_cxx${kernel_tool_version})
1733     # If it's set, make sure it's really there
1734     if test "x$aros_kernel_cxx" != "x" ; then
1735         AROS_REQUIRED(cxx,$aros_kernel_cxx)
1736     fi
1737     AROS_TOOL_KERNEL(aros_kernel_ld,ld,$aros_kernel_ld)
1738     AROS_REQUIRED(ld,$aros_kernel_ld)
1739     AROS_TOOL_KERNEL(aros_kernel_as,as,$aros_kernel_as)
1740     AROS_REQUIRED(as,$aros_kernel_as)
1741     AROS_TOOL_KERNEL(aros_kernel_ar,ar,$aros_kernel_ar)
1742     AROS_REQUIRED(ar,$aros_kernel_ar)
1743     AROS_TOOL_KERNEL(aros_kernel_ranlib,ranlib,$aros_kernel_ranlib)
1744     AROS_REQUIRED(ranlib,$aros_kernel_ranlib)
1745     AROS_TOOL_KERNEL(aros_kernel_nm,nm,$aros_kernel_nm)
1746     AROS_REQUIRED(nm,$aros_kernel_nm)
1747     AROS_TOOL_KERNEL(aros_kernel_strip,strip,$aros_kernel_strip)
1748     AROS_REQUIRED(strip,$aros_kernel_strip)
1750     # Objcopy and objdump are not required for the kernel
1751     # toolchain on many architectures.
1752     # So we'll look for them, but not make them strictly required.
1753     AROS_TOOL_KERNEL(aros_kernel_objcopy,objcopy,$aros_kernel_objcopy)
1754     AROS_TOOL_KERNEL(aros_kernel_objdump,objdump,$aros_kernel_objdump)
1755     if test "x${crosstools}" != "xyes" ; then
1756         AROS_REQUIRED(objcopy,$aros_kernel_objcopy)
1757         AROS_REQUIRED(objdump,$aros_kernel_objdump)
1758     fi
1761 AC_MSG_CHECKING([which target tools to use])
1762 if test "$crosstools" = "yes"; then
1763     AC_MSG_RESULT([$target_tool_prefix])
1764     # We are are building AROS crosstools
1765     tmp_tool_prefix="$AROS_CROSSTOOLSDIR/${target_tool_prefix}"
1766     orig_target_cc="${tmp_tool_prefix}gcc${aros_gcc_version}"
1767     orig_target_cxx="${tmp_tool_prefix}g++${aros_gcc_version}"
1768     orig_target_cpp="${tmp_tool_prefix}cpp"
1769     orig_target_ld="${tmp_tool_prefix}ld"
1770     orig_target_as="${tmp_tool_prefix}as"
1771     orig_target_ar="${tmp_tool_prefix}ar"
1772     orig_target_ranlib="${tmp_tool_prefix}ranlib"
1773     orig_target_nm="${tmp_tool_prefix}nm"
1774     orig_target_strip="${tmp_tool_prefix}strip"
1775     orig_target_objcopy="${tmp_tool_prefix}objcopy"
1776     orig_target_objdump="${tmp_tool_prefix}objdump"
1777 else
1778     # Determine whether AROS or ELF tools should be used
1779     if test "$aros_tool_prefix" = "none"; then
1780         aros_tool_prefix="${elf_tool_prefix}"
1781     fi
1783     AC_MSG_RESULT([$aros_tool_prefix])
1784     # We are *not* building AROS crosstools - use the AROS or ELF tools
1785     AROS_TOOL_TARGET(orig_target_cpp,cpp,${aros_tool_prefix}cpp)
1786     AROS_REQUIRED(cpp,$orig_target_cpp)
1787     AROS_TOOL_TARGET(orig_target_cc,gcc,${aros_tool_prefix}gcc)
1788     AROS_REQUIRED(cc,$orig_target_cc)
1789     AROS_TOOL_TARGET(orig_target_cxx,g++,${aros_tool_prefix}g++)
1790     AROS_REQUIRED(cxx,$orig_target_cxx)
1791     AROS_TOOL_TARGET(orig_target_ld,gcc,${aros_tool_prefix}ld)
1792     AROS_REQUIRED(ld,$orig_target_ld)
1793     AROS_TOOL_TARGET(orig_target_as,as,${aros_tool_prefix}as)
1794     AROS_REQUIRED(as,$orig_target_as)
1795     AROS_TOOL_TARGET(orig_target_ar,ar,${aros_tool_prefix}ar)
1796     AROS_REQUIRED(ar,$orig_target_ar)
1797     AROS_TOOL_TARGET(orig_target_ranlib,ar,${aros_tool_prefix}ranlib)
1798     AROS_REQUIRED(ranlib,$orig_target_ranlib)
1799     AROS_TOOL_TARGET(orig_target_nm,nm,${aros_tool_prefix}nm)
1800     AROS_REQUIRED(nm,$orig_target_nm)
1801     AROS_TOOL_TARGET(orig_target_strip,strip,${aros_tool_prefix}strip)
1802     AROS_REQUIRED(strip,$orig_target_strip)
1803     AROS_TOOL_TARGET(orig_target_objcopy,objcopy,${aros_tool_prefix}objcopy)
1804     AROS_REQUIRED(objcopy,$orig_target_objcopy)
1805     AROS_TOOL_TARGET(orig_target_objdump,objdump,${aros_tool_prefix}objdump)
1806     AROS_REQUIRED(objdump,$orig_target_objdump)
1809 if test "$kernel_tool_prefix" = "none" ; then
1810     # No kernel tools specified
1811     # Assume target tools == kernel tools with ELF wrapper
1812     aros_kernel_cc=$orig_target_cc
1813     aros_kernel_cxx=$orig_target_cxx
1814     aros_kernel_cpp=$orig_target_cpp
1815     aros_kernel_ld=$orig_target_ld
1816     aros_kernel_as=$orig_target_as
1817     aros_kernel_ar=$orig_target_ar
1818     aros_kernel_ranlib=$orig_target_ranlib
1819     aros_kernel_nm=$orig_target_nm
1820     aros_kernel_strip=$orig_target_strip
1821     aros_kernel_objcopy=$orig_target_objcopy
1822     aros_kernel_objdump=$orig_target_objdump
1823     use_kernel_cc_wrapper=yes
1826 # At this point, all aros_kernel_* and aros_target_* 
1827 # tools should be set up correctly
1829 CC="$aros_kernel_cc $kernel_tool_flags"
1830 CPP="$aros_kernel_cpp"
1832 #-----------------------------------------------------------------------------
1834 # Disable pointer-signedness warnings if the compiler recognises the option
1836 AC_MSG_CHECKING([whether ${CC} accepts -Wno-pointer-sign])
1837 save_cflags="$CFLAGS"
1838 if test "$crosstools" != "yes" ; then
1839     CFLAGS="$CFLAGS -Wno-pointer-sign"
1840     AC_TRY_COMPILE(,, use_no_sign_warning="yes", use_no_sign_warning="no")
1841 else
1842     # we do know it is supported for the smallest version of gcc we are going to build
1843     # we assume it's also supported by later versions
1844     use_no_sign_warning=yes
1846 AC_MSG_RESULT($use_no_sign_warning)
1847 if test "x-$use_no_sign_warning" = "x-yes" ; then
1848     aros_config_cflags="$aros_config_cflags -Wno-pointer-sign"
1850 CFLAGS="$save_cflags"
1852 #-----------------------------------------------------------------------------
1854 # Find all the tools we need to compile. This could be cross-compiling
1855 # though! If that is the case we use the GNU form of the target and
1856 # simply add this to the front of the binary name. This is rather simple,
1857 # but it should work under most circumstances.
1859 # The default tools are to use the same as the host, but only if the
1860 # host and target CPU are the same. With GCC this is normally enough.
1863 aros_cc_pre=""
1864 aros_shared_ld="$aros_host_ld"
1866 aros_target_mkdep="$aros_host_mkdep"
1868 # The default tools executables to be linked to.
1869 if test "$rescomp" != ""; then
1870     AC_PATH_PROG(aros_kernel_rescomp,${kernel_tool_prefix}$rescomp)
1871     AROS_REQUIRED($rescomp,$aros_kernel_rescomp)
1874 # Set up the sources for the symlink farm
1875 if test "$crosstools" = "yes"; then
1876     crosstools_target=tools-crosstools
1879 aros_kernel_cc="$aros_kernel_cc $kernel_tool_flags"
1880 aros_kernel_ar="$aros_kernel_ar $aros_kernel_ar_flags"
1883 aros_hostcfg_dir="bin/${aros_host_arch}-${aros_host_cpu}/gen/config"
1884 aros_targetcfg_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/config"
1885 aros_inc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/AROS/Development/include/aros"
1886 aros_gendir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen"
1887 aros_geninc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/include/aros"
1888 aros_tools_dir="bin/${aros_host_arch}-${aros_host_cpu}/tools"
1889 aros_scripts_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/scripts"
1891 # aros_cc_pre is a variable that is added to the front of the compiler name
1892 # in the generated aros-gcc shell script. We need this to enable the cache
1893 # to work across cleaned builds. Also, support DISTCC using the correct
1894 # environment variable.
1897 if test "x${DISTCC}" != "x" ; then
1898     if test "x${CCACHE}" != "x" ; then
1899         aros_cc_pre="env CCACHE_PREFIX=${DISTCC} ${CCACHE} "
1900     else
1901         aros_cc_pre="${DISTCC} "
1902     fi
1903 else
1904     if test "x${CCACHE}" != "x" ; then
1905         aros_cc_pre="${CCACHE} "
1906     fi
1909 prefix="${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-"
1911 AC_SUBST(aros_target_nostdinc_cflags,-nostdinc)
1912 AC_SUBST(aros_target_nostartup_ldflags,-nostartfiles)
1913 AC_SUBST(aros_target_nix_ldflags,-nix)
1914 AC_SUBST(aros_target_detach_ldflags,-detach)
1915 AC_SUBST(aros_target_nostdlib_ldflags,-nostdlib)
1917 # Target tools
1918 if test "$crosstools" != "yes"; then
1919     if test "$GCC" = "yes"; then
1920         aros_target_cc_path=`$orig_target_cc -print-search-dirs | grep "programs: =" | cut -c 12-`
1921     fi
1922 else
1923     # We do not know which gcc version we are going to build and what we need to know
1924     # here is different for different versions so this will be set later during the
1925     # build of crosstools.
1926     aros_target_cc_path=@aros_target_cc_path@
1928 aros_target_cpp="${prefix}cpp"
1929 aros_target_cc="${prefix}gcc"
1930 aros_target_cxx="${prefix}g++"
1931 aros_target_as="${prefix}as"
1932 aros_target_ld="${prefix}ld"
1933 aros_target_ar="${prefix}ar $aros_target_ar_flags"
1934 aros_target_objcopy="${prefix}objcopy"
1935 aros_target_objdump="${prefix}objdump"
1936 aros_target_ranlib="${prefix}ranlib $aros_target_ranlib_flags"
1937 aros_target_nm="${prefix}nm $aros_target_nm_flags"
1938 aros_target_strip="${prefix}strip"
1939 aros_plain_nm="${prefix}nm"
1940 aros_plain_ar="${prefix}ar"
1942 AC_ARG_ENABLE(includes,
1943 AC_HELP_STRING([--enable-includes=dir],[Alternative system include directory]),
1944 [aros_target_incl=$enable_includes], [aros_target_incl=`$aros_kernel_cc -print-sysroot`/`$aros_kernel_cc --print-sysroot-headers-suffix 2>/dev/null || echo usr/include`])
1946 if test "$aros_kernel_includes" = ""; then
1947     if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
1948         aros_kernel_includes="-isystem $aros_target_incl"
1949     fi
1952 if test "$aros_kernel_includes" != "" ; then
1953     dnl find out about the kernel cc's include path
1954     AC_MSG_CHECKING([for the kernel compiler's include path])
1955     if test "$aros_kernel_cc_includes" = "" ; then
1956         # Try to guess where the directory is.
1957         aros_kernel_cc_includes=`dirname \`${aros_kernel_cc} ${aros_kernel_cflags} -print-libgcc-file-name\``/include
1958         if test -d $aros_kernel_cc_includes; then
1959             # Check if there is also an include-fixed directory and add it
1960             # to kernel compiler's include path as it may contain some of
1961             # the headers we need.
1962             if test -d "$aros_kernel_cc_includes"-fixed; then
1963                 aros_kernel_cc_includes+=" -isystem $aros_kernel_cc_includes"-fixed
1964             fi
1965             # Check for specific includes directory. Neede for Ubuntu 11.10
1966             if test -d "/usr/include/i386-linux-gnu"; then
1967                 aros_kernel_cc_includes+=" -isystem /usr/include/i386-linux-gnu"
1968             fi
1969         else
1970             # The directory doesn't exist, we need to do some more work.
1971             aros_kernel_cc_includes=${PWD}/${aros_gendir}/cc_include
1973             # These are the headers we're looking for.
1974             headers="limits.h mmintrin.h stdbool.h syslimits.h float.h \
1975                      stddef.h xmmintrin.h iso646.h stdarg.h unwind.h   \
1976                      zutil.h stdint.h"
1978             dirs=
1979             for h in $headers; do
1980                 # Which other headers are needed by each of the above?
1981                 deps=$(echo "#include <$h>" | \
1982                        $aros_kernel_cc -E -M - 2>/dev/null | \
1983                        sed 's/^.*://; s/\\$/ /g; s/[[ \t]]\+/ /g')
1985                 # Copy all the needed headers to a directory beneath gendir.
1986                 for d in $deps; do
1987                     h=$(basename $d)
1988                     dir=${aros_kernel_cc_includes}$(echo $(dirname $d) | \
1989                                                 sed -n "s,^.*/include\(/.*\),\1,p")
1990                     ! test -d $dir && mkdir -p $dir
1991                     ! test -f $dir/$h && { cp $d $dir; chmod u+w $dir/$h; }
1992                 done
1993             done            
1994         fi
1995     fi
1996     AC_MSG_RESULT($aros_kernel_cc_includes)
1997     # Adding -nostdinc to kernel includes as they are always used together.
1998     aros_kernel_includes="$aros_kernel_includes $aros_target_nostdinc_cflags -isystem $aros_kernel_cc_includes"
2001 if test "$crosstools" != "yes"; then
2002     dnl find out about the target cc's include path
2003     AC_MSG_CHECKING([for the target compiler's include path])
2004     if test "$aros_target_cc_includes" = "" ; then
2005         #try to guess where the directory is
2006         aros_target_cc_includes=`dirname \`${orig_target_cc} -print-libgcc-file-name\``/include
2007         if ! test -d $aros_target_cc_includes; then
2008             #the directory doesn't exist, we need to do some more work
2009             aros_target_cc_includes=${PWD}/${aros_gendir}/cc_include
2010         
2011             #these are the headers we're looking for
2012             headers="limits.h mmintrin.h stdbool.h syslimits.h float.h \
2013                     stddef.h xmmintrin.h iso646.h stdarg.h unwind.h   \
2014                     zutil.h"
2016             dirs=
2017             for h in $headers; do
2018                 #which other headers each of the above headers needs?
2019                 deps=$(echo "#include <$h>" | \
2020                     $orig_target_cc -E -M - 2>/dev/null | \
2021                     sed 's/^.*://; s/\\$/ /g; s/[[ \t]]\+/ /g')
2022             
2023                 #copy all the needed headers to a directory beneath gendir
2024                 for d in $deps; do
2025                     h=$(basename $d)
2026                     dir=${aros_target_cc_includes}$(echo $(dirname $d) | \
2027                                                 sed -n "s,^.*/include\(/.*\),\1,p")
2028                     ! test -d $dir && mkdir -p $dir
2029                     ! test -f $dir/$h && { cp $d $dir; chmod u+w $dir/$h; }
2030                 done
2031             done
2032         fi
2033     fi
2034     AC_MSG_RESULT($aros_target_cc_includes)
2035 else
2036     # We do not know which gcc version we are going to build and what we need to know
2037     # here is different for different versions so this will be set later during the
2038     # build of crosstools.
2039     aros_target_cc_includes=@aros_target_cc_includes@
2043 # For GCC < 4.0 -I- is used for giving the search path for '#include "..."'
2044 # On GCC >= 4.0 -iquote should be used
2047 save_cc="$CC"
2048 save_cflags="$CFLAGS"
2049 CFLAGS="-iquote."
2050 AC_MSG_CHECKING([whether ${CC} accepts -iquote])
2051 if test "x-$crosstools" != "x-yes"; then
2052     AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
2053 else
2054     # we do know it is supported for the smallest version of gcc we are going to build
2055     # we assume it's also supported by later versions
2056     has_iquote=yes
2058 AC_MSG_RESULT($has_iquote)
2059 if test "x-$has_iquote" = "x-yes" ; then
2060     host_cflags_iquote=-iquote
2061     host_cflags_iquote_end=
2062 else
2063     host_cflags_iquote=-I
2064     host_cflags_iquote_end=-I-
2066 kernel_cflags_iquote=$host_cflags_iquote
2067 kernel_cflags_iquote_end=$host_cflags_iquote_end
2068 if test "x-$cross_compiling" = "x-yes"; then
2069     CC="$aros_kernel_cc"
2070     AC_MSG_CHECKING([whether ${CC} accepts -fno-stack-protector])
2071     if test "x-$crosstools" != "x-yes"; then
2072         AC_TRY_COMPILE(,, use_no_stack_protector="yes", use_no_stack_protector="no")
2073     else
2074         # we do know it is supported for the smallest version of gcc we are going to build
2075         # we assume it's also supported by later versions
2076         use_no_stack_protector=yes
2077     fi
2078     AC_MSG_RESULT($use_no_stack_protector)
2079     AC_MSG_CHECKING([whether ${CC} accepts -iquote])
2080     if test "x-$crosstools" != "x-yes"; then
2081         AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
2082     else
2083         # we do know it is supported for the smallest version of gcc we are going to build
2084         # we assume it's also supported by later versions
2085         has_iquote=yes
2086     fi
2087     AC_MSG_RESULT($has_iquote)
2088     if test "x-$has_iquote" = "x-yes" ; then
2089         kernel_cflags_iquote=-iquote
2090         kernel_cflags_iquote_end=
2091     else
2092         kernel_cflags_iquote=-I
2093         kernel_cflags_iquote_end=-I-
2094     fi
2096 aros_cflags_iquote=$kernel_cflags_iquote
2097 aros_cflags_iquote_end=$kernel_cflags_iquote_end
2098 if test "$orig_target_cc" != "$aros_kernel_cc"; then
2099     CC="$orig_target_cc"
2100     AC_MSG_CHECKING([whether ${CC} accepts -iquote])
2101     if test "x-$crosstools" != "x-yes"; then
2102         AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
2103     else
2104         # we do know it is supported for the smallest version of gcc we are going to build
2105         # we assume it's also supported by later versions
2106         has_iquote=yes
2107     fi
2108     AC_MSG_RESULT($has_iquote)
2109     if test "x-$has_iquote" = "x-yes" ; then
2110         aros_cflags_iquote=-iquote
2111         aros_cflags_iquote_end=
2112     else
2113         aros_cflags_iquote=-I
2114         aros_cflags_iquote_end=-I-
2115     fi
2117 if test "x-$use_no_stack_protector" = "x-yes" ; then
2118     aros_kernel_cflags="$aros_kernel_cflags -fno-stack-protector"
2122 #-----------------------------------------------------------------------------
2124 # Check if the target compiler supports some options used for delinting:
2125 #  -Wunused-but-set-variable
2126 #  -Warray-bounds
2127 #  -Wenum-compare
2128 #  -Wstrict-overflow
2129 #  -Wformat-security
2131 if test "x-$crosstools" != "x-yes"; then
2132     if test "$orig_target_cc" != "$aros_kernel_cc"; then
2133         CC="$orig_target_cc"
2134     fi
2135     AC_MSG_CHECKING([whether ${CC} accepts -Wunused-but-set-variable])
2136     CFLAGS=-Wunused-but-set-variable
2137     AC_TRY_COMPILE(,, aros_unused_but_set_variable="yes", aros_unused_but_set_variable="no")
2138     AC_MSG_RESULT($aros_unused_but_set_variable)
2139     if test "x-$aros_unused_but_set_variable" = "x-yes" ; then
2140         aros_cflags_unused_but_set_variable=-Wno-unused-but-set-variable
2141     fi
2143     AC_MSG_CHECKING([whether ${CC} accepts -Warray-bounds])
2144     CFLAGS=-Warray-bounds
2145     AC_TRY_COMPILE(,, aros_array_bounds="yes", aros_array_bounds="no")
2146     AC_MSG_RESULT($aros_array_bounds)
2147     if test "x-$aros_array_bounds" = "x-yes" ; then
2148         aros_cflags_array_bounds=-Wno-array-bounds
2149     fi
2151     AC_MSG_CHECKING([whether ${CC} accepts -Wenum-compare])
2152     CFLAGS=-Wenum-compare
2153     AC_TRY_COMPILE(,, aros_enum_compare="yes", aros_enum_compare="no")
2154     AC_MSG_RESULT($aros_enum_compare)
2155     if test "x-$aros_enum_compare" = "x-yes" ; then
2156         aros_cflags_enum_compare=-Wno-enum-compare
2157     fi
2159     AC_MSG_CHECKING([whether ${CC} accepts -Wstrict-overflow])
2160     CFLAGS=-Wstrict-overflow
2161     AC_TRY_COMPILE(,, aros_strict_overflow="yes", aros_strict_overflow="no")
2162     AC_MSG_RESULT($aros_strict_overflow)
2163     if test "x-$aros_strict_overflow" = "x-yes" ; then
2164         aros_cflags_strict_overflow=-Wno-strict-overflow
2165     fi
2167     AC_MSG_CHECKING([whether ${CC} accepts -Wformat-security])
2168     CFLAGS=-Wformat-security
2169     AC_TRY_COMPILE(,, aros_format_security="yes", aros_format_security="no")
2170     AC_MSG_RESULT($aros_format_security)
2171     if test "x-$aros_format_security" = "x-yes" ; then
2172         aros_cflags_format_security=-Wno-format-security
2173     fi
2174 else
2175     # We do not know which gcc version we are going to build and what we need to know
2176     # here is different for different versions so this will be set later during the
2177     # build of crosstools.
2178     aros_cflags_unused_but_set_variable=@aros_cflags_unused_but_set_variable@
2179     aros_cflags_array_bounds=@aros_cflags_array_bounds@
2180     aros_cflags_enum_compare=@aros_cflags_enum_compare@
2181     aros_cflags_strict_overflow=@aros_cflags_strict_overflow@
2182     aros_cflags_format_security=@aros_cflags_format_security@
2185 #-----------------------------------------------------------------------------
2187 # Check if we can explicitly choose older version of symbol hashing
2189 CFLAGS="save_cflags -Wl,--hash-style=sysv"
2190 CC="$aros_kernel_cc"
2191 AC_MSG_CHECKING([whether ${CC} accepts -Wl,--hash-style=sysv])
2192 AC_TRY_LINK(,, use_hash_style="yes", use_hash_style="no")
2193 AC_MSG_RESULT($use_hash_style)
2194 if test "x-$use_hash_style" = "x-yes" ; then
2195     aros_kernel_cflags="$aros_kernel_cflags -Wl,--hash-style=sysv"
2197 CC="$save_cc"
2198 CFLAGS="$save_cflags"
2200 AC_SUBST(host_cflags_iquote)
2201 AC_SUBST(host_cflags_iquote_end)
2202 AC_SUBST(kernel_cflags_iquote)
2203 AC_SUBST(kernel_cflags_iquote_end)
2204 AC_SUBST(aros_cflags_iquote)
2205 AC_SUBST(aros_cflags_iquote_end)
2208 dnl Check if user specified --with-resolution=XRESxYRESxDEPTH
2209 AC_MSG_CHECKING([for default resolution of WBScreen])
2210 AC_ARG_WITH(resolution,AC_HELP_STRING([--with-resolution=XRESxYRESxDEPTH],[Default resolution of the initial WorkbenchScreen]),resolution=$withval,resolution=none)
2211 # We require an argument, so map --with/--without ("yes"/"no") to "none" specified
2212 if test "$resolution" = "yes" ; then
2213     resolution="none"
2215 if test "$resolution" = "no" ; then
2216     resolution="none"
2218 if test "$resolution" != "none" ; then
2219     aros_default_wbwidth=`echo $resolution | cut -d'x' -f1`
2220     aros_default_wbheight=`echo $resolution | cut -d'x' -f2`
2221     aros_default_wbdepth=`echo $resolution | cut -d'x' -f3`
2223 AC_MSG_RESULT($aros_default_wbwidth x $aros_default_wbheight x $aros_default_wbdepth)
2224 aros_cv_default_wbwidth=$aros_default_wbwidth
2225 aros_cv_default_wbheight=$aros_default_wbheight
2226 aros_cv_default_wbdepth=$aros_default_wbdepth
2228 dnl See if the user wants the serial debug output for native flavour
2229 AC_MSG_CHECKING([if serial debug is enabled])
2230 AC_ARG_WITH(serial-debug,AC_HELP_STRING([--with-serial-debug],[Enable serial debug output in native (default=no)]),serial_debug=$withval,serial_debug=none)
2231 if test "$aros_serial_debug" = 0 ; then
2232     serial_debug_forced=""
2233     if test "$serial_debug" = "yes" ; then
2234         serial_debug="1"
2235     fi
2236     if test "$serial_debug" = "no" ; then
2237         serial_debug="none"
2238     fi
2239 else
2240     serial_debug_forced="(forced)"
2241     serial_debug=$aros_serial_debug
2243 if test "$serial_debug" != "none" ; then
2244     aros_serial_debug=$serial_debug
2245     AC_MSG_RESULT($serial_debug_forced on port $serial_debug)
2246 else
2247     AC_MSG_RESULT(no)
2250 dnl See if the user wants the palm debug output hack for palm native flavour
2251 AC_MSG_CHECKING([if palm debug hack is enabled])
2252 AC_ARG_ENABLE(palm_debug_hack,AC_HELP_STRING([--enable-palm-debug-hack],[Enable palm debug output hack in palm native (default=no)]),palm_debug_hack="yes",palm_debug_hack="no")
2253 if test "$palm_debug_hack" = "yes" ; then
2254     aros_palm_debug_hack="1"
2256 AC_MSG_RESULT($palm_debug_hack)
2258 dnl See if dev wants the usb3.0 code
2259 AC_MSG_CHECKING([if usb3.0 code is enabled])
2260 AC_ARG_ENABLE(usb30_code,AC_HELP_STRING([--enable-usb30-code],[Enable usb3.0 code (default=no)]),usb30_code="yes",usb30_code="no")
2261 if test "$usb30_code" = "yes" ; then
2262     aros_config_cflags="$aros_config_cflags -DAROS_USB30_CODE"
2263     aros_kernel_cflags="$aros_kernel_cflags -DAROS_USB30_CODE"
2265 AC_MSG_RESULT($usb30_code)
2267 dnl See if the user wants nesting supervisor activated for unix flavour
2268 AC_MSG_CHECKING([if nesting supervisor support is enabled])
2269 AC_ARG_ENABLE(nesting_supervisor,AC_HELP_STRING([--enable-nesting-supervisor],[Enable nesting supervisor support in unix (default=no)]),nesting_supervisor="yes",nesting_supervisor="no")
2270 if test "$nesting_supervisor" = "yes" ; then
2271     aros_nesting_supervisor="1"
2273 AC_MSG_RESULT($nesting_supervisor)
2275 dnl See if the user wants to disable MMU support
2276 dnl This can be overriden on per-target basis,
2277 dnl set $aros_enable_mmu to "yes" or "no" to do this
2278 if test "$aros_enable_mmu" = "" ; then
2279     AC_MSG_CHECKING([if MMU support is enabled])
2280     dnl Enabled by default
2281     AC_ARG_ENABLE(mmu,AC_HELP_STRING([--disable-mmu],[Disable MMU support (default=enabled)]),aros_enable_mmu=$enableval,aros_enable_mmu="yes")
2282     if test "$aros_enable_mmu" = "" ; then
2283         aros_enable_mmu="yes"
2284     fi
2285     AC_MSG_RESULT($aros_enable_mmu)
2287 if test "$aros_enable_mmu" = "no" ; then
2288     aros_enable_mmu="0"
2289 else
2290     aros_enable_mmu="1"
2292     
2294 dnl things specifically required for hosted flavours
2295 if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
2297     if test "x-$need_dlopen" != "x-no" ; then
2298       save_libs="$LIBS"
2299       LIBS=""
2300       dnl some kind of dynamic library access system is required for hostlib.resource
2301       AC_CHECK_FUNC(dlopen, have_dl="yes", have_dl="no")
2302       if test "x-$have_dl" = "x-no" ; then
2303           AC_CHECK_LIB(dl, dlopen, [have_dl="yes"
2304                                     aros_host_ldflags="$aros_host_ldflags -ldl"],
2305                                     have_dl="no")
2306       fi
2307       if test "x-$have_dl" = "x-no" ; then
2308           AC_MSG_ERROR([dlopen() dynamic linker functions not available])
2309       fi
2310       LIBS="$save_libs"
2311     fi
2314     dnl x11 hidd
2315     AC_ARG_ENABLE(x11_hidd, AC_HELP_STRING([--enable-x11-hidd],
2316                                            [build X11 hidd for hosted (default=auto)]),
2317                                            x11_hidd="$enableval",
2318                                            x11_hidd="$need_x11")
2319     case "x-$x11_hidd" in
2320         x-yes|x-no|x-auto)                 ;;
2321         *)                 x11_hidd="$need_x11" ;;
2322     esac
2324     ENABLE_X11=0
2326     dnl they want it
2327     if test "x-$x11_hidd" != "x-no" ; then
2329         dnl find x11 stuff
2330         AC_PATH_X
2332         x_cflags=
2333         for path in $x_libraries
2334         do
2335             x_cflags="$x_cflags -L$path"
2336         done
2338         for path in $x_includes
2339         do
2340             x_cflags="$x_cflags -I$path"
2341         done
2342         
2343         if test "x-$no_x" = "x-yes" ; then
2345             dnl didn't find it
2346             if test "x-$x11_hidd" != "x-auto" ; then
2347                 dnl and they explicitly asked for it, bail out
2348                 AC_MSG_ERROR([X11 libs/headers not found, cannot build X11 hidd as requested])
2349             fi
2350         
2351         else
2352             dnl found it, setup the metatarget
2353             x11_hidd_target=kernel-x11gfx-kobj
2354             ENABLE_X11=1
2356             dnl setup shared memory extensions
2357             AC_ARG_ENABLE(x11_shm, AC_HELP_STRING([--enable-x11-shm],
2358                                                   [use X11 shared memory (default=auto)]),
2359                                                   x11_hidd_shm="$enableval",
2360                                                   x11_hidd_shm="auto")
2361             case "x-$x11_hidd_shm" in
2362                 x-yes|x-no|x-auto)                     ;;
2363                 *)                 x11_hidd_shm="auto" ;;
2364             esac
2366             have_xshm=no
2368             dnl they want it
2369             if test "x-$x11_hidd_shm" != "x-no" ; then
2371                 dnl system shm headers
2372                 AC_CHECK_HEADERS(sys/ipc.h)
2373                 AC_CHECK_HEADERS(sys/shm.h)
2375                 dnl got them
2376                 if test "x-$ac_cv_header_sys_ipc_h" = "x-yes" -a "x-$ac_cv_header_sys_shm_h" = "x-yes" ; then
2378                     dnl make sure X libs have shm functions
2379                     save_cflags="$CFLAGS"
2380                     CFLAGS="$CFLAGS $x_cflags"
2381                     AC_CHECK_LIB(Xext, XShmQueryExtension, have_xshm=yes)
2382                     CFLAGS="$save_cflags"
2383                 fi
2384             fi
2386             dnl detection done, prepare output
2387             if test "x-$have_xshm" = "x-yes" ; then
2388                 dnl we can do shm
2389                 DO_XSHM_SUPPORT="1"
2390             elif test "x-$x11_hidd_shm" = "x-yes" ; then
2391                 dnl they explicitly asked for it, but we can't do it
2392                 AC_MSG_ERROR([X11 has no support for shared memory, cannot enable it as requested])
2393             else
2394                 dnl otherwise just disable it
2395                 DO_XSHM_SUPPORT="0"
2396             fi
2398             
2399             dnl setup vidmode (fullscreen) extensions
2400             AC_ARG_ENABLE(x11_vidmode, AC_HELP_STRING([--enable-x11-vidmode],
2401                                                       [use X11 vidmode extension (default=auto)]),
2402                                                       x11_hidd_vidmode="$enableval",
2403                                                       x11_hidd_vidmode="auto")
2404             case "x-$x11_hidd_vidmode" in
2405                 x-yes|x-no|x-auto)                         ;;
2406                 *)                 x11_hidd_vidmode="auto" ;;
2407             esac
2409             have_vidmode=no
2411             dnl they want it
2412             if test "x-$x11_hidd_vidmode" != "x-no" ; then
2414                 dnl make sure X libs have vidmode functions
2415                 save_cflags="$CFLAGS"
2416                 CFLAGS="$CFLAGS $x_cflags"
2417                 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, have_vidmode=yes)
2418                 CFLAGS="$save_cflags"
2419             fi
2421             dnl detection done, prepare output
2422             if test "x-$have_vidmode" = "x-yes" ; then
2423                 dnl we can do vidmode
2424                 DO_VIDMODE_SUPPORT="1"
2425             elif test "x-$x11_hidd_vidmode" = "x-yes" ; then
2426                 dnl they explicitly asked for it, but we can't do it
2427                 AC_MSG_ERROR([X11 vidmode extension not available, cannot enable it as requested])
2428             else
2429                 dnl otherwise just disable it
2430                 DO_VIDMODE_SUPPORT="0"
2431             fi
2432         fi
2434         aros_host_x11_includes=$x_includes 
2435         aros_host_x11_libdirs=$x_libraries
2436     fi
2439     dnl sdl hidd
2440     AC_ARG_ENABLE(sdl_hidd, AC_HELP_STRING([--enable-sdl-hidd],
2441                                            [build SDL hidd for hosted (default=auto)]),
2442                                            sdl_hidd="$enableval",
2443                                            sdl_hidd="auto")
2444     case "x-$sdl_hidd" in
2445         x-yes|x-no|x-auto)                 ;;
2446         *)                 sdl_hidd="auto" ;;
2447     esac
2449     dnl they want it
2450     if test "x-$sdl_hidd" != "x-no" ; then
2452         dnl find sdl
2453         AM_PATH_SDL([1.2.10], have_sdl="yes", have_sdl="no")
2455         if test "x-$have_sdl" != "x-yes" ; then
2457             dnl didn't find it
2458             if test "x-$sdl_hidd" != "x-auto" ; then
2459                 dnl and they explicitly asked for it, bail out
2460                 AC_MSG_ERROR([SDL libs/headers not found, cannot build SDL hidd as requested])
2461             fi
2463         else
2464             dnl found it, set up the metatarget
2465             sdl_hidd_target=kernel-hidd-sdl
2466             aros_host_sdl_cflags=SDL_CFLAGS
2467             aros_host_sdl_libs=SDL_LIBS
2468         fi
2469     fi
2471     dnl oss.library
2472     AC_CHECK_HEADER(sys/soundcard.h)
2473     if test "x-$ac_cv_header_sys_soundcard_h" = "x-yes" ; then
2474         oss_library_target=workbench-libs-oss-unix
2475     fi
2479 dnl See if the user wants dbus.library
2480 AC_MSG_CHECKING([if building of dbus.library is enabled])
2481 AC_ARG_ENABLE(dbus,AC_HELP_STRING([--enable-dbus],[Enable DBUS support via dbus.library (default=no)]),dbus="yes",dbus="no")
2482 if test "$dbus" = "yes" ; then
2483     ENABLE_DBUS=1
2484     DBUS_CFLAGS=`pkg-config --cflags dbus-1`
2485     DBUS_LIBFLAGS=`pkg-config --libs dbus-1`
2486     KERNEL_DBUS_KOBJ=kernel-dbus-kobj
2487     KERNEL_DBUS_INCLUDES=kernel-dbus-includes
2488 else
2489     ENABLE_DBUS=0
2491 AC_MSG_RESULT($dbus)
2493 if test "$use_kernel_cc_wrapper" = "yes" ; then
2494     aros_kernel_cc="${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-elf-gcc"
2497 if test "${crosstools}" != "yes" ; then
2498     aros_target_toolchain=no
2499 else
2500     aros_target_toolchain=yes
2503 dnl --------------------------------------------------------------------
2504 dnl Configuration Output Section
2505 dnl --------------------------------------------------------------------
2507 # Generic
2508 AC_SUBST(aros_arch)
2509 AC_SUBST(aros_cpu)
2510 AC_SUBST(aros_flavour)
2511 AC_SUBST(aros_flavour_uc)
2512 AC_SUBST(aros_target_toolchain)
2513 AC_SUBST(AROS_BUILDDIR)
2514 AC_SUBST(AROS_BUILDDIR_UNIX)
2515 AC_SUBST(SRCDIR)
2516 AC_SUBST(AROS_CROSSTOOLSDIR)
2517 AC_SUBST(AROS_PORTSSRCDIR)
2519 # Compatability with other Amiga-like operation systems
2520 AC_SUBST(aros_amigaos_compliance)
2522 # Host related
2523 AC_SUBST(aros_cc_pre)
2524 AC_SUBST(aros_host_strip)
2525 AC_SUBST(aros_host_arch)
2526 AC_SUBST(aros_host_cpu)
2527 AC_SUBST(aros_host_cpp)
2528 AC_SUBST(aros_host_cc)
2529 AC_SUBST(aros_host_cxx)
2530 AC_SUBST(aros_host_ar)
2531 AC_SUBST(aros_host_ranlib)
2532 AC_SUBST(aros_host_ld)
2533 AC_SUBST(aros_host_make)
2534 AC_SUBST(aros_host_cflags)
2535 AC_SUBST(aros_host_cxxflags)
2536 AC_SUBST(gnu89_inline)
2537 AC_SUBST(aros_host_ldflags)
2538 AC_SUBST(aros_host_debug)
2539 AC_SUBST(aros_host_mkdep)
2540 AC_SUBST(aros_host_mkargs)
2541 AC_SUBST(aros_host_exe_suffix)
2542 AC_SUBST(aros_host_lib_suffix)
2543 AC_SUBST(aros_tools_dir)
2544 AC_SUBST(aros_host_aclocal)
2545 AC_SUBST(aros_host_autoconf)
2546 AC_SUBST(aros_host_autoheader)
2547 AC_SUBST(aros_host_automake)
2548 AC_SUBST(ant)
2550 # Target Related
2551 AC_SUBST(aros_target_guitheme)
2552 AC_SUBST(aros_target_iconset)
2553 AC_SUBST(aros_target_bootloader)
2554 AC_SUBST(aros_target_arch)
2555 AC_SUBST(aros_target_family)
2556 AC_SUBST(aros_target_cpu)
2557 AC_SUBST(aros_target_variant)
2558 AC_SUBST(aros_target_suffix)
2559 AC_SUBST(aros_target_ar)
2560 AC_SUBST(aros_target_ranlib)
2561 AC_SUBST(aros_plain_nm)
2562 AC_SUBST(aros_plain_ar)
2563 AC_SUBST(aros_kernel_ar)
2564 AC_SUBST(aros_kernel_ranlib)
2565 AC_SUBST(orig_target_cc)
2566 AC_SUBST(aros_target_cc)
2567 AC_SUBST(aros_kernel_cc)
2568 AC_SUBST(orig_target_cxx)
2569 AC_SUBST(aros_target_cxx)
2570 AC_SUBST(aros_kernel_cxx)
2571 AC_SUBST(orig_target_cpp)
2572 AC_SUBST(aros_target_cpp)
2573 AC_SUBST(aros_kernel_cpp)
2574 AC_SUBST(orig_target_as)
2575 AC_SUBST(aros_target_as)
2576 AC_SUBST(aros_kernel_as)
2577 AC_SUBST(orig_target_ld)
2578 AC_SUBST(aros_target_ld)
2579 AC_SUBST(aros_kernel_ld)
2580 AC_SUBST(aros_target_cc_includes)
2581 AC_SUBST(aros_target_cc_path)
2582 AC_SUBST(aros_target_objdump)
2583 AC_SUBST(aros_target_objcopy)
2584 AC_SUBST(aros_target_strip)
2585 AC_SUBST(aros_target_nm)
2586 AC_SUBST(aros_kernel_rescomp)
2587 AC_SUBST(aros_shared_default)
2588 AC_SUBST(aros_shared_ld)
2589 AC_SUBST(aros_object_format)
2590 AC_SUBST(aros_compiler_libs)
2591 AC_SUBST(aros_arch_libs)
2593 AC_SUBST(aros_config_cflags)
2594 AC_SUBST(aros_config_aflags)
2595 AC_SUBST(aros_config_ldflags)
2597 AC_SUBST(aros_shared_cflags)
2598 AC_SUBST(aros_shared_aflags)
2599 AC_SUBST(aros_shared_ldflags)
2600 AC_SUBST(aros_kernel_cflags)
2601 AC_SUBST(aros_kernel_includes)
2602 AC_SUBST(aros_kernel_objcflags)
2603 AC_SUBST(aros_kernel_ldflags)
2604 AC_SUBST(aros_target_cflags)
2605 AC_SUBST(aros_debug_cflags)
2606 AC_SUBST(aros_debug_aflags)
2607 AC_SUBST(aros_debug_ldflags)
2608 AC_SUBST(aros_target_genmap)
2609 AC_SUBST(aros_target_strip_flags)
2611 AC_SUBST(crosstools_target)
2612 AC_SUBST(crosstools_cxx_target)
2614 # Delinting target compiler flags
2615 AC_SUBST(aros_cflags_unused_but_set_variable)
2616 AC_SUBST(aros_cflags_array_bounds)
2617 AC_SUBST(aros_cflags_enum_compare)
2618 AC_SUBST(aros_cflags_strict_overflow)
2619 AC_SUBST(aros_cflags_format_security)
2621 # Graphics Related
2622 AC_SUBST(x11_hidd_target)
2623 AC_SUBST(sdl_hidd_target)
2624 AC_SUBST(pci_hidd_target)
2625 AC_SUBST(oss_library_target)
2627 AC_SUBST(aros_default_wbwidth)
2628 AC_SUBST(aros_default_wbheight)
2629 AC_SUBST(aros_default_wbdepth)
2630 AC_SUBST(DO_XSHM_SUPPORT)
2631 AC_SUBST(DO_VIDMODE_SUPPORT)
2633 AC_SUBST(aros_host_x11_includes)
2634 AC_SUBST(aros_host_x11_libdirs)
2635 AC_SUBST(aros_host_sdl_cflags)
2636 AC_SUBST(aros_host_sdl_libs)
2638 # Native version related
2639 AC_SUBST(aros_serial_debug)
2641 # Palm native version related
2642 AC_SUBST(aros_palm_debug_hack)
2644 # Unix/Hosted version related
2645 AC_SUBST(aros_nesting_supervisor)
2647 # MMU related
2648 AC_SUBST(aros_enable_mmu)
2650 # Apple iOS related
2651 AC_SUBST(aros_ios_platform)
2652 AC_SUBST(aros_ios_version)
2653 AC_SUBST(aros_ios_sdk)
2655 # ARM default GCC target related
2656 AC_SUBST(gcc_default_cpu)
2657 AC_SUBST(gcc_default_cpu_tune)
2658 AC_SUBST(gcc_default_fpu)
2659 AC_SUBST(gcc_default_float_abi)
2661 # Android related
2662 AC_SUBST(android_tool)
2663 AC_SUBST(aros_android_level)
2665 # DBUS related
2666 AC_SUBST(ENABLE_DBUS)
2667 AC_SUBST(DBUS_CFLAGS)
2668 AC_SUBST(DBUS_LIBFLAGS)
2669 AC_SUBST(KERNEL_DBUS_KOBJ)
2670 AC_SUBST(KERNEL_DBUS_INCLUDES)
2672 #X11 related
2673 AC_SUBST(ENABLE_X11)
2675 # Debug related
2676 AC_SUBST(aros_debug)
2677 AC_SUBST(aros_mungwall_debug)
2678 AC_SUBST(aros_stack_debug)
2679 AC_SUBST(aros_modules_debug)
2681 # Collect-aros stuff: "-ius" to ignore undefined symbols
2682 AC_SUBST(ignore_undefined_symbols)
2684 # C compiler related
2685 AC_SUBST(gcc_target_cpu)
2687 #ObjC compiler related
2688 AC_SUBST(objc_target)
2690 # USB3.0 code
2691 AC_SUBST(aros_usb30_code)
2693 dnl Prepare for output, make up all the generated patches
2694 case "$aros_flavour" in
2695 emulation)      aros_flavour_uc="AROS_FLAVOUR_EMULATION"
2696                 aros_flavour="emulation" ;;
2697 emulcompat)     aros_flavour_uc="(AROS_FLAVOUR_EMULATION|AROS_FLAVOUR_BINCOMPAT)"
2698                 aros_flavour="emulation" ;;
2699 standalone)     aros_flavour_uc="AROS_FLAVOUR_STANDALONE"
2700                 aros_flavour="standalone";;
2701 standcompat)    aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_BINCOMPAT)"
2702                 aros_flavour="standalone";;
2703 native)         aros_flavour_uc="AROS_FLAVOUR_NATIVE"
2704                 aros_flavour="native" ;;
2705 nativecompat)   aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
2706                 aros_flavour="native" ;;
2707 linklib)        aros_flavour_uc="AROS_FLAVOUR_LINKLIB"
2708                 aros_flavour="linklib" ;;
2709 palmnative)     aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
2710                 aros_flavour="palmnative" ;;
2711 mac68knative)   aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
2712                 aros_flavour="mac68knative" ;;
2713 ppcnative)      aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_BINCOMPAT)"
2714                 aros_flavour="ppcnative" ;;
2715 esac
2717 if test ! -d ${aros_inc_dir} ; then
2718     ${MKDIR} ${aros_inc_dir}
2720 if test ! -d ${aros_geninc_dir} ; then
2721     ${MKDIR} ${aros_geninc_dir}
2723 if test ! -d ${aros_hostcfg_dir} ; then
2724     ${MKDIR} ${aros_hostcfg_dir}
2726 if test ! -d ${aros_targetcfg_dir} ; then
2727     ${MKDIR} ${aros_targetcfg_dir}
2729 if test ! -d ${aros_tools_dir} ; then
2730     ${MKDIR} ${aros_tools_dir}
2732 if test ! -d ${aros_scripts_dir} ; then
2733     ${MKDIR} ${aros_scripts_dir}
2736 AC_CONFIG_HEADERS(${aros_geninc_dir}/host-conf.h:config/host-conf.h.in)
2738 AC_CONFIG_COMMANDS([compiler_executable],
2739     [
2740         prefix=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}
2741         mkdir -p $prefix
2742         prefix2=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros
2743         prefix3=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-elf
2745         echo ${prefix2}
2746         echo ${prefix3}
2747         chmod a+x ${prefix2}-gcc ${prefix2}-g++ ${prefix2}-ld ${prefix2}-cpp ${prefix3}-gcc
2749         ln -sf $orig_target_as$aros_host_exe_suffix      ${prefix2}-as$aros_host_exe_suffix
2750         ln -sf $orig_target_nm$aros_host_exe_suffix      ${prefix2}-nm$aros_host_exe_suffix
2751         ln -sf $orig_target_ar$aros_host_exe_suffix      ${prefix2}-ar$aros_host_exe_suffix
2752         ln -sf $orig_target_ranlib$aros_host_exe_suffix  ${prefix2}-ranlib$aros_host_exe_suffix
2753         ln -sf $orig_target_objcopy$aros_host_exe_suffix ${prefix2}-objcopy$aros_host_exe_suffix
2754         ln -sf $orig_target_objdump$aros_host_exe_suffix ${prefix2}-objdump$aros_host_exe_suffix
2755         ln -sf $orig_target_strip$aros_host_exe_suffix   ${prefix2}-strip$aros_host_exe_suffix
2757         ln -sf $aros_kernel_ld$aros_host_exe_suffix         ${prefix3}-ld$aros_host_exe_suffix
2758     ],
2759     [
2760         aros_host_exe_suffix=${aros_host_exe_suffix}
2761         aros_tools_dir=${aros_tools_dir}
2762         aros_target_cpu=${aros_target_cpu}
2763         aros_target_arch=${aros_target_arch}
2764         aros_target_suffix=${aros_target_suffix}
2765         orig_target_nm=${orig_target_nm}
2766         orig_target_as=${orig_target_as}
2767         orig_target_ar=${orig_target_ar}
2768         orig_target_ranlib=${orig_target_ranlib}
2769         orig_target_objdump=${orig_target_objdump}
2770         orig_target_objcopy=${orig_target_objcopy}
2771         orig_target_strip=${orig_target_strip}
2772         aros_kernel_ld=${aros_kernel_ld}
2773     ]
2775 AC_CONFIG_COMMANDS([genmf_executable],
2776     [chmod a+x ${aros_tools_dir}/genmf.py],
2777     [aros_tools_dir=${aros_tools_dir}]
2780 AC_CONFIG_FILES(
2781     Makefile
2782     config/make.cfg
2783     ${aros_inc_dir}/config.h:config/config.h.in
2784     ${aros_geninc_dir}/config.h:config/config.h.in
2785     ${aros_hostcfg_dir}/host.cfg:config/host.cfg.in
2786     ${aros_targetcfg_dir}/target.cfg:config/target.cfg.in
2787     mmake.config
2788     ${aros_targetcfg_dir}/make.defaults:config/make.defaults.in
2789     ${aros_targetcfg_dir}/specs:config/specs.in
2790     ${aros_targetcfg_dir}/elf-specs:${elf_specs_in}
2791     ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-cpp:scripts/aros-cpp.in
2792     ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-gcc:scripts/aros-gcc.in
2793     ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-g++:scripts/aros-g++.in
2794     ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-elf-gcc:scripts/elf-gcc.in
2795     ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-ld:scripts/aros-ld.in
2796     ${aros_tools_dir}/genmf.py:tools/genmf/genmf.py
2797     tools/collect-aros/env.h
2798     ${aros_gendir}/arch/all-android/bootstrap/app/default.properties:arch/all-android/bootstrap/app/default.properties.in
2801 AC_OUTPUT
2803 dnl This is in order to not define SHARED_CFLAGS sometimes
2804 dnl We don't always do aros_shared_ar, aros_shared_cflags
2806 #XXX compatability...
2807 aros_shared_ar="$aros_shared_ld $aros_shared_ldflags -o"
2809 if test -n "$aros_shared_cflags" ; then
2810     echo "SHARED_CFLAGS := $aros_shared_cflags" >> ${aros_hostcfg_dir}/host.cfg
2811     echo "SHARED_AR := $aros_shared_ar" >> ${aros_hostcfg_dir}/host.cfg