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="mingw32"
932 aros_shared_default="no"
935 case "$target_cpu" in
937 aros_target_cpu="i386"
938 aros_object_format="elf_i386"
939 aros_flavour="emulation"
940 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
941 aros_shared_cflags=""
942 aros_default_wbdepth=8
943 gcc_target_cpu="i386"
944 aros_target_cc="i386-aros-gcc"
945 aros_target_ld="i386-aros-ld"
946 aros_target_as="i386-aros-as"
947 aros_target_ar="i386-aros-ar"
948 aros_target_ranlib="i386-aros-ranlib"
949 aros_target_nm="i386-aros-nm"
950 aros_target_strip="i386-aros-strip"
951 aros_target_objcopy="i386-aros-objcopy"
952 aros_target_objdump="i386-aros-objdump"
953 target_tool_prefix="i386-mingw32-"
956 AC_MSG_ERROR("Unknown CPU for Mingw32 -- $target_cpu")
959 if test $host_os = "cygwin"; then
960 aros_kernel_cflags="-mno-cygwin"
964 aros_target_arch="pp"
965 aros_shared_default="no"
966 case "$target_cpu" in
968 aros_target_cpu="m68k"
969 aros_object_format="m68kelf"
970 aros_flavour="palmnative"
971 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
972 aros_kernel_ldflags=""
973 aros_default_wbwidth=160
974 aros_default_wbheight=160
975 aros_default_wbdepth=1
976 aros_target_ar_flags="cru"
977 aros_compiler_libs="-lgcc1"
978 aros_shared_default=no
979 aros_shared_cflags="-fpic"
980 aros_shared_aflags=""
981 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
982 aros_kernel_ldflags="-Wl,-rpath,./lib"
983 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000 -Wa,-mc68000"
985 aros_debug_ldflags="$aros_symbols_debug"
986 aros_mungwall_debug="0"
987 aros_modules_debug="0"
988 gcc_target_cpu="mc68000"
989 ignore_undefined_symbols="-ius"
992 AC_MSG_ERROR("Unknown CPU for PalmPilot -- $target_cpu")
998 aros_target_arch="mac"
999 aros_shared_default="no"
1000 case "$target_cpu" in
1002 aros_target_cpu="m68k"
1003 aros_object_format="m68kelf"
1004 aros_flavour="mac68knative"
1005 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
1006 aros_default_wbwidth=512
1007 aros_default_wbheight=384
1008 aros_default_wbdepth=8
1009 aros_target_ar_flags="cru"
1010 aros_compiler_libs="-lgcc1"
1011 aros_shared_default=no
1012 aros_shared_cflags="-fpic"
1013 aros_shared_aflags=""
1014 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1015 aros_kernel_ldflags="-Wl,-rpath,./lib"
1016 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000"
1017 aros_debug_aflags=""
1018 aros_debug_ldflags="$aros_symbols_debug"
1019 aros_mungwall_debug="0"
1020 aros_modules_debug="0"
1021 gcc_target_cpu="mc68000"
1022 ignore_undefined_symbols="-ius"
1025 AC_MSG_ERROR("Unknown CPU for Mac68k -- $target_cpu")
1031 AC_MSG_ERROR([Unsupported target architecture $target])
1035 AC_MSG_CHECKING([Where to download sourcecode for external ports])
1036 AC_ARG_WITH(portssources,AC_HELP_STRING([--with-portssources=DIR],[Where to download sourcecode for external ports]),with_portssrcdir=$withval,with_portssrcdir="default")
1037 if test "$with_portssrcdir" = "default"; then
1038 AROS_PORTSSRCDIR="$AROS_BUILDDIR/bin/Sources"
1040 AROS_PORTSSRCDIR="$with_portssrcdir"
1042 AC_MSG_RESULT($AROS_PORTSSRCDIR)
1044 AC_MSG_CHECKING([which bootloader to use])
1045 AC_ARG_WITH(bootloader,AC_HELP_STRING([--with-bootloader=NAME],[Use a specific bootloader]),target_bootloader=$withval,target_bootloader=$target_bootloader)
1046 if test "$target_bootloader" = "none"; then
1047 aros_target_bootloader=""
1049 aros_target_bootloader="$target_bootloader"
1051 AC_MSG_RESULT($target_bootloader)
1053 AC_MSG_CHECKING([which icon-set to use])
1054 AC_ARG_WITH(iconset,AC_HELP_STRING([--with-iconset=NAME],[Use a specific Icon-set (default=Gorilla).]),target_iconset=$withval,target_iconset="default")
1055 if test "$target_iconset" = "default"; then
1056 aros_target_iconset="Gorilla"
1057 target_iconset="default (Gorilla)"
1059 aros_target_iconset="$target_iconset"
1061 AC_MSG_RESULT($target_iconset)
1063 # Check LZO when compiling the grub2 bootloader on i386/x86_64.
1064 aros_liblzo_check="no"
1065 case "$aros_target_bootloader" in
1067 case "$target_cpu" in
1069 aros_liblzo_check="yes"
1072 aros_liblzo_check="yes"
1083 if test "$aros_liblzo_check" = "yes"; then
1084 # There are three possibilities. LZO version 2 installed with the name
1085 # liblzo2, with the name liblzo, and LZO version 1.
1086 AC_CHECK_LIB(lzo2, __lzo_init_v2, [LIBLZO="-llzo2"],
1087 AC_CHECK_LIB(lzo, __lzo_init_v2, [LIBLZO="-llzo"],
1088 AC_CHECK_LIB(lzo, __lzo_init2, [LIBLZO="-llzo"],
1089 AC_MSG_ERROR([LZO library version 1.02 or later is required]))))
1092 LIBS="$LIBS $LIBLZO"
1093 AC_CHECK_FUNC(lzo1x_999_compress, ,
1094 [AC_MSG_ERROR([LZO1X-999 must be enabled])])
1096 # LZO version 2 uses lzo/lzo1x.h, while LZO version 1 uses lzo1x.h.
1097 AC_CHECK_HEADERS(lzo/lzo1x.h lzo1x.h)
1100 AC_MSG_CHECKING([which GUI Theme to use])
1101 AC_ARG_WITH(theme,AC_HELP_STRING([--with-theme=NAME],[Use a specific GUI Theme]),target_guitheme=$withval,target_guitheme="default")
1102 if test "$target_guitheme" = "default"; then
1103 aros_target_guitheme="Ice"
1105 aros_target_guitheme="$target_guitheme"
1107 AC_MSG_RESULT($aros_target_guitheme)
1109 # Find out if we are cross-compiling (ie. if we can't use the host compiler
1112 if test "$aros_host_cpu" != "$aros_target_cpu" ; then
1115 if test "$aros_host_arch" == "darwin" ; then
1119 # Set prefix for target compiler etc. if we're cross-compiling
1120 # (should possibly be earlier but needs to be after AC_PROG_CC)
1121 if test "$cross_compiling" = "yes" ; then
1122 if test "$target_tool_prefix" = ""; then
1123 target_tool_prefix=${target_cpu}-elf-
1125 CC=${target_tool_prefix}gcc
1128 #-----------------------------------------------------------------------------
1130 # Disable pointer-signedness warnings if the compiler recognises the option
1132 AC_MSG_CHECKING([whether ${CC} accepts -Wno-pointer-sign])
1133 save_cflags="$CFLAGS"
1134 CFLAGS="$CFLAGS -Wno-pointer-sign"
1135 AC_TRY_COMPILE(,, use_no_sign_warning="yes", use_no_sign_warning="no")
1136 AC_MSG_RESULT($use_no_sign_warning)
1137 if test "x-$use_no_sign_warning" = "x-yes" ; then
1138 aros_config_cflags="$aros_config_cflags -Wno-pointer-sign"
1140 CFLAGS="$save_cflags"
1142 #-----------------------------------------------------------------------------
1144 # Find all the tools we need to compile. This could be cross-compiling
1145 # though! If that is the case we use the GNU form of the target and
1146 # simply add this to the front of the binary name. This is rather simple,
1147 # but it should work under most circumstances.
1149 # The default tools are to use the same as the host, but only if the
1150 # host and target CPU are the same. With GCC this is normally enough.
1154 aros_shared_ld="$aros_host_ld"
1156 aros_target_mkdep="$aros_host_mkdep"
1157 aros_target_incl_def="$aros_host_incl"
1159 AC_PATH_PROG(aros_kernel_cc,$CC)
1161 # The default tools executables to be linked to.
1162 if test "$aros_target_cc" != ""; then
1163 AC_PATH_PROG(aros_target_cc,$aros_target_cc)
1164 AROS_REQUIRED(gcc,$aros_target_cc)
1166 if test "$aros_target_ld" != ""; then
1167 AC_PATH_PROG(aros_target_ld,$aros_target_ld)
1168 AROS_REQUIRED(ld,$aros_target_ld)
1171 if test "$crosstools" != "yes"; then
1172 AROS_TOOL_TARGET(aros_target_as_ln,as,$aros_target_as)
1173 AROS_REQUIRED(as,$aros_target_as_ln)
1174 AROS_TOOL_TARGET(aros_kernel_ld,ld,$aros_kernel_ld)
1175 AROS_REQUIRED(ld,$aros_kernel_ld)
1176 AROS_TOOL_TARGET(aros_target_ar_ln,ar,$aros_target_ar)
1177 AROS_REQUIRED(ar,$aros_target_ar_ln)
1178 AROS_TOOL_TARGET(aros_target_nm_ln,nm,$aros_target_nm)
1179 AROS_REQUIRED(nm,$aros_target_nm_ln)
1180 AROS_TOOL_TARGET(aros_target_objcopy_ln,objcopy,$aros_target_objcopy)
1181 AROS_REQUIRED(objcopy,$aros_target_objcopy_ln)
1182 AROS_TOOL_TARGET(aros_target_objdump_ln,objdump,$aros_target_objdump)
1183 AROS_REQUIRED(objdump,$aros_target_objdump_ln)
1184 AROS_TOOL_TARGET(aros_target_ranlib_ln,ranlib,$aros_target_ranlib)
1185 AROS_REQUIRED(ranlib,$aros_target_ranlib_ln)
1186 AROS_TOOL_TARGET(aros_target_strip_ln,strip,$aros_target_strip)
1187 AROS_REQUIRED(strip,$aros_target_strip_ln)
1190 if test "$rescomp" != ""; then
1191 if test "$cross_compiling" = "yes" ; then
1192 rescomp=${target_tool_prefix}${rescomp}
1194 AC_PATH_PROG(aros_kernel_rescomp,$rescomp)
1195 AROS_REQUIRED($rescomp,$aros_kernel_rescomp)
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 \`${orig_target_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"
1307 AC_MSG_CHECKING([whether ${CC} accepts -iquote])
1308 AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
1309 AC_MSG_RESULT($has_iquote)
1310 if test "x-$has_iquote" = "x-yes" ; then
1311 host_cflags_iquote=-iquote
1312 host_cflags_iquote_end=
1314 host_cflags_iquote=-I
1315 host_cflags_iquote_end=-I-
1317 kernel_cflags_iquote=$host_cflags_iquote
1318 kernel_cflags_iquote_end=$host_cflags_iquote_end
1319 if test "x-$cross_compiling" = "x-yes"; then
1320 CC="$aros_kernel_cc"
1321 AC_MSG_CHECKING([whether ${CC} accepts -iquote])
1322 AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
1323 AC_MSG_RESULT($has_iquote)
1324 if test "x-$has_iquote" = "x-yes" ; then
1325 kernel_cflags_iquote=-iquote
1326 kernel_cflags_iquote_end=
1328 kernel_cflags_iquote=-I
1329 kernel_cflags_iquote_end=-I-
1332 aros_cflags_iquote=$kernel_cflags_iquote
1333 aros_cflags_iquote_end=$kernel_cflags_iquote_end
1334 if test "$orig_target_cc" != "$aros_kernel_cc"; then
1335 CC="$orig_target_cc"
1336 AC_MSG_CHECKING([whether ${CC} accepts -iquote])
1337 AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
1338 AC_MSG_RESULT($has_iquote)
1339 if test "x-$has_iquote" = "x-yes" ; then
1340 aros_cflags_iquote=-iquote
1341 aros_cflags_iquote_end=
1343 aros_cflags_iquote=-I
1344 aros_cflags_iquote_end=-I-
1348 CFLAGS="$save_cflags"
1350 AC_SUBST(host_cflags_iquote)
1351 AC_SUBST(host_cflags_iquote_end)
1352 AC_SUBST(kernel_cflags_iquote)
1353 AC_SUBST(kernel_cflags_iquote_end)
1354 AC_SUBST(aros_cflags_iquote)
1355 AC_SUBST(aros_cflags_iquote_end)
1358 dnl Check if user specified --with-resolution=XRESxYRESxDEPTH
1359 AC_MSG_CHECKING([for default resolution of WBScreen])
1360 AC_ARG_WITH(resolution,AC_HELP_STRING([--with-resolution=XRESxYRESxDEPTH],[Default resolution of the initial WorkbenchScreen]),resolution=$withval,resolution=none)
1361 # We require an argument, so map --with/--without ("yes"/"no") to "none" specified
1362 if test "$resolution" = "yes" ; then
1365 if test "$resolution" = "no" ; then
1368 if test "$resolution" != "none" ; then
1369 aros_default_wbwidth=`echo $resolution | cut -d'x' -f1`
1370 aros_default_wbheight=`echo $resolution | cut -d'x' -f2`
1371 aros_default_wbdepth=`echo $resolution | cut -d'x' -f3`
1373 AC_MSG_RESULT($aros_default_wbwidth x $aros_default_wbheight x $aros_default_wbdepth)
1374 aros_cv_default_wbwidth=$aros_default_wbwidth
1375 aros_cv_default_wbheight=$aros_default_wbheight
1376 aros_cv_default_wbdepth=$aros_default_wbdepth
1378 dnl See if the user wants the BOCHS hack for native flavour
1379 AC_MSG_CHECKING([if bochs hack is enabled])
1380 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")
1381 if test "$bochs_hack" = "yes" ; then
1384 AC_MSG_RESULT($bochs_hack)
1386 dnl See if the user wants the serial debug output for native flavour
1387 AC_MSG_CHECKING([if serial debug is enabled])
1388 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)
1389 if test "$aros_serial_debug" = 0 ; then
1390 serial_debug_forced=""
1391 if test "$serial_debug" = "yes" ; then
1394 if test "$serial_debug" = "no" ; then
1398 serial_debug_forced="(forced)"
1399 serial_debug=$aros_serial_debug
1401 if test "$serial_debug" != "none" ; then
1402 aros_serial_debug=$serial_debug
1403 AC_MSG_RESULT($serial_debug_forced on port $serial_debug)
1408 dnl See if the user wants the palm debug output hack for palm native flavour
1409 AC_MSG_CHECKING([if palm debug hack is enabled])
1410 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")
1411 if test "$palm_debug_hack" = "yes" ; then
1412 aros_palm_debug_hack="1"
1414 AC_MSG_RESULT($palm_debug_hack)
1417 dnl See if the user wants nesting supervisor activated for unix flavour
1418 AC_MSG_CHECKING([if nesting supervisor support is enabled])
1419 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")
1420 if test "$nesting_supervisor" = "yes" ; then
1421 aros_nesting_supervisor="1"
1423 AC_MSG_RESULT($nesting_supervisor)
1426 dnl things specifically required for hosted flavours
1427 if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
1429 if test "x-$need_dlopen" != "x-no" ; then
1430 dnl some kind of dynamic library access system is required for hostlib.resource
1431 AC_CHECK_FUNC(dlopen, have_dl="yes", have_dl="no")
1432 if test "x-$have_dl" = "x-no" ; then
1433 AC_CHECK_LIB(dl, dlopen, [have_dl="yes"
1434 aros_host_ldflags="$aros_host_ldflags -ldl"],
1437 if test "x-$have_dl" = "x-no" ; then
1438 AC_MSG_ERROR([dlopen() dynamic linker functions not available])
1444 AC_ARG_ENABLE(x11_hidd, AC_HELP_STRING([--enable-x11-hidd],
1445 [build X11 hidd for hosted (default=auto)]),
1446 x11_hidd="$enableval",
1448 case "x-$x11_hidd" in
1449 x-yes|x-no|x-auto) ;;
1450 *) x11_hidd="auto" ;;
1456 if test "x-$x11_hidd" != "x-no" ; then
1462 for path in $x_libraries
1464 x_cflags="$x_cflags -L$path"
1467 for path in $x_includes
1469 x_cflags="$x_cflags -I$path"
1472 if test "x-$no_x" = "x-yes" ; then
1475 if test "x-$x11_hidd" != "x-auto" ; then
1476 dnl and they explicitly asked for it, bail out
1477 AC_MSG_ERROR([X11 libs/headers not found, cannot build X11 hidd as requested])
1481 dnl found it, setup the metatarget
1482 x11_hidd_target=kernel-x11gfx-kobj
1485 dnl setup shared memory extensions
1486 AC_ARG_ENABLE(x11_shm, AC_HELP_STRING([--enable-x11-shm],
1487 [use X11 shared memory (default=auto)]),
1488 x11_hidd_shm="$enableval",
1489 x11_hidd_shm="auto")
1490 case "x-$x11_hidd_shm" in
1491 x-yes|x-no|x-auto) ;;
1492 *) x11_hidd_shm="auto" ;;
1498 if test "x-$x11_hidd_shm" != "x-no" ; then
1500 dnl system shm headers
1501 AC_CHECK_HEADERS(sys/ipc.h)
1502 AC_CHECK_HEADERS(sys/shm.h)
1505 if test "x-$ac_cv_header_sys_ipc_h" = "x-yes" -a "x-$ac_cv_header_sys_shm_h" = "x-yes" ; then
1507 dnl make sure X libs have shm functions
1508 save_cflags="$CFLAGS"
1509 CFLAGS="$CFLAGS $x_cflags"
1510 AC_CHECK_LIB(Xext, XShmQueryExtension, have_xshm=yes)
1511 CFLAGS="$save_cflags"
1515 dnl detection done, prepare output
1516 if test "x-$have_xshm" = "x-yes" ; then
1519 elif test "x-$x11_hidd_shm" = "x-yes" ; then
1520 dnl they explicitly asked for it, but we can't do it
1521 AC_MSG_ERROR([X11 has no support for shared memory, cannot enable it as requested])
1523 dnl otherwise just disable it
1528 dnl setup vidmode (fullscreen) extensions
1529 AC_ARG_ENABLE(x11_vidmode, AC_HELP_STRING([--enable-x11-vidmode],
1530 [use X11 vidmode extension (default=auto)]),
1531 x11_hidd_vidmode="$enableval",
1532 x11_hidd_vidmode="auto")
1533 case "x-$x11_hidd_vidmode" in
1534 x-yes|x-no|x-auto) ;;
1535 *) x11_hidd_vidmode="auto" ;;
1541 if test "x-$x11_hidd_vidmode" != "x-no" ; then
1543 dnl make sure X libs have vidmode functions
1544 save_cflags="$CFLAGS"
1545 CFLAGS="$CFLAGS $x_cflags"
1546 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, have_vidmode=yes)
1547 CFLAGS="$save_cflags"
1550 dnl detection done, prepare output
1551 if test "x-$have_vidmode" = "x-yes" ; then
1552 dnl we can do vidmode
1553 DO_VIDMODE_SUPPORT="1"
1554 elif test "x-$x11_hidd_vidmode" = "x-yes" ; then
1555 dnl they explicitly asked for it, but we can't do it
1556 AC_MSG_ERROR([X11 vidmode extension not available, cannot enable it as requested])
1558 dnl otherwise just disable it
1559 DO_VIDMODE_SUPPORT="0"
1563 aros_host_x11_includes=$x_includes
1564 aros_host_x11_libdirs=$x_libraries
1569 AC_ARG_ENABLE(sdl_hidd, AC_HELP_STRING([--enable-sdl-hidd],
1570 [build SDL hidd for hosted (default=auto)]),
1571 sdl_hidd="$enableval",
1573 case "x-$sdl_hidd" in
1574 x-yes|x-no|x-auto) ;;
1575 *) sdl_hidd="auto" ;;
1579 if test "x-$sdl_hidd" != "x-no" ; then
1582 AM_PATH_SDL([1.2.10], have_sdl="yes", have_sdl="no")
1584 if test "x-$have_sdl" != "x-yes" ; then
1587 if test "x-$sdl_hidd" != "x-auto" ; then
1588 dnl and they explicitly asked for it, bail out
1589 AC_MSG_ERROR([SDL libs/headers not found, cannot build SDL hidd as requested])
1593 dnl found it, setup the metatarget
1594 sdl_hidd_target=kernel-hidd-sdl
1595 aros_host_sdl_cflags=SDL_CFLAGS
1596 aros_host_sdl_libs=SDL_LIBS
1603 dnl See if the user wants dbus.library
1604 AC_MSG_CHECKING([if building of dbus.library is enabled])
1605 AC_ARG_ENABLE(dbus,AC_HELP_STRING([--enable-dbus],[Enable DBUS support via dbus.library (default=no)]),dbus="yes",dbus="no")
1606 if test "$dbus" = "yes" ; then
1608 DBUS_CFLAGS=`pkg-config --cflags dbus-1`
1609 DBUS_LIBFLAGS=`pkg-config --libs dbus-1`
1610 KERNEL_DBUS_KOBJ=kernel-dbus-kobj
1611 KERNEL_DBUS_INCLUDES=kernel-dbus-includes
1615 AC_MSG_RESULT($dbus)
1618 dnl --------------------------------------------------------------------
1619 dnl Configuration Output Section
1620 dnl --------------------------------------------------------------------
1625 AC_SUBST(aros_flavour)
1626 AC_SUBST(aros_flavour_uc)
1627 AC_SUBST(AROS_BUILDDIR)
1629 AC_SUBST(AROS_PORTSSRCDIR)
1632 AC_SUBST(aros_cc_pre)
1633 AC_SUBST(aros_host_strip)
1634 AC_SUBST(aros_host_arch)
1635 AC_SUBST(aros_host_cpu)
1636 AC_SUBST(aros_host_cc)
1637 AC_SUBST(aros_host_ar)
1638 AC_SUBST(aros_host_ranlib)
1639 AC_SUBST(aros_host_ld)
1640 AC_SUBST(aros_host_make)
1641 AC_SUBST(aros_host_cflags)
1642 AC_SUBST(aros_host_ldflags)
1643 AC_SUBST(aros_host_debug)
1644 AC_SUBST(aros_host_mkdep)
1645 AC_SUBST(aros_host_mkargs)
1646 AC_SUBST(aros_host_exe_suffix)
1647 AC_SUBST(aros_host_lib_suffix)
1648 AC_SUBST(aros_tools_dir)
1649 AC_SUBST(aros_host_aclocal)
1650 AC_SUBST(aros_host_autoconf)
1651 AC_SUBST(aros_host_autoheader)
1652 AC_SUBST(aros_host_automake)
1655 AC_SUBST(aros_target_guitheme)
1656 AC_SUBST(aros_target_iconset)
1657 AC_SUBST(aros_target_bootloader)
1658 AC_SUBST(aros_target_arch)
1659 AC_SUBST(aros_target_cpu)
1660 AC_SUBST(aros_target_variant)
1661 AC_SUBST(aros_target_suffix)
1662 AC_SUBST(aros_target_incl)
1663 AC_SUBST(aros_target_ar)
1664 AC_SUBST(aros_target_ranlib)
1665 AC_SUBST(aros_kernel_nm)
1666 AC_SUBST(orig_target_cc)
1667 AC_SUBST(aros_target_cc)
1668 AC_SUBST(aros_kernel_cc)
1669 AC_SUBST(aros_target_as)
1670 AC_SUBST(orig_target_ld)
1671 AC_SUBST(aros_target_ld)
1672 AC_SUBST(aros_kernel_ld)
1673 AC_SUBST(aros_target_cc_includes)
1674 AC_SUBST(aros_target_cc_path)
1675 AC_SUBST(aros_target_objdump)
1676 AC_SUBST(aros_target_objcopy)
1677 AC_SUBST(aros_target_strip)
1678 AC_SUBST(aros_target_nm)
1679 AC_SUBST(aros_kernel_rescomp)
1680 AC_SUBST(aros_shared_default)
1681 AC_SUBST(aros_shared_ld)
1682 AC_SUBST(aros_object_format)
1683 AC_SUBST(aros_compiler_libs)
1685 AC_SUBST(aros_config_cflags)
1686 AC_SUBST(aros_config_aflags)
1687 AC_SUBST(aros_config_ldflags)
1689 AC_SUBST(aros_shared_cflags)
1690 AC_SUBST(aros_shared_aflags)
1691 AC_SUBST(aros_shared_ldflags)
1692 AC_SUBST(aros_kernel_cflags)
1693 AC_SUBST(aros_kernel_ldflags)
1694 AC_SUBST(aros_debug_cflags)
1695 AC_SUBST(aros_debug_aflags)
1696 AC_SUBST(aros_debug_ldflags)
1697 AC_SUBST(aros_target_genmap)
1698 AC_SUBST(aros_target_strip_flags)
1701 AC_SUBST(x11_hidd_target)
1702 AC_SUBST(sdl_hidd_target)
1704 AC_SUBST(aros_default_wbwidth)
1705 AC_SUBST(aros_default_wbheight)
1706 AC_SUBST(aros_default_wbdepth)
1707 AC_SUBST(DO_XSHM_SUPPORT)
1708 AC_SUBST(DO_VIDMODE_SUPPORT)
1710 AC_SUBST(aros_host_x11_includes)
1711 AC_SUBST(aros_host_x11_libdirs)
1712 AC_SUBST(aros_host_sdl_cflags)
1713 AC_SUBST(aros_host_sdl_libs)
1715 # Native version related
1716 AC_SUBST(aros_bochs_hack)
1717 AC_SUBST(aros_serial_debug)
1719 # Palm native version related
1720 AC_SUBST(aros_palm_debug_hack)
1722 # Unix/Hosted version related
1723 AC_SUBST(aros_nesting_supervisor)
1726 AC_SUBST(ENABLE_DBUS)
1727 AC_SUBST(DBUS_CFLAGS)
1728 AC_SUBST(DBUS_LIBFLAGS)
1729 AC_SUBST(KERNEL_DBUS_KOBJ)
1730 AC_SUBST(KERNEL_DBUS_INCLUDES)
1733 AC_SUBST(ENABLE_X11)
1736 AC_SUBST(aros_debug)
1737 AC_SUBST(aros_mungwall_debug)
1738 AC_SUBST(aros_stack_debug)
1739 AC_SUBST(aros_modules_debug)
1741 # Collect-aros stuff: "-ius" to ignore undefined symbols
1742 AC_SUBST(ignore_undefined_symbols)
1744 # C compiler related
1745 AC_SUBST(gcc_target_cpu)
1747 dnl Prepare for output, make up all the generated patches
1748 case "$aros_flavour" in
1749 emulation) aros_flavour_uc="AROS_FLAVOUR_EMULATION"
1750 aros_flavour="emulation" ;;
1751 emulcompat) aros_flavour_uc="(AROS_FLAVOUR_EMULATION|AROS_FLAVOUR_BINCOMPAT)"
1752 aros_flavour="emulation" ;;
1753 standalone) aros_flavour_uc="AROS_FLAVOUR_STANDALONE"
1754 aros_flavour="standalone";;
1755 native) aros_flavour_uc="AROS_FLAVOUR_NATIVE"
1756 aros_flavour="native" ;;
1757 nativecompat) aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1758 aros_flavour="native" ;;
1759 linklib) aros_flavour_uc="AROS_FLAVOUR_LINKLIB"
1760 aros_flavour="linklib" ;;
1761 palmnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1762 aros_flavour="palmnative" ;;
1763 mac68knative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1764 aros_flavour="mac68knative" ;;
1765 ppcnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_BINCOMPAT)"
1766 aros_flavour="ppcnative" ;;
1769 if test ! -d ${aros_inc_dir} ; then
1770 ${MKDIR} ${aros_inc_dir}
1772 if test ! -d ${aros_geninc_dir} ; then
1773 ${MKDIR} ${aros_geninc_dir}
1775 if test ! -d ${aros_hostcfg_dir} ; then
1776 ${MKDIR} ${aros_hostcfg_dir}
1778 if test ! -d ${aros_targetcfg_dir} ; then
1779 ${MKDIR} ${aros_targetcfg_dir}
1781 if test ! -d ${aros_tools_dir} ; then
1782 ${MKDIR} ${aros_tools_dir}
1784 if test ! -d ${aros_scripts_dir} ; then
1785 ${MKDIR} ${aros_scripts_dir}
1788 AC_CONFIG_HEADERS(${aros_geninc_dir}/host-conf.h:config/host-conf.h.in)
1790 AC_CONFIG_COMMANDS([compiler_executable],
1792 prefix=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}
1794 prefix="${prefix}/${aros_target_cpu}-aros"
1795 prefix2=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros
1799 chmod a+x ${prefix2}-gcc ${prefix2}-ld
1801 ln -sf ${prefix2}-gcc ${prefix}-gcc
1802 ln -sf ${prefix2}-ld ${prefix}-ld
1804 ln -sf $aros_target_as_ln ${prefix}-as
1805 ln -sf $aros_target_nm_ln ${prefix}-nm
1806 ln -sf $aros_target_ar_ln ${prefix}-ar
1807 ln -sf $aros_target_ranlib_ln ${prefix}-ranlib
1808 ln -sf $aros_target_objcopy_ln ${prefix}-objcopy
1809 ln -sf $aros_target_objdump_ln ${prefix}-objdump
1810 ln -sf $aros_target_strip_ln ${prefix}-strip
1812 ln -sf $aros_target_as_ln ${prefix2}-as
1813 ln -sf $aros_target_nm_ln ${prefix2}-nm
1814 ln -sf $aros_target_ar_ln ${prefix2}-ar
1815 ln -sf $aros_target_ranlib_ln ${prefix2}-ranlib
1816 ln -sf $aros_target_objcopy_ln ${prefix2}-objcopy
1817 ln -sf $aros_target_objdump_ln ${prefix2}-objdump
1818 ln -sf $aros_target_strip_ln ${prefix2}-strip
1821 aros_tools_dir=${aros_tools_dir}
1822 aros_target_cpu=${aros_target_cpu}
1823 aros_target_arch=${aros_target_arch}
1824 aros_target_suffix=${aros_target_suffix}
1825 aros_target_nm_ln=${aros_target_nm_ln}
1826 aros_target_as_ln=${aros_target_as_ln}
1827 aros_target_ar_ln=${aros_target_ar_ln}
1828 aros_target_ranlib_ln=${aros_target_ranlib_ln}
1829 aros_target_objdump_ln=${aros_target_objdump_ln}
1830 aros_target_objcopy_ln=${aros_target_objcopy_ln}
1831 aros_target_strip_ln=${aros_target_strip_ln}
1834 AC_CONFIG_COMMANDS([genshared_executable],
1835 [chmod a+x ${aros_scripts_dir}/genshared],
1836 [aros_scripts_dir=${aros_scripts_dir}]
1838 AC_CONFIG_COMMANDS([genmf_executable],
1839 [chmod a+x ${aros_tools_dir}/genmf.py],
1840 [aros_tools_dir=${aros_tools_dir}]
1842 AC_CONFIG_COMMANDS([adflib_myaros.conf_executable],
1843 [chmod a+x tools/adflib/myconf.aros]
1849 ${aros_inc_dir}/config.h:config/config.h.in
1850 ${aros_geninc_dir}/config.h:config/config.h.in
1851 ${aros_hostcfg_dir}/host.cfg:config/host.cfg.in
1852 ${aros_targetcfg_dir}/target.cfg:config/target.cfg.in
1854 ${aros_targetcfg_dir}/make.defaults:config/make.defaults.in
1855 ${aros_targetcfg_dir}/specs:config/specs.in
1856 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-gcc:scripts/aros-gcc.in
1857 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-ld:scripts/aros-ld.in
1858 ${aros_scripts_dir}/genshared:compiler/c_lib/source/lib_source/genshared.in
1859 ${aros_tools_dir}/genmf.py:tools/genmf/genmf.py
1860 tools/adflib/myconf.aros
1861 tools/collect-aros/env.h
1866 dnl This is in order to not define SHARED_CFLAGS sometimes
1867 dnl We don't always do aros_shared_ar, aros_shared_cflags
1869 #XXX compatability...
1870 aros_shared_ar="$aros_shared_ld $aros_shared_ldflags -o"
1872 if test -n "$aros_shared_cflags" ; then
1873 echo "SHARED_CFLAGS := $aros_shared_cflags" >> ${aros_hostcfg_dir}/host.cfg
1874 echo "SHARED_AR := $aros_shared_ar" >> ${aros_hostcfg_dir}/host.cfg