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($AROS_SRCDIR)
56 # Parse the target field into something useful.
58 target_os=`echo $target | sed 's/^\([^-]*\)-\(.*\)$/\1/'`
59 target_cpu=`echo $target | sed 's/^\([^-]*\)-\(.*\)$/\2/'`
62 dnl --------------------------------------------------------------------
63 dnl Set the default Workbench resolution
64 dnl --------------------------------------------------------------------
65 aros_default_wbwidth=800
66 aros_default_wbheight=600
67 aros_default_wbdepth=4
69 dnl --------------------------------------------------------------------
70 dnl Host Configuration Section
71 dnl --------------------------------------------------------------------
73 dnl The idea here is to find out all the information we need about the
74 dnl host. This means things like tools for building directory structures,
75 dnl copying files around and the like.
77 # The first step is to find the host binaries.
78 # Check for a compiler.
83 # Check for a compatible awk
84 AC_CHECK_PROGS(AWK,[gawk nawk])
85 AROS_REQUIRED(gawk,$AWK)
86 AROS_PROG(MMAKE,mmake)
88 # Perform some default variable assignments. Note all of these will be
89 # Regenerated from the script, so there is no need to cache them.
92 AROS_TOOL_CCPATH(aros_host_ld,ld)
93 AROS_REQUIRED(ld,$aros_host_ld)
95 aros_host_cflags=$CFLAGS
96 aros_host_ldflags=$LDFLAGS
97 aros_host_debug="-g -O0"
98 aros_host_mkdep="\$(TOP)/scripts/mkdep"
99 aros_host_mkargs="--no-print-directory"
100 aros_host_incl="/usr/include"
101 aros_host_exe_suffix="$EXEEXT"
102 aros_host_lib_suffix=""
104 AC_CHECK_PROGS(aros_host_aclocal,[aclocal aclocal19 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="linux"
135 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
141 aros_host_cpu="x86_64"
150 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
151 aros_host_cpu="$host_cpu"
157 aros_host_cc="$aros_host_cc $aros_host_cc_pipe -I/usr/local/include"
158 aros_host_make="gmake"
159 aros_host_arch="freebsd"
162 aros_host_ldflags="$aros_host_ldflags -L/usr/local/lib -liconv"
164 dnl Need to override this here, it's just too hard later.
165 dnl This shouldn't be here at all...
166 dnl aros_target_cc_includes="/usr/include"
168 dnl FreeBSD 5.x (and later) has changed the default object format.
169 dnl The double [[]] is necessary to get around m4's quoting rules.
172 aros_object_format="elf_i386"
176 aros_object_format="elf_i386_fbsd"
183 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
184 aros_host_arch="darwin"
193 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
194 aros_host_cpu="$host_cpu"
198 aros_host_ldflags="$aros_host_ldflags -liconv"
203 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
204 aros_host_make="gmake"
205 aros_host_arch="netbsd"
214 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
215 aros_host_cpu="$host_cpu"
218 aros_host_lib_suffix=".0.0"
222 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
223 aros_host_make="gmake"
224 aros_host_arch="openbsd"
230 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
231 aros_host_cpu="$host_cpu"
237 aros_host_arch="solaris"
238 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
244 aros_host_cpu="sparc"
247 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
248 aros_host_cpu="$host_cpu"
254 aros_host_arch="morphos"
259 aros_host_arch="amiga"
264 TOUCH="/gg/bin/touch"
273 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
274 aros_host_cpu="$host_cpu"
280 aros_host_arch="cygwin"
281 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
287 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
288 aros_host_cpu="$host_cpu"
294 aros_host_arch="mingw32"
295 aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
301 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
302 aros_host_cpu="$host_cpu"
307 AC_MSG_ERROR([Unsupported host architecture $host])
311 AROS_PROG(aros_host_ar,[ar],[cr])
312 AROS_REQUIRED(ar,$aros_host_ar)
313 AROS_PROG(aros_host_ranlib,ranlib)
314 AROS_REQUIRED(ranlib,$aros_host_ranlib)
315 AROS_PROG(aros_host_strip,strip)
316 AROS_REQUIRED(strip,$aros_host_strip)
318 AROS_PROG(RM,[rm],[-rf])
319 AROS_REQUIRED(rm,$RM)
321 AROS_REQUIRED(cp,$CP)
323 AROS_REQUIRED(mv,$MV)
324 AROS_PROG(ECHO,[echo])
325 AROS_REQUIRED(echo,$ECHO)
326 AROS_PROG(MKDIR,[mkdir],[-p])
327 AROS_REQUIRED(mkdir,$MKDIR)
328 AROS_PROG(TOUCH,[touch])
329 AROS_REQUIRED(touch,$TOUCH)
330 AROS_PROG(SORT,[sort])
331 AROS_REQUIRED(sort,$SORT)
332 AROS_PROG(UNIQ,[uniq])
333 AROS_REQUIRED(uniq,$UNIQ)
334 AROS_PROG(NOP,[true])
335 AROS_REQUIRED(true,$NOP)
337 AROS_REQUIRED(cat,$CAT)
338 AROS_PROG(BISON,[bison])
339 AROS_REQUIRED(bison,$BISON)
340 AROS_PROG(FLEX,[flex])
341 AROS_REQUIRED(flex,$FLEX)
342 AROS_PROG(PNGTOPNM,[pngtopnm])
343 AROS_REQUIRED(pngtopnm,$PNGTOPNM)
344 AROS_PROG(PPMTOILBM,[ppmtoilbm])
345 AROS_REQUIRED(ppmtoilbm,$PPMTOILBM)
347 AROS_REQUIRED(sed,$SED)
348 AROS_PROG(CHMOD,[chmod])
349 AROS_REQUIRED(chmod,$CHMOD)
351 AM_PATH_PYTHON(2.2.1)
358 dnl ---------------------------------------------------------------------------
359 dnl Look for things about the host system, good for hosted targets.
360 dnl ---------------------------------------------------------------------------
362 # Check for some includes for the X11 HIDD and the kernel
363 AC_CHECK_HEADERS([sys/ipc.h sys/shm.h \
364 sys/mmap.h sys/mman.h sysexits.h \
365 sys/statfs.h sys/statvfs.h sys/vfs.h sys/param.h \
368 AC_CHECK_HEADERS([sys/mount.h],,,[#include <sys/param.h>])
385 AC_CHECK_MEMBERS(struct tm.tm_gmtoff)
387 # Look for some functions
388 AC_CHECK_FUNCS([getpagesize kqueue statfs statvfs \
389 clone kse_create rfork_thread thr_create sa_register \
390 getcontext makecontext setcontext sigaltstack swapcontext])
395 dnl --------------------------------------------------------------------
396 dnl Target Configuration Section
397 dnl --------------------------------------------------------------------
399 dnl The target configuration section is responsible for setting up all
400 dnl the paths for includes, and tools required to build AROS to some
401 dnl particular target.
403 aros_config_cflags="-Wall -Werror-implicit-function-declaration"
404 aros_config_aflags="-Wall -x assembler-with-cpp -c"
405 aros_config_ldflags=""
407 aros_shared_default=yes
409 aros_shared_cflags="-fPIC"
410 aros_shared_aflags=""
411 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
412 aros_kernel_ldflags="-Wl,-rpath,./lib"
414 aros_target_ar_flags="cr"
415 aros_target_nm_flags="-C -ul"
416 aros_target_strip_flags="--strip-unneeded -R.comment"
420 aros_target_genmap="-Wl,-Map -Xlinker"
422 # Native flavour stuff
424 aros_serial_debug="0"
426 # Palm native flavour stuff
427 aros_palm_debug_hack="0"
430 aros_nesting_supervisor="0"
432 # Collect-aros stuff: "-ius" to ignore undefined symbols
433 ignore_undefined_symbols=""
435 #-----------------------------------------------------------------------------
438 # GCC 4.1+ has a stack protection feature that requires OS support. Ubuntu has
439 # it switched on by default, and we use the host compiler, so it compiles AROS
440 # code with this enabled resulting in link failures as we don't have support
443 # We use two methods to disable it. For the host compiler (used to compile
444 # some hosted modules), we test to see if the compiler supports stack
445 # protection, and if it does we disable it in AROS_CONFIG_CFLAGS. This should
446 # work on all platforms.
448 # For the "cross" compiler we clear the "ssp_default" spec in config/specs.in
449 # (this is done unconditionally, as it should have no effect on compilers
450 # without the stack protection feature). This may be specific to the way that
451 # Ubuntu enables the feature, so may not work everywhere. My specs-fu isn't
452 # strong enough to disable it in a generic way though, so we'll live with it
453 # until another vendor ships GCC with it enabled in a different way, and deal
457 AC_MSG_CHECKING([whether ${CC} accepts -fno-stack-protector])
458 save_cflags="$CFLAGS"
459 CFLAGS="$CFLAGS -fno-stack-protector"
460 AC_TRY_COMPILE(,, use_no_stack_protector="yes", use_no_stack_protector="no")
461 AC_MSG_RESULT($use_no_stack_protector)
462 if test "x-$use_no_stack_protector" = "x-yes" ; then
463 aros_host_cflags="$aros_host_cflags -fno-stack-protector"
465 CFLAGS="$save_cflags"
468 #-----------------------------------------------------------------------------
470 # Disable pointer-signedness warnings if the compiler recognises the option
471 # (this only works for the host compiler at the moment)
473 AC_MSG_CHECKING([whether ${CC} accepts -Wno-pointer-sign])
474 save_cflags="$CFLAGS"
475 CFLAGS="$CFLAGS -Wno-pointer-sign"
476 AC_TRY_COMPILE(,, use_no_sign_warning="yes", use_no_sign_warning="no")
477 AC_MSG_RESULT($use_no_sign_warning)
478 if test "x-$use_no_sign_warning" = "x-yes" ; then
479 aros_host_cflags="$aros_host_cflags -Wno-pointer-sign"
481 CFLAGS="$save_cflags"
483 #-----------------------------------------------------------------------------
485 AC_MSG_CHECKING([for type of build])
486 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")
488 if test "$build_type" = "nightly"; then
489 build_type_string="NIGHTLY"
490 elif test "$build_type" = "snapshot"; then
491 build_type_string="SNAPSHOT"
492 elif test "$build_type" = "milestone"; then
493 build_type_string="MILESTONE"
494 elif test "$build_type" = "release"; then
495 build_type_string="RELEASE"
497 build_type_string="PERSONAL"
498 build_type="personal"
501 aros_config_cflags="$aros_config_cflags -DAROS_BUILD_TYPE=AROS_BUILD_TYPE_$build_type_string"
503 AC_MSG_RESULT($build_type)
505 #-----------------------------------------------------------------------------
506 all_debug_types="messages stack mungwall modules symbols"
508 AC_MSG_CHECKING([which debug types to enable])
509 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)]),
510 debug="$enableval",debug="")
512 if test "$debug" = "" -o "$debug" = "no"; then
514 elif test "$debug" = "yes"; then
518 if test "$debug" = "all" ; then
519 debug=$all_debug_types
520 for d in $all_debug_types; do
521 export aros_${d}_debug="1"
524 for d in $all_debug_types; do
525 export aros_${d}_debug="0"
529 if test "$debug" != "none"; then
530 debug=`echo $debug | sed s/,/\ /g`
533 for d2 in $all_debug_types; do
534 if test "$d2" = "$d"; then
539 if test "$found" = "0"; then
540 AC_MSG_ERROR([unrecognized debug type "$d". Available types are: all none $all_debug_types])
542 export aros_${d}_debug="1"
546 AC_MSG_RESULT($debug)
548 if test "$aros_messages_debug" = "1"; then
549 aros_messages_debug="-DADEBUG=1 -DMDEBUG=1"
551 aros_messages_debug=""
553 if test "$aros_symbols_debug" = "1"; then
554 aros_symbols_debug="-g"
556 aros_symbols_debug=""
559 # These are the flags to pass when compiling debugged programs
560 aros_debug_cflags="$aros_symbols_debug $aros_messages_debug"
562 aros_debug_ldflags="$aros_symbols_debug"
564 #-----------------------------------------------------------------------------
565 # Checking for distcc and ccache.
567 # Always apply the transforms in this particular order. Basically you should
568 # always run 'ccache distcc compiler' in that order for the best performance.
570 AC_MSG_CHECKING([whether to enable distcc])
571 AC_ARG_ENABLE(distcc,AC_HELP_STRING([--enable-distcc],[Use distcc as a front end to the compiler (default=no).]),distcc="$enableval",distcc="no")
572 if test "$distcc" != "" -a "$distcc" != "no"; then
573 # AC_CHECK_PROG will print out the result in this case
574 AC_PATH_PROG(DISTCC,[distcc],distcc,)
579 AC_MSG_CHECKING([whether to enable ccache])
580 AC_ARG_ENABLE(ccache,AC_HELP_STRING([--enable-ccache],[Use ccache as a front end to the compiler (default=no).]),ccache="$enableval",ccache="no")
581 if test "$ccache" != "" -a "$ccache" != "no"; then
582 # AC_CHECK_PROG will print out the result in this case
583 AC_CHECK_PROG(CCACHE,[ccache],ccache,)
588 #-----------------------------------------------------------------------------
589 AC_MSG_CHECKING([what optimization flags to use])
590 AC_ARG_WITH(optimization,AC_HELP_STRING([--with-optimization=FLAGS],[Use optimization flags FLAGS (default=-O2).]),optimization="$withval",optimization="unknown")
591 if test "$optimization" = "unknown"; then
592 dnl default is -O2 for normal builds, -O0 for debug builds
593 if test "$debug" != "none"; then
599 aros_config_cflags="$aros_config_cflags $optimization"
600 AC_MSG_RESULT($optimization)
602 #-----------------------------------------------------------------------------
603 AC_MSG_CHECKING([what target variant to enable])
604 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")
605 if test "$target_variant" = "none"; then
606 aros_target_variant=""
607 aros_target_suffix=""
609 aros_target_variant="$target_variant"
610 aros_target_suffix="-$target_variant"
612 AC_MSG_RESULT($enableval)
614 target_bootloader="none"
616 #-----------------------------------------------------------------------------
617 # This is the target configuration switch.
620 aros_target_arch="linux"
621 case "$target_cpu" in
623 aros_target_cpu="m68k"
624 aros_object_format="m68kelf"
625 aros_flavour="emulcompat"
626 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__linux__"
627 aros_shared_ldflags="-Wl,-T,\$(TOP)/config/linux/m68k/script.so"
628 aros_kernel_ldflags="-Wl,-rpath,./lib,-T,\$(TOP)/config/linux/m68k/script.normal"
629 gcc_target_cpu="mc68000"
632 aros_target_cpu="i386"
633 aros_object_format="elf_i386"
634 aros_flavour="emulation"
635 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__linux__"
636 aros_default_wbdepth=8
637 gcc_target_cpu="i386"
640 aros_target_cpu="x86_64"
641 aros_object_format="elf_x86_64"
642 aros_flavour="emulation"
643 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64 -D__linux__"
644 aros_config_cflags="$aros_config_cflags -mno-red-zone"
645 aros_default_wbdepth=8
646 gcc_target_cpu="x86_64"
649 aros_target_cpu="ppc"
650 aros_object_format="elf32ppc"
651 aros_flavour="emulation"
652 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
653 aros_default_wbdepth=8
657 # Same as powerpc, but I need this for the nightly build to work again.
658 # Actually, the nightly should be made working with powerpc target.
659 # That just was too much work for the moment, another week or two.
661 aros_target_cpu="ppc"
662 aros_object_format="elf32ppc"
663 aros_flavour="emulation"
664 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
665 aros_default_wbdepth=8
669 AC_MSG_ERROR("Unknown CPU for Linux -- $target_cpu")
675 aros_target_arch="pc"
676 aros_shared_default="no"
677 target_bootloader="grub"
678 case "$target_cpu" in
680 aros_target_cpu="i386"
682 dnl If somebody hasn't already set the target object
683 dnl format, then use this value. Mostly to support
684 dnl FreeBSD cross-compilation.
685 dnl TODO: Remove when we always use our compiler.
687 if test "$aros_object_format" = "" ; then
688 aros_object_format="elf_i386"
690 aros_flavour="standalone"
691 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
692 aros_kernel_ldflags=""
693 aros_default_wbwidth=640
694 aros_default_wbheight=480
695 gcc_target_cpu="i386"
698 aros_target_cpu="x86_64"
700 if test "$aros_object_format" = "" ; then
701 aros_object_format="elf_x86_64"
703 aros_flavour="standalone"
704 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64"
705 aros_config_cflags="$aros_config_cflags -fno-asynchronous-unwind-tables -mno-red-zone"
706 aros_kernel_ldflags=""
707 aros_default_wbwidth=640
708 aros_default_wbheight=480
709 gcc_target_cpu="x86_64"
712 AC_MSG_ERROR("Unknown native CPU -- $target_cpu")
718 aros_target_arch="prep"
719 aros_shared_default="no"
720 aros_target_cpu="ppc"
721 aros_object_format="elf32ppc"
722 aros_flavour="ppcnative"
723 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
724 aros_kernel_ldflags=""
725 aros_default_wbwidth=640
726 aros_default_wbheight=480
731 aros_target_arch="freebsd"
732 aros_target_cpu="i386"
733 aros_flavour="emulation"
734 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
735 gcc_target_cpu="i386"
737 aros_target_strip_flags="-x"
741 aros_target_arch="darwin"
742 aros_flavour="emulation"
743 case "$target_cpu" in
745 aros_target_cpu="i386"
746 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
747 gcc_target_cpu="i386"
748 aros_object_format="elf_i386"
749 aros_target_strip_flags="-x"
752 AC_MSG_ERROR("Unsupported target CPU for darwin hosted flavour -- $target_cpu")
757 aros_target_arch="netbsd"
758 case "$target_cpu" in
760 aros_target_cpu="m68k"
761 aros_object_format="m68kelf"
762 aros_flavour="emulcompat"
763 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__NetBSD__"
764 gcc_target_cpu="mc68000"
767 aros_target_cpu="i386"
768 aros_object_format="elf_i386"
769 aros_flavour="emulation"
770 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__NetBSD__"
771 aros_default_wbdepth=8
772 gcc_target_cpu="i386"
775 AC_MSG_ERROR("Unknown CPU for NetBSD -- $target_cpu")
778 aros_target_genmap="-Wl,-M -Xlinker >"
779 aros_flavour="emulation"
780 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
784 aros_target_arch="openbsd"
785 case "$target_cpu" in
787 aros_target_cpu="i386"
788 aros_object_format="elf_i386"
789 aros_flavour="emulation"
790 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__OpenBSD__"
791 gcc_target_cpu="i386"
794 AC_MSG_ERROR("Unknown CPU for OpenBSD -- $target_cpu")
797 aros_target_genmap="-Wl,-M -Xlinker >"
798 aros_target_nm_flags="-u"
799 aros_flavour="emulation"
803 aros_target_arch="solaris"
804 case "$target_cpu" in
806 aros_target_cpu="i386"
807 aros_object_format="elf_i386"
808 aros_flavour="emulation"
809 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__Solaris__"
810 aros_default_wbdepth=8
811 gcc_target_cpu="i386"
814 aros_target_cpu="sparc"
815 aros_object_format="elf_sparc"
816 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dsparc -D__Solaris__"
817 gcc_target_cpu="sparc"
820 AC_MSG_ERROR("Unknown CPU for Solaris -- $target_cpu")
823 aros_config_cflags="$aros_config_cflags -D$aros_target_cpu"
824 aros_flavour="emulation"
828 aros_target_arch="morphos"
829 aros_shared_default="no"
830 aros_target_cpu="ppc"
831 aros_object_format="elf_ppc"
832 aros_flavour="nativecompat"
833 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
838 aros_target_arch="sam440"
839 aros_shared_default="no"
840 aros_target_cpu="ppc"
841 aros_object_format="elf32ppc"
842 aros_flavour="ppcnative"
843 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
844 aros_kernel_ldflags=""
845 aros_default_wbwidth=640
846 aros_default_wbheight=480
847 aros_config_cflags="$aros_config_cflags -mcpu=440fp -mno-toc -fno-asynchronous-unwind-tables"
848 gcc_target_cpu="powerpc"
852 aros_target_arch="chrp"
853 aros_shared_default="no"
854 aros_target_cpu="ppc"
855 aros_object_format="elf32ppc"
856 aros_flavour="ppcnative"
857 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
858 aros_kernel_ldflags=""
859 aros_default_wbwidth=640
860 aros_default_wbheight=480
861 aros_config_cflags="$aros_config_cflags -mno-toc -fno-asynchronous-unwind-tables"
862 gcc_target_cpu="powerpc"
863 case "$aros_target_variant" in
865 aros_config_cflags="$aros_config_cflags -mcpu=603e"
871 aros_target_arch="amiga"
872 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D_AMIGA -DAMIGA"
873 aros_shared_default="no"
875 aros_config_cflags="$aros_config_cflags -fomit-frame-pointer -fbuiltin -ffreestanding"
877 case "$target_cpu" in
879 aros_target_cpu="m68k"
880 aros_object_format="m68kelf"
881 aros_flavour="nativecompat"
882 gcc_target_cpu="mc68000"
886 aros_flavour="native"
890 AC_MSG_ERROR("Unknown CPU for Amiga $target_cpu")
896 aros_target_arch="cygwin"
897 aros_shared_default="no"
898 case "$target_cpu" in
900 aros_target_cpu="i386"
901 aros_object_format="elf_i386"
902 aros_flavour="emulation"
903 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__CYGWIN32__"
904 aros_shared_cflags=""
905 aros_default_wbdepth=8
906 gcc_target_cpu="i386"
907 aros_target_cc="i386-aros-gcc"
908 aros_target_ld="i386-aros-ld"
909 aros_target_as="i386-aros-as"
910 aros_target_ar="i386-aros-ar"
911 aros_target_ranlib="i386-aros-ranlib"
912 aros_target_nm="i386-aros-nm"
913 aros_target_strip="i386-aros-strip"
914 aros_target_objcopy="i386-aros-objcopy"
915 aros_target_objdump="i386-aros-objdump"
918 AC_MSG_ERROR("Unknown CPU for CygWin -- $target_cpu")
924 aros_target_arch="mingw32"
925 aros_shared_default="no"
926 case "$target_cpu" in
928 aros_target_cpu="i386"
929 aros_object_format="elf_i386"
930 aros_flavour="emulation"
931 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
932 aros_shared_cflags=""
933 aros_default_wbdepth=8
934 gcc_target_cpu="i386"
935 aros_target_cc="i386-aros-gcc"
936 aros_target_ld="i386-aros-ld"
937 aros_target_as="i386-aros-as"
938 aros_target_ar="i386-aros-ar"
939 aros_target_ranlib="i386-aros-ranlib"
940 aros_target_nm="i386-aros-nm"
941 aros_target_strip="i386-aros-strip"
942 aros_target_objcopy="i386-aros-objcopy"
943 aros_target_objdump="i386-aros-objdump"
946 AC_MSG_ERROR("Unknown CPU for Mingw32 -- $target_cpu")
949 if test $host_os = "cygwin"; then
950 aros_kernel_cflags="-mno-cygwin"
954 aros_target_arch="pp"
955 aros_shared_default="no"
956 case "$target_cpu" in
958 aros_target_cpu="m68k"
959 aros_object_format="m68kelf"
960 aros_flavour="palmnative"
961 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
962 aros_kernel_ldflags=""
963 aros_default_wbwidth=160
964 aros_default_wbheight=160
965 aros_default_wbdepth=1
966 aros_target_ar_flags="cru"
967 aros_compiler_libs="-lgcc1"
968 aros_shared_default=no
969 aros_shared_cflags="-fpic"
970 aros_shared_aflags=""
971 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
972 aros_kernel_ldflags="-Wl,-rpath,./lib"
973 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000 -Wa,-mc68000"
975 aros_debug_ldflags="$aros_symbols_debug"
976 aros_mungwall_debug="0"
977 aros_modules_debug="0"
978 gcc_target_cpu="mc68000"
979 ignore_undefined_symbols="-ius"
982 AC_MSG_ERROR("Unknown CPU for PalmPilot -- $target_cpu")
988 aros_target_arch="mac"
989 aros_shared_default="no"
990 case "$target_cpu" in
992 aros_target_cpu="m68k"
993 aros_object_format="m68kelf"
994 aros_flavour="mac68knative"
995 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
996 aros_default_wbwidth=512
997 aros_default_wbheight=384
998 aros_default_wbdepth=8
999 aros_target_ar_flags="cru"
1000 aros_compiler_libs="-lgcc1"
1001 aros_shared_default=no
1002 aros_shared_cflags="-fpic"
1003 aros_shared_aflags=""
1004 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1005 aros_kernel_ldflags="-Wl,-rpath,./lib"
1006 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000"
1007 aros_debug_aflags=""
1008 aros_debug_ldflags="$aros_symbols_debug"
1009 aros_mungwall_debug="0"
1010 aros_modules_debug="0"
1011 gcc_target_cpu="mc68000"
1012 ignore_undefined_symbols="-ius"
1015 AC_MSG_ERROR("Unknown CPU for Mac68k -- $target_cpu")
1021 AC_MSG_ERROR([Unsupported target architecture $target])
1025 AC_MSG_CHECKING([Where to download sourcecode for external ports])
1026 AC_ARG_WITH(portssources,AC_HELP_STRING([--with-portssources=DIR],[Where to download sourcecode for external ports]),with_portssrcdir=$withval,with_portssrcdir="default")
1027 if test "$with_portssrcdir" = "default"; then
1028 AROS_PORTSSRCDIR="$AROS_BUILDDIR/bin/Sources"
1030 AROS_PORTSSRCDIR="$with_portssrcdir"
1032 AC_MSG_RESULT($AROS_PORTSSRCDIR)
1034 AC_MSG_CHECKING([which bootloader to use])
1035 AC_ARG_WITH(bootloader,AC_HELP_STRING([--with-bootloader=NAME],[Use a specific bootloader]),target_bootloader=$withval,target_bootloader=$target_bootloader)
1036 if test "$target_bootloader" = "none"; then
1037 aros_target_bootloader=""
1039 aros_target_bootloader="$target_bootloader"
1041 AC_MSG_RESULT($target_bootloader)
1043 # Check LZO when compiling the grub2 bootloader on i386/x86_64.
1044 aros_liblzo_check="no"
1045 case "$aros_target_bootloader" in
1047 case "$target_cpu" in
1049 aros_liblzo_check="yes"
1052 aros_liblzo_check="yes"
1063 if test "$aros_liblzo_check" = "yes"; then
1064 # There are three possibilities. LZO version 2 installed with the name
1065 # liblzo2, with the name liblzo, and LZO version 1.
1066 AC_CHECK_LIB(lzo2, __lzo_init_v2, [LIBLZO="-llzo2"],
1067 AC_CHECK_LIB(lzo, __lzo_init_v2, [LIBLZO="-llzo"],
1068 AC_CHECK_LIB(lzo, __lzo_init2, [LIBLZO="-llzo"],
1069 AC_MSG_ERROR([LZO library version 1.02 or later is required]))))
1072 LIBS="$LIBS $LIBLZO"
1073 AC_CHECK_FUNC(lzo1x_999_compress, ,
1074 [AC_MSG_ERROR([LZO1X-999 must be enabled])])
1076 # LZO version 2 uses lzo/lzo1x.h, while LZO version 1 uses lzo1x.h.
1077 AC_CHECK_HEADERS(lzo/lzo1x.h lzo1x.h)
1080 AC_MSG_CHECKING([which GUI Theme to use])
1081 AC_ARG_WITH(theme,AC_HELP_STRING([--with-theme=NAME],[Use a specific GUI Theme]),target_guitheme=$withval,target_guitheme="default")
1082 if test "$target_guitheme" = "default"; then
1083 aros_target_guitheme="Ice"
1085 aros_target_guitheme="$target_guitheme"
1087 AC_MSG_RESULT($aros_target_guitheme)
1089 # Find out if we are cross-compiling (ie. if we can't use the host compiler
1092 if test "$aros_host_cpu" != "$aros_target_cpu" ; then
1095 if test "$aros_host_arch" == "darwin" ; then
1099 # Set prefix for target compiler etc. if we're cross-compiling
1100 # (should possibly be earlier but needs to be after AC_PROG_CC)
1101 if test "$cross_compiling" = "yes" ; then
1102 target_tool_prefix=${target_cpu}-elf-
1103 CC=${target_tool_prefix}gcc
1106 # Find all the tools we need to compile. This could be cross-compiling
1107 # though! If that is the case we use the GNU form of the target and
1108 # simply add this to the front of the binary name. This is rather simple,
1109 # but it should work under most circumstances.
1111 # The default tools are to use the same as the host, but only if the
1112 # host and target CPU are the same. With GCC this is normally enough.
1116 aros_shared_ld="$aros_host_ld"
1118 aros_target_mkdep="$aros_host_mkdep"
1119 aros_target_incl_def="$aros_host_incl"
1121 AC_PATH_PROG(aros_kernel_cc,$CC)
1123 # The default tools executables to be linked to.
1124 if test "$aros_target_cc" != ""; then
1125 AC_PATH_PROG(aros_target_cc,$aros_target_cc)
1126 AROS_REQUIRED(gcc,$aros_target_cc)
1128 if test "$aros_target_ld" != ""; then
1129 AC_PATH_PROG(aros_target_ld,$aros_target_ld)
1130 AROS_REQUIRED(ld,$aros_target_ld)
1132 AROS_TOOL_TARGET(aros_target_as_ln,as,$aros_target_as)
1133 AROS_REQUIRED(as,$aros_target_as_ln)
1134 AROS_TOOL_TARGET(aros_kernel_ld,ld,$aros_kernel_ld)
1135 AROS_REQUIRED(ld,$aros_kernel_ld)
1136 AROS_TOOL_TARGET(aros_target_ar_ln,ar,$aros_target_ar)
1137 AROS_REQUIRED(ar,$aros_target_ar_ln)
1138 AROS_TOOL_TARGET(aros_target_nm_ln,nm,$aros_target_nm)
1139 AROS_REQUIRED(nm,$aros_target_nm_ln)
1140 AROS_TOOL_TARGET(aros_target_objcopy_ln,objcopy,$aros_target_objcopy)
1141 AROS_REQUIRED(objcopy,$aros_target_objcopy_ln)
1142 AROS_TOOL_TARGET(aros_target_objdump_ln,objdump,$aros_target_objdump)
1143 AROS_REQUIRED(objdump,$aros_target_objdump_ln)
1144 AROS_TOOL_TARGET(aros_target_ranlib_ln,ranlib,$aros_target_ranlib)
1145 AROS_REQUIRED(ranlib,$aros_target_ranlib_ln)
1146 AROS_TOOL_TARGET(aros_target_strip_ln,strip,$aros_target_strip)
1147 AROS_REQUIRED(strip,$aros_target_strip_ln)
1149 aros_hostcfg_dir="bin/${aros_host_arch}-${aros_host_cpu}/gen/config"
1150 aros_targetcfg_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/config"
1151 aros_inc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/AROS/Development/include/aros"
1152 aros_gendir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen"
1153 aros_geninc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/include/aros"
1154 aros_tools_dir="bin/${aros_host_arch}-${aros_host_cpu}/tools"
1155 aros_scripts_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/scripts"
1157 # aros_cc_pre is a variable that is added to the front of the compiler name
1158 # in the generated aros-gcc shell script. We need this to enable the cache
1159 # to work across cleaned builds. Also, support DISTCC using the correct
1160 # environment variable.
1163 if test "x${DISTCC}" != "x" ; then
1164 if test "x${CCACHE}" != "x" ; then
1165 aros_cc_pre="env CCACHE_PREFIX=${DISTCC} ${CCACHE} "
1167 aros_cc_pre="${DISTCC} "
1170 if test "x${CCACHE}" != "x" ; then
1171 aros_cc_pre="${CCACHE} "
1175 prefix="${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros"
1177 AC_SUBST(aros_target_nostdinc_cflags,-nostdinc)
1178 AC_SUBST(aros_target_nostartup_ldflags,-nostartfiles)
1179 AC_SUBST(aros_target_nix_ldflags,-nix)
1180 AC_SUBST(aros_target_detach_ldflags,-detach)
1181 AC_SUBST(aros_target_nostdlib_ldflags,-nostdlib)
1184 if test "$aros_target_cc" = ""; then
1185 orig_target_cc=$aros_kernel_cc
1187 orig_target_cc=$aros_target_cc
1189 if test "$aros_target_ld" = ""; then
1190 orig_target_ld=$aros_kernel_ld
1192 orig_target_ld=$aros_target_ld
1194 if test "$GCC" = "yes"; then
1195 aros_target_cc_path=`$orig_target_cc -print-search-dirs | grep "programs: =" | cut -c 12-`
1197 aros_target_cc="${prefix}-gcc"
1198 aros_target_as="${prefix}-as"
1199 aros_target_ld="${prefix}-ld"
1200 aros_target_ar="${prefix}-ar $aros_target_ar_flags"
1201 aros_target_objcopy=${prefix}-objcopy
1202 aros_target_objdump=${prefix}-objdump
1203 aros_target_ranlib="${prefix}-ranlib $aros_target_ranlib_flags"
1204 aros_target_nm="${prefix}-nm $aros_target_nm_flags"
1205 aros_kernel_nm="${prefix}-nm"
1206 aros_target_strip=${prefix}-strip
1208 # Find the system include path. We can suggest that an alternative is
1209 # used if we don't get it correct. The default is to use /usr/include.
1210 # Which is set in the aros_target_incl_def variable.
1212 AC_ARG_ENABLE(includes,
1213 AC_HELP_STRING([--enable-includes=dir],[Alternative system include directory]),
1214 [aros_target_incl=$enable_includes], [aros_target_incl=$aros_target_incl_def])
1216 dnl find out about the target cc's include path
1217 AC_MSG_CHECKING([for the target compiler's include path])
1218 if test "$aros_target_cc_includes" = "" ; then
1219 #try to guess where the directory is
1220 aros_target_cc_includes=`dirname \`${aros_kernel_cc} -print-libgcc-file-name\``/include
1221 if ! test -d $aros_target_cc_includes; then
1222 #the directory doesn't exist, we need to do some more work
1223 aros_target_cc_includes=${PWD}/${aros_gendir}/cc_include
1225 #these are the headers we're looling for
1226 headers="limits.h mmintrin.h stdbool.h syslimits.h float.h \
1227 stddef.h xmmintrin.h iso646.h stdarg.h unwind.h \
1231 for h in $headers; do
1232 #which other headers each of the above headers needs?
1233 deps=$(echo "#include <$h>" | \
1234 $aros_host_cc -E -M - 2>/dev/null | \
1235 sed 's/^.*://; s/\\$/ /g; s/[[ \t]]\+/ /g')
1237 #copy all the needed headers to a directory beneath gendir
1240 dir=${aros_target_cc_includes}$(echo $(dirname $d) | \
1241 sed -n "s,^.*/include\(/.*\),\1,p")
1242 ! test -d $dir && mkdir -p $dir
1243 ! test -f $dir/$h && { cp $d $dir; chmod u+w $dir/$h; }
1248 AC_MSG_RESULT($aros_target_cc_includes)
1251 # For GCC < 4.0 -I- is used for giving the search path for '#include "..."'
1252 # On GCC >= 4.0 -iquote should be used
1256 save_cflags="$CFLAGS"
1257 CC="$aros_kernel_cc"
1259 AC_MSG_CHECKING([whether ${CC} accepts -iquote])
1260 AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
1261 AC_MSG_RESULT($has_iquote)
1262 if test "x-$has_iquote" = "x-yes" ; then
1263 aros_cflags_iquote=-iquote
1264 aros_cflags_iquote_end=
1266 aros_cflags_iquote=-I
1267 aros_cflags_iquote_end=-I-
1270 CFLAGS="$save_cflags"
1272 AC_SUBST(aros_cflags_iquote)
1273 AC_SUBST(aros_cflags_iquote_end)
1276 dnl Check if user specified --with-resolution=XRESxYRESxDEPTH
1277 AC_MSG_CHECKING([for default resolution of WBScreen])
1278 AC_ARG_WITH(resolution,AC_HELP_STRING([--with-resolution=XRESxYRESxDEPTH],[Default resolution of the initial WorkbenchScreen]),resolution=$withval,resolution=none)
1279 # We require an argument, so map --with/--without ("yes"/"no") to "none" specified
1280 if test "$resolution" = "yes" ; then
1283 if test "$resolution" = "no" ; then
1286 if test "$resolution" != "none" ; then
1287 aros_default_wbwidth=`echo $resolution | cut -d'x' -f1`
1288 aros_default_wbheight=`echo $resolution | cut -d'x' -f2`
1289 aros_default_wbdepth=`echo $resolution | cut -d'x' -f3`
1291 AC_MSG_RESULT($aros_default_wbwidth x $aros_default_wbheight x $aros_default_wbdepth)
1292 aros_cv_default_wbwidth=$aros_default_wbwidth
1293 aros_cv_default_wbheight=$aros_default_wbheight
1294 aros_cv_default_wbdepth=$aros_default_wbdepth
1296 dnl See if the user wants the BOCHS hack for native flavour
1297 AC_MSG_CHECKING([if bochs hack is enabled])
1298 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")
1299 if test "$bochs_hack" = "yes" ; then
1302 AC_MSG_RESULT($bochs_hack)
1304 dnl See if the user wants the serial debug output for native flavour
1305 AC_MSG_CHECKING([if serial debug is enabled])
1306 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)
1307 if test "$aros_serial_debug" = 0 ; then
1308 serial_debug_forced=""
1309 if test "$serial_debug" = "yes" ; then
1312 if test "$serial_debug" = "no" ; then
1316 serial_debug_forced="(forced)"
1317 serial_debug=$aros_serial_debug
1319 if test "$serial_debug" != "none" ; then
1320 aros_serial_debug=$serial_debug
1321 AC_MSG_RESULT($serial_debug_forced on port $serial_debug)
1326 dnl See if the user wants the palm debug output hack for palm native flavour
1327 AC_MSG_CHECKING([if palm debug hack is enabled])
1328 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")
1329 if test "$palm_debug_hack" = "yes" ; then
1330 aros_palm_debug_hack="1"
1332 AC_MSG_RESULT($palm_debug_hack)
1335 dnl See if the user wants nesting supervisor activated for unix flavour
1336 AC_MSG_CHECKING([if nesting supervisor support is enabled])
1337 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")
1338 if test "$nesting_supervisor" = "yes" ; then
1339 aros_nesting_supervisor="1"
1341 AC_MSG_RESULT($nesting_supervisor)
1344 dnl things specifically required for hosted flavours
1345 if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
1347 if test "x-$aros_host_arch" != "x-darwin" ; then
1348 dnl some kind of dynamic library access system is required for hostlib.resource
1349 AC_CHECK_FUNC(dlopen, have_dl="yes", have_dl="no")
1350 if test "x-$have_dl" = "x-no" ; then
1351 AC_CHECK_LIB(dl, dlopen, [have_dl="yes"
1352 aros_host_ldflags="$aros_host_ldflags -ldl"],
1355 if test "x-$have_dl" = "x-no" ; then
1356 AC_MSG_ERROR([dlopen() dynamic linker functions not available])
1362 AC_ARG_ENABLE(x11_hidd, AC_HELP_STRING([--enable-x11-hidd],
1363 [build X11 hidd for hosted (default=auto)]),
1364 x11_hidd="$enableval",
1366 case "x-$x11_hidd" in
1367 x-yes|x-no|x-auto) ;;
1368 *) x11_hidd="auto" ;;
1372 if test "x-$x11_hidd" != "x-no" ; then
1378 for path in $x_libraries
1380 x_cflags="$x_cflags -L$path"
1383 for path in $x_includes
1385 x_cflags="$x_cflags -I$path"
1388 if test "x-$no_x" = "x-yes" ; then
1391 if test "x-$x11_hidd" != "x-auto" ; then
1392 dnl and they explicitly asked for it, bail out
1393 AC_MSG_ERROR([X11 libs/headers not found, cannot build X11 hidd as requested])
1397 dnl found it, setup the metatarget
1398 x11_hidd_target=kernel-x11gfx
1401 dnl setup shared memory extensions
1402 AC_ARG_ENABLE(x11_shm, AC_HELP_STRING([--enable-x11-shm],
1403 [use X11 shared memory (default=auto)]),
1404 x11_hidd_shm="$enableval",
1405 x11_hidd_shm="auto")
1406 case "x-$x11_hidd_shm" in
1407 x-yes|x-no|x-auto) ;;
1408 *) x11_hidd_shm="auto" ;;
1414 if test "x-$x11_hidd_shm" != "x-no" ; then
1416 dnl system shm headers
1417 AC_CHECK_HEADERS(sys/ipc.h)
1418 AC_CHECK_HEADERS(sys/shm.h)
1421 if test "x-$ac_cv_header_sys_ipc_h" = "x-yes" -a "x-$ac_cv_header_sys_shm_h" = "x-yes" ; then
1423 dnl make sure X libs have shm functions
1424 save_cflags="$CFLAGS"
1425 CFLAGS="$CFLAGS $x_cflags"
1426 AC_CHECK_LIB(Xext, XShmQueryExtension, have_xshm=yes)
1427 CFLAGS="$save_cflags"
1431 dnl detection done, prepare output
1432 if test "x-$have_xshm" = "x-yes" ; then
1435 elif test "x-$x11_hidd_shm" = "x-yes" ; then
1436 dnl they explicitly asked for it, but we can't do it
1437 AC_MSG_ERROR([X11 has no support for shared memory, cannot enable it as requested])
1439 dnl otherwise just disable it
1444 dnl setup vidmode (fullscreen) extensions
1445 AC_ARG_ENABLE(x11_vidmode, AC_HELP_STRING([--enable-x11-vidmode],
1446 [use X11 vidmode extension (default=auto)]),
1447 x11_hidd_vidmode="$enableval",
1448 x11_hidd_vidmode="auto")
1449 case "x-$x11_hidd_vidmode" in
1450 x-yes|x-no|x-auto) ;;
1451 *) x11_hidd_vidmode="auto" ;;
1457 if test "x-$x11_hidd_vidmode" != "x-no" ; then
1459 dnl make sure X libs have vidmode functions
1460 save_cflags="$CFLAGS"
1461 CFLAGS="$CFLAGS $x_cflags"
1462 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, have_vidmode=yes)
1463 CFLAGS="$save_cflags"
1466 dnl detection done, prepare output
1467 if test "x-$have_vidmode" = "x-yes" ; then
1468 dnl we can do vidmode
1469 DO_VIDMODE_SUPPORT="1"
1470 elif test "x-$x11_hidd_vidmode" = "x-yes" ; then
1471 dnl they explicitly asked for it, but we can't do it
1472 AC_MSG_ERROR([X11 vidmode extension not available, cannot enable it as requested])
1474 dnl otherwise just disable it
1475 DO_VIDMODE_SUPPORT="0"
1479 aros_host_x11_includes=$x_includes
1480 aros_host_x11_libdirs=$x_libraries
1485 AC_ARG_ENABLE(sdl_hidd, AC_HELP_STRING([--enable-sdl-hidd],
1486 [build SDL hidd for hosted (default=auto)]),
1487 sdl_hidd="$enableval",
1489 case "x-$sdl_hidd" in
1490 x-yes|x-no|x-auto) ;;
1491 *) sdl_hidd="auto" ;;
1495 if test "x-$sdl_hidd" != "x-no" ; then
1498 AM_PATH_SDL([1.2.10], have_sdl="yes", have_sdl="no")
1500 if test "x-$have_sdl" != "x-yes" ; then
1503 if test "x-$sdl_hidd" != "x-auto" ; then
1504 dnl and they explicitly asked for it, bail out
1505 AC_MSG_ERROR([SDL libs/headers not found, cannot build SDL hidd as requested])
1509 dnl found it, setup the metatarget
1510 sdl_hidd_target=kernel-hidd-sdl
1511 aros_host_sdl_cflags=SDL_CFLAGS
1512 aros_host_sdl_libs=SDL_LIBS
1519 dnl See if the user wants dbus.library
1520 AC_MSG_CHECKING([if building of dbus.library is enabled])
1521 AC_ARG_ENABLE(dbus,AC_HELP_STRING([--enable-dbus],[Enable DBUS support via dbus.library (default=no)]),dbus="yes",dbus="no")
1522 if test "$dbus" = "yes" ; then
1524 DBUS_CFLAGS=`pkg-config --cflags dbus-1`
1525 DBUS_LIBFLAGS=`pkg-config --libs dbus-1`
1526 KERNEL_DBUS_KOBJ=kernel-dbus-kobj
1527 KERNEL_DBUS_INCLUDES=kernel-dbus-includes
1531 AC_MSG_RESULT($dbus)
1534 dnl --------------------------------------------------------------------
1535 dnl Configuration Output Section
1536 dnl --------------------------------------------------------------------
1541 AC_SUBST(aros_flavour)
1542 AC_SUBST(aros_flavour_uc)
1543 AC_SUBST(AROS_BUILDDIR)
1544 AC_SUBST(AROS_SRCDIR)
1545 AC_SUBST(AROS_PORTSSRCDIR)
1548 AC_SUBST(aros_cc_pre)
1549 AC_SUBST(aros_host_strip)
1550 AC_SUBST(aros_host_arch)
1551 AC_SUBST(aros_host_cpu)
1552 AC_SUBST(aros_host_cc)
1553 AC_SUBST(aros_host_ar)
1554 AC_SUBST(aros_host_ranlib)
1555 AC_SUBST(aros_host_ld)
1556 AC_SUBST(aros_host_make)
1557 AC_SUBST(aros_host_cflags)
1558 AC_SUBST(aros_host_ldflags)
1559 AC_SUBST(aros_host_debug)
1560 AC_SUBST(aros_host_mkdep)
1561 AC_SUBST(aros_host_mkargs)
1562 AC_SUBST(aros_host_exe_suffix)
1563 AC_SUBST(aros_host_lib_suffix)
1564 AC_SUBST(aros_tools_dir)
1565 AC_SUBST(aros_host_aclocal)
1566 AC_SUBST(aros_host_autoconf)
1567 AC_SUBST(aros_host_autoheader)
1568 AC_SUBST(aros_host_automake)
1571 AC_SUBST(aros_target_guitheme)
1572 AC_SUBST(aros_target_bootloader)
1573 AC_SUBST(aros_target_arch)
1574 AC_SUBST(aros_target_cpu)
1575 AC_SUBST(aros_target_variant)
1576 AC_SUBST(aros_target_suffix)
1577 AC_SUBST(aros_target_incl)
1578 AC_SUBST(aros_target_ar)
1579 AC_SUBST(aros_target_ranlib)
1580 AC_SUBST(aros_kernel_nm)
1581 AC_SUBST(orig_target_cc)
1582 AC_SUBST(aros_target_cc)
1583 AC_SUBST(aros_kernel_cc)
1584 AC_SUBST(aros_target_as)
1585 AC_SUBST(orig_target_ld)
1586 AC_SUBST(aros_target_ld)
1587 AC_SUBST(aros_kernel_ld)
1588 AC_SUBST(aros_target_cc_includes)
1589 AC_SUBST(aros_target_cc_path)
1590 AC_SUBST(aros_target_objdump)
1591 AC_SUBST(aros_target_objcopy)
1592 AC_SUBST(aros_target_strip)
1593 AC_SUBST(aros_target_nm)
1594 AC_SUBST(aros_shared_default)
1595 AC_SUBST(aros_shared_ld)
1596 AC_SUBST(aros_object_format)
1597 AC_SUBST(aros_compiler_libs)
1599 AC_SUBST(aros_config_cflags)
1600 AC_SUBST(aros_config_aflags)
1601 AC_SUBST(aros_config_ldflags)
1603 AC_SUBST(aros_shared_cflags)
1604 AC_SUBST(aros_shared_aflags)
1605 AC_SUBST(aros_shared_ldflags)
1606 AC_SUBST(aros_kernel_cflags)
1607 AC_SUBST(aros_kernel_ldflags)
1608 AC_SUBST(aros_debug_cflags)
1609 AC_SUBST(aros_debug_aflags)
1610 AC_SUBST(aros_debug_ldflags)
1611 AC_SUBST(aros_target_genmap)
1612 AC_SUBST(aros_target_strip_flags)
1615 AC_SUBST(x11_hidd_target)
1616 AC_SUBST(sdl_hidd_target)
1618 AC_SUBST(aros_default_wbwidth)
1619 AC_SUBST(aros_default_wbheight)
1620 AC_SUBST(aros_default_wbdepth)
1621 AC_SUBST(DO_XSHM_SUPPORT)
1622 AC_SUBST(DO_VIDMODE_SUPPORT)
1624 AC_SUBST(aros_host_x11_includes)
1625 AC_SUBST(aros_host_x11_libdirs)
1626 AC_SUBST(aros_host_sdl_cflags)
1627 AC_SUBST(aros_host_sdl_libs)
1629 # Native version related
1630 AC_SUBST(aros_bochs_hack)
1631 AC_SUBST(aros_serial_debug)
1633 # Palm native version related
1634 AC_SUBST(aros_palm_debug_hack)
1636 # Unix/Hosted version related
1637 AC_SUBST(aros_nesting_supervisor)
1640 AC_SUBST(ENABLE_DBUS)
1641 AC_SUBST(DBUS_CFLAGS)
1642 AC_SUBST(DBUS_LIBFLAGS)
1643 AC_SUBST(KERNEL_DBUS_KOBJ)
1644 AC_SUBST(KERNEL_DBUS_INCLUDES)
1647 AC_SUBST(aros_debug)
1648 AC_SUBST(aros_mungwall_debug)
1649 AC_SUBST(aros_stack_debug)
1650 AC_SUBST(aros_modules_debug)
1652 # Collect-aros stuff: "-ius" to ignore undefined symbols
1653 AC_SUBST(ignore_undefined_symbols)
1655 # C compiler related
1656 AC_SUBST(gcc_target_cpu)
1658 dnl Prepare for output, make up all the generated patches
1659 case "$aros_flavour" in
1660 emulation) aros_flavour_uc="AROS_FLAVOUR_EMULATION"
1661 aros_flavour="emulation" ;;
1662 emulcompat) aros_flavour_uc="(AROS_FLAVOUR_EMULATION|AROS_FLAVOUR_BINCOMPAT)"
1663 aros_flavour="emulation" ;;
1664 standalone) aros_flavour_uc="AROS_FLAVOUR_STANDALONE"
1665 aros_flavour="standalone";;
1666 native) aros_flavour_uc="AROS_FLAVOUR_NATIVE"
1667 aros_flavour="native" ;;
1668 nativecompat) aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1669 aros_flavour="native" ;;
1670 linklib) aros_flavour_uc="AROS_FLAVOUR_LINKLIB"
1671 aros_flavour="linklib" ;;
1672 palmnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1673 aros_flavour="palmnative" ;;
1674 mac68knative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1675 aros_flavour="mac68knative" ;;
1676 ppcnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_BINCOMPAT)"
1677 aros_flavour="ppcnative" ;;
1680 if test ! -d ${aros_inc_dir} ; then
1681 ${MKDIR} ${aros_inc_dir}
1683 if test ! -d ${aros_geninc_dir} ; then
1684 ${MKDIR} ${aros_geninc_dir}
1686 if test ! -d ${aros_hostcfg_dir} ; then
1687 ${MKDIR} ${aros_hostcfg_dir}
1689 if test ! -d ${aros_targetcfg_dir} ; then
1690 ${MKDIR} ${aros_targetcfg_dir}
1692 if test ! -d ${aros_tools_dir} ; then
1693 ${MKDIR} ${aros_tools_dir}
1695 if test ! -d ${aros_scripts_dir} ; then
1696 ${MKDIR} ${aros_scripts_dir}
1699 AC_CONFIG_HEADERS(${aros_geninc_dir}/host-conf.h:config/host-conf.h.in)
1701 AC_CONFIG_COMMANDS([compiler_executable],
1703 prefix=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}
1705 prefix="${prefix}/${aros_target_cpu}-aros"
1706 prefix2=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros
1710 chmod a+x ${prefix2}-gcc ${prefix2}-ld
1712 ln -sf ${prefix2}-gcc ${prefix}-gcc
1713 ln -sf ${prefix2}-ld ${prefix}-ld
1715 ln -sf $aros_target_as_ln ${prefix}-as
1716 ln -sf $aros_target_nm_ln ${prefix}-nm
1717 ln -sf $aros_target_ar_ln ${prefix}-ar
1718 ln -sf $aros_target_ranlib_ln ${prefix}-ranlib
1719 ln -sf $aros_target_objcopy_ln ${prefix}-objcopy
1720 ln -sf $aros_target_objdump_ln ${prefix}-objdump
1721 ln -sf $aros_target_strip_ln ${prefix}-strip
1723 ln -sf $aros_target_as_ln ${prefix2}-as
1724 ln -sf $aros_target_nm_ln ${prefix2}-nm
1725 ln -sf $aros_target_ar_ln ${prefix2}-ar
1726 ln -sf $aros_target_ranlib_ln ${prefix2}-ranlib
1727 ln -sf $aros_target_objcopy_ln ${prefix2}-objcopy
1728 ln -sf $aros_target_objdump_ln ${prefix2}-objdump
1729 ln -sf $aros_target_strip_ln ${prefix2}-strip
1732 aros_tools_dir=${aros_tools_dir}
1733 aros_target_cpu=${aros_target_cpu}
1734 aros_target_arch=${aros_target_arch}
1735 aros_target_suffix=${aros_target_suffix}
1736 aros_target_nm_ln=${aros_target_nm_ln}
1737 aros_target_as_ln=${aros_target_as_ln}
1738 aros_target_ar_ln=${aros_target_ar_ln}
1739 aros_target_ranlib_ln=${aros_target_ranlib_ln}
1740 aros_target_objdump_ln=${aros_target_objdump_ln}
1741 aros_target_objcopy_ln=${aros_target_objcopy_ln}
1742 aros_target_strip_ln=${aros_target_strip_ln}
1745 AC_CONFIG_COMMANDS([genshared_executable],
1746 [chmod a+x ${aros_scripts_dir}/genshared],
1747 [aros_scripts_dir=${aros_scripts_dir}]
1749 AC_CONFIG_COMMANDS([genmf_executable],
1750 [chmod a+x ${aros_tools_dir}/genmf.py],
1751 [aros_tools_dir=${aros_tools_dir}]
1753 AC_CONFIG_COMMANDS([adflib_myaros.conf_executable],
1754 [chmod a+x tools/adflib/myconf.aros]
1761 ${aros_inc_dir}/config.h:config/config.h.in
1762 ${aros_geninc_dir}/config.h:config/config.h.in
1763 ${aros_hostcfg_dir}/host.cfg:config/host.cfg.in
1764 ${aros_targetcfg_dir}/target.cfg:config/target.cfg.in
1766 ${aros_targetcfg_dir}/make.defaults:config/make.defaults.in
1767 ${aros_targetcfg_dir}/specs:config/specs.in
1768 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-gcc:scripts/aros-gcc.in
1769 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-ld:scripts/aros-ld.in
1770 ${aros_scripts_dir}/genshared:compiler/c_lib/source/lib_source/genshared.in
1771 ${aros_tools_dir}/genmf.py:tools/genmf/genmf.py
1772 tools/adflib/myconf.aros
1773 tools/collect-aros/env.h
1778 dnl This is in order to not define SHARED_CFLAGS sometimes
1779 dnl We don't always do aros_shared_ar, aros_shared_cflags
1781 #XXX compatability...
1782 aros_shared_ar="$aros_shared_ld $aros_shared_ldflags -o"
1784 if test -n "$aros_shared_cflags" ; then
1785 echo "SHARED_CFLAGS := $aros_shared_cflags" >> ${aros_hostcfg_dir}/host.cfg
1786 echo "SHARED_AR := $aros_shared_ar" >> ${aros_hostcfg_dir}/host.cfg