1 dnl Copyright � 1997-2008, 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($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="\$(SRCDIR)/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 aclocal-1.9])
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 automake-1.9])
109 AROS_REQUIRED(aclocal/aclocal19/aclocal-1.9, $aros_host_aclocal)
110 AROS_REQUIRED(automake/automake19/automake-1.9, $aros_host_automake)
112 case "$aros_host_cc" in
114 aros_host_cc_pipe="-pipe"
124 dnl Despite the name, this is really a host configuration variable.
125 aros_target_cc_includes=""
127 # This is the main host configuration section. It is where the host
128 # can change the values of any variables it needs to change. We do
129 # not look at anything that compiles to the target yet, we'll get
134 aros_host_arch="aros"
135 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
141 aros_host_cpu="x86_64"
144 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
145 aros_host_cpu="$host_cpu"
151 aros_host_arch="linux"
152 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
158 aros_host_cpu="x86_64"
167 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
168 aros_host_cpu="$host_cpu"
174 aros_host_cc="$aros_host_cc $aros_host_cc_pipe -I/usr/local/include"
175 aros_host_make="gmake"
176 aros_host_arch="freebsd"
179 aros_host_ldflags="$aros_host_ldflags -L/usr/local/lib -liconv"
181 dnl Need to override this here, it's just too hard later.
182 dnl This shouldn't be here at all...
183 dnl aros_target_cc_includes="/usr/include"
185 dnl FreeBSD 5.x (and later) has changed the default object format.
186 dnl The double [[]] is necessary to get around m4's quoting rules.
189 aros_object_format="elf_i386"
193 aros_object_format="elf_i386_fbsd"
200 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
201 aros_host_arch="darwin"
210 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
211 aros_host_cpu="$host_cpu"
215 aros_host_ldflags="$aros_host_ldflags -liconv"
220 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
221 aros_host_make="gmake"
222 aros_host_arch="netbsd"
231 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
232 aros_host_cpu="$host_cpu"
235 aros_host_lib_suffix=".0.0"
239 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
240 aros_host_make="gmake"
241 aros_host_arch="openbsd"
247 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
248 aros_host_cpu="$host_cpu"
254 aros_host_arch="solaris"
255 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
261 aros_host_cpu="sparc"
264 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
265 aros_host_cpu="$host_cpu"
271 aros_host_arch="morphos"
276 aros_host_arch="amiga"
281 TOUCH="/gg/bin/touch"
290 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
291 aros_host_cpu="$host_cpu"
297 aros_host_arch="cygwin"
298 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
304 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
305 aros_host_cpu="$host_cpu"
311 aros_host_arch="mingw32"
312 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
318 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
319 aros_host_cpu="$host_cpu"
324 AC_MSG_ERROR([Unsupported host architecture $host])
328 AROS_PROG(aros_host_ar,[ar],[cr])
329 AROS_REQUIRED(ar,$aros_host_ar)
330 AROS_PROG(aros_host_ranlib,ranlib)
331 AROS_REQUIRED(ranlib,$aros_host_ranlib)
332 AROS_PROG(aros_host_strip,strip)
333 AROS_REQUIRED(strip,$aros_host_strip)
335 AROS_PROG(RM,[rm],[-rf])
336 AROS_REQUIRED(rm,$RM)
338 AROS_REQUIRED(cp,$CP)
340 AROS_REQUIRED(mv,$MV)
341 AROS_PROG(ECHO,[echo])
342 AROS_REQUIRED(echo,$ECHO)
343 AROS_PROG(MKDIR,[mkdir],[-p])
344 AROS_REQUIRED(mkdir,$MKDIR)
345 AROS_PROG(TOUCH,[touch])
346 AROS_REQUIRED(touch,$TOUCH)
347 AROS_PROG(SORT,[sort])
348 AROS_REQUIRED(sort,$SORT)
349 AROS_PROG(UNIQ,[uniq])
350 AROS_REQUIRED(uniq,$UNIQ)
351 AROS_PROG(NOP,[true])
352 AROS_REQUIRED(true,$NOP)
354 AROS_REQUIRED(cat,$CAT)
355 AROS_PROG(BISON,[bison])
356 AROS_REQUIRED(bison,$BISON)
357 AROS_PROG(FLEX,[flex])
358 AROS_REQUIRED(flex,$FLEX)
359 AROS_PROG(PNGTOPNM,[pngtopnm])
360 AROS_REQUIRED(pngtopnm,$PNGTOPNM)
361 AROS_PROG(PPMTOILBM,[ppmtoilbm])
362 AROS_REQUIRED(ppmtoilbm,$PPMTOILBM)
364 AROS_REQUIRED(sed,$SED)
365 AROS_PROG(CHMOD,[chmod])
366 AROS_REQUIRED(chmod,$CHMOD)
368 AM_PATH_PYTHON(2.2.1)
375 dnl ---------------------------------------------------------------------------
376 dnl Look for things about the host system, good for hosted targets.
377 dnl ---------------------------------------------------------------------------
379 # Check for some includes for the X11 HIDD and the kernel
380 AC_CHECK_HEADERS([sys/ipc.h sys/shm.h \
381 sys/mmap.h sys/mman.h sysexits.h \
382 sys/statfs.h sys/statvfs.h sys/vfs.h sys/param.h \
385 AC_CHECK_HEADERS([sys/mount.h],,,[#include <sys/param.h>])
402 AC_CHECK_MEMBERS(struct tm.tm_gmtoff)
404 # Look for some functions
405 AC_CHECK_FUNCS([getpagesize kqueue statfs statvfs \
406 clone kse_create rfork_thread thr_create sa_register \
407 getcontext makecontext setcontext sigaltstack swapcontext])
412 dnl --------------------------------------------------------------------
413 dnl Target Configuration Section
414 dnl --------------------------------------------------------------------
416 dnl The target configuration section is responsible for setting up all
417 dnl the paths for includes, and tools required to build AROS to some
418 dnl particular target.
420 aros_config_cflags="-Wall -Werror-implicit-function-declaration"
421 aros_config_aflags="-Wall -x assembler-with-cpp -c"
422 aros_config_ldflags=""
424 aros_shared_default=yes
426 aros_shared_cflags="-fPIC"
427 aros_shared_aflags=""
428 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
429 aros_kernel_ldflags="-Wl,-rpath,./lib"
431 aros_target_ar_flags="cr"
432 aros_target_nm_flags="-C -ul"
433 aros_target_strip_flags="--strip-unneeded -R.comment"
437 aros_target_genmap="-Wl,-Map -Xlinker"
439 # Native flavour stuff
441 aros_serial_debug="0"
443 # Palm native flavour stuff
444 aros_palm_debug_hack="0"
447 aros_nesting_supervisor="0"
449 # Collect-aros stuff: "-ius" to ignore undefined symbols
450 ignore_undefined_symbols=""
452 #-----------------------------------------------------------------------------
455 # GCC 4.1+ has a stack protection feature that requires OS support. Ubuntu has
456 # it switched on by default, and we use the host compiler, so it compiles AROS
457 # code with this enabled resulting in link failures as we don't have support
460 # We use two methods to disable it. For the host compiler (used to compile
461 # some hosted modules), we test to see if the compiler supports stack
462 # protection, and if it does we disable it in AROS_CONFIG_CFLAGS. This should
463 # work on all platforms.
465 # For the "cross" compiler we clear the "ssp_default" spec in config/specs.in
466 # (this is done unconditionally, as it should have no effect on compilers
467 # without the stack protection feature). This may be specific to the way that
468 # Ubuntu enables the feature, so may not work everywhere. My specs-fu isn't
469 # strong enough to disable it in a generic way though, so we'll live with it
470 # until another vendor ships GCC with it enabled in a different way, and deal
474 AC_MSG_CHECKING([whether ${CC} accepts -fno-stack-protector])
475 save_cflags="$CFLAGS"
476 CFLAGS="$CFLAGS -fno-stack-protector"
477 AC_TRY_COMPILE(,, use_no_stack_protector="yes", use_no_stack_protector="no")
478 AC_MSG_RESULT($use_no_stack_protector)
479 if test "x-$use_no_stack_protector" = "x-yes" ; then
480 aros_host_cflags="$aros_host_cflags -fno-stack-protector"
482 CFLAGS="$save_cflags"
485 #-----------------------------------------------------------------------------
487 # Disable pointer-signedness warnings if the compiler recognises the option
488 # (this only works for the host compiler at the moment)
490 AC_MSG_CHECKING([whether ${CC} accepts -Wno-pointer-sign])
491 save_cflags="$CFLAGS"
492 CFLAGS="$CFLAGS -Wno-pointer-sign"
493 AC_TRY_COMPILE(,, use_no_sign_warning="yes", use_no_sign_warning="no")
494 AC_MSG_RESULT($use_no_sign_warning)
495 if test "x-$use_no_sign_warning" = "x-yes" ; then
496 aros_host_cflags="$aros_host_cflags -Wno-pointer-sign"
498 CFLAGS="$save_cflags"
500 #-----------------------------------------------------------------------------
502 AC_MSG_CHECKING([for type of build])
503 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")
505 if test "$build_type" = "nightly"; then
506 build_type_string="NIGHTLY"
507 elif test "$build_type" = "snapshot"; then
508 build_type_string="SNAPSHOT"
509 elif test "$build_type" = "milestone"; then
510 build_type_string="MILESTONE"
511 elif test "$build_type" = "release"; then
512 build_type_string="RELEASE"
514 build_type_string="PERSONAL"
515 build_type="personal"
518 aros_config_cflags="$aros_config_cflags -DAROS_BUILD_TYPE=AROS_BUILD_TYPE_$build_type_string"
520 AC_MSG_RESULT($build_type)
522 #-----------------------------------------------------------------------------
523 all_debug_types="messages stack mungwall modules symbols"
525 AC_MSG_CHECKING([which debug types to enable])
526 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)]),
527 debug="$enableval",debug="")
529 if test "$debug" = "" -o "$debug" = "no"; then
531 elif test "$debug" = "yes"; then
535 if test "$debug" = "all" ; then
536 debug=$all_debug_types
537 for d in $all_debug_types; do
538 export aros_${d}_debug="1"
541 for d in $all_debug_types; do
542 export aros_${d}_debug="0"
546 if test "$debug" != "none"; then
547 debug=`echo $debug | sed s/,/\ /g`
550 for d2 in $all_debug_types; do
551 if test "$d2" = "$d"; then
556 if test "$found" = "0"; then
557 AC_MSG_ERROR([unrecognized debug type "$d". Available types are: all none $all_debug_types])
559 export aros_${d}_debug="1"
563 AC_MSG_RESULT($debug)
565 if test "$aros_messages_debug" = "1"; then
566 aros_messages_debug="-DADEBUG=1 -DMDEBUG=1"
568 aros_messages_debug=""
570 if test "$aros_symbols_debug" = "1"; then
571 aros_symbols_debug="-g"
573 aros_symbols_debug=""
576 # These are the flags to pass when compiling debugged programs
577 aros_debug_cflags="$aros_symbols_debug $aros_messages_debug"
579 aros_debug_ldflags="$aros_symbols_debug"
583 #-----------------------------------------------------------------------------
584 # Checking if we should build crosstools..
585 AC_MSG_CHECKING([whether to build crosstools])
586 AC_ARG_ENABLE(crosstools,AC_HELP_STRING([--enable-crosstools],[Build cross-compiler toolchains if necessary (default=no).]),crosstools="$enableval",crosstools="no")
587 if test "$crosstools" != "" -a "$crosstools" != "no"; then
589 aros_crosstools="yes"
594 #-----------------------------------------------------------------------------
595 # Checking for distcc and ccache.
597 # Always apply the transforms in this particular order. Basically you should
598 # always run 'ccache distcc compiler' in that order for the best performance.
600 AC_MSG_CHECKING([whether to enable distcc])
601 AC_ARG_ENABLE(distcc,AC_HELP_STRING([--enable-distcc],[Use distcc as a front end to the compiler (default=no).]),distcc="$enableval",distcc="no")
602 if test "$distcc" != "" -a "$distcc" != "no"; then
603 # AC_CHECK_PROG will print out the result in this case
604 AC_PATH_PROG(DISTCC,[distcc],distcc,)
609 AC_MSG_CHECKING([whether to enable ccache])
610 AC_ARG_ENABLE(ccache,AC_HELP_STRING([--enable-ccache],[Use ccache as a front end to the compiler (default=no).]),ccache="$enableval",ccache="no")
611 if test "$ccache" != "" -a "$ccache" != "no"; then
612 # AC_CHECK_PROG will print out the result in this case
613 AC_CHECK_PROG(CCACHE,[ccache],ccache,)
618 #-----------------------------------------------------------------------------
619 AC_MSG_CHECKING([what optimization flags to use])
620 AC_ARG_WITH(optimization,AC_HELP_STRING([--with-optimization=FLAGS],[Use optimization flags FLAGS (default=-O2).]),optimization="$withval",optimization="unknown")
621 if test "$optimization" = "unknown"; then
622 dnl default is -O2 for normal builds, -O0 for debug builds
623 if test "$debug" != "none"; then
629 aros_config_cflags="$aros_config_cflags $optimization"
630 AC_MSG_RESULT($optimization)
632 #-----------------------------------------------------------------------------
633 AC_MSG_CHECKING([what target variant to enable])
634 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")
635 if test "$target_variant" = "none"; then
636 aros_target_variant=""
637 aros_target_suffix=""
639 aros_target_variant="$target_variant"
640 aros_target_suffix="-$target_variant"
642 AC_MSG_RESULT($enableval)
644 target_bootloader="none"
646 #-----------------------------------------------------------------------------
647 # This is the target configuration switch.
650 aros_target_arch="linux"
651 case "$target_cpu" in
653 aros_target_cpu="m68k"
654 aros_object_format="m68kelf"
655 aros_flavour="emulcompat"
656 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__linux__"
657 aros_shared_ldflags="-Wl,-T,\$(TOP)/config/linux/m68k/script.so"
658 aros_kernel_ldflags="-Wl,-rpath,./lib,-T,\$(TOP)/config/linux/m68k/script.normal"
659 gcc_target_cpu="mc68000"
662 aros_target_cpu="i386"
663 aros_object_format="elf_i386"
664 aros_flavour="emulation"
665 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__linux__"
666 aros_default_wbdepth=8
667 gcc_target_cpu="i386"
670 aros_target_cpu="x86_64"
671 aros_object_format="elf_x86_64"
672 aros_flavour="emulation"
673 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64 -D__linux__"
674 aros_config_cflags="$aros_config_cflags -mno-red-zone"
675 aros_default_wbdepth=8
676 gcc_target_cpu="x86_64"
679 aros_target_cpu="ppc"
680 aros_object_format="elf32ppc"
681 aros_flavour="emulation"
682 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
683 aros_default_wbdepth=8
687 # Same as powerpc, but I need this for the nightly build to work again.
688 # Actually, the nightly should be made working with powerpc target.
689 # That just was too much work for the moment, another week or two.
691 aros_target_cpu="ppc"
692 aros_object_format="elf32ppc"
693 aros_flavour="emulation"
694 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
695 aros_default_wbdepth=8
699 AC_MSG_ERROR("Unknown CPU for Linux -- $target_cpu")
705 aros_target_arch="pc"
706 aros_shared_default="no"
707 target_bootloader="grub2"
708 case "$target_cpu" in
710 aros_target_cpu="i386"
712 dnl If somebody hasn't already set the target object
713 dnl format, then use this value. Mostly to support
714 dnl FreeBSD cross-compilation.
715 dnl TODO: Remove when we always use our compiler.
717 if test "$aros_object_format" = "" ; then
718 aros_object_format="elf_i386"
720 aros_flavour="standalone"
721 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
722 aros_kernel_ldflags=""
723 aros_default_wbwidth=640
724 aros_default_wbheight=480
725 gcc_target_cpu="i386"
728 aros_target_cpu="x86_64"
730 if test "$aros_object_format" = "" ; then
731 aros_object_format="elf_x86_64"
733 aros_flavour="standalone"
734 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64"
735 aros_config_cflags="$aros_config_cflags -fno-asynchronous-unwind-tables -mno-red-zone"
736 aros_kernel_ldflags=""
737 aros_default_wbwidth=640
738 aros_default_wbheight=480
739 gcc_target_cpu="x86_64"
742 AC_MSG_ERROR("Unknown native CPU -- $target_cpu")
748 aros_target_arch="prep"
749 aros_shared_default="no"
750 aros_target_cpu="ppc"
751 aros_object_format="elf32ppc"
752 aros_flavour="ppcnative"
753 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
754 aros_kernel_ldflags=""
755 aros_default_wbwidth=640
756 aros_default_wbheight=480
761 aros_target_arch="freebsd"
762 aros_target_cpu="i386"
763 aros_flavour="emulation"
764 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
765 gcc_target_cpu="i386"
767 aros_target_strip_flags="-x"
771 aros_target_arch="darwin"
772 aros_flavour="emulation"
773 case "$target_cpu" in
775 aros_target_cpu="i386"
776 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
777 gcc_target_cpu="i386"
778 aros_object_format="elf_i386"
779 aros_target_strip_flags="-x"
782 AC_MSG_ERROR("Unsupported target CPU for darwin hosted flavour -- $target_cpu")
787 aros_target_arch="netbsd"
788 case "$target_cpu" in
790 aros_target_cpu="m68k"
791 aros_object_format="m68kelf"
792 aros_flavour="emulcompat"
793 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__NetBSD__"
794 gcc_target_cpu="mc68000"
797 aros_target_cpu="i386"
798 aros_object_format="elf_i386"
799 aros_flavour="emulation"
800 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__NetBSD__"
801 aros_default_wbdepth=8
802 gcc_target_cpu="i386"
805 AC_MSG_ERROR("Unknown CPU for NetBSD -- $target_cpu")
808 aros_target_genmap="-Wl,-M -Xlinker >"
809 aros_flavour="emulation"
810 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
814 aros_target_arch="openbsd"
815 case "$target_cpu" in
817 aros_target_cpu="i386"
818 aros_object_format="elf_i386"
819 aros_flavour="emulation"
820 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__OpenBSD__"
821 gcc_target_cpu="i386"
824 AC_MSG_ERROR("Unknown CPU for OpenBSD -- $target_cpu")
827 aros_target_genmap="-Wl,-M -Xlinker >"
828 aros_target_nm_flags="-u"
829 aros_flavour="emulation"
833 aros_target_arch="solaris"
834 case "$target_cpu" in
836 aros_target_cpu="i386"
837 aros_object_format="elf_i386"
838 aros_flavour="emulation"
839 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__Solaris__"
840 aros_default_wbdepth=8
841 gcc_target_cpu="i386"
844 aros_target_cpu="sparc"
845 aros_object_format="elf_sparc"
846 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dsparc -D__Solaris__"
847 gcc_target_cpu="sparc"
850 AC_MSG_ERROR("Unknown CPU for Solaris -- $target_cpu")
853 aros_config_cflags="$aros_config_cflags -D$aros_target_cpu"
854 aros_flavour="emulation"
858 aros_target_arch="morphos"
859 aros_shared_default="no"
860 aros_target_cpu="ppc"
861 aros_object_format="elf_ppc"
862 aros_flavour="nativecompat"
863 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
868 aros_target_arch="sam440"
869 aros_shared_default="no"
870 aros_target_cpu="ppc"
871 aros_object_format="elf32ppc"
872 aros_flavour="ppcnative"
873 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
874 aros_kernel_ldflags=""
875 aros_default_wbwidth=640
876 aros_default_wbheight=480
877 aros_config_cflags="$aros_config_cflags -mcpu=440fp -mno-toc -fno-asynchronous-unwind-tables"
878 gcc_target_cpu="powerpc"
882 aros_target_arch="chrp"
883 aros_shared_default="no"
884 aros_target_cpu="ppc"
885 aros_object_format="elf32ppc"
886 aros_flavour="ppcnative"
887 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
888 aros_kernel_ldflags=""
889 aros_default_wbwidth=640
890 aros_default_wbheight=480
891 aros_config_cflags="$aros_config_cflags -mno-toc -fno-asynchronous-unwind-tables"
892 gcc_target_cpu="powerpc"
893 case "$aros_target_variant" in
895 aros_config_cflags="$aros_config_cflags -DBIG_ENDIAN_OHCI=1 -mcpu=603e"
901 aros_target_arch="amiga"
902 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D_AMIGA -DAMIGA"
903 aros_shared_default="no"
905 aros_config_cflags="$aros_config_cflags -fomit-frame-pointer -fbuiltin -ffreestanding"
907 case "$target_cpu" in
909 aros_target_cpu="m68k"
910 aros_object_format="m68kelf"
911 aros_flavour="nativecompat"
912 gcc_target_cpu="mc68000"
916 aros_flavour="native"
920 AC_MSG_ERROR("Unknown CPU for Amiga $target_cpu")
926 aros_target_arch="cygwin"
927 aros_shared_default="no"
928 case "$target_cpu" in
930 aros_target_cpu="i386"
931 aros_object_format="elf_i386"
932 aros_flavour="emulation"
933 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__CYGWIN32__"
934 aros_shared_cflags=""
935 aros_default_wbdepth=8
936 gcc_target_cpu="i386"
937 aros_target_cc="i386-aros-gcc"
938 aros_target_ld="i386-aros-ld"
939 aros_target_as="i386-aros-as"
940 aros_target_ar="i386-aros-ar"
941 aros_target_ranlib="i386-aros-ranlib"
942 aros_target_nm="i386-aros-nm"
943 aros_target_strip="i386-aros-strip"
944 aros_target_objcopy="i386-aros-objcopy"
945 aros_target_objdump="i386-aros-objdump"
948 AC_MSG_ERROR("Unknown CPU for CygWin -- $target_cpu")
954 aros_target_arch="mingw32"
955 aros_shared_default="no"
956 case "$target_cpu" in
958 aros_target_cpu="i386"
959 aros_object_format="elf_i386"
960 aros_flavour="emulation"
961 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
962 aros_shared_cflags=""
963 aros_default_wbdepth=8
964 gcc_target_cpu="i386"
965 aros_target_cc="i386-aros-gcc"
966 aros_target_ld="i386-aros-ld"
967 aros_target_as="i386-aros-as"
968 aros_target_ar="i386-aros-ar"
969 aros_target_ranlib="i386-aros-ranlib"
970 aros_target_nm="i386-aros-nm"
971 aros_target_strip="i386-aros-strip"
972 aros_target_objcopy="i386-aros-objcopy"
973 aros_target_objdump="i386-aros-objdump"
976 AC_MSG_ERROR("Unknown CPU for Mingw32 -- $target_cpu")
979 if test $host_os = "cygwin"; then
980 aros_kernel_cflags="-mno-cygwin"
984 aros_target_arch="pp"
985 aros_shared_default="no"
986 case "$target_cpu" in
988 aros_target_cpu="m68k"
989 aros_object_format="m68kelf"
990 aros_flavour="palmnative"
991 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
992 aros_kernel_ldflags=""
993 aros_default_wbwidth=160
994 aros_default_wbheight=160
995 aros_default_wbdepth=1
996 aros_target_ar_flags="cru"
997 aros_compiler_libs="-lgcc1"
998 aros_shared_default=no
999 aros_shared_cflags="-fpic"
1000 aros_shared_aflags=""
1001 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1002 aros_kernel_ldflags="-Wl,-rpath,./lib"
1003 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000 -Wa,-mc68000"
1004 aros_debug_aflags=""
1005 aros_debug_ldflags="$aros_symbols_debug"
1006 aros_mungwall_debug="0"
1007 aros_modules_debug="0"
1008 gcc_target_cpu="mc68000"
1009 ignore_undefined_symbols="-ius"
1012 AC_MSG_ERROR("Unknown CPU for PalmPilot -- $target_cpu")
1018 aros_target_arch="mac"
1019 aros_shared_default="no"
1020 case "$target_cpu" in
1022 aros_target_cpu="m68k"
1023 aros_object_format="m68kelf"
1024 aros_flavour="mac68knative"
1025 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
1026 aros_default_wbwidth=512
1027 aros_default_wbheight=384
1028 aros_default_wbdepth=8
1029 aros_target_ar_flags="cru"
1030 aros_compiler_libs="-lgcc1"
1031 aros_shared_default=no
1032 aros_shared_cflags="-fpic"
1033 aros_shared_aflags=""
1034 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1035 aros_kernel_ldflags="-Wl,-rpath,./lib"
1036 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000"
1037 aros_debug_aflags=""
1038 aros_debug_ldflags="$aros_symbols_debug"
1039 aros_mungwall_debug="0"
1040 aros_modules_debug="0"
1041 gcc_target_cpu="mc68000"
1042 ignore_undefined_symbols="-ius"
1045 AC_MSG_ERROR("Unknown CPU for Mac68k -- $target_cpu")
1051 AC_MSG_ERROR([Unsupported target architecture $target])
1055 AC_MSG_CHECKING([Where to download sourcecode for external ports])
1056 AC_ARG_WITH(portssources,AC_HELP_STRING([--with-portssources=DIR],[Where to download sourcecode for external ports]),with_portssrcdir=$withval,with_portssrcdir="default")
1057 if test "$with_portssrcdir" = "default"; then
1058 AROS_PORTSSRCDIR="$AROS_BUILDDIR/bin/Sources"
1060 AROS_PORTSSRCDIR="$with_portssrcdir"
1062 AC_MSG_RESULT($AROS_PORTSSRCDIR)
1064 AC_MSG_CHECKING([which bootloader to use])
1065 AC_ARG_WITH(bootloader,AC_HELP_STRING([--with-bootloader=NAME],[Use a specific bootloader]),target_bootloader=$withval,target_bootloader=$target_bootloader)
1066 if test "$target_bootloader" = "none"; then
1067 aros_target_bootloader=""
1069 aros_target_bootloader="$target_bootloader"
1071 AC_MSG_RESULT($target_bootloader)
1073 # Check LZO when compiling the grub2 bootloader on i386/x86_64.
1074 aros_liblzo_check="no"
1075 case "$aros_target_bootloader" in
1077 case "$target_cpu" in
1079 aros_liblzo_check="yes"
1082 aros_liblzo_check="yes"
1093 if test "$aros_liblzo_check" = "yes"; then
1094 # There are three possibilities. LZO version 2 installed with the name
1095 # liblzo2, with the name liblzo, and LZO version 1.
1096 AC_CHECK_LIB(lzo2, __lzo_init_v2, [LIBLZO="-llzo2"],
1097 AC_CHECK_LIB(lzo, __lzo_init_v2, [LIBLZO="-llzo"],
1098 AC_CHECK_LIB(lzo, __lzo_init2, [LIBLZO="-llzo"],
1099 AC_MSG_ERROR([LZO library version 1.02 or later is required]))))
1102 LIBS="$LIBS $LIBLZO"
1103 AC_CHECK_FUNC(lzo1x_999_compress, ,
1104 [AC_MSG_ERROR([LZO1X-999 must be enabled])])
1106 # LZO version 2 uses lzo/lzo1x.h, while LZO version 1 uses lzo1x.h.
1107 AC_CHECK_HEADERS(lzo/lzo1x.h lzo1x.h)
1110 AC_MSG_CHECKING([which GUI Theme to use])
1111 AC_ARG_WITH(theme,AC_HELP_STRING([--with-theme=NAME],[Use a specific GUI Theme]),target_guitheme=$withval,target_guitheme="default")
1112 if test "$target_guitheme" = "default"; then
1113 aros_target_guitheme="Ice"
1115 aros_target_guitheme="$target_guitheme"
1117 AC_MSG_RESULT($aros_target_guitheme)
1119 # Find out if we are cross-compiling (ie. if we can't use the host compiler
1122 if test "$aros_host_cpu" != "$aros_target_cpu" ; then
1125 if test "$aros_host_arch" == "darwin" ; then
1129 # Set prefix for target compiler etc. if we're cross-compiling
1130 # (should possibly be earlier but needs to be after AC_PROG_CC)
1131 if test "$cross_compiling" = "yes" ; then
1132 target_tool_prefix=${target_cpu}-elf-
1133 CC=${target_tool_prefix}gcc
1136 #-----------------------------------------------------------------------------
1138 # Disable pointer-signedness warnings if the compiler recognises the option
1140 AC_MSG_CHECKING([whether ${CC} accepts -Wno-pointer-sign])
1141 save_cflags="$CFLAGS"
1142 CFLAGS="$CFLAGS -Wno-pointer-sign"
1143 AC_TRY_COMPILE(,, use_no_sign_warning="yes", use_no_sign_warning="no")
1144 AC_MSG_RESULT($use_no_sign_warning)
1145 if test "x-$use_no_sign_warning" = "x-yes" ; then
1146 aros_config_cflags="$aros_config_cflags -Wno-pointer-sign"
1148 CFLAGS="$save_cflags"
1150 #-----------------------------------------------------------------------------
1152 # Find all the tools we need to compile. This could be cross-compiling
1153 # though! If that is the case we use the GNU form of the target and
1154 # simply add this to the front of the binary name. This is rather simple,
1155 # but it should work under most circumstances.
1157 # The default tools are to use the same as the host, but only if the
1158 # host and target CPU are the same. With GCC this is normally enough.
1162 aros_shared_ld="$aros_host_ld"
1164 aros_target_mkdep="$aros_host_mkdep"
1165 aros_target_incl_def="$aros_host_incl"
1167 AC_PATH_PROG(aros_kernel_cc,$CC)
1169 # The default tools executables to be linked to.
1170 if test "$aros_target_cc" != ""; then
1171 AC_PATH_PROG(aros_target_cc,$aros_target_cc)
1172 AROS_REQUIRED(gcc,$aros_target_cc)
1174 if test "$aros_target_ld" != ""; then
1175 AC_PATH_PROG(aros_target_ld,$aros_target_ld)
1176 AROS_REQUIRED(ld,$aros_target_ld)
1179 if test "$crosstools" != "yes"; then
1180 AROS_TOOL_TARGET(aros_target_as_ln,as,$aros_target_as)
1181 AROS_REQUIRED(as,$aros_target_as_ln)
1182 AROS_TOOL_TARGET(aros_kernel_ld,ld,$aros_kernel_ld)
1183 AROS_REQUIRED(ld,$aros_kernel_ld)
1184 AROS_TOOL_TARGET(aros_target_ar_ln,ar,$aros_target_ar)
1185 AROS_REQUIRED(ar,$aros_target_ar_ln)
1186 AROS_TOOL_TARGET(aros_target_nm_ln,nm,$aros_target_nm)
1187 AROS_REQUIRED(nm,$aros_target_nm_ln)
1188 AROS_TOOL_TARGET(aros_target_objcopy_ln,objcopy,$aros_target_objcopy)
1189 AROS_REQUIRED(objcopy,$aros_target_objcopy_ln)
1190 AROS_TOOL_TARGET(aros_target_objdump_ln,objdump,$aros_target_objdump)
1191 AROS_REQUIRED(objdump,$aros_target_objdump_ln)
1192 AROS_TOOL_TARGET(aros_target_ranlib_ln,ranlib,$aros_target_ranlib)
1193 AROS_REQUIRED(ranlib,$aros_target_ranlib_ln)
1194 AROS_TOOL_TARGET(aros_target_strip_ln,strip,$aros_target_strip)
1195 AROS_REQUIRED(strip,$aros_target_strip_ln)
1198 aros_hostcfg_dir="bin/${aros_host_arch}-${aros_host_cpu}/gen/config"
1199 aros_targetcfg_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/config"
1200 aros_inc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/AROS/Development/include/aros"
1201 aros_gendir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen"
1202 aros_geninc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/include/aros"
1203 aros_tools_dir="bin/${aros_host_arch}-${aros_host_cpu}/tools"
1204 aros_scripts_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/scripts"
1206 # aros_cc_pre is a variable that is added to the front of the compiler name
1207 # in the generated aros-gcc shell script. We need this to enable the cache
1208 # to work across cleaned builds. Also, support DISTCC using the correct
1209 # environment variable.
1212 if test "x${DISTCC}" != "x" ; then
1213 if test "x${CCACHE}" != "x" ; then
1214 aros_cc_pre="env CCACHE_PREFIX=${DISTCC} ${CCACHE} "
1216 aros_cc_pre="${DISTCC} "
1219 if test "x${CCACHE}" != "x" ; then
1220 aros_cc_pre="${CCACHE} "
1224 prefix="${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros"
1226 AC_SUBST(aros_target_nostdinc_cflags,-nostdinc)
1227 AC_SUBST(aros_target_nostartup_ldflags,-nostartfiles)
1228 AC_SUBST(aros_target_nix_ldflags,-nix)
1229 AC_SUBST(aros_target_detach_ldflags,-detach)
1230 AC_SUBST(aros_target_nostdlib_ldflags,-nostdlib)
1233 if test "$aros_target_cc" = ""; then
1234 orig_target_cc=$aros_kernel_cc
1236 orig_target_cc=$aros_target_cc
1238 if test "$aros_target_ld" = ""; then
1239 orig_target_ld=$aros_kernel_ld
1241 orig_target_ld=$aros_target_ld
1243 if test "$GCC" = "yes"; then
1244 aros_target_cc_path=`$orig_target_cc -print-search-dirs | grep "programs: =" | cut -c 12-`
1246 aros_target_cc="${prefix}-gcc"
1247 aros_target_as="${prefix}-as"
1248 aros_target_ld="${prefix}-ld"
1249 aros_target_ar="${prefix}-ar $aros_target_ar_flags"
1250 aros_target_objcopy=${prefix}-objcopy
1251 aros_target_objdump=${prefix}-objdump
1252 aros_target_ranlib="${prefix}-ranlib $aros_target_ranlib_flags"
1253 aros_target_nm="${prefix}-nm $aros_target_nm_flags"
1254 aros_kernel_nm="${prefix}-nm"
1255 aros_target_strip=${prefix}-strip
1257 # Find the system include path. We can suggest that an alternative is
1258 # used if we don't get it correct. The default is to use /usr/include.
1259 # Which is set in the aros_target_incl_def variable.
1261 AC_ARG_ENABLE(includes,
1262 AC_HELP_STRING([--enable-includes=dir],[Alternative system include directory]),
1263 [aros_target_incl=$enable_includes], [aros_target_incl=$aros_target_incl_def])
1265 dnl find out about the target cc's include path
1266 AC_MSG_CHECKING([for the target compiler's include path])
1267 if test "$aros_target_cc_includes" = "" ; then
1268 #try to guess where the directory is
1269 aros_target_cc_includes=`dirname \`${aros_kernel_cc} -print-libgcc-file-name\``/include
1270 if ! test -d $aros_target_cc_includes; then
1271 #the directory doesn't exist, we need to do some more work
1272 aros_target_cc_includes=${PWD}/${aros_gendir}/cc_include
1274 #these are the headers we're looling for
1275 headers="limits.h mmintrin.h stdbool.h syslimits.h float.h \
1276 stddef.h xmmintrin.h iso646.h stdarg.h unwind.h \
1280 for h in $headers; do
1281 #which other headers each of the above headers needs?
1282 deps=$(echo "#include <$h>" | \
1283 $aros_host_cc -E -M - 2>/dev/null | \
1284 sed 's/^.*://; s/\\$/ /g; s/[[ \t]]\+/ /g')
1286 #copy all the needed headers to a directory beneath gendir
1289 dir=${aros_target_cc_includes}$(echo $(dirname $d) | \
1290 sed -n "s,^.*/include\(/.*\),\1,p")
1291 ! test -d $dir && mkdir -p $dir
1292 ! test -f $dir/$h && { cp $d $dir; chmod u+w $dir/$h; }
1297 AC_MSG_RESULT($aros_target_cc_includes)
1300 # For GCC < 4.0 -I- is used for giving the search path for '#include "..."'
1301 # On GCC >= 4.0 -iquote should be used
1305 save_cflags="$CFLAGS"
1306 CC="$aros_kernel_cc"
1308 AC_MSG_CHECKING([whether ${CC} accepts -iquote])
1309 AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
1310 AC_MSG_RESULT($has_iquote)
1311 if test "x-$has_iquote" = "x-yes" ; then
1312 aros_cflags_iquote=-iquote
1313 aros_cflags_iquote_end=
1315 aros_cflags_iquote=-I
1316 aros_cflags_iquote_end=-I-
1319 CFLAGS="$save_cflags"
1321 AC_SUBST(aros_cflags_iquote)
1322 AC_SUBST(aros_cflags_iquote_end)
1325 dnl Check if user specified --with-resolution=XRESxYRESxDEPTH
1326 AC_MSG_CHECKING([for default resolution of WBScreen])
1327 AC_ARG_WITH(resolution,AC_HELP_STRING([--with-resolution=XRESxYRESxDEPTH],[Default resolution of the initial WorkbenchScreen]),resolution=$withval,resolution=none)
1328 # We require an argument, so map --with/--without ("yes"/"no") to "none" specified
1329 if test "$resolution" = "yes" ; then
1332 if test "$resolution" = "no" ; then
1335 if test "$resolution" != "none" ; then
1336 aros_default_wbwidth=`echo $resolution | cut -d'x' -f1`
1337 aros_default_wbheight=`echo $resolution | cut -d'x' -f2`
1338 aros_default_wbdepth=`echo $resolution | cut -d'x' -f3`
1340 AC_MSG_RESULT($aros_default_wbwidth x $aros_default_wbheight x $aros_default_wbdepth)
1341 aros_cv_default_wbwidth=$aros_default_wbwidth
1342 aros_cv_default_wbheight=$aros_default_wbheight
1343 aros_cv_default_wbdepth=$aros_default_wbdepth
1345 dnl See if the user wants the BOCHS hack for native flavour
1346 AC_MSG_CHECKING([if bochs hack is enabled])
1347 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")
1348 if test "$bochs_hack" = "yes" ; then
1351 AC_MSG_RESULT($bochs_hack)
1353 dnl See if the user wants the serial debug output for native flavour
1354 AC_MSG_CHECKING([if serial debug is enabled])
1355 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)
1356 if test "$aros_serial_debug" = 0 ; then
1357 serial_debug_forced=""
1358 if test "$serial_debug" = "yes" ; then
1361 if test "$serial_debug" = "no" ; then
1365 serial_debug_forced="(forced)"
1366 serial_debug=$aros_serial_debug
1368 if test "$serial_debug" != "none" ; then
1369 aros_serial_debug=$serial_debug
1370 AC_MSG_RESULT($serial_debug_forced on port $serial_debug)
1375 dnl See if the user wants the palm debug output hack for palm native flavour
1376 AC_MSG_CHECKING([if palm debug hack is enabled])
1377 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")
1378 if test "$palm_debug_hack" = "yes" ; then
1379 aros_palm_debug_hack="1"
1381 AC_MSG_RESULT($palm_debug_hack)
1384 dnl See if the user wants nesting supervisor activated for unix flavour
1385 AC_MSG_CHECKING([if nesting supervisor support is enabled])
1386 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")
1387 if test "$nesting_supervisor" = "yes" ; then
1388 aros_nesting_supervisor="1"
1390 AC_MSG_RESULT($nesting_supervisor)
1393 dnl things specifically required for hosted flavours
1394 if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
1396 if test "x-$aros_host_arch" != "x-darwin" ; then
1397 dnl some kind of dynamic library access system is required for hostlib.resource
1398 AC_CHECK_FUNC(dlopen, have_dl="yes", have_dl="no")
1399 if test "x-$have_dl" = "x-no" ; then
1400 AC_CHECK_LIB(dl, dlopen, [have_dl="yes"
1401 aros_host_ldflags="$aros_host_ldflags -ldl"],
1404 if test "x-$have_dl" = "x-no" ; then
1405 AC_MSG_ERROR([dlopen() dynamic linker functions not available])
1411 AC_ARG_ENABLE(x11_hidd, AC_HELP_STRING([--enable-x11-hidd],
1412 [build X11 hidd for hosted (default=auto)]),
1413 x11_hidd="$enableval",
1415 case "x-$x11_hidd" in
1416 x-yes|x-no|x-auto) ;;
1417 *) x11_hidd="auto" ;;
1421 if test "x-$x11_hidd" != "x-no" ; then
1427 for path in $x_libraries
1429 x_cflags="$x_cflags -L$path"
1432 for path in $x_includes
1434 x_cflags="$x_cflags -I$path"
1437 if test "x-$no_x" = "x-yes" ; then
1440 if test "x-$x11_hidd" != "x-auto" ; then
1441 dnl and they explicitly asked for it, bail out
1442 AC_MSG_ERROR([X11 libs/headers not found, cannot build X11 hidd as requested])
1446 dnl found it, setup the metatarget
1447 x11_hidd_target=kernel-x11gfx
1450 dnl setup shared memory extensions
1451 AC_ARG_ENABLE(x11_shm, AC_HELP_STRING([--enable-x11-shm],
1452 [use X11 shared memory (default=auto)]),
1453 x11_hidd_shm="$enableval",
1454 x11_hidd_shm="auto")
1455 case "x-$x11_hidd_shm" in
1456 x-yes|x-no|x-auto) ;;
1457 *) x11_hidd_shm="auto" ;;
1463 if test "x-$x11_hidd_shm" != "x-no" ; then
1465 dnl system shm headers
1466 AC_CHECK_HEADERS(sys/ipc.h)
1467 AC_CHECK_HEADERS(sys/shm.h)
1470 if test "x-$ac_cv_header_sys_ipc_h" = "x-yes" -a "x-$ac_cv_header_sys_shm_h" = "x-yes" ; then
1472 dnl make sure X libs have shm functions
1473 save_cflags="$CFLAGS"
1474 CFLAGS="$CFLAGS $x_cflags"
1475 AC_CHECK_LIB(Xext, XShmQueryExtension, have_xshm=yes)
1476 CFLAGS="$save_cflags"
1480 dnl detection done, prepare output
1481 if test "x-$have_xshm" = "x-yes" ; then
1484 elif test "x-$x11_hidd_shm" = "x-yes" ; then
1485 dnl they explicitly asked for it, but we can't do it
1486 AC_MSG_ERROR([X11 has no support for shared memory, cannot enable it as requested])
1488 dnl otherwise just disable it
1493 dnl setup vidmode (fullscreen) extensions
1494 AC_ARG_ENABLE(x11_vidmode, AC_HELP_STRING([--enable-x11-vidmode],
1495 [use X11 vidmode extension (default=auto)]),
1496 x11_hidd_vidmode="$enableval",
1497 x11_hidd_vidmode="auto")
1498 case "x-$x11_hidd_vidmode" in
1499 x-yes|x-no|x-auto) ;;
1500 *) x11_hidd_vidmode="auto" ;;
1506 if test "x-$x11_hidd_vidmode" != "x-no" ; then
1508 dnl make sure X libs have vidmode functions
1509 save_cflags="$CFLAGS"
1510 CFLAGS="$CFLAGS $x_cflags"
1511 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, have_vidmode=yes)
1512 CFLAGS="$save_cflags"
1515 dnl detection done, prepare output
1516 if test "x-$have_vidmode" = "x-yes" ; then
1517 dnl we can do vidmode
1518 DO_VIDMODE_SUPPORT="1"
1519 elif test "x-$x11_hidd_vidmode" = "x-yes" ; then
1520 dnl they explicitly asked for it, but we can't do it
1521 AC_MSG_ERROR([X11 vidmode extension not available, cannot enable it as requested])
1523 dnl otherwise just disable it
1524 DO_VIDMODE_SUPPORT="0"
1528 aros_host_x11_includes=$x_includes
1529 aros_host_x11_libdirs=$x_libraries
1534 AC_ARG_ENABLE(sdl_hidd, AC_HELP_STRING([--enable-sdl-hidd],
1535 [build SDL hidd for hosted (default=auto)]),
1536 sdl_hidd="$enableval",
1538 case "x-$sdl_hidd" in
1539 x-yes|x-no|x-auto) ;;
1540 *) sdl_hidd="auto" ;;
1544 if test "x-$sdl_hidd" != "x-no" ; then
1547 AM_PATH_SDL([1.2.10], have_sdl="yes", have_sdl="no")
1549 if test "x-$have_sdl" != "x-yes" ; then
1552 if test "x-$sdl_hidd" != "x-auto" ; then
1553 dnl and they explicitly asked for it, bail out
1554 AC_MSG_ERROR([SDL libs/headers not found, cannot build SDL hidd as requested])
1558 dnl found it, setup the metatarget
1559 sdl_hidd_target=kernel-hidd-sdl
1560 aros_host_sdl_cflags=SDL_CFLAGS
1561 aros_host_sdl_libs=SDL_LIBS
1568 dnl See if the user wants dbus.library
1569 AC_MSG_CHECKING([if building of dbus.library is enabled])
1570 AC_ARG_ENABLE(dbus,AC_HELP_STRING([--enable-dbus],[Enable DBUS support via dbus.library (default=no)]),dbus="yes",dbus="no")
1571 if test "$dbus" = "yes" ; then
1573 DBUS_CFLAGS=`pkg-config --cflags dbus-1`
1574 DBUS_LIBFLAGS=`pkg-config --libs dbus-1`
1575 KERNEL_DBUS_KOBJ=kernel-dbus-kobj
1576 KERNEL_DBUS_INCLUDES=kernel-dbus-includes
1580 AC_MSG_RESULT($dbus)
1583 dnl --------------------------------------------------------------------
1584 dnl Configuration Output Section
1585 dnl --------------------------------------------------------------------
1590 AC_SUBST(aros_flavour)
1591 AC_SUBST(aros_flavour_uc)
1592 AC_SUBST(AROS_BUILDDIR)
1594 AC_SUBST(AROS_PORTSSRCDIR)
1597 AC_SUBST(aros_cc_pre)
1598 AC_SUBST(aros_host_strip)
1599 AC_SUBST(aros_host_arch)
1600 AC_SUBST(aros_host_cpu)
1601 AC_SUBST(aros_host_cc)
1602 AC_SUBST(aros_host_ar)
1603 AC_SUBST(aros_host_ranlib)
1604 AC_SUBST(aros_host_ld)
1605 AC_SUBST(aros_host_make)
1606 AC_SUBST(aros_host_cflags)
1607 AC_SUBST(aros_host_ldflags)
1608 AC_SUBST(aros_host_debug)
1609 AC_SUBST(aros_host_mkdep)
1610 AC_SUBST(aros_host_mkargs)
1611 AC_SUBST(aros_host_exe_suffix)
1612 AC_SUBST(aros_host_lib_suffix)
1613 AC_SUBST(aros_tools_dir)
1614 AC_SUBST(aros_host_aclocal)
1615 AC_SUBST(aros_host_autoconf)
1616 AC_SUBST(aros_host_autoheader)
1617 AC_SUBST(aros_host_automake)
1620 AC_SUBST(aros_target_guitheme)
1621 AC_SUBST(aros_target_bootloader)
1622 AC_SUBST(aros_target_arch)
1623 AC_SUBST(aros_target_cpu)
1624 AC_SUBST(aros_target_variant)
1625 AC_SUBST(aros_target_suffix)
1626 AC_SUBST(aros_target_incl)
1627 AC_SUBST(aros_target_ar)
1628 AC_SUBST(aros_target_ranlib)
1629 AC_SUBST(aros_kernel_nm)
1630 AC_SUBST(orig_target_cc)
1631 AC_SUBST(aros_target_cc)
1632 AC_SUBST(aros_kernel_cc)
1633 AC_SUBST(aros_target_as)
1634 AC_SUBST(orig_target_ld)
1635 AC_SUBST(aros_target_ld)
1636 AC_SUBST(aros_kernel_ld)
1637 AC_SUBST(aros_target_cc_includes)
1638 AC_SUBST(aros_target_cc_path)
1639 AC_SUBST(aros_target_objdump)
1640 AC_SUBST(aros_target_objcopy)
1641 AC_SUBST(aros_target_strip)
1642 AC_SUBST(aros_target_nm)
1643 AC_SUBST(aros_shared_default)
1644 AC_SUBST(aros_shared_ld)
1645 AC_SUBST(aros_object_format)
1646 AC_SUBST(aros_compiler_libs)
1648 AC_SUBST(aros_config_cflags)
1649 AC_SUBST(aros_config_aflags)
1650 AC_SUBST(aros_config_ldflags)
1652 AC_SUBST(aros_shared_cflags)
1653 AC_SUBST(aros_shared_aflags)
1654 AC_SUBST(aros_shared_ldflags)
1655 AC_SUBST(aros_kernel_cflags)
1656 AC_SUBST(aros_kernel_ldflags)
1657 AC_SUBST(aros_debug_cflags)
1658 AC_SUBST(aros_debug_aflags)
1659 AC_SUBST(aros_debug_ldflags)
1660 AC_SUBST(aros_target_genmap)
1661 AC_SUBST(aros_target_strip_flags)
1664 AC_SUBST(x11_hidd_target)
1665 AC_SUBST(sdl_hidd_target)
1667 AC_SUBST(aros_default_wbwidth)
1668 AC_SUBST(aros_default_wbheight)
1669 AC_SUBST(aros_default_wbdepth)
1670 AC_SUBST(DO_XSHM_SUPPORT)
1671 AC_SUBST(DO_VIDMODE_SUPPORT)
1673 AC_SUBST(aros_host_x11_includes)
1674 AC_SUBST(aros_host_x11_libdirs)
1675 AC_SUBST(aros_host_sdl_cflags)
1676 AC_SUBST(aros_host_sdl_libs)
1678 # Native version related
1679 AC_SUBST(aros_bochs_hack)
1680 AC_SUBST(aros_serial_debug)
1682 # Palm native version related
1683 AC_SUBST(aros_palm_debug_hack)
1685 # Unix/Hosted version related
1686 AC_SUBST(aros_nesting_supervisor)
1689 AC_SUBST(ENABLE_DBUS)
1690 AC_SUBST(DBUS_CFLAGS)
1691 AC_SUBST(DBUS_LIBFLAGS)
1692 AC_SUBST(KERNEL_DBUS_KOBJ)
1693 AC_SUBST(KERNEL_DBUS_INCLUDES)
1696 AC_SUBST(aros_debug)
1697 AC_SUBST(aros_mungwall_debug)
1698 AC_SUBST(aros_stack_debug)
1699 AC_SUBST(aros_modules_debug)
1701 # Collect-aros stuff: "-ius" to ignore undefined symbols
1702 AC_SUBST(ignore_undefined_symbols)
1704 # C compiler related
1705 AC_SUBST(gcc_target_cpu)
1707 dnl Prepare for output, make up all the generated patches
1708 case "$aros_flavour" in
1709 emulation) aros_flavour_uc="AROS_FLAVOUR_EMULATION"
1710 aros_flavour="emulation" ;;
1711 emulcompat) aros_flavour_uc="(AROS_FLAVOUR_EMULATION|AROS_FLAVOUR_BINCOMPAT)"
1712 aros_flavour="emulation" ;;
1713 standalone) aros_flavour_uc="AROS_FLAVOUR_STANDALONE"
1714 aros_flavour="standalone";;
1715 native) aros_flavour_uc="AROS_FLAVOUR_NATIVE"
1716 aros_flavour="native" ;;
1717 nativecompat) aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1718 aros_flavour="native" ;;
1719 linklib) aros_flavour_uc="AROS_FLAVOUR_LINKLIB"
1720 aros_flavour="linklib" ;;
1721 palmnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1722 aros_flavour="palmnative" ;;
1723 mac68knative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1724 aros_flavour="mac68knative" ;;
1725 ppcnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_BINCOMPAT)"
1726 aros_flavour="ppcnative" ;;
1729 if test ! -d ${aros_inc_dir} ; then
1730 ${MKDIR} ${aros_inc_dir}
1732 if test ! -d ${aros_geninc_dir} ; then
1733 ${MKDIR} ${aros_geninc_dir}
1735 if test ! -d ${aros_hostcfg_dir} ; then
1736 ${MKDIR} ${aros_hostcfg_dir}
1738 if test ! -d ${aros_targetcfg_dir} ; then
1739 ${MKDIR} ${aros_targetcfg_dir}
1741 if test ! -d ${aros_tools_dir} ; then
1742 ${MKDIR} ${aros_tools_dir}
1744 if test ! -d ${aros_scripts_dir} ; then
1745 ${MKDIR} ${aros_scripts_dir}
1748 AC_CONFIG_HEADERS(${aros_geninc_dir}/host-conf.h:config/host-conf.h.in)
1750 AC_CONFIG_COMMANDS([compiler_executable],
1752 prefix=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}
1754 prefix="${prefix}/${aros_target_cpu}-aros"
1755 prefix2=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros
1759 chmod a+x ${prefix2}-gcc ${prefix2}-ld
1761 ln -sf ${prefix2}-gcc ${prefix}-gcc
1762 ln -sf ${prefix2}-ld ${prefix}-ld
1764 ln -sf $aros_target_as_ln ${prefix}-as
1765 ln -sf $aros_target_nm_ln ${prefix}-nm
1766 ln -sf $aros_target_ar_ln ${prefix}-ar
1767 ln -sf $aros_target_ranlib_ln ${prefix}-ranlib
1768 ln -sf $aros_target_objcopy_ln ${prefix}-objcopy
1769 ln -sf $aros_target_objdump_ln ${prefix}-objdump
1770 ln -sf $aros_target_strip_ln ${prefix}-strip
1772 ln -sf $aros_target_as_ln ${prefix2}-as
1773 ln -sf $aros_target_nm_ln ${prefix2}-nm
1774 ln -sf $aros_target_ar_ln ${prefix2}-ar
1775 ln -sf $aros_target_ranlib_ln ${prefix2}-ranlib
1776 ln -sf $aros_target_objcopy_ln ${prefix2}-objcopy
1777 ln -sf $aros_target_objdump_ln ${prefix2}-objdump
1778 ln -sf $aros_target_strip_ln ${prefix2}-strip
1781 aros_tools_dir=${aros_tools_dir}
1782 aros_target_cpu=${aros_target_cpu}
1783 aros_target_arch=${aros_target_arch}
1784 aros_target_suffix=${aros_target_suffix}
1785 aros_target_nm_ln=${aros_target_nm_ln}
1786 aros_target_as_ln=${aros_target_as_ln}
1787 aros_target_ar_ln=${aros_target_ar_ln}
1788 aros_target_ranlib_ln=${aros_target_ranlib_ln}
1789 aros_target_objdump_ln=${aros_target_objdump_ln}
1790 aros_target_objcopy_ln=${aros_target_objcopy_ln}
1791 aros_target_strip_ln=${aros_target_strip_ln}
1794 AC_CONFIG_COMMANDS([genshared_executable],
1795 [chmod a+x ${aros_scripts_dir}/genshared],
1796 [aros_scripts_dir=${aros_scripts_dir}]
1798 AC_CONFIG_COMMANDS([genmf_executable],
1799 [chmod a+x ${aros_tools_dir}/genmf.py],
1800 [aros_tools_dir=${aros_tools_dir}]
1802 AC_CONFIG_COMMANDS([adflib_myaros.conf_executable],
1803 [chmod a+x tools/adflib/myconf.aros]
1810 ${aros_inc_dir}/config.h:config/config.h.in
1811 ${aros_geninc_dir}/config.h:config/config.h.in
1812 ${aros_hostcfg_dir}/host.cfg:config/host.cfg.in
1813 ${aros_targetcfg_dir}/target.cfg:config/target.cfg.in
1815 ${aros_targetcfg_dir}/make.defaults:config/make.defaults.in
1816 ${aros_targetcfg_dir}/specs:config/specs.in
1817 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-gcc:scripts/aros-gcc.in
1818 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-ld:scripts/aros-ld.in
1819 ${aros_scripts_dir}/genshared:compiler/c_lib/source/lib_source/genshared.in
1820 ${aros_tools_dir}/genmf.py:tools/genmf/genmf.py
1821 tools/adflib/myconf.aros
1822 tools/collect-aros/env.h
1827 dnl This is in order to not define SHARED_CFLAGS sometimes
1828 dnl We don't always do aros_shared_ar, aros_shared_cflags
1830 #XXX compatability...
1831 aros_shared_ar="$aros_shared_ld $aros_shared_ldflags -o"
1833 if test -n "$aros_shared_cflags" ; then
1834 echo "SHARED_CFLAGS := $aros_shared_cflags" >> ${aros_hostcfg_dir}/host.cfg
1835 echo "SHARED_AR := $aros_shared_ar" >> ${aros_hostcfg_dir}/host.cfg