1 dnl Copyright © 1997-2006, The AROS Development Team. All rights reserved.
4 dnl Desc: Autoconf source for configuration file
8 # method of getting shared/non-shared ld/ar tool for target.
11 # ------------------------------------------------------------------------
12 # Here starts the first section of the configure.in file.
13 # ------------------------------------------------------------------------
17 AC_CONFIG_AUX_DIR(scripts/autoconf)
19 # Check what host we are running on.
20 # If a target is not suggested, we use this one.
21 # Note that what we call a target, Autoconf calls a host.
24 # The AROS target is slightly different to the normal GNU style
25 # format. We don't have the middle part, and we reverse the order
26 # of the $(CPU) and $(OS) bits.
28 # Don't strip the version of the target yet, it might be
29 # useful on some systems.
31 AC_MSG_CHECKING([for AROS style target])
33 if test "$target" = "NONE" ; then
34 target=$host_os-$host_cpu
37 if test "$target" = "" ; then
38 target=$host_os-$host_cpu
44 AC_MSG_RESULT($target)
46 #don't know where else to put this...
47 AC_MSG_CHECKING([Building AROS in .. ])
49 AC_MSG_RESULT($AROS_BUILDDIR)
51 AC_MSG_CHECKING([AROS Source in .. ])
52 srcpwd=`cd ${srcdir} ; ${PWDCMD-pwd}`
54 AC_MSG_RESULT($AROS_SRCDIR)
56 # Parse the target field into something useful.
58 target_os=`echo $target | sed 's/^\([^-]*\)-\(.*\)$/\1/'`
59 target_cpu=`echo $target | sed 's/^\([^-]*\)-\(.*\)$/\2/'`
62 dnl --------------------------------------------------------------------
63 dnl Set the default Workbench resolution
64 dnl --------------------------------------------------------------------
65 aros_default_wbwidth=800
66 aros_default_wbheight=600
67 aros_default_wbdepth=4
69 dnl --------------------------------------------------------------------
70 dnl Host Configuration Section
71 dnl --------------------------------------------------------------------
73 dnl The idea here is to find out all the information we need about the
74 dnl host. This means things like tools for building directory structures,
75 dnl copying files around and the like.
77 # The first step is to find the host binaries.
78 # Check for a compiler.
83 # Check for a compatible awk
84 AC_CHECK_PROGS(AWK,[gawk nawk])
85 AROS_REQUIRED(gawk,$AWK)
86 AROS_PROG(MMAKE,mmake)
88 # Perform some default variable assignments. Note all of these will be
89 # Regenerated from the script, so there is no need to cache them.
92 AROS_TOOL_CCPATH(aros_host_ld,ld)
93 AROS_REQUIRED(ld,$aros_host_ld)
95 aros_host_cflags=$CFLAGS
96 aros_host_ldflags=$LDFLAGS
97 aros_host_debug="-g -O0"
98 aros_host_mkdep="\$(TOP)/scripts/mkdep"
99 aros_host_mkargs="--no-print-directory"
100 aros_host_incl="/usr/include"
101 aros_host_exe_suffix="$EXEEXT"
102 aros_host_lib_suffix=""
104 AC_CHECK_PROGS(aros_host_aclocal,[aclocal aclocal19])
105 AC_CHECK_PROGS(aros_host_autoconf,[autoconf autoconf259 autoconf253])
106 AC_CHECK_PROGS(aros_host_autoheader,[autoheader autoheader259 autoheader253])
107 AC_CHECK_PROGS(aros_host_automake,[automake automake19])
109 case "$aros_host_cc" in
111 aros_host_cc_pipe="-pipe"
121 dnl Despite the name, this is really a host configuration variable.
122 aros_target_cc_includes=""
124 # This is the main host configuration section. It is where the host
125 # can change the values of any variables it needs to change. We do
126 # not look at anything that compiles to the target yet, we'll get
131 aros_host_arch="linux"
132 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
138 aros_host_cpu="x86_64"
147 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
148 aros_host_cpu="$host_cpu"
154 aros_host_cc="$aros_host_cc $aros_host_cc_pipe -I/usr/local/include"
155 aros_host_make="gmake"
156 aros_host_arch="freebsd"
159 aros_host_ldflags="$aros_host_ldflags -L/usr/local/lib -liconv"
161 dnl Need to override this here, it's just too hard later.
162 dnl This shouldn't be here at all...
163 dnl aros_target_cc_includes="/usr/include"
165 dnl FreeBSD 5.x (and later) has changed the default object format.
166 dnl The double [[]] is necessary to get around m4's quoting rules.
169 aros_object_format="elf_i386"
173 aros_object_format="elf_i386_fbsd"
180 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
181 aros_host_arch="darwin"
190 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
191 aros_host_cpu="$host_cpu"
195 aros_host_ldflags="$aros_host_ldflags -liconv"
200 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
201 aros_host_make="gmake"
202 aros_host_arch="netbsd"
211 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
212 aros_host_cpu="$host_cpu"
215 aros_host_lib_suffix=".0.0"
219 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
220 aros_host_make="gmake"
221 aros_host_arch="openbsd"
227 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
228 aros_host_cpu="$host_cpu"
234 aros_host_arch="solaris"
235 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
238 aros_host_cpu="sparc"
241 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
242 aros_host_cpu="$host_cpu"
248 aros_host_arch="morphos"
253 aros_host_arch="amiga"
258 TOUCH="/gg/bin/touch"
267 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
268 aros_host_cpu="$host_cpu"
274 aros_host_arch="cygwin"
275 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
281 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
282 aros_host_cpu="$host_cpu"
288 aros_host_arch="mingw32"
289 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
295 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
296 aros_host_cpu="$host_cpu"
301 AC_MSG_ERROR([Unsupported host architecture $host])
305 AROS_PROG(aros_host_ar,[ar],[cr])
306 AROS_REQUIRED(ar,$aros_host_ar)
307 AROS_PROG(aros_host_ranlib,ranlib)
308 AROS_REQUIRED(ranlib,$aros_host_ranlib)
309 AROS_PROG(aros_host_strip,strip)
310 AROS_REQUIRED(strip,$aros_host_strip)
312 AROS_PROG(RM,[rm],[-rf])
313 AROS_REQUIRED(rm,$RM)
315 AROS_REQUIRED(cp,$CP)
317 AROS_REQUIRED(mv,$MV)
318 AROS_PROG(ECHO,[echo])
319 AROS_REQUIRED(echo,$ECHO)
320 AROS_PROG(MKDIR,[mkdir],[-p])
321 AROS_REQUIRED(mkdir,$MKDIR)
322 AROS_PROG(TOUCH,[touch])
323 AROS_REQUIRED(touch,$TOUCH)
324 AROS_PROG(SORT,[sort])
325 AROS_REQUIRED(sort,$SORT)
326 AROS_PROG(UNIQ,[uniq])
327 AROS_REQUIRED(uniq,$UNIQ)
328 AROS_PROG(NOP,[true])
329 AROS_REQUIRED(true,$NOP)
331 AROS_REQUIRED(cat,$CAT)
332 AROS_PROG(BISON,[bison])
333 AROS_REQUIRED(bison,$BISON)
334 AROS_PROG(FLEX,[flex])
335 AROS_REQUIRED(flex,$FLEX)
336 AROS_PROG(PNGTOPNM,[pngtopnm])
337 AROS_REQUIRED(pngtopnm,$PNGTOPNM)
338 AROS_PROG(PPMTOILBM,[ppmtoilbm])
339 AROS_REQUIRED(ppmtoilbm,$PPMTOILBM)
341 AROS_REQUIRED(sed,$SED)
342 AROS_PROG(CHMOD,[chmod])
343 AROS_REQUIRED(chmod,$CHMOD)
345 AM_PATH_PYTHON(2.2.1)
352 dnl ---------------------------------------------------------------------------
353 dnl Look for things about the host system, good for hosted targets.
354 dnl ---------------------------------------------------------------------------
356 # Check for some includes for the X11 HIDD and the kernel
357 AC_CHECK_HEADERS([sys/ipc.h sys/shm.h \
358 sys/mmap.h sys/mman.h sysexits.h \
359 sys/statfs.h sys/statvfs.h sys/vfs.h sys/param.h \
362 AC_CHECK_HEADERS([sys/mount.h],,,[#include <sys/param.h>])
379 AC_CHECK_MEMBERS(struct tm.tm_gmtoff)
381 # Look for some functions
382 AC_CHECK_FUNCS([getpagesize kqueue statfs statvfs \
383 clone kse_create rfork_thread thr_create sa_register \
384 getcontext makecontext setcontext sigaltstack swapcontext])
389 dnl --------------------------------------------------------------------
390 dnl Target Configuration Section
391 dnl --------------------------------------------------------------------
393 dnl The target configuration section is responsible for setting up all
394 dnl the paths for includes, and tools required to build AROS to some
395 dnl particular target.
397 aros_config_cflags="-Wall -Werror-implicit-function-declaration"
398 aros_config_aflags="-Wall -x assembler-with-cpp -c"
399 aros_config_ldflags=""
401 aros_shared_default=yes
403 aros_shared_cflags="-fPIC"
404 aros_shared_aflags=""
405 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
406 aros_kernel_ldflags="-Wl,-rpath,./lib"
408 aros_target_ar_flags="cr"
409 aros_target_nm_flags="-C -ul"
410 aros_target_strip_flags="--strip-unneeded -R.comment"
414 aros_target_genmap="-Wl,-Map -Xlinker"
416 # Native flavour stuff
418 aros_serial_debug="0"
420 # Palm native flavour stuff
421 aros_palm_debug_hack="0"
424 aros_nesting_supervisor="0"
426 # Collect-aros stuff: "-ius" to ignore undefined symbols
427 ignore_undefined_symbols=""
429 #-----------------------------------------------------------------------------
432 # GCC 4.1+ has a stack protection feature that requires OS support. Ubuntu has
433 # it switched on by default, and we use the host compiler, so it compiles AROS
434 # code with this enabled resulting in link failures as we don't have support
437 # We use two methods to disable it. For the host compiler (used to compile
438 # some hosted modules), we test to see if the compiler supports stack
439 # protection, and if it does we disable it in AROS_CONFIG_CFLAGS. This should
440 # work on all platforms.
442 # For the "cross" compiler we clear the "ssp_default" spec in config/specs.in
443 # (this is done unconditionally, as it should have no effect on compilers
444 # without the stack protection feature). This may be specific to the way that
445 # Ubuntu enables the feature, so may not work everywhere. My specs-fu isn't
446 # strong enough to disable it in a generic way though, so we'll live with it
447 # until another vendor ships GCC with it enabled in a different way, and deal
451 AC_MSG_CHECKING([whether ${CC} accepts -fno-stack-protector])
452 save_cflags="$CFLAGS"
453 CFLAGS="$CFLAGS -fno-stack-protector"
454 AC_TRY_COMPILE(,, use_no_stack_protector="yes", use_no_stack_protector="no")
455 AC_MSG_RESULT($use_no_stack_protector)
456 if test "x-$use_no_stack_protector" = "x-yes" ; then
457 aros_host_cflags="$aros_host_cflags -fno-stack-protector"
459 CFLAGS="$save_cflags"
463 # For GCC < 4.0 -I- is used for giving the search path for '#include "..."'
464 # On GCC >= 4.0 -iquote should be used
467 AC_MSG_CHECKING([whether ${CC} accepts -iquote])
468 save_cflags="$CFLAGS"
469 CFLAGS="$CFLAGS -iquote."
470 AC_TRY_COMPILE(,, has_iquote="yes", has-iquote="no")
471 AC_MSG_RESULT($has_iquote)
472 if test "x-$has_iquote" = "x-yes" ; then
473 aros_cflags_iquote=-iquote
474 aros_cflags_iquote_end=
476 aros_cflags_iquote=-I
477 aros_cflags_iquote_end=-I-
479 CFLAGS="$save_cflags"
481 AC_SUBST(aros_cflags_iquote)
482 AC_SUBST(aros_cflags_iquote_end)
484 #-----------------------------------------------------------------------------
486 # Disable pointer-signedness warnings if the compiler recognises the option
487 # (this only works for the host compiler at the moment)
489 AC_MSG_CHECKING([whether ${CC} accepts -Wno-pointer-sign])
490 save_cflags="$CFLAGS"
491 CFLAGS="$CFLAGS -Wno-pointer-sign"
492 AC_TRY_COMPILE(,, use_no_sign_warning="yes", use_no_sign_warning="no")
493 AC_MSG_RESULT($use_no_sign_warning)
494 if test "x-$use_no_sign_warning" = "x-yesnnn" ; then
495 aros_host_cflags="$aros_host_cflags -Wno-pointer-sign"
497 CFLAGS="$save_cflags"
499 #-----------------------------------------------------------------------------
501 AC_MSG_CHECKING([for type of build])
502 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")
504 if test "$build_type" = "nightly"; then
505 build_type_string="NIGHTLY"
506 elif test "$build_type" = "snapshot"; then
507 build_type_string="SNAPSHOT"
508 elif test "$build_type" = "milestone"; then
509 build_type_string="MILESTONE"
510 elif test "$build_type" = "release"; then
511 build_type_string="RELEASE"
513 build_type_string="PERSONAL"
514 build_type="personal"
517 aros_config_cflags="$aros_config_cflags -DAROS_BUILD_TYPE=AROS_BUILD_TYPE_$build_type_string"
519 AC_MSG_RESULT($build_type)
521 #-----------------------------------------------------------------------------
522 all_debug_types="messages stack mungwall modules symbols"
524 AC_MSG_CHECKING([which debug types to enable])
525 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)]),
526 debug="$enableval",debug="")
528 if test "$debug" = "" -o "$debug" = "no"; then
530 elif test "$debug" = "yes"; then
534 if test "$debug" = "all" ; then
535 debug=$all_debug_types
536 for d in $all_debug_types; do
537 export aros_${d}_debug="1"
540 for d in $all_debug_types; do
541 export aros_${d}_debug="0"
545 if test "$debug" != "none"; then
546 debug=`echo $debug | sed s/,/\ /g`
549 for d2 in $all_debug_types; do
550 if test "$d2" = "$d"; then
555 if test "$found" = "0"; then
556 AC_MSG_ERROR([unrecognized debug type "$d". Available types are: all none $all_debug_types])
558 export aros_${d}_debug="1"
562 AC_MSG_RESULT($debug)
564 if test "$aros_messages_debug" = "1"; then
565 aros_messages_debug="-DADEBUG=1 -DMDEBUG=1"
567 aros_messages_debug=""
569 if test "$aros_symbols_debug" = "1"; then
570 aros_symbols_debug="-g"
572 aros_symbols_debug=""
575 # These are the flags to pass when compiling debugged programs
576 aros_debug_cflags="$aros_symbols_debug $aros_messages_debug"
578 aros_debug_ldflags="$aros_symbols_debug"
580 #-----------------------------------------------------------------------------
581 # Checking for distcc and ccache.
583 # Always apply the transforms in this particular order. Basically you should
584 # always run 'ccache distcc compiler' in that order for the best performance.
586 AC_MSG_CHECKING([whether to enable distcc])
587 AC_ARG_ENABLE(distcc,AC_HELP_STRING([--enable-distcc],[Use distcc as a front end to the compiler (default=no).]),distcc="$enableval",distcc="no")
588 if test "$distcc" != "" -a "$distcc" != "no"; then
589 # AC_CHECK_PROG will print out the result in this case
590 AC_PATH_PROG(DISTCC,[distcc],distcc,)
595 AC_MSG_CHECKING([whether to enable ccache])
596 AC_ARG_ENABLE(ccache,AC_HELP_STRING([--enable-ccache],[Use ccache as a front end to the compiler (default=no).]),ccache="$enableval",ccache="no")
597 if test "$ccache" != "" -a "$ccache" != "no"; then
598 # AC_CHECK_PROG will print out the result in this case
599 AC_CHECK_PROG(CCACHE,[ccache],ccache,)
604 #-----------------------------------------------------------------------------
605 AC_MSG_CHECKING([what optimization flags to use])
606 AC_ARG_WITH(optimization,AC_HELP_STRING([--with-optimization=FLAGS],[Use optimization flags FLAGS (default=-O2).]),optimization="$withval",optimization="unknown")
607 if test "$optimization" = "unknown"; then
608 dnl default is -O2 for normal builds, -O0 for debug builds
609 if test "$debug" != "none"; then
615 aros_config_cflags="$aros_config_cflags $optimization"
616 AC_MSG_RESULT($optimization)
618 #-----------------------------------------------------------------------------
619 AC_MSG_CHECKING([what target variant to enable])
620 AC_ARG_ENABLE(target_variant,AC_HELP_STRING([--enable-target-variant=NAME],[Enable a specific target variant(default=none)]),target_variant=$enableval,target_variant="none")
621 if test "$target_variant" = "none"; then
622 aros_target_variant=""
623 aros_target_suffix=""
625 aros_target_variant="$target_variant"
626 aros_target_suffix="-$target_variant"
628 AC_MSG_RESULT($enableval)
630 target_bootloader="none"
632 #-----------------------------------------------------------------------------
633 # This is the target configuration switch.
636 aros_target_arch="linux"
637 case "$target_cpu" in
639 aros_target_cpu="m68k"
640 aros_object_format="m68kelf"
641 aros_flavour="emulcompat"
642 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__linux__"
643 aros_shared_ldflags="-Wl,-T,\$(TOP)/config/linux/m68k/script.so"
644 aros_kernel_ldflags="-Wl,-rpath,./lib,-T,\$(TOP)/config/linux/m68k/script.normal"
645 gcc_target_cpu="mc68000"
648 aros_target_cpu="i386"
649 aros_object_format="elf_i386"
650 aros_flavour="emulation"
651 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__linux__"
652 aros_default_wbdepth=8
653 gcc_target_cpu="i386"
656 aros_target_cpu="x86_64"
657 aros_object_format="elf_x86_64"
658 aros_flavour="emulation"
659 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64 -D__linux__"
660 aros_config_cflags="$aros_config_cflags -mno-red-zone"
661 aros_default_wbdepth=8
662 gcc_target_cpu="x86_64"
665 aros_target_cpu="ppc"
666 aros_object_format="elf32ppc"
667 aros_flavour="emulation"
668 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
669 aros_default_wbdepth=8
673 # Same as powerpc, but I need this for the nightly build to work again.
674 # Actually, the nightly should be made working with powerpc target.
675 # That just was too much work for the moment, another week or two.
677 aros_target_cpu="ppc"
678 aros_object_format="elf32ppc"
679 aros_flavour="emulation"
680 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
681 aros_default_wbdepth=8
685 AC_MSG_ERROR("Unknown CPU for Linux -- $target_cpu")
691 aros_target_arch="pc"
692 aros_shared_default="no"
693 target_bootloader="grub"
694 case "$target_cpu" in
696 aros_target_cpu="i386"
698 dnl If somebody hasn't already set the target object
699 dnl format, then use this value. Mostly to support
700 dnl FreeBSD cross-compilation.
701 dnl TODO: Remove when we always use our compiler.
703 if test "$aros_object_format" = "" ; then
704 aros_object_format="elf_i386"
706 aros_flavour="standalone"
707 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
708 aros_kernel_ldflags=""
709 aros_default_wbwidth=640
710 aros_default_wbheight=480
711 gcc_target_cpu="i386"
714 aros_target_cpu="x86_64"
716 if test "$aros_object_format" = "" ; then
717 aros_object_format="elf_x86_64"
719 aros_flavour="standalone"
720 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64"
721 aros_config_cflags="$aros_config_cflags -fno-asynchronous-unwind-tables -mno-red-zone"
722 aros_kernel_ldflags=""
723 aros_default_wbwidth=640
724 aros_default_wbheight=480
725 gcc_target_cpu="x86_64"
728 AC_MSG_ERROR("Unknown native CPU -- $target_cpu")
734 aros_target_arch="prep"
735 aros_shared_default="no"
736 aros_target_cpu="ppc"
737 aros_object_format="elf32ppc"
738 aros_flavour="ppcnative"
739 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
740 aros_kernel_ldflags=""
741 aros_default_wbwidth=640
742 aros_default_wbheight=480
744 case "$target_cpu" in
746 aros_target_cc="ppc-linux-gcc -pipe"
747 aros_target_ld="ppc-linux-ld"
748 aros_target_as="ppc-linux-as"
749 aros_target_ar="ppc-linux-ar"
750 aros_target_ranlib="ppc-linux-ranlib"
751 aros_target_nm="ppc-linux-nm"
752 aros_target_strip="ppc-linux-strip"
753 aros_target_objcopy="ppc-linux-objcopy"
754 aros_target_objdump="ppc-linux-objdump"
755 aros_shared_ld="ppc-linux-ld"
756 aros_kernel_ld="ppc-linux-ld"
764 aros_target_arch="freebsd"
765 aros_target_cpu="i386"
766 aros_flavour="emulation"
767 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
768 gcc_target_cpu="i386"
770 aros_target_strip_flags="-x"
774 aros_target_arch="darwin"
775 aros_target_cpu="i386"
776 aros_flavour="emulation"
777 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
778 gcc_target_cpu="i386"
780 aros_target_strip_flags="-x"
784 aros_target_arch="netbsd"
785 case "$target_cpu" in
787 aros_target_cpu="m68k"
788 aros_object_format="m68kelf"
789 aros_flavour="emulcompat"
790 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__NetBSD__"
791 gcc_target_cpu="mc68000"
794 aros_target_cpu="i386"
795 aros_object_format="elf_i386"
796 aros_flavour="emulation"
797 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__NetBSD__"
798 aros_default_wbdepth=8
799 gcc_target_cpu="i386"
802 AC_MSG_ERROR("Unknown CPU for NetBSD -- $target_cpu")
805 aros_target_genmap="-Wl,-M -Xlinker >"
806 aros_flavour="emulation"
807 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
811 aros_target_arch="openbsd"
812 case "$target_cpu" in
814 aros_target_cpu="i386"
815 aros_object_format="elf_i386"
816 aros_flavour="emulation"
817 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__OpenBSD__"
818 gcc_target_cpu="i386"
821 AC_MSG_ERROR("Unknown CPU for OpenBSD -- $target_cpu")
824 aros_target_genmap="-Wl,-M -Xlinker >"
825 aros_target_nm_flags="-u"
826 aros_flavour="emulation"
830 aros_target_arch="solaris"
831 case "$target_cpu" in
833 aros_target_cpu="sparc"
834 aros_object_format="elf_sparc"
835 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dsparc -D__Solaris__"
836 gcc_target_cpu="sparc"
839 AC_MSG_ERROR("Unknown CPU for Solaris -- $target_cpu")
842 aros_config_cflags="$aros_config_cflags -D$aros_target_cpu"
843 aros_flavour="emulation"
847 aros_target_arch="morphos"
848 aros_shared_default="no"
849 aros_target_cpu="ppc"
850 aros_object_format="elf_ppc"
851 aros_flavour="nativecompat"
852 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
857 aros_target_arch="sam440"
858 aros_shared_default="no"
859 aros_target_cpu="ppc"
860 aros_object_format="elf32ppc"
861 aros_flavour="ppcnative"
862 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
863 aros_kernel_ldflags=""
864 aros_default_wbwidth=640
865 aros_default_wbheight=480
866 aros_config_cflags="$aros_config_cflags -mcpu=440fp -mno-toc -fno-asynchronous-unwind-tables"
867 gcc_target_cpu="powerpc"
868 case "$target_cpu" in
870 aros_target_cc="powerpc-linux-gcc -pipe"
871 aros_target_ld="powerpc-linux-ld"
872 aros_target_as="powerpc-linux-as"
873 aros_target_ar="powerpc-linux-ar"
874 aros_target_ranlib="powerpc-linux-ranlib"
875 aros_target_nm="powerpc-linux-nm"
876 aros_target_strip="powerpc-linux-strip"
877 aros_target_objcopy="powerpc-linux-objcopy"
878 aros_target_objdump="powerpc-linux-objdump"
879 aros_shared_ld="powerpc-linux-ld"
880 aros_kernel_ld="powerpc-linux-ld"
888 aros_target_arch="amiga"
889 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D_AMIGA -DAMIGA"
890 aros_shared_default="no"
892 aros_config_cflags="$aros_config_cflags -fomit-frame-pointer -fbuiltin -ffreestanding"
894 case "$target_cpu" in
896 aros_target_cpu="m68k"
897 aros_object_format="m68kelf"
898 aros_flavour="nativecompat"
899 gcc_target_cpu="mc68000"
903 aros_flavour="native"
907 AC_MSG_ERROR("Unknown CPU for Amiga $target_cpu")
913 aros_target_arch="cygwin"
914 aros_shared_default="no"
915 case "$target_cpu" in
917 aros_target_cpu="i386"
918 aros_object_format="elf_i386"
919 aros_flavour="emulation"
920 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__CYGWIN32__"
921 aros_shared_cflags=""
922 aros_default_wbdepth=8
923 gcc_target_cpu="i386"
926 AC_MSG_ERROR("Unknown CPU for CygWin -- $target_cpu")
932 aros_target_arch="mingw32"
933 aros_shared_default="no"
934 case "$target_cpu" in
936 aros_target_cpu="i386"
937 aros_object_format="elf_i386"
938 aros_flavour="emulation"
939 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
940 aros_shared_cflags=""
941 aros_default_wbdepth=8
942 gcc_target_cpu="i386"
945 AC_MSG_ERROR("Unknown CPU for Mingw32 -- $target_cpu")
950 aros_target_arch="pp"
951 aros_shared_default="no"
952 case "$target_cpu" in
954 aros_target_cpu="m68k"
955 aros_object_format="m68kelf"
956 aros_flavour="palmnative"
957 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
958 aros_kernel_ldflags=""
959 aros_default_wbwidth=160
960 aros_default_wbheight=160
961 aros_default_wbdepth=1
962 aros_target_cc="m68k-elf-gcc -pipe"
963 aros_target_ld="$(which m68k-elf-ld)"
964 aros_target_as="m68k-elf-gcc -pipe"
965 aros_shared_ld="m68k-elf-gcc"
966 aros_kernel_ld="m68k-elf-gcc"
967 aros_target_ar="m68k-elf-ar"
968 aros_target_ar_flags="cru"
969 aros_target_ranlib="m68k-elf-ranlib"
970 aros_target_nm="m68k-elf-nm"
971 aros_target_objcopy="m68k-elf-objcopy"
972 aros_target_objdump="m68k-elf-objdump"
973 aros_compiler_libs="-lgcc1"
974 aros_shared_default=no
975 aros_shared_cflags="-fpic"
976 aros_shared_aflags=""
977 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
978 aros_kernel_ldflags="-Wl,-rpath,./lib"
979 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000 -Wa,-mc68000"
981 aros_debug_ldflags="$aros_symbols_debug"
982 aros_mungwall_debug="0"
983 aros_modules_debug="0"
984 gcc_target_cpu="mc68000"
985 ignore_undefined_symbols="-ius"
988 AC_MSG_ERROR("Unknown CPU for PalmPilot -- $target_cpu")
994 aros_target_arch="mac"
995 aros_shared_default="no"
996 case "$target_cpu" in
998 aros_target_cpu="m68k"
999 aros_object_format="m68kelf"
1000 aros_flavour="mac68knative"
1001 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
1002 aros_default_wbwidth=512
1003 aros_default_wbheight=384
1004 aros_default_wbdepth=8
1005 aros_target_cc="m68k-elf-gcc -pipe"
1006 aros_target_ld="$(which m68k-elf-ld)"
1007 aros_target_as="m68k-elf-gcc -pipe"
1008 aros_shared_ld="m68k-elf-gcc"
1009 aros_kernel_ld="m68k-elf-gcc"
1010 aros_target_ar="m68k-elf-ar"
1011 aros_target_ar_flags="cru"
1012 aros_target_ranlib="m68k-elf-ranlib"
1013 aros_target_nm="m68k-elf-nm"
1014 aros_target_objcopy="m68k-elf-objcopy"
1015 aros_target_objdump="m68k-elf-objdump"
1016 aros_compiler_libs="-lgcc1"
1017 aros_shared_default=no
1018 aros_shared_cflags="-fpic"
1019 aros_shared_aflags=""
1020 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1021 aros_kernel_ldflags="-Wl,-rpath,./lib"
1022 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000"
1023 aros_debug_aflags=""
1024 aros_debug_ldflags="$aros_symbols_debug"
1025 aros_mungwall_debug="0"
1026 aros_modules_debug="0"
1027 gcc_target_cpu="mc68000"
1028 ignore_undefined_symbols="-ius"
1031 AC_MSG_ERROR("Unknown CPU for Mac68k -- $target_cpu")
1037 AC_MSG_ERROR([Unsupported target architecture $target])
1041 AC_MSG_CHECKING([Where to download sourcecode for external ports])
1042 AC_ARG_WITH(portssources,AC_HELP_STRING([--with-portssources=DIR],[Where to download sourcecode for external ports]),with_portssrcdir=$withval,with_portssrcdir="default")
1043 if test "$with_portssrcdir" = "default"; then
1044 AROS_PORTSSRCDIR="$AROS_BUILDDIR/bin/Sources"
1046 AROS_PORTSSRCDIR="$with_portssrcdir"
1048 AC_MSG_RESULT($AROS_PORTSSRCDIR)
1050 AC_MSG_CHECKING([which bootloader to use])
1051 AC_ARG_WITH(bootloader,AC_HELP_STRING([--with-bootloader=NAME],[Use a specific bootloader]),target_bootloader=$withval,target_bootloader=$target_bootloader)
1052 if test "$target_bootloader" = "none"; then
1053 aros_target_bootloader=""
1055 aros_target_bootloader="$target_bootloader"
1057 AC_MSG_RESULT($target_bootloader)
1059 # Check LZO when compiling the grub2 bootloader on i386/x86_64.
1060 aros_liblzo_check="no"
1061 case "$aros_target_bootloader" in
1063 case "$target_cpu" in
1065 aros_liblzo_check="yes"
1068 aros_liblzo_check="yes"
1079 if test "$aros_liblzo_check" = "yes"; then
1080 # There are three possibilities. LZO version 2 installed with the name
1081 # liblzo2, with the name liblzo, and LZO version 1.
1082 AC_CHECK_LIB(lzo2, __lzo_init_v2, [LIBLZO="-llzo2"],
1083 AC_CHECK_LIB(lzo, __lzo_init_v2, [LIBLZO="-llzo"],
1084 AC_CHECK_LIB(lzo, __lzo_init2, [LIBLZO="-llzo"],
1085 AC_MSG_ERROR([LZO library version 1.02 or later is required]))))
1088 LIBS="$LIBS $LIBLZO"
1089 AC_CHECK_FUNC(lzo1x_999_compress, ,
1090 [AC_MSG_ERROR([LZO1X-999 must be enabled])])
1092 # LZO version 2 uses lzo/lzo1x.h, while LZO version 1 uses lzo1x.h.
1093 AC_CHECK_HEADERS(lzo/lzo1x.h lzo1x.h)
1096 AC_MSG_CHECKING([which GUI Theme to use])
1097 AC_ARG_WITH(theme,AC_HELP_STRING([--with-theme=NAME],[Use a specific GUI Theme]),target_guitheme=$withval,target_guitheme="default")
1098 if test "$target_guitheme" = "default"; then
1099 aros_target_guitheme="Ice"
1101 aros_target_guitheme="$target_guitheme"
1103 AC_MSG_RESULT($aros_target_guitheme)
1105 # Find out if we are cross-compiling (ie. if we can't use the host compiler
1108 if test "$aros_host_cpu" != "$aros_target_cpu" ; then
1111 if test "$aros_host_arch" == "darwin" ; then
1115 # Set prefix for target compiler etc. if we're cross-compiling
1116 # (should possibly be earlier but needs to be after AC_PROG_CC)
1117 if test "$cross_compiling" = "yes" ; then
1118 target_tool_prefix=${target_cpu}-elf-
1119 CC=${target_tool_prefix}gcc
1122 # Find all the tools we need to compile. This could be cross-compiling
1123 # though! If that is the case we use the GNU form of the target and
1124 # simply add this to the front of the binary name. This is rather simple,
1125 # but it should work under most circumstances.
1127 # The default tools are to use the same as the host, but only if the
1128 # host and target CPU are the same. With GCC this is normally enough.
1132 aros_shared_ld="$aros_host_ld"
1134 aros_target_mkdep="$aros_host_mkdep"
1135 aros_target_incl_def="$aros_host_incl"
1137 AC_PATH_PROG(aros_kernel_cc,$CC)
1139 # The default tools executables to be linked to.
1140 AROS_TOOL_TARGET(aros_target_as_ln,as)
1141 AROS_REQUIRED(as,$aros_target_as_ln)
1142 AROS_TOOL_TARGET(aros_kernel_ld,ld)
1143 AROS_REQUIRED(ld,$aros_kernel_ld)
1144 AROS_TOOL_TARGET(aros_target_ar_ln,ar)
1145 AROS_REQUIRED(ar,$aros_target_ar_ln)
1146 AROS_TOOL_TARGET(aros_target_nm_ln,nm)
1147 AROS_REQUIRED(nm,$aros_target_nm_ln)
1148 AROS_TOOL_TARGET(aros_target_objcopy_ln,objcopy)
1149 AROS_REQUIRED(objcopy,$aros_target_objcopy_ln)
1150 AROS_TOOL_TARGET(aros_target_objdump_ln,objdump)
1151 AROS_REQUIRED(objdump,$aros_target_objdump_ln)
1152 AROS_TOOL_TARGET(aros_target_ranlib_ln,ranlib)
1153 AROS_REQUIRED(ranlib,$aros_target_ranlib_ln)
1154 AROS_TOOL_TARGET(aros_target_strip_ln,strip)
1155 AROS_REQUIRED(strip,$aros_target_strip_ln)
1157 if test "$GCC" = "yes"; then
1158 aros_target_cc_path=`$aros_kernel_cc -print-search-dirs | grep "programs: =" | cut -c 12-`
1161 aros_hostcfg_dir="bin/${aros_host_arch}-${aros_host_cpu}/gen/config"
1162 aros_targetcfg_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/config"
1163 aros_inc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/AROS/Development/include/aros"
1164 aros_gendir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen"
1165 aros_geninc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/include/aros"
1166 aros_tools_dir="bin/${aros_host_arch}-${aros_host_cpu}/tools"
1167 aros_scripts_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/scripts"
1169 # aros_cc_pre is a variable that is added to the front of the compiler name
1170 # in the generated aros-gcc shell script. We need this to enable the cache
1171 # to work across cleaned builds. Also, support DISTCC using the correct
1172 # environment variable.
1175 if test "x${DISTCC}" != "x" ; then
1176 if test "x${CCACHE}" != "x" ; then
1177 aros_cc_pre="env CCACHE_PREFIX=${DISTCC} ${CCACHE} "
1179 aros_cc_pre="${DISTCC} "
1182 if test "x${CCACHE}" != "x" ; then
1183 aros_cc_pre="${CCACHE} "
1187 prefix="${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros"
1189 AC_SUBST(aros_target_nostdinc_cflags,-nostdinc)
1190 AC_SUBST(aros_target_nostartup_ldflags,-nostartfiles)
1191 AC_SUBST(aros_target_nix_ldflags,-nix)
1192 AC_SUBST(aros_target_detach_ldflags,-detach)
1193 AC_SUBST(aros_target_nostdlib_ldflags,-nostdlib)
1196 aros_target_cc="${prefix}-gcc"
1197 aros_target_as="${prefix}-as"
1198 aros_target_ld="${prefix}-ld"
1199 aros_target_ar="${prefix}-ar $aros_target_ar_flags"
1200 aros_target_objcopy=${prefix}-objcopy
1201 aros_target_objdump=${prefix}-objdump
1202 aros_target_ranlib="${prefix}-ranlib $aros_target_ranlib_flags"
1203 aros_target_nm="${prefix}-nm $aros_target_nm_flags"
1204 aros_kernel_nm="${prefix}-nm"
1205 aros_target_strip=${prefix}-strip
1207 # Find the system include path. We can suggest that an alternative is
1208 # used if we don't get it correct. The default is to use /usr/include.
1209 # Which is set in the aros_target_incl_def variable.
1211 AC_ARG_ENABLE(includes,
1212 AC_HELP_STRING([--enable-includes=dir],[Alternative system include directory]),
1213 [aros_target_incl=$enable_includes], [aros_target_incl=$aros_target_incl_def])
1215 dnl find out about the target cc's include path
1216 AC_MSG_CHECKING([for the target compiler's include path])
1217 if test "$aros_target_cc_includes" = "" ; then
1218 #try to guess where the directory is
1219 aros_target_cc_includes=`dirname \`${aros_kernel_cc} -print-libgcc-file-name\``/include
1220 if ! test -d $aros_target_cc_includes; then
1221 #the directory doesn't exist, we need to do some more work
1222 aros_target_cc_includes=${PWD}/${aros_gendir}/cc_include
1224 #these are the headers we're looling for
1225 headers="limits.h mmintrin.h stdbool.h syslimits.h float.h \
1226 stddef.h xmmintrin.h iso646.h stdarg.h unwind.h \
1230 for h in $headers; do
1231 #which other headers each of the above headers needs?
1232 deps=$(echo "#include <$h>" | \
1233 $aros_host_cc -E -M - 2>/dev/null | \
1234 sed 's/^.*://; s/\\$/ /g; s/[[ \t]]\+/ /g')
1236 #copy all the needed headers to a directory beneath gendir
1239 dir=${aros_target_cc_includes}$(echo $(dirname $d) | \
1240 sed -n "s,^.*/include\(/.*\),\1,p")
1241 ! test -d $dir && mkdir -p $dir
1242 ! test -f $dir/$h && { cp $d $dir; chmod u+w $dir/$h; }
1247 AC_MSG_RESULT($aros_target_cc_includes)
1249 dnl Check if user specified --with-resolution=XRESxYRESxDEPTH
1250 AC_MSG_CHECKING([for default resolution of WBScreen])
1251 AC_ARG_WITH(resolution,AC_HELP_STRING([--with-resolution=XRESxYRESxDEPTH],[Default resolution of the initial WorkbenchScreen]),resolution=$withval,resolution=none)
1252 # We require an argument, so map --with/--without ("yes"/"no") to "none" specified
1253 if test "$resolution" = "yes" ; then
1256 if test "$resolution" = "no" ; then
1259 if test "$resolution" != "none" ; then
1260 aros_default_wbwidth=`echo $resolution | cut -d'x' -f1`
1261 aros_default_wbheight=`echo $resolution | cut -d'x' -f2`
1262 aros_default_wbdepth=`echo $resolution | cut -d'x' -f3`
1264 AC_MSG_RESULT($aros_default_wbwidth x $aros_default_wbheight x $aros_default_wbdepth)
1265 aros_cv_default_wbwidth=$aros_default_wbwidth
1266 aros_cv_default_wbheight=$aros_default_wbheight
1267 aros_cv_default_wbdepth=$aros_default_wbdepth
1269 dnl See if the user wants the BOCHS hack for native flavour
1270 AC_MSG_CHECKING([if bochs hack is enabled])
1271 AC_ARG_ENABLE(bochs_hack,AC_HELP_STRING([--enable-bochs-hack],[Enable hacks to make BOCHS (partly) work (default=no)]),bochs_hack="yes",bochs_hack="no")
1272 if test "$bochs_hack" = "yes" ; then
1275 AC_MSG_RESULT($bochs_hack)
1277 dnl See if the user wants the serial debug output for native flavour
1278 AC_MSG_CHECKING([if serial debug is enabled])
1279 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)
1280 if test "$aros_serial_debug" = 0 ; then
1281 serial_debug_forced=""
1282 if test "$serial_debug" = "yes" ; then
1285 if test "$serial_debug" = "no" ; then
1289 serial_debug_forced="(forced)"
1290 serial_debug=$aros_serial_debug
1292 if test "$serial_debug" != "none" ; then
1293 aros_serial_debug=$serial_debug
1294 AC_MSG_RESULT($serial_debug_forced on port $serial_debug)
1299 dnl See if the user wants the palm debug output hack for palm native flavour
1300 AC_MSG_CHECKING([if palm debug hack is enabled])
1301 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")
1302 if test "$palm_debug_hack" = "yes" ; then
1303 aros_palm_debug_hack="1"
1305 AC_MSG_RESULT($palm_debug_hack)
1308 dnl See if the user wants nesting supervisor activated for unix flavour
1309 AC_MSG_CHECKING([if nesting supervisor support is enabled])
1310 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")
1311 if test "$nesting_supervisor" = "yes" ; then
1312 aros_nesting_supervisor="1"
1314 AC_MSG_RESULT($nesting_supervisor)
1317 dnl things specifically required for hosted flavours
1318 if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
1320 if test "x-$aros_host_arch" != "x-darwin" ; then
1321 dnl some kind of dynamic library access system is required for hostlib.resource
1322 AC_CHECK_FUNC(dlopen, have_dl="yes", have_dl="no")
1323 if test "x-$have_dl" = "x-no" ; then
1324 AC_CHECK_LIB(dl, dlopen, [have_dl="yes"
1325 aros_host_ldflags="$aros_host_ldflags -ldl"],
1328 if test "x-$have_dl" = "x-no" ; then
1329 AC_MSG_ERROR([dlopen() dynamic linker functions not available])
1335 AC_ARG_ENABLE(x11_hidd, AC_HELP_STRING([--enable-x11-hidd],
1336 [build X11 hidd for hosted (default=auto)]),
1337 x11_hidd="$enableval",
1339 case "x-$x11_hidd" in
1340 x-yes|x-no|x-auto) ;;
1341 *) x11_hidd="auto" ;;
1345 if test "x-$x11_hidd" != "x-no" ; then
1351 for path in $x_libraries
1353 x_cflags="$x_cflags -L$path"
1356 for path in $x_includes
1358 x_cflags="$x_cflags -I$path"
1361 if test "x-$no_x" = "x-yes" ; then
1364 if test "x-$x11_hidd" != "x-auto" ; then
1365 dnl and they explicitly asked for it, bail out
1366 AC_MSG_ERROR([X11 libs/headers not found, cannot build X11 hidd as requested])
1370 dnl found it, setup the metatarget
1371 x11_hidd_target=kernel-x11gfx
1374 dnl setup shared memory extensions
1375 AC_ARG_ENABLE(x11_shm, AC_HELP_STRING([--enable-x11-shm],
1376 [use X11 shared memory (default=auto)]),
1377 x11_hidd_shm="$enableval",
1378 x11_hidd_shm="auto")
1379 case "x-$x11_hidd_shm" in
1380 x-yes|x-no|x-auto) ;;
1381 *) x11_hidd_shm="auto" ;;
1387 if test "x-$x11_hidd_shm" != "x-no" ; then
1389 dnl system shm headers
1390 AC_CHECK_HEADERS(sys/ipc.h)
1391 AC_CHECK_HEADERS(sys/shm.h)
1394 if test "x-$ac_cv_header_sys_ipc_h" = "x-yes" -a "x-$ac_cv_header_sys_shm_h" = "x-yes" ; then
1396 dnl make sure X libs have shm functions
1397 save_cflags="$CFLAGS"
1398 CFLAGS="$CFLAGS $x_cflags"
1399 AC_CHECK_LIB(Xext, XShmQueryExtension, have_xshm=yes)
1400 CFLAGS="$save_cflags"
1404 dnl detection done, prepare output
1405 if test "x-$have_xshm" = "x-yes" ; then
1408 elif test "x-$x11_hidd_shm" = "x-yes" ; then
1409 dnl they explicitly asked for it, but we can't do it
1410 AC_MSG_ERROR([X11 has no support for shared memory, cannot enable it as requested])
1412 dnl otherwise just disable it
1417 dnl setup vidmode (fullscreen) extensions
1418 AC_ARG_ENABLE(x11_vidmode, AC_HELP_STRING([--enable-x11-vidmode],
1419 [use X11 vidmode extension (default=auto)]),
1420 x11_hidd_vidmode="$enableval",
1421 x11_hidd_vidmode="auto")
1422 case "x-$x11_hidd_vidmode" in
1423 x-yes|x-no|x-auto) ;;
1424 *) x11_hidd_vidmode="auto" ;;
1430 if test "x-$x11_hidd_vidmode" != "x-no" ; then
1432 dnl make sure X libs have vidmode functions
1433 save_cflags="$CFLAGS"
1434 CFLAGS="$CFLAGS $x_cflags"
1435 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, have_vidmode=yes)
1436 CFLAGS="$save_cflags"
1439 dnl detection done, prepare output
1440 if test "x-$have_vidmode" = "x-yes" ; then
1441 dnl we can do vidmode
1442 DO_VIDMODE_SUPPORT="1"
1443 elif test "x-$x11_hidd_vidmode" = "x-yes" ; then
1444 dnl they explicitly asked for it, but we can't do it
1445 AC_MSG_ERROR([X11 vidmode extension not available, cannot enable it as requested])
1447 dnl otherwise just disable it
1448 DO_VIDMODE_SUPPORT="0"
1452 aros_host_x11_includes=$x_includes
1453 aros_host_x11_libdirs=$x_libraries
1458 AC_ARG_ENABLE(sdl_hidd, AC_HELP_STRING([--enable-sdl-hidd],
1459 [build SDL hidd for hosted (default=auto)]),
1460 sdl_hidd="$enableval",
1462 case "x-$sdl_hidd" in
1463 x-yes|x-no|x-auto) ;;
1464 *) sdl_hidd="auto" ;;
1468 if test "x-$sdl_hidd" != "x-no" ; then
1471 AM_PATH_SDL([1.2.10], have_sdl="yes", have_sdl="no")
1473 if test "x-$have_sdl" != "x-yes" ; then
1476 if test "x-$sdl_hidd" != "x-auto" ; then
1477 dnl and they explicitly asked for it, bail out
1478 AC_MSG_ERROR([SDL libs/headers not found, cannot build SDL hidd as requested])
1482 dnl found it, setup the metatarget
1483 sdl_hidd_target=kernel-hidd-sdl
1484 aros_host_sdl_cflags=SDL_CFLAGS
1485 aros_host_sdl_libs=SDL_LIBS
1492 dnl See if the user wants dbus.library
1493 AC_MSG_CHECKING([if building of dbus.library is enabled])
1494 AC_ARG_ENABLE(dbus,AC_HELP_STRING([--enable-dbus],[Enable DBUS support via dbus.library (default=no)]),dbus="yes",dbus="no")
1495 if test "$dbus" = "yes" ; then
1497 DBUS_CFLAGS=`pkg-config --cflags dbus-1`
1498 DBUS_LIBFLAGS=`pkg-config --libs dbus-1`
1499 KERNEL_DBUS_KOBJ=kernel-dbus-kobj
1500 KERNEL_DBUS_INCLUDES=kernel-dbus-includes
1504 AC_MSG_RESULT($dbus)
1507 dnl --------------------------------------------------------------------
1508 dnl Configuration Output Section
1509 dnl --------------------------------------------------------------------
1514 AC_SUBST(aros_flavour)
1515 AC_SUBST(aros_flavour_uc)
1516 AC_SUBST(AROS_BUILDDIR)
1517 AC_SUBST(AROS_SRCDIR)
1518 AC_SUBST(AROS_PORTSSRCDIR)
1521 AC_SUBST(aros_cc_pre)
1522 AC_SUBST(aros_host_strip)
1523 AC_SUBST(aros_host_arch)
1524 AC_SUBST(aros_host_cpu)
1525 AC_SUBST(aros_host_cc)
1526 AC_SUBST(aros_host_ar)
1527 AC_SUBST(aros_host_ranlib)
1528 AC_SUBST(aros_host_ld)
1529 AC_SUBST(aros_host_make)
1530 AC_SUBST(aros_host_cflags)
1531 AC_SUBST(aros_host_ldflags)
1532 AC_SUBST(aros_host_debug)
1533 AC_SUBST(aros_host_mkdep)
1534 AC_SUBST(aros_host_mkargs)
1535 AC_SUBST(aros_host_exe_suffix)
1536 AC_SUBST(aros_host_lib_suffix)
1537 AC_SUBST(aros_tools_dir)
1538 AC_SUBST(aros_host_aclocal)
1539 AC_SUBST(aros_host_autoconf)
1540 AC_SUBST(aros_host_autoheader)
1541 AC_SUBST(aros_host_automake)
1544 AC_SUBST(aros_target_guitheme)
1545 AC_SUBST(aros_target_bootloader)
1546 AC_SUBST(aros_target_arch)
1547 AC_SUBST(aros_target_cpu)
1548 AC_SUBST(aros_target_variant)
1549 AC_SUBST(aros_target_suffix)
1550 AC_SUBST(aros_target_incl)
1551 AC_SUBST(aros_target_ar)
1552 AC_SUBST(aros_target_ranlib)
1553 AC_SUBST(aros_kernel_nm)
1554 AC_SUBST(aros_target_cc)
1555 AC_SUBST(aros_kernel_cc)
1556 AC_SUBST(aros_target_as)
1557 AC_SUBST(aros_target_ld)
1558 AC_SUBST(aros_kernel_ld)
1559 AC_SUBST(aros_target_cc_includes)
1560 AC_SUBST(aros_target_cc_path)
1561 AC_SUBST(aros_target_objdump)
1562 AC_SUBST(aros_target_objcopy)
1563 AC_SUBST(aros_target_strip)
1564 AC_SUBST(aros_target_nm)
1565 AC_SUBST(aros_shared_default)
1566 AC_SUBST(aros_shared_ld)
1567 AC_SUBST(aros_object_format)
1568 AC_SUBST(aros_compiler_libs)
1570 AC_SUBST(aros_config_cflags)
1571 AC_SUBST(aros_config_aflags)
1572 AC_SUBST(aros_config_ldflags)
1574 AC_SUBST(aros_shared_cflags)
1575 AC_SUBST(aros_shared_aflags)
1576 AC_SUBST(aros_shared_ldflags)
1577 AC_SUBST(aros_kernel_ldflags)
1578 AC_SUBST(aros_debug_cflags)
1579 AC_SUBST(aros_debug_aflags)
1580 AC_SUBST(aros_debug_ldflags)
1581 AC_SUBST(aros_target_genmap)
1582 AC_SUBST(aros_target_strip_flags)
1585 AC_SUBST(x11_hidd_target)
1586 AC_SUBST(sdl_hidd_target)
1588 AC_SUBST(aros_default_wbwidth)
1589 AC_SUBST(aros_default_wbheight)
1590 AC_SUBST(aros_default_wbdepth)
1591 AC_SUBST(DO_XSHM_SUPPORT)
1592 AC_SUBST(DO_VIDMODE_SUPPORT)
1594 AC_SUBST(aros_host_x11_includes)
1595 AC_SUBST(aros_host_x11_libdirs)
1596 AC_SUBST(aros_host_sdl_cflags)
1597 AC_SUBST(aros_host_sdl_libs)
1599 # Native version related
1600 AC_SUBST(aros_bochs_hack)
1601 AC_SUBST(aros_serial_debug)
1603 # Palm native version related
1604 AC_SUBST(aros_palm_debug_hack)
1606 # Unix/Hosted version related
1607 AC_SUBST(aros_nesting_supervisor)
1610 AC_SUBST(ENABLE_DBUS)
1611 AC_SUBST(DBUS_CFLAGS)
1612 AC_SUBST(DBUS_LIBFLAGS)
1613 AC_SUBST(KERNEL_DBUS_KOBJ)
1614 AC_SUBST(KERNEL_DBUS_INCLUDES)
1617 AC_SUBST(aros_debug)
1618 AC_SUBST(aros_mungwall_debug)
1619 AC_SUBST(aros_stack_debug)
1620 AC_SUBST(aros_modules_debug)
1622 # Collect-aros stuff: "-ius" to ignore undefined symbols
1623 AC_SUBST(ignore_undefined_symbols)
1625 # C compiler related
1626 AC_SUBST(gcc_target_cpu)
1628 dnl Prepare for output, make up all the generated patches
1629 case "$aros_flavour" in
1630 emulation) aros_flavour_uc="AROS_FLAVOUR_EMULATION"
1631 aros_flavour="emulation" ;;
1632 emulcompat) aros_flavour_uc="(AROS_FLAVOUR_EMULATION|AROS_FLAVOUR_BINCOMPAT)"
1633 aros_flavour="emulation" ;;
1634 standalone) aros_flavour_uc="AROS_FLAVOUR_STANDALONE"
1635 aros_flavour="standalone";;
1636 native) aros_flavour_uc="AROS_FLAVOUR_NATIVE"
1637 aros_flavour="native" ;;
1638 nativecompat) aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1639 aros_flavour="native" ;;
1640 linklib) aros_flavour_uc="AROS_FLAVOUR_LINKLIB"
1641 aros_flavour="linklib" ;;
1642 palmnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1643 aros_flavour="palmnative" ;;
1644 mac68knative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1645 aros_flavour="mac68knative" ;;
1646 ppcnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_BINCOMPAT)"
1647 aros_flavour="ppcnative" ;;
1650 if test ! -d ${aros_inc_dir} ; then
1651 ${MKDIR} ${aros_inc_dir}
1653 if test ! -d ${aros_geninc_dir} ; then
1654 ${MKDIR} ${aros_geninc_dir}
1656 if test ! -d ${aros_hostcfg_dir} ; then
1657 ${MKDIR} ${aros_hostcfg_dir}
1659 if test ! -d ${aros_targetcfg_dir} ; then
1660 ${MKDIR} ${aros_targetcfg_dir}
1662 if test ! -d ${aros_tools_dir} ; then
1663 ${MKDIR} ${aros_tools_dir}
1665 if test ! -d ${aros_scripts_dir} ; then
1666 ${MKDIR} ${aros_scripts_dir}
1669 AC_CONFIG_HEADERS(${aros_geninc_dir}/host-conf.h:config/host-conf.h.in)
1671 AC_CONFIG_COMMANDS([compiler_executable],
1673 prefix=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}
1675 prefix="${prefix}/${aros_target_cpu}-aros"
1676 prefix2=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros
1680 chmod a+x ${prefix2}-gcc ${prefix2}-ld
1682 ln -sf ${prefix2}-gcc ${prefix}-gcc
1683 ln -sf ${prefix2}-ld ${prefix}-ld
1685 ln -sf $aros_target_as_ln ${prefix}-as
1686 ln -sf $aros_target_nm_ln ${prefix}-nm
1687 ln -sf $aros_target_ar_ln ${prefix}-ar
1688 ln -sf $aros_target_ranlib_ln ${prefix}-ranlib
1689 ln -sf $aros_target_objcopy_ln ${prefix}-objcopy
1690 ln -sf $aros_target_objdump_ln ${prefix}-objdump
1691 ln -sf $aros_target_strip_ln ${prefix}-strip
1693 ln -sf $aros_target_as_ln ${prefix2}-as
1694 ln -sf $aros_target_nm_ln ${prefix2}-nm
1695 ln -sf $aros_target_ar_ln ${prefix2}-ar
1696 ln -sf $aros_target_ranlib_ln ${prefix2}-ranlib
1697 ln -sf $aros_target_objcopy_ln ${prefix2}-objcopy
1698 ln -sf $aros_target_objdump_ln ${prefix2}-objdump
1699 ln -sf $aros_target_strip_ln ${prefix2}-strip
1702 aros_tools_dir=${aros_tools_dir}
1703 aros_target_cpu=${aros_target_cpu}
1704 aros_target_arch=${aros_target_arch}
1705 aros_target_suffix=${aros_target_suffix}
1706 aros_target_nm_ln=${aros_target_nm_ln}
1707 aros_target_as_ln=${aros_target_as_ln}
1708 aros_target_ar_ln=${aros_target_ar_ln}
1709 aros_target_ranlib_ln=${aros_target_ranlib_ln}
1710 aros_target_objdump_ln=${aros_target_objdump_ln}
1711 aros_target_objcopy_ln=${aros_target_objcopy_ln}
1712 aros_target_strip_ln=${aros_target_strip_ln}
1715 AC_CONFIG_COMMANDS([genshared_executable],
1716 [chmod a+x ${aros_scripts_dir}/genshared],
1717 [aros_scripts_dir=${aros_scripts_dir}]
1719 AC_CONFIG_COMMANDS([genmf_executable],
1720 [chmod a+x ${aros_tools_dir}/genmf.py],
1721 [aros_tools_dir=${aros_tools_dir}]
1723 AC_CONFIG_COMMANDS([adflib_myaros.conf_executable],
1724 [chmod a+x tools/adflib/myconf.aros]
1731 ${aros_inc_dir}/config.h:config/config.h.in
1732 ${aros_geninc_dir}/config.h:config/config.h.in
1733 ${aros_hostcfg_dir}/host.cfg:config/host.cfg.in
1734 ${aros_targetcfg_dir}/target.cfg:config/target.cfg.in
1736 ${aros_targetcfg_dir}/make.defaults:config/make.defaults.in
1737 ${aros_targetcfg_dir}/specs:config/specs.in
1738 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-gcc:scripts/aros-gcc.in
1739 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-ld:scripts/aros-ld.in
1740 ${aros_scripts_dir}/genshared:compiler/c_lib/source/lib_source/genshared.in
1741 ${aros_tools_dir}/genmf.py:tools/genmf/genmf.py
1742 tools/adflib/myconf.aros
1743 tools/collect-aros/env.h
1748 dnl This is in order to not define SHARED_CFLAGS sometimes
1749 dnl We don't always do aros_shared_ar, aros_shared_cflags
1751 #XXX compatability...
1752 aros_shared_ar="$aros_shared_ld $aros_shared_ldflags -o"
1754 if test -n "$aros_shared_cflags" ; then
1755 echo "SHARED_CFLAGS := $aros_shared_cflags" >> ${aros_hostcfg_dir}/host.cfg
1756 echo "SHARED_AR := $aros_shared_ar" >> ${aros_hostcfg_dir}/host.cfg