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"
774 dnl This test bypass was implemented for Darwin by port's author.
775 dnl I wonder why, since darwin port needs this function.
776 dnl I left it here just because port author did it.
778 case "$target_cpu" in
780 aros_target_cpu="i386"
781 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
782 gcc_target_cpu="i386"
783 aros_object_format="elf_i386"
784 aros_target_strip_flags="-x"
787 AC_MSG_ERROR("Unsupported target CPU for darwin hosted flavour -- $target_cpu")
792 aros_target_arch="netbsd"
793 case "$target_cpu" in
795 aros_target_cpu="m68k"
796 aros_object_format="m68kelf"
797 aros_flavour="emulcompat"
798 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__NetBSD__"
799 gcc_target_cpu="mc68000"
802 aros_target_cpu="i386"
803 aros_object_format="elf_i386"
804 aros_flavour="emulation"
805 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__NetBSD__"
806 aros_default_wbdepth=8
807 gcc_target_cpu="i386"
810 AC_MSG_ERROR("Unknown CPU for NetBSD -- $target_cpu")
813 aros_target_genmap="-Wl,-M -Xlinker >"
814 aros_flavour="emulation"
815 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
819 aros_target_arch="openbsd"
820 case "$target_cpu" in
822 aros_target_cpu="i386"
823 aros_object_format="elf_i386"
824 aros_flavour="emulation"
825 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__OpenBSD__"
826 gcc_target_cpu="i386"
829 AC_MSG_ERROR("Unknown CPU for OpenBSD -- $target_cpu")
832 aros_target_genmap="-Wl,-M -Xlinker >"
833 aros_target_nm_flags="-u"
834 aros_flavour="emulation"
838 aros_target_arch="solaris"
839 case "$target_cpu" in
841 aros_target_cpu="i386"
842 aros_object_format="elf_i386"
843 aros_flavour="emulation"
844 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__Solaris__"
845 aros_default_wbdepth=8
846 gcc_target_cpu="i386"
849 aros_target_cpu="sparc"
850 aros_object_format="elf_sparc"
851 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dsparc -D__Solaris__"
852 gcc_target_cpu="sparc"
855 AC_MSG_ERROR("Unknown CPU for Solaris -- $target_cpu")
858 aros_config_cflags="$aros_config_cflags -D$aros_target_cpu"
859 aros_flavour="emulation"
863 aros_target_arch="morphos"
864 aros_shared_default="no"
865 aros_target_cpu="ppc"
866 aros_object_format="elf_ppc"
867 aros_flavour="nativecompat"
868 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
873 aros_target_arch="sam440"
874 aros_shared_default="no"
875 aros_target_cpu="ppc"
876 aros_object_format="elf32ppc"
877 aros_flavour="ppcnative"
878 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
879 aros_kernel_ldflags=""
880 aros_default_wbwidth=640
881 aros_default_wbheight=480
882 aros_config_cflags="$aros_config_cflags -mcpu=440fp -mno-toc -fno-asynchronous-unwind-tables"
883 gcc_target_cpu="powerpc"
887 aros_target_arch="chrp"
888 aros_shared_default="no"
889 aros_target_cpu="ppc"
890 aros_object_format="elf32ppc"
891 aros_flavour="ppcnative"
892 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
893 aros_kernel_ldflags=""
894 aros_default_wbwidth=640
895 aros_default_wbheight=480
896 aros_config_cflags="$aros_config_cflags -mno-toc -fno-asynchronous-unwind-tables"
897 gcc_target_cpu="powerpc"
898 case "$aros_target_variant" in
900 aros_config_cflags="$aros_config_cflags -DBIG_ENDIAN_OHCI=1 -mcpu=603e"
906 aros_target_arch="amiga"
907 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D_AMIGA -DAMIGA"
908 aros_shared_default="no"
910 aros_config_cflags="$aros_config_cflags -fomit-frame-pointer -fbuiltin -ffreestanding"
912 case "$target_cpu" in
914 aros_target_cpu="m68k"
915 aros_object_format="m68kelf"
916 aros_flavour="nativecompat"
917 gcc_target_cpu="mc68000"
921 aros_flavour="native"
925 AC_MSG_ERROR("Unknown CPU for Amiga $target_cpu")
931 aros_target_arch="cygwin"
932 aros_shared_default="no"
933 case "$target_cpu" in
935 aros_target_cpu="i386"
936 aros_object_format="elf_i386"
937 aros_flavour="emulation"
938 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__CYGWIN32__"
939 aros_shared_cflags=""
940 aros_default_wbdepth=8
941 gcc_target_cpu="i386"
942 aros_target_cc="i386-aros-gcc"
943 aros_target_ld="i386-aros-ld"
944 aros_target_as="i386-aros-as"
945 aros_target_ar="i386-aros-ar"
946 aros_target_ranlib="i386-aros-ranlib"
947 aros_target_nm="i386-aros-nm"
948 aros_target_strip="i386-aros-strip"
949 aros_target_objcopy="i386-aros-objcopy"
950 aros_target_objdump="i386-aros-objdump"
953 AC_MSG_ERROR("Unknown CPU for CygWin -- $target_cpu")
959 aros_target_arch="mingw32"
960 aros_shared_default="no"
963 case "$target_cpu" in
965 aros_target_cpu="i386"
966 aros_object_format="elf_i386"
967 aros_flavour="emulation"
968 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
969 aros_shared_cflags=""
970 aros_default_wbdepth=8
971 gcc_target_cpu="i386"
972 aros_target_cc="i386-aros-gcc"
973 aros_target_ld="i386-aros-ld"
974 aros_target_as="i386-aros-as"
975 aros_target_ar="i386-aros-ar"
976 aros_target_ranlib="i386-aros-ranlib"
977 aros_target_nm="i386-aros-nm"
978 aros_target_strip="i386-aros-strip"
979 aros_target_objcopy="i386-aros-objcopy"
980 aros_target_objdump="i386-aros-objdump"
981 target_tool_prefix="i386-mingw32-"
984 AC_MSG_ERROR("Unknown CPU for Mingw32 -- $target_cpu")
987 if test $host_os = "cygwin"; then
988 aros_kernel_cflags="-mno-cygwin"
992 aros_target_arch="pp"
993 aros_shared_default="no"
994 case "$target_cpu" in
996 aros_target_cpu="m68k"
997 aros_object_format="m68kelf"
998 aros_flavour="palmnative"
999 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
1000 aros_kernel_ldflags=""
1001 aros_default_wbwidth=160
1002 aros_default_wbheight=160
1003 aros_default_wbdepth=1
1004 aros_target_ar_flags="cru"
1005 aros_compiler_libs="-lgcc1"
1006 aros_shared_default=no
1007 aros_shared_cflags="-fpic"
1008 aros_shared_aflags=""
1009 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1010 aros_kernel_ldflags="-Wl,-rpath,./lib"
1011 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000 -Wa,-mc68000"
1012 aros_debug_aflags=""
1013 aros_debug_ldflags="$aros_symbols_debug"
1014 aros_mungwall_debug="0"
1015 aros_modules_debug="0"
1016 gcc_target_cpu="mc68000"
1017 ignore_undefined_symbols="-ius"
1020 AC_MSG_ERROR("Unknown CPU for PalmPilot -- $target_cpu")
1026 aros_target_arch="mac"
1027 aros_shared_default="no"
1028 case "$target_cpu" in
1030 aros_target_cpu="m68k"
1031 aros_object_format="m68kelf"
1032 aros_flavour="mac68knative"
1033 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
1034 aros_default_wbwidth=512
1035 aros_default_wbheight=384
1036 aros_default_wbdepth=8
1037 aros_target_ar_flags="cru"
1038 aros_compiler_libs="-lgcc1"
1039 aros_shared_default=no
1040 aros_shared_cflags="-fpic"
1041 aros_shared_aflags=""
1042 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1043 aros_kernel_ldflags="-Wl,-rpath,./lib"
1044 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000"
1045 aros_debug_aflags=""
1046 aros_debug_ldflags="$aros_symbols_debug"
1047 aros_mungwall_debug="0"
1048 aros_modules_debug="0"
1049 gcc_target_cpu="mc68000"
1050 ignore_undefined_symbols="-ius"
1053 AC_MSG_ERROR("Unknown CPU for Mac68k -- $target_cpu")
1059 AC_MSG_ERROR([Unsupported target architecture $target])
1063 AC_MSG_CHECKING([Where to download sourcecode for external ports])
1064 AC_ARG_WITH(portssources,AC_HELP_STRING([--with-portssources=DIR],[Where to download sourcecode for external ports]),with_portssrcdir=$withval,with_portssrcdir="default")
1065 if test "$with_portssrcdir" = "default"; then
1066 AROS_PORTSSRCDIR="$AROS_BUILDDIR/bin/Sources"
1068 AROS_PORTSSRCDIR="$with_portssrcdir"
1070 AC_MSG_RESULT($AROS_PORTSSRCDIR)
1072 AC_MSG_CHECKING([which bootloader to use])
1073 AC_ARG_WITH(bootloader,AC_HELP_STRING([--with-bootloader=NAME],[Use a specific bootloader]),target_bootloader=$withval,target_bootloader=$target_bootloader)
1074 if test "$target_bootloader" = "none"; then
1075 aros_target_bootloader=""
1077 aros_target_bootloader="$target_bootloader"
1079 AC_MSG_RESULT($target_bootloader)
1081 # Check LZO when compiling the grub2 bootloader on i386/x86_64.
1082 aros_liblzo_check="no"
1083 case "$aros_target_bootloader" in
1085 case "$target_cpu" in
1087 aros_liblzo_check="yes"
1090 aros_liblzo_check="yes"
1101 if test "$aros_liblzo_check" = "yes"; then
1102 # There are three possibilities. LZO version 2 installed with the name
1103 # liblzo2, with the name liblzo, and LZO version 1.
1104 AC_CHECK_LIB(lzo2, __lzo_init_v2, [LIBLZO="-llzo2"],
1105 AC_CHECK_LIB(lzo, __lzo_init_v2, [LIBLZO="-llzo"],
1106 AC_CHECK_LIB(lzo, __lzo_init2, [LIBLZO="-llzo"],
1107 AC_MSG_ERROR([LZO library version 1.02 or later is required]))))
1110 LIBS="$LIBS $LIBLZO"
1111 AC_CHECK_FUNC(lzo1x_999_compress, ,
1112 [AC_MSG_ERROR([LZO1X-999 must be enabled])])
1114 # LZO version 2 uses lzo/lzo1x.h, while LZO version 1 uses lzo1x.h.
1115 AC_CHECK_HEADERS(lzo/lzo1x.h lzo1x.h)
1118 AC_MSG_CHECKING([which GUI Theme to use])
1119 AC_ARG_WITH(theme,AC_HELP_STRING([--with-theme=NAME],[Use a specific GUI Theme]),target_guitheme=$withval,target_guitheme="default")
1120 if test "$target_guitheme" = "default"; then
1121 aros_target_guitheme="Ice"
1123 aros_target_guitheme="$target_guitheme"
1125 AC_MSG_RESULT($aros_target_guitheme)
1127 # Find out if we are cross-compiling (ie. if we can't use the host compiler
1130 if test "$aros_host_cpu" != "$aros_target_cpu" ; then
1133 if test "$aros_host_arch" == "darwin" ; then
1137 # Set prefix for target compiler etc. if we're cross-compiling
1138 # (should possibly be earlier but needs to be after AC_PROG_CC)
1139 if test "$cross_compiling" = "yes" ; then
1140 if test "$target_tool_prefix" = ""; then
1141 target_tool_prefix=${target_cpu}-elf-
1143 CC=${target_tool_prefix}gcc
1146 #-----------------------------------------------------------------------------
1148 # Disable pointer-signedness warnings if the compiler recognises the option
1150 AC_MSG_CHECKING([whether ${CC} accepts -Wno-pointer-sign])
1151 save_cflags="$CFLAGS"
1152 CFLAGS="$CFLAGS -Wno-pointer-sign"
1153 AC_TRY_COMPILE(,, use_no_sign_warning="yes", use_no_sign_warning="no")
1154 AC_MSG_RESULT($use_no_sign_warning)
1155 if test "x-$use_no_sign_warning" = "x-yes" ; then
1156 aros_config_cflags="$aros_config_cflags -Wno-pointer-sign"
1158 CFLAGS="$save_cflags"
1160 #-----------------------------------------------------------------------------
1162 # Find all the tools we need to compile. This could be cross-compiling
1163 # though! If that is the case we use the GNU form of the target and
1164 # simply add this to the front of the binary name. This is rather simple,
1165 # but it should work under most circumstances.
1167 # The default tools are to use the same as the host, but only if the
1168 # host and target CPU are the same. With GCC this is normally enough.
1172 aros_shared_ld="$aros_host_ld"
1174 aros_target_mkdep="$aros_host_mkdep"
1175 aros_target_incl_def="$aros_host_incl"
1177 AC_PATH_PROG(aros_kernel_cc,$CC)
1179 # The default tools executables to be linked to.
1180 if test "$aros_target_cc" != ""; then
1181 AC_PATH_PROG(aros_target_cc,$aros_target_cc)
1182 AROS_REQUIRED(gcc,$aros_target_cc)
1184 if test "$aros_target_ld" != ""; then
1185 AC_PATH_PROG(aros_target_ld,$aros_target_ld)
1186 AROS_REQUIRED(ld,$aros_target_ld)
1189 if test "$crosstools" != "yes"; then
1190 AROS_TOOL_TARGET(aros_target_as_ln,as,$aros_target_as)
1191 AROS_REQUIRED(as,$aros_target_as_ln)
1192 AROS_TOOL_TARGET(aros_kernel_ld,ld,$aros_kernel_ld)
1193 AROS_REQUIRED(ld,$aros_kernel_ld)
1194 AROS_TOOL_TARGET(aros_target_ar_ln,ar,$aros_target_ar)
1195 AROS_REQUIRED(ar,$aros_target_ar_ln)
1196 AROS_TOOL_TARGET(aros_target_nm_ln,nm,$aros_target_nm)
1197 AROS_REQUIRED(nm,$aros_target_nm_ln)
1198 AROS_TOOL_TARGET(aros_target_objcopy_ln,objcopy,$aros_target_objcopy)
1199 AROS_REQUIRED(objcopy,$aros_target_objcopy_ln)
1200 AROS_TOOL_TARGET(aros_target_objdump_ln,objdump,$aros_target_objdump)
1201 AROS_REQUIRED(objdump,$aros_target_objdump_ln)
1202 AROS_TOOL_TARGET(aros_target_ranlib_ln,ranlib,$aros_target_ranlib)
1203 AROS_REQUIRED(ranlib,$aros_target_ranlib_ln)
1204 AROS_TOOL_TARGET(aros_target_strip_ln,strip,$aros_target_strip)
1205 AROS_REQUIRED(strip,$aros_target_strip_ln)
1208 if test "$rescomp" != ""; then
1209 if test "$cross_compiling" = "yes" ; then
1210 rescomp=${target_tool_prefix}${rescomp}
1212 AC_PATH_PROG(aros_kernel_rescomp,$rescomp)
1213 AROS_REQUIRED($rescomp,$aros_kernel_rescomp)
1216 aros_hostcfg_dir="bin/${aros_host_arch}-${aros_host_cpu}/gen/config"
1217 aros_targetcfg_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/config"
1218 aros_inc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/AROS/Development/include/aros"
1219 aros_gendir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen"
1220 aros_geninc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/include/aros"
1221 aros_tools_dir="bin/${aros_host_arch}-${aros_host_cpu}/tools"
1222 aros_scripts_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/scripts"
1224 # aros_cc_pre is a variable that is added to the front of the compiler name
1225 # in the generated aros-gcc shell script. We need this to enable the cache
1226 # to work across cleaned builds. Also, support DISTCC using the correct
1227 # environment variable.
1230 if test "x${DISTCC}" != "x" ; then
1231 if test "x${CCACHE}" != "x" ; then
1232 aros_cc_pre="env CCACHE_PREFIX=${DISTCC} ${CCACHE} "
1234 aros_cc_pre="${DISTCC} "
1237 if test "x${CCACHE}" != "x" ; then
1238 aros_cc_pre="${CCACHE} "
1242 prefix="${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros"
1244 AC_SUBST(aros_target_nostdinc_cflags,-nostdinc)
1245 AC_SUBST(aros_target_nostartup_ldflags,-nostartfiles)
1246 AC_SUBST(aros_target_nix_ldflags,-nix)
1247 AC_SUBST(aros_target_detach_ldflags,-detach)
1248 AC_SUBST(aros_target_nostdlib_ldflags,-nostdlib)
1251 if test "$aros_target_cc" = ""; then
1252 orig_target_cc=$aros_kernel_cc
1254 orig_target_cc=$aros_target_cc
1256 if test "$aros_target_ld" = ""; then
1257 orig_target_ld=$aros_kernel_ld
1259 orig_target_ld=$aros_target_ld
1261 if test "$GCC" = "yes"; then
1262 aros_target_cc_path=`$orig_target_cc -print-search-dirs | grep "programs: =" | cut -c 12-`
1264 aros_target_cc="${prefix}-gcc"
1265 aros_target_as="${prefix}-as"
1266 aros_target_ld="${prefix}-ld"
1267 aros_target_ar="${prefix}-ar $aros_target_ar_flags"
1268 aros_target_objcopy=${prefix}-objcopy
1269 aros_target_objdump=${prefix}-objdump
1270 aros_target_ranlib="${prefix}-ranlib $aros_target_ranlib_flags"
1271 aros_target_nm="${prefix}-nm $aros_target_nm_flags"
1272 aros_kernel_nm="${prefix}-nm"
1273 aros_target_strip=${prefix}-strip
1275 # Find the system include path. We can suggest that an alternative is
1276 # used if we don't get it correct. The default is to use /usr/include.
1277 # Which is set in the aros_target_incl_def variable.
1279 AC_ARG_ENABLE(includes,
1280 AC_HELP_STRING([--enable-includes=dir],[Alternative system include directory]),
1281 [aros_target_incl=$enable_includes], [aros_target_incl=$aros_target_incl_def])
1283 dnl find out about the target cc's include path
1284 AC_MSG_CHECKING([for the target compiler's include path])
1285 if test "$aros_target_cc_includes" = "" ; then
1286 #try to guess where the directory is
1287 aros_target_cc_includes=`dirname \`${orig_target_cc} -print-libgcc-file-name\``/include
1288 if ! test -d $aros_target_cc_includes; then
1289 #the directory doesn't exist, we need to do some more work
1290 aros_target_cc_includes=${PWD}/${aros_gendir}/cc_include
1292 #these are the headers we're looling for
1293 headers="limits.h mmintrin.h stdbool.h syslimits.h float.h \
1294 stddef.h xmmintrin.h iso646.h stdarg.h unwind.h \
1298 for h in $headers; do
1299 #which other headers each of the above headers needs?
1300 deps=$(echo "#include <$h>" | \
1301 $aros_host_cc -E -M - 2>/dev/null | \
1302 sed 's/^.*://; s/\\$/ /g; s/[[ \t]]\+/ /g')
1304 #copy all the needed headers to a directory beneath gendir
1307 dir=${aros_target_cc_includes}$(echo $(dirname $d) | \
1308 sed -n "s,^.*/include\(/.*\),\1,p")
1309 ! test -d $dir && mkdir -p $dir
1310 ! test -f $dir/$h && { cp $d $dir; chmod u+w $dir/$h; }
1315 AC_MSG_RESULT($aros_target_cc_includes)
1318 # For GCC < 4.0 -I- is used for giving the search path for '#include "..."'
1319 # On GCC >= 4.0 -iquote should be used
1323 save_cflags="$CFLAGS"
1324 CC="$aros_kernel_cc"
1326 AC_MSG_CHECKING([whether ${CC} accepts -iquote])
1327 AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
1328 AC_MSG_RESULT($has_iquote)
1329 if test "x-$has_iquote" = "x-yes" ; then
1330 aros_cflags_iquote=-iquote
1331 aros_cflags_iquote_end=
1333 aros_cflags_iquote=-I
1334 aros_cflags_iquote_end=-I-
1337 CFLAGS="$save_cflags"
1339 AC_SUBST(aros_cflags_iquote)
1340 AC_SUBST(aros_cflags_iquote_end)
1343 dnl Check if user specified --with-resolution=XRESxYRESxDEPTH
1344 AC_MSG_CHECKING([for default resolution of WBScreen])
1345 AC_ARG_WITH(resolution,AC_HELP_STRING([--with-resolution=XRESxYRESxDEPTH],[Default resolution of the initial WorkbenchScreen]),resolution=$withval,resolution=none)
1346 # We require an argument, so map --with/--without ("yes"/"no") to "none" specified
1347 if test "$resolution" = "yes" ; then
1350 if test "$resolution" = "no" ; then
1353 if test "$resolution" != "none" ; then
1354 aros_default_wbwidth=`echo $resolution | cut -d'x' -f1`
1355 aros_default_wbheight=`echo $resolution | cut -d'x' -f2`
1356 aros_default_wbdepth=`echo $resolution | cut -d'x' -f3`
1358 AC_MSG_RESULT($aros_default_wbwidth x $aros_default_wbheight x $aros_default_wbdepth)
1359 aros_cv_default_wbwidth=$aros_default_wbwidth
1360 aros_cv_default_wbheight=$aros_default_wbheight
1361 aros_cv_default_wbdepth=$aros_default_wbdepth
1363 dnl See if the user wants the BOCHS hack for native flavour
1364 AC_MSG_CHECKING([if bochs hack is enabled])
1365 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")
1366 if test "$bochs_hack" = "yes" ; then
1369 AC_MSG_RESULT($bochs_hack)
1371 dnl See if the user wants the serial debug output for native flavour
1372 AC_MSG_CHECKING([if serial debug is enabled])
1373 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)
1374 if test "$aros_serial_debug" = 0 ; then
1375 serial_debug_forced=""
1376 if test "$serial_debug" = "yes" ; then
1379 if test "$serial_debug" = "no" ; then
1383 serial_debug_forced="(forced)"
1384 serial_debug=$aros_serial_debug
1386 if test "$serial_debug" != "none" ; then
1387 aros_serial_debug=$serial_debug
1388 AC_MSG_RESULT($serial_debug_forced on port $serial_debug)
1393 dnl See if the user wants the palm debug output hack for palm native flavour
1394 AC_MSG_CHECKING([if palm debug hack is enabled])
1395 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")
1396 if test "$palm_debug_hack" = "yes" ; then
1397 aros_palm_debug_hack="1"
1399 AC_MSG_RESULT($palm_debug_hack)
1402 dnl See if the user wants nesting supervisor activated for unix flavour
1403 AC_MSG_CHECKING([if nesting supervisor support is enabled])
1404 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")
1405 if test "$nesting_supervisor" = "yes" ; then
1406 aros_nesting_supervisor="1"
1408 AC_MSG_RESULT($nesting_supervisor)
1411 dnl things specifically required for hosted flavours
1412 if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
1414 if test "x-$need_dlopen" != "x-no" ; then
1415 dnl some kind of dynamic library access system is required for hostlib.resource
1416 AC_CHECK_FUNC(dlopen, have_dl="yes", have_dl="no")
1417 if test "x-$have_dl" = "x-no" ; then
1418 AC_CHECK_LIB(dl, dlopen, [have_dl="yes"
1419 aros_host_ldflags="$aros_host_ldflags -ldl"],
1422 if test "x-$have_dl" = "x-no" ; then
1423 AC_MSG_ERROR([dlopen() dynamic linker functions not available])
1429 AC_ARG_ENABLE(x11_hidd, AC_HELP_STRING([--enable-x11-hidd],
1430 [build X11 hidd for hosted (default=auto)]),
1431 x11_hidd="$enableval",
1433 case "x-$x11_hidd" in
1434 x-yes|x-no|x-auto) ;;
1435 *) x11_hidd="auto" ;;
1439 if test "x-$x11_hidd" != "x-no" ; then
1445 for path in $x_libraries
1447 x_cflags="$x_cflags -L$path"
1450 for path in $x_includes
1452 x_cflags="$x_cflags -I$path"
1455 if test "x-$no_x" = "x-yes" ; then
1458 if test "x-$x11_hidd" != "x-auto" ; then
1459 dnl and they explicitly asked for it, bail out
1460 AC_MSG_ERROR([X11 libs/headers not found, cannot build X11 hidd as requested])
1465 dnl found it, setup the metatarget
1466 x11_hidd_target=kernel-x11gfx-kobj
1469 dnl setup shared memory extensions
1470 AC_ARG_ENABLE(x11_shm, AC_HELP_STRING([--enable-x11-shm],
1471 [use X11 shared memory (default=auto)]),
1472 x11_hidd_shm="$enableval",
1473 x11_hidd_shm="auto")
1474 case "x-$x11_hidd_shm" in
1475 x-yes|x-no|x-auto) ;;
1476 *) x11_hidd_shm="auto" ;;
1482 if test "x-$x11_hidd_shm" != "x-no" ; then
1484 dnl system shm headers
1485 AC_CHECK_HEADERS(sys/ipc.h)
1486 AC_CHECK_HEADERS(sys/shm.h)
1489 if test "x-$ac_cv_header_sys_ipc_h" = "x-yes" -a "x-$ac_cv_header_sys_shm_h" = "x-yes" ; then
1491 dnl make sure X libs have shm functions
1492 save_cflags="$CFLAGS"
1493 CFLAGS="$CFLAGS $x_cflags"
1494 AC_CHECK_LIB(Xext, XShmQueryExtension, have_xshm=yes)
1495 CFLAGS="$save_cflags"
1499 dnl detection done, prepare output
1500 if test "x-$have_xshm" = "x-yes" ; then
1503 elif test "x-$x11_hidd_shm" = "x-yes" ; then
1504 dnl they explicitly asked for it, but we can't do it
1505 AC_MSG_ERROR([X11 has no support for shared memory, cannot enable it as requested])
1507 dnl otherwise just disable it
1512 dnl setup vidmode (fullscreen) extensions
1513 AC_ARG_ENABLE(x11_vidmode, AC_HELP_STRING([--enable-x11-vidmode],
1514 [use X11 vidmode extension (default=auto)]),
1515 x11_hidd_vidmode="$enableval",
1516 x11_hidd_vidmode="auto")
1517 case "x-$x11_hidd_vidmode" in
1518 x-yes|x-no|x-auto) ;;
1519 *) x11_hidd_vidmode="auto" ;;
1525 if test "x-$x11_hidd_vidmode" != "x-no" ; then
1527 dnl make sure X libs have vidmode functions
1528 save_cflags="$CFLAGS"
1529 CFLAGS="$CFLAGS $x_cflags"
1530 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, have_vidmode=yes)
1531 CFLAGS="$save_cflags"
1534 dnl detection done, prepare output
1535 if test "x-$have_vidmode" = "x-yes" ; then
1536 dnl we can do vidmode
1537 DO_VIDMODE_SUPPORT="1"
1538 elif test "x-$x11_hidd_vidmode" = "x-yes" ; then
1539 dnl they explicitly asked for it, but we can't do it
1540 AC_MSG_ERROR([X11 vidmode extension not available, cannot enable it as requested])
1542 dnl otherwise just disable it
1543 DO_VIDMODE_SUPPORT="0"
1547 aros_host_x11_includes=$x_includes
1548 aros_host_x11_libdirs=$x_libraries
1553 AC_ARG_ENABLE(sdl_hidd, AC_HELP_STRING([--enable-sdl-hidd],
1554 [build SDL hidd for hosted (default=auto)]),
1555 sdl_hidd="$enableval",
1557 case "x-$sdl_hidd" in
1558 x-yes|x-no|x-auto) ;;
1559 *) sdl_hidd="auto" ;;
1563 if test "x-$sdl_hidd" != "x-no" ; then
1566 AM_PATH_SDL([1.2.10], have_sdl="yes", have_sdl="no")
1568 if test "x-$have_sdl" != "x-yes" ; then
1571 if test "x-$sdl_hidd" != "x-auto" ; then
1572 dnl and they explicitly asked for it, bail out
1573 AC_MSG_ERROR([SDL libs/headers not found, cannot build SDL hidd as requested])
1577 dnl found it, setup the metatarget
1578 sdl_hidd_target=kernel-hidd-sdl
1579 aros_host_sdl_cflags=SDL_CFLAGS
1580 aros_host_sdl_libs=SDL_LIBS
1587 dnl See if the user wants dbus.library
1588 AC_MSG_CHECKING([if building of dbus.library is enabled])
1589 AC_ARG_ENABLE(dbus,AC_HELP_STRING([--enable-dbus],[Enable DBUS support via dbus.library (default=no)]),dbus="yes",dbus="no")
1590 if test "$dbus" = "yes" ; then
1592 DBUS_CFLAGS=`pkg-config --cflags dbus-1`
1593 DBUS_LIBFLAGS=`pkg-config --libs dbus-1`
1594 KERNEL_DBUS_KOBJ=kernel-dbus-kobj
1595 KERNEL_DBUS_INCLUDES=kernel-dbus-includes
1599 AC_MSG_RESULT($dbus)
1602 dnl --------------------------------------------------------------------
1603 dnl Configuration Output Section
1604 dnl --------------------------------------------------------------------
1609 AC_SUBST(aros_flavour)
1610 AC_SUBST(aros_flavour_uc)
1611 AC_SUBST(AROS_BUILDDIR)
1613 AC_SUBST(AROS_PORTSSRCDIR)
1616 AC_SUBST(aros_cc_pre)
1617 AC_SUBST(aros_host_strip)
1618 AC_SUBST(aros_host_arch)
1619 AC_SUBST(aros_host_cpu)
1620 AC_SUBST(aros_host_cc)
1621 AC_SUBST(aros_host_ar)
1622 AC_SUBST(aros_host_ranlib)
1623 AC_SUBST(aros_host_ld)
1624 AC_SUBST(aros_host_make)
1625 AC_SUBST(aros_host_cflags)
1626 AC_SUBST(aros_host_ldflags)
1627 AC_SUBST(aros_host_debug)
1628 AC_SUBST(aros_host_mkdep)
1629 AC_SUBST(aros_host_mkargs)
1630 AC_SUBST(aros_host_exe_suffix)
1631 AC_SUBST(aros_host_lib_suffix)
1632 AC_SUBST(aros_tools_dir)
1633 AC_SUBST(aros_host_aclocal)
1634 AC_SUBST(aros_host_autoconf)
1635 AC_SUBST(aros_host_autoheader)
1636 AC_SUBST(aros_host_automake)
1639 AC_SUBST(aros_target_guitheme)
1640 AC_SUBST(aros_target_bootloader)
1641 AC_SUBST(aros_target_arch)
1642 AC_SUBST(aros_target_cpu)
1643 AC_SUBST(aros_target_variant)
1644 AC_SUBST(aros_target_suffix)
1645 AC_SUBST(aros_target_incl)
1646 AC_SUBST(aros_target_ar)
1647 AC_SUBST(aros_target_ranlib)
1648 AC_SUBST(aros_kernel_nm)
1649 AC_SUBST(orig_target_cc)
1650 AC_SUBST(aros_target_cc)
1651 AC_SUBST(aros_kernel_cc)
1652 AC_SUBST(aros_target_as)
1653 AC_SUBST(orig_target_ld)
1654 AC_SUBST(aros_target_ld)
1655 AC_SUBST(aros_kernel_ld)
1656 AC_SUBST(aros_target_cc_includes)
1657 AC_SUBST(aros_target_cc_path)
1658 AC_SUBST(aros_target_objdump)
1659 AC_SUBST(aros_target_objcopy)
1660 AC_SUBST(aros_target_strip)
1661 AC_SUBST(aros_target_nm)
1662 AC_SUBST(aros_kernel_rescomp)
1663 AC_SUBST(aros_shared_default)
1664 AC_SUBST(aros_shared_ld)
1665 AC_SUBST(aros_object_format)
1666 AC_SUBST(aros_compiler_libs)
1668 AC_SUBST(aros_config_cflags)
1669 AC_SUBST(aros_config_aflags)
1670 AC_SUBST(aros_config_ldflags)
1672 AC_SUBST(aros_shared_cflags)
1673 AC_SUBST(aros_shared_aflags)
1674 AC_SUBST(aros_shared_ldflags)
1675 AC_SUBST(aros_kernel_cflags)
1676 AC_SUBST(aros_kernel_ldflags)
1677 AC_SUBST(aros_debug_cflags)
1678 AC_SUBST(aros_debug_aflags)
1679 AC_SUBST(aros_debug_ldflags)
1680 AC_SUBST(aros_target_genmap)
1681 AC_SUBST(aros_target_strip_flags)
1684 AC_SUBST(x11_hidd_target)
1685 AC_SUBST(sdl_hidd_target)
1687 AC_SUBST(aros_default_wbwidth)
1688 AC_SUBST(aros_default_wbheight)
1689 AC_SUBST(aros_default_wbdepth)
1690 AC_SUBST(DO_XSHM_SUPPORT)
1691 AC_SUBST(DO_VIDMODE_SUPPORT)
1693 AC_SUBST(aros_host_x11_includes)
1694 AC_SUBST(aros_host_x11_libdirs)
1695 AC_SUBST(aros_host_sdl_cflags)
1696 AC_SUBST(aros_host_sdl_libs)
1698 # Native version related
1699 AC_SUBST(aros_bochs_hack)
1700 AC_SUBST(aros_serial_debug)
1702 # Palm native version related
1703 AC_SUBST(aros_palm_debug_hack)
1705 # Unix/Hosted version related
1706 AC_SUBST(aros_nesting_supervisor)
1709 AC_SUBST(ENABLE_DBUS)
1710 AC_SUBST(DBUS_CFLAGS)
1711 AC_SUBST(DBUS_LIBFLAGS)
1712 AC_SUBST(KERNEL_DBUS_KOBJ)
1713 AC_SUBST(KERNEL_DBUS_INCLUDES)
1716 AC_SUBST(ENABLE_X11)
1719 AC_SUBST(aros_debug)
1720 AC_SUBST(aros_mungwall_debug)
1721 AC_SUBST(aros_stack_debug)
1722 AC_SUBST(aros_modules_debug)
1724 # Collect-aros stuff: "-ius" to ignore undefined symbols
1725 AC_SUBST(ignore_undefined_symbols)
1727 # C compiler related
1728 AC_SUBST(gcc_target_cpu)
1730 dnl Prepare for output, make up all the generated patches
1731 case "$aros_flavour" in
1732 emulation) aros_flavour_uc="AROS_FLAVOUR_EMULATION"
1733 aros_flavour="emulation" ;;
1734 emulcompat) aros_flavour_uc="(AROS_FLAVOUR_EMULATION|AROS_FLAVOUR_BINCOMPAT)"
1735 aros_flavour="emulation" ;;
1736 standalone) aros_flavour_uc="AROS_FLAVOUR_STANDALONE"
1737 aros_flavour="standalone";;
1738 native) aros_flavour_uc="AROS_FLAVOUR_NATIVE"
1739 aros_flavour="native" ;;
1740 nativecompat) aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1741 aros_flavour="native" ;;
1742 linklib) aros_flavour_uc="AROS_FLAVOUR_LINKLIB"
1743 aros_flavour="linklib" ;;
1744 palmnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1745 aros_flavour="palmnative" ;;
1746 mac68knative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1747 aros_flavour="mac68knative" ;;
1748 ppcnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_BINCOMPAT)"
1749 aros_flavour="ppcnative" ;;
1752 if test ! -d ${aros_inc_dir} ; then
1753 ${MKDIR} ${aros_inc_dir}
1755 if test ! -d ${aros_geninc_dir} ; then
1756 ${MKDIR} ${aros_geninc_dir}
1758 if test ! -d ${aros_hostcfg_dir} ; then
1759 ${MKDIR} ${aros_hostcfg_dir}
1761 if test ! -d ${aros_targetcfg_dir} ; then
1762 ${MKDIR} ${aros_targetcfg_dir}
1764 if test ! -d ${aros_tools_dir} ; then
1765 ${MKDIR} ${aros_tools_dir}
1767 if test ! -d ${aros_scripts_dir} ; then
1768 ${MKDIR} ${aros_scripts_dir}
1771 AC_CONFIG_HEADERS(${aros_geninc_dir}/host-conf.h:config/host-conf.h.in)
1773 AC_CONFIG_COMMANDS([compiler_executable],
1775 prefix=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}
1777 prefix="${prefix}/${aros_target_cpu}-aros"
1778 prefix2=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros
1782 chmod a+x ${prefix2}-gcc ${prefix2}-ld
1784 ln -sf ${prefix2}-gcc ${prefix}-gcc
1785 ln -sf ${prefix2}-ld ${prefix}-ld
1787 ln -sf $aros_target_as_ln ${prefix}-as
1788 ln -sf $aros_target_nm_ln ${prefix}-nm
1789 ln -sf $aros_target_ar_ln ${prefix}-ar
1790 ln -sf $aros_target_ranlib_ln ${prefix}-ranlib
1791 ln -sf $aros_target_objcopy_ln ${prefix}-objcopy
1792 ln -sf $aros_target_objdump_ln ${prefix}-objdump
1793 ln -sf $aros_target_strip_ln ${prefix}-strip
1795 ln -sf $aros_target_as_ln ${prefix2}-as
1796 ln -sf $aros_target_nm_ln ${prefix2}-nm
1797 ln -sf $aros_target_ar_ln ${prefix2}-ar
1798 ln -sf $aros_target_ranlib_ln ${prefix2}-ranlib
1799 ln -sf $aros_target_objcopy_ln ${prefix2}-objcopy
1800 ln -sf $aros_target_objdump_ln ${prefix2}-objdump
1801 ln -sf $aros_target_strip_ln ${prefix2}-strip
1804 aros_tools_dir=${aros_tools_dir}
1805 aros_target_cpu=${aros_target_cpu}
1806 aros_target_arch=${aros_target_arch}
1807 aros_target_suffix=${aros_target_suffix}
1808 aros_target_nm_ln=${aros_target_nm_ln}
1809 aros_target_as_ln=${aros_target_as_ln}
1810 aros_target_ar_ln=${aros_target_ar_ln}
1811 aros_target_ranlib_ln=${aros_target_ranlib_ln}
1812 aros_target_objdump_ln=${aros_target_objdump_ln}
1813 aros_target_objcopy_ln=${aros_target_objcopy_ln}
1814 aros_target_strip_ln=${aros_target_strip_ln}
1817 AC_CONFIG_COMMANDS([genshared_executable],
1818 [chmod a+x ${aros_scripts_dir}/genshared],
1819 [aros_scripts_dir=${aros_scripts_dir}]
1821 AC_CONFIG_COMMANDS([genmf_executable],
1822 [chmod a+x ${aros_tools_dir}/genmf.py],
1823 [aros_tools_dir=${aros_tools_dir}]
1825 AC_CONFIG_COMMANDS([adflib_myaros.conf_executable],
1826 [chmod a+x tools/adflib/myconf.aros]
1832 ${aros_inc_dir}/config.h:config/config.h.in
1833 ${aros_geninc_dir}/config.h:config/config.h.in
1834 ${aros_hostcfg_dir}/host.cfg:config/host.cfg.in
1835 ${aros_targetcfg_dir}/target.cfg:config/target.cfg.in
1837 ${aros_targetcfg_dir}/make.defaults:config/make.defaults.in
1838 ${aros_targetcfg_dir}/specs:config/specs.in
1839 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-gcc:scripts/aros-gcc.in
1840 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-ld:scripts/aros-ld.in
1841 ${aros_scripts_dir}/genshared:compiler/c_lib/source/lib_source/genshared.in
1842 ${aros_tools_dir}/genmf.py:tools/genmf/genmf.py
1843 tools/adflib/myconf.aros
1844 tools/collect-aros/env.h
1849 dnl This is in order to not define SHARED_CFLAGS sometimes
1850 dnl We don't always do aros_shared_ar, aros_shared_cflags
1852 #XXX compatability...
1853 aros_shared_ar="$aros_shared_ld $aros_shared_ldflags -o"
1855 if test -n "$aros_shared_cflags" ; then
1856 echo "SHARED_CFLAGS := $aros_shared_cflags" >> ${aros_hostcfg_dir}/host.cfg
1857 echo "SHARED_AR := $aros_shared_ar" >> ${aros_hostcfg_dir}/host.cfg