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="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"
566 #-----------------------------------------------------------------------------
567 # Checking if we should build crosstools..
568 AC_MSG_CHECKING([whether to build crosstools])
569 AC_ARG_ENABLE(crosstools,AC_HELP_STRING([--enable-crosstools],[Build cross-compiler toolchains if necessary (default=no).]),crosstools="$enableval",crosstools="no")
570 if test "$crosstools" != "" -a "$crosstools" != "no"; then
572 aros_crosstools="yes"
577 #-----------------------------------------------------------------------------
578 # Checking for distcc and ccache.
580 # Always apply the transforms in this particular order. Basically you should
581 # always run 'ccache distcc compiler' in that order for the best performance.
583 AC_MSG_CHECKING([whether to enable distcc])
584 AC_ARG_ENABLE(distcc,AC_HELP_STRING([--enable-distcc],[Use distcc as a front end to the compiler (default=no).]),distcc="$enableval",distcc="no")
585 if test "$distcc" != "" -a "$distcc" != "no"; then
586 # AC_CHECK_PROG will print out the result in this case
587 AC_PATH_PROG(DISTCC,[distcc],distcc,)
592 AC_MSG_CHECKING([whether to enable ccache])
593 AC_ARG_ENABLE(ccache,AC_HELP_STRING([--enable-ccache],[Use ccache as a front end to the compiler (default=no).]),ccache="$enableval",ccache="no")
594 if test "$ccache" != "" -a "$ccache" != "no"; then
595 # AC_CHECK_PROG will print out the result in this case
596 AC_CHECK_PROG(CCACHE,[ccache],ccache,)
601 #-----------------------------------------------------------------------------
602 AC_MSG_CHECKING([what optimization flags to use])
603 AC_ARG_WITH(optimization,AC_HELP_STRING([--with-optimization=FLAGS],[Use optimization flags FLAGS (default=-O2).]),optimization="$withval",optimization="unknown")
604 if test "$optimization" = "unknown"; then
605 dnl default is -O2 for normal builds, -O0 for debug builds
606 if test "$debug" != "none"; then
612 aros_config_cflags="$aros_config_cflags $optimization"
613 AC_MSG_RESULT($optimization)
615 #-----------------------------------------------------------------------------
616 AC_MSG_CHECKING([what target variant to enable])
617 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")
618 if test "$target_variant" = "none"; then
619 aros_target_variant=""
620 aros_target_suffix=""
622 aros_target_variant="$target_variant"
623 aros_target_suffix="-$target_variant"
625 AC_MSG_RESULT($enableval)
627 target_bootloader="none"
629 #-----------------------------------------------------------------------------
630 # This is the target configuration switch.
633 aros_target_arch="linux"
634 case "$target_cpu" in
636 aros_target_cpu="m68k"
637 aros_object_format="m68kelf"
638 aros_flavour="emulcompat"
639 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__linux__"
640 aros_shared_ldflags="-Wl,-T,\$(TOP)/config/linux/m68k/script.so"
641 aros_kernel_ldflags="-Wl,-rpath,./lib,-T,\$(TOP)/config/linux/m68k/script.normal"
642 gcc_target_cpu="mc68000"
645 aros_target_cpu="i386"
646 aros_object_format="elf_i386"
647 aros_flavour="emulation"
648 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__linux__"
649 aros_default_wbdepth=8
650 gcc_target_cpu="i386"
653 aros_target_cpu="x86_64"
654 aros_object_format="elf_x86_64"
655 aros_flavour="emulation"
656 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64 -D__linux__"
657 aros_config_cflags="$aros_config_cflags -mno-red-zone"
658 aros_default_wbdepth=8
659 gcc_target_cpu="x86_64"
662 aros_target_cpu="ppc"
663 aros_object_format="elf32ppc"
664 aros_flavour="emulation"
665 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
666 aros_default_wbdepth=8
670 # Same as powerpc, but I need this for the nightly build to work again.
671 # Actually, the nightly should be made working with powerpc target.
672 # That just was too much work for the moment, another week or two.
674 aros_target_cpu="ppc"
675 aros_object_format="elf32ppc"
676 aros_flavour="emulation"
677 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
678 aros_default_wbdepth=8
682 AC_MSG_ERROR("Unknown CPU for Linux -- $target_cpu")
688 aros_target_arch="pc"
689 aros_shared_default="no"
690 target_bootloader="grub2"
691 case "$target_cpu" in
693 aros_target_cpu="i386"
695 dnl If somebody hasn't already set the target object
696 dnl format, then use this value. Mostly to support
697 dnl FreeBSD cross-compilation.
698 dnl TODO: Remove when we always use our compiler.
700 if test "$aros_object_format" = "" ; then
701 aros_object_format="elf_i386"
703 aros_flavour="standalone"
704 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
705 aros_kernel_ldflags=""
706 aros_default_wbwidth=640
707 aros_default_wbheight=480
708 gcc_target_cpu="i386"
711 aros_target_cpu="x86_64"
713 if test "$aros_object_format" = "" ; then
714 aros_object_format="elf_x86_64"
716 aros_flavour="standalone"
717 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64"
718 aros_config_cflags="$aros_config_cflags -fno-asynchronous-unwind-tables -mno-red-zone"
719 aros_kernel_ldflags=""
720 aros_default_wbwidth=640
721 aros_default_wbheight=480
722 gcc_target_cpu="x86_64"
725 AC_MSG_ERROR("Unknown native CPU -- $target_cpu")
731 aros_target_arch="prep"
732 aros_shared_default="no"
733 aros_target_cpu="ppc"
734 aros_object_format="elf32ppc"
735 aros_flavour="ppcnative"
736 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
737 aros_kernel_ldflags=""
738 aros_default_wbwidth=640
739 aros_default_wbheight=480
744 aros_target_arch="freebsd"
745 aros_target_cpu="i386"
746 aros_flavour="emulation"
747 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
748 gcc_target_cpu="i386"
750 aros_target_strip_flags="-x"
754 aros_target_arch="darwin"
755 aros_flavour="emulation"
756 case "$target_cpu" in
758 aros_target_cpu="i386"
759 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
760 gcc_target_cpu="i386"
761 aros_object_format="elf_i386"
762 aros_target_strip_flags="-x"
765 AC_MSG_ERROR("Unsupported target CPU for darwin hosted flavour -- $target_cpu")
770 aros_target_arch="netbsd"
771 case "$target_cpu" in
773 aros_target_cpu="m68k"
774 aros_object_format="m68kelf"
775 aros_flavour="emulcompat"
776 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__NetBSD__"
777 gcc_target_cpu="mc68000"
780 aros_target_cpu="i386"
781 aros_object_format="elf_i386"
782 aros_flavour="emulation"
783 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__NetBSD__"
784 aros_default_wbdepth=8
785 gcc_target_cpu="i386"
788 AC_MSG_ERROR("Unknown CPU for NetBSD -- $target_cpu")
791 aros_target_genmap="-Wl,-M -Xlinker >"
792 aros_flavour="emulation"
793 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
797 aros_target_arch="openbsd"
798 case "$target_cpu" in
800 aros_target_cpu="i386"
801 aros_object_format="elf_i386"
802 aros_flavour="emulation"
803 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__OpenBSD__"
804 gcc_target_cpu="i386"
807 AC_MSG_ERROR("Unknown CPU for OpenBSD -- $target_cpu")
810 aros_target_genmap="-Wl,-M -Xlinker >"
811 aros_target_nm_flags="-u"
812 aros_flavour="emulation"
816 aros_target_arch="solaris"
817 case "$target_cpu" in
819 aros_target_cpu="i386"
820 aros_object_format="elf_i386"
821 aros_flavour="emulation"
822 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__Solaris__"
823 aros_default_wbdepth=8
824 gcc_target_cpu="i386"
827 aros_target_cpu="sparc"
828 aros_object_format="elf_sparc"
829 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dsparc -D__Solaris__"
830 gcc_target_cpu="sparc"
833 AC_MSG_ERROR("Unknown CPU for Solaris -- $target_cpu")
836 aros_config_cflags="$aros_config_cflags -D$aros_target_cpu"
837 aros_flavour="emulation"
841 aros_target_arch="morphos"
842 aros_shared_default="no"
843 aros_target_cpu="ppc"
844 aros_object_format="elf_ppc"
845 aros_flavour="nativecompat"
846 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
851 aros_target_arch="sam440"
852 aros_shared_default="no"
853 aros_target_cpu="ppc"
854 aros_object_format="elf32ppc"
855 aros_flavour="ppcnative"
856 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
857 aros_kernel_ldflags=""
858 aros_default_wbwidth=640
859 aros_default_wbheight=480
860 aros_config_cflags="$aros_config_cflags -mcpu=440fp -mno-toc -fno-asynchronous-unwind-tables"
861 gcc_target_cpu="powerpc"
865 aros_target_arch="chrp"
866 aros_shared_default="no"
867 aros_target_cpu="ppc"
868 aros_object_format="elf32ppc"
869 aros_flavour="ppcnative"
870 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
871 aros_kernel_ldflags=""
872 aros_default_wbwidth=640
873 aros_default_wbheight=480
874 aros_config_cflags="$aros_config_cflags -mno-toc -fno-asynchronous-unwind-tables"
875 gcc_target_cpu="powerpc"
876 case "$aros_target_variant" in
878 aros_config_cflags="$aros_config_cflags -mcpu=603e"
884 aros_target_arch="amiga"
885 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D_AMIGA -DAMIGA"
886 aros_shared_default="no"
888 aros_config_cflags="$aros_config_cflags -fomit-frame-pointer -fbuiltin -ffreestanding"
890 case "$target_cpu" in
892 aros_target_cpu="m68k"
893 aros_object_format="m68kelf"
894 aros_flavour="nativecompat"
895 gcc_target_cpu="mc68000"
899 aros_flavour="native"
903 AC_MSG_ERROR("Unknown CPU for Amiga $target_cpu")
909 aros_target_arch="cygwin"
910 aros_shared_default="no"
911 case "$target_cpu" in
913 aros_target_cpu="i386"
914 aros_object_format="elf_i386"
915 aros_flavour="emulation"
916 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__CYGWIN32__"
917 aros_shared_cflags=""
918 aros_default_wbdepth=8
919 gcc_target_cpu="i386"
920 aros_target_cc="i386-aros-gcc"
921 aros_target_ld="i386-aros-ld"
922 aros_target_as="i386-aros-as"
923 aros_target_ar="i386-aros-ar"
924 aros_target_ranlib="i386-aros-ranlib"
925 aros_target_nm="i386-aros-nm"
926 aros_target_strip="i386-aros-strip"
927 aros_target_objcopy="i386-aros-objcopy"
928 aros_target_objdump="i386-aros-objdump"
931 AC_MSG_ERROR("Unknown CPU for CygWin -- $target_cpu")
937 aros_target_arch="mingw32"
938 aros_shared_default="no"
939 case "$target_cpu" in
941 aros_target_cpu="i386"
942 aros_object_format="elf_i386"
943 aros_flavour="emulation"
944 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
945 aros_shared_cflags=""
946 aros_default_wbdepth=8
947 gcc_target_cpu="i386"
948 aros_target_cc="i386-aros-gcc"
949 aros_target_ld="i386-aros-ld"
950 aros_target_as="i386-aros-as"
951 aros_target_ar="i386-aros-ar"
952 aros_target_ranlib="i386-aros-ranlib"
953 aros_target_nm="i386-aros-nm"
954 aros_target_strip="i386-aros-strip"
955 aros_target_objcopy="i386-aros-objcopy"
956 aros_target_objdump="i386-aros-objdump"
959 AC_MSG_ERROR("Unknown CPU for Mingw32 -- $target_cpu")
962 if test $host_os = "cygwin"; then
963 aros_kernel_cflags="-mno-cygwin"
967 aros_target_arch="pp"
968 aros_shared_default="no"
969 case "$target_cpu" in
971 aros_target_cpu="m68k"
972 aros_object_format="m68kelf"
973 aros_flavour="palmnative"
974 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
975 aros_kernel_ldflags=""
976 aros_default_wbwidth=160
977 aros_default_wbheight=160
978 aros_default_wbdepth=1
979 aros_target_ar_flags="cru"
980 aros_compiler_libs="-lgcc1"
981 aros_shared_default=no
982 aros_shared_cflags="-fpic"
983 aros_shared_aflags=""
984 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
985 aros_kernel_ldflags="-Wl,-rpath,./lib"
986 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000 -Wa,-mc68000"
988 aros_debug_ldflags="$aros_symbols_debug"
989 aros_mungwall_debug="0"
990 aros_modules_debug="0"
991 gcc_target_cpu="mc68000"
992 ignore_undefined_symbols="-ius"
995 AC_MSG_ERROR("Unknown CPU for PalmPilot -- $target_cpu")
1001 aros_target_arch="mac"
1002 aros_shared_default="no"
1003 case "$target_cpu" in
1005 aros_target_cpu="m68k"
1006 aros_object_format="m68kelf"
1007 aros_flavour="mac68knative"
1008 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
1009 aros_default_wbwidth=512
1010 aros_default_wbheight=384
1011 aros_default_wbdepth=8
1012 aros_target_ar_flags="cru"
1013 aros_compiler_libs="-lgcc1"
1014 aros_shared_default=no
1015 aros_shared_cflags="-fpic"
1016 aros_shared_aflags=""
1017 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
1018 aros_kernel_ldflags="-Wl,-rpath,./lib"
1019 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug $aros_messages_debug -mc68000"
1020 aros_debug_aflags=""
1021 aros_debug_ldflags="$aros_symbols_debug"
1022 aros_mungwall_debug="0"
1023 aros_modules_debug="0"
1024 gcc_target_cpu="mc68000"
1025 ignore_undefined_symbols="-ius"
1028 AC_MSG_ERROR("Unknown CPU for Mac68k -- $target_cpu")
1034 AC_MSG_ERROR([Unsupported target architecture $target])
1038 AC_MSG_CHECKING([Where to download sourcecode for external ports])
1039 AC_ARG_WITH(portssources,AC_HELP_STRING([--with-portssources=DIR],[Where to download sourcecode for external ports]),with_portssrcdir=$withval,with_portssrcdir="default")
1040 if test "$with_portssrcdir" = "default"; then
1041 AROS_PORTSSRCDIR="$AROS_BUILDDIR/bin/Sources"
1043 AROS_PORTSSRCDIR="$with_portssrcdir"
1045 AC_MSG_RESULT($AROS_PORTSSRCDIR)
1047 AC_MSG_CHECKING([which bootloader to use])
1048 AC_ARG_WITH(bootloader,AC_HELP_STRING([--with-bootloader=NAME],[Use a specific bootloader]),target_bootloader=$withval,target_bootloader=$target_bootloader)
1049 if test "$target_bootloader" = "none"; then
1050 aros_target_bootloader=""
1052 aros_target_bootloader="$target_bootloader"
1054 AC_MSG_RESULT($target_bootloader)
1056 # Check LZO when compiling the grub2 bootloader on i386/x86_64.
1057 aros_liblzo_check="no"
1058 case "$aros_target_bootloader" in
1060 case "$target_cpu" in
1062 aros_liblzo_check="yes"
1065 aros_liblzo_check="yes"
1076 if test "$aros_liblzo_check" = "yes"; then
1077 # There are three possibilities. LZO version 2 installed with the name
1078 # liblzo2, with the name liblzo, and LZO version 1.
1079 AC_CHECK_LIB(lzo2, __lzo_init_v2, [LIBLZO="-llzo2"],
1080 AC_CHECK_LIB(lzo, __lzo_init_v2, [LIBLZO="-llzo"],
1081 AC_CHECK_LIB(lzo, __lzo_init2, [LIBLZO="-llzo"],
1082 AC_MSG_ERROR([LZO library version 1.02 or later is required]))))
1085 LIBS="$LIBS $LIBLZO"
1086 AC_CHECK_FUNC(lzo1x_999_compress, ,
1087 [AC_MSG_ERROR([LZO1X-999 must be enabled])])
1089 # LZO version 2 uses lzo/lzo1x.h, while LZO version 1 uses lzo1x.h.
1090 AC_CHECK_HEADERS(lzo/lzo1x.h lzo1x.h)
1093 AC_MSG_CHECKING([which GUI Theme to use])
1094 AC_ARG_WITH(theme,AC_HELP_STRING([--with-theme=NAME],[Use a specific GUI Theme]),target_guitheme=$withval,target_guitheme="default")
1095 if test "$target_guitheme" = "default"; then
1096 aros_target_guitheme="Ice"
1098 aros_target_guitheme="$target_guitheme"
1100 AC_MSG_RESULT($aros_target_guitheme)
1102 # Find out if we are cross-compiling (ie. if we can't use the host compiler
1105 if test "$aros_host_cpu" != "$aros_target_cpu" ; then
1108 if test "$aros_host_arch" == "darwin" ; then
1112 # Set prefix for target compiler etc. if we're cross-compiling
1113 # (should possibly be earlier but needs to be after AC_PROG_CC)
1114 if test "$cross_compiling" = "yes" ; then
1115 target_tool_prefix=${target_cpu}-elf-
1116 CC=${target_tool_prefix}gcc
1119 # Find all the tools we need to compile. This could be cross-compiling
1120 # though! If that is the case we use the GNU form of the target and
1121 # simply add this to the front of the binary name. This is rather simple,
1122 # but it should work under most circumstances.
1124 # The default tools are to use the same as the host, but only if the
1125 # host and target CPU are the same. With GCC this is normally enough.
1129 aros_shared_ld="$aros_host_ld"
1131 aros_target_mkdep="$aros_host_mkdep"
1132 aros_target_incl_def="$aros_host_incl"
1134 AC_PATH_PROG(aros_kernel_cc,$CC)
1136 # The default tools executables to be linked to.
1137 if test "$aros_target_cc" != ""; then
1138 AC_PATH_PROG(aros_target_cc,$aros_target_cc)
1139 AROS_REQUIRED(gcc,$aros_target_cc)
1141 if test "$aros_target_ld" != ""; then
1142 AC_PATH_PROG(aros_target_ld,$aros_target_ld)
1143 AROS_REQUIRED(ld,$aros_target_ld)
1146 if test "$crosstools" != "yes"; then
1147 AROS_TOOL_TARGET(aros_target_as_ln,as,$aros_target_as)
1148 AROS_REQUIRED(as,$aros_target_as_ln)
1149 AROS_TOOL_TARGET(aros_kernel_ld,ld,$aros_kernel_ld)
1150 AROS_REQUIRED(ld,$aros_kernel_ld)
1151 AROS_TOOL_TARGET(aros_target_ar_ln,ar,$aros_target_ar)
1152 AROS_REQUIRED(ar,$aros_target_ar_ln)
1153 AROS_TOOL_TARGET(aros_target_nm_ln,nm,$aros_target_nm)
1154 AROS_REQUIRED(nm,$aros_target_nm_ln)
1155 AROS_TOOL_TARGET(aros_target_objcopy_ln,objcopy,$aros_target_objcopy)
1156 AROS_REQUIRED(objcopy,$aros_target_objcopy_ln)
1157 AROS_TOOL_TARGET(aros_target_objdump_ln,objdump,$aros_target_objdump)
1158 AROS_REQUIRED(objdump,$aros_target_objdump_ln)
1159 AROS_TOOL_TARGET(aros_target_ranlib_ln,ranlib,$aros_target_ranlib)
1160 AROS_REQUIRED(ranlib,$aros_target_ranlib_ln)
1161 AROS_TOOL_TARGET(aros_target_strip_ln,strip,$aros_target_strip)
1162 AROS_REQUIRED(strip,$aros_target_strip_ln)
1165 aros_hostcfg_dir="bin/${aros_host_arch}-${aros_host_cpu}/gen/config"
1166 aros_targetcfg_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/config"
1167 aros_inc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/AROS/Development/include/aros"
1168 aros_gendir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen"
1169 aros_geninc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/include/aros"
1170 aros_tools_dir="bin/${aros_host_arch}-${aros_host_cpu}/tools"
1171 aros_scripts_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/scripts"
1173 # aros_cc_pre is a variable that is added to the front of the compiler name
1174 # in the generated aros-gcc shell script. We need this to enable the cache
1175 # to work across cleaned builds. Also, support DISTCC using the correct
1176 # environment variable.
1179 if test "x${DISTCC}" != "x" ; then
1180 if test "x${CCACHE}" != "x" ; then
1181 aros_cc_pre="env CCACHE_PREFIX=${DISTCC} ${CCACHE} "
1183 aros_cc_pre="${DISTCC} "
1186 if test "x${CCACHE}" != "x" ; then
1187 aros_cc_pre="${CCACHE} "
1191 prefix="${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros"
1193 AC_SUBST(aros_target_nostdinc_cflags,-nostdinc)
1194 AC_SUBST(aros_target_nostartup_ldflags,-nostartfiles)
1195 AC_SUBST(aros_target_nix_ldflags,-nix)
1196 AC_SUBST(aros_target_detach_ldflags,-detach)
1197 AC_SUBST(aros_target_nostdlib_ldflags,-nostdlib)
1200 if test "$aros_target_cc" = ""; then
1201 orig_target_cc=$aros_kernel_cc
1203 orig_target_cc=$aros_target_cc
1205 if test "$aros_target_ld" = ""; then
1206 orig_target_ld=$aros_kernel_ld
1208 orig_target_ld=$aros_target_ld
1210 if test "$GCC" = "yes"; then
1211 aros_target_cc_path=`$orig_target_cc -print-search-dirs | grep "programs: =" | cut -c 12-`
1213 aros_target_cc="${prefix}-gcc"
1214 aros_target_as="${prefix}-as"
1215 aros_target_ld="${prefix}-ld"
1216 aros_target_ar="${prefix}-ar $aros_target_ar_flags"
1217 aros_target_objcopy=${prefix}-objcopy
1218 aros_target_objdump=${prefix}-objdump
1219 aros_target_ranlib="${prefix}-ranlib $aros_target_ranlib_flags"
1220 aros_target_nm="${prefix}-nm $aros_target_nm_flags"
1221 aros_kernel_nm="${prefix}-nm"
1222 aros_target_strip=${prefix}-strip
1224 # Find the system include path. We can suggest that an alternative is
1225 # used if we don't get it correct. The default is to use /usr/include.
1226 # Which is set in the aros_target_incl_def variable.
1228 AC_ARG_ENABLE(includes,
1229 AC_HELP_STRING([--enable-includes=dir],[Alternative system include directory]),
1230 [aros_target_incl=$enable_includes], [aros_target_incl=$aros_target_incl_def])
1232 dnl find out about the target cc's include path
1233 AC_MSG_CHECKING([for the target compiler's include path])
1234 if test "$aros_target_cc_includes" = "" ; then
1235 #try to guess where the directory is
1236 aros_target_cc_includes=`dirname \`${aros_kernel_cc} -print-libgcc-file-name\``/include
1237 if ! test -d $aros_target_cc_includes; then
1238 #the directory doesn't exist, we need to do some more work
1239 aros_target_cc_includes=${PWD}/${aros_gendir}/cc_include
1241 #these are the headers we're looling for
1242 headers="limits.h mmintrin.h stdbool.h syslimits.h float.h \
1243 stddef.h xmmintrin.h iso646.h stdarg.h unwind.h \
1247 for h in $headers; do
1248 #which other headers each of the above headers needs?
1249 deps=$(echo "#include <$h>" | \
1250 $aros_host_cc -E -M - 2>/dev/null | \
1251 sed 's/^.*://; s/\\$/ /g; s/[[ \t]]\+/ /g')
1253 #copy all the needed headers to a directory beneath gendir
1256 dir=${aros_target_cc_includes}$(echo $(dirname $d) | \
1257 sed -n "s,^.*/include\(/.*\),\1,p")
1258 ! test -d $dir && mkdir -p $dir
1259 ! test -f $dir/$h && { cp $d $dir; chmod u+w $dir/$h; }
1264 AC_MSG_RESULT($aros_target_cc_includes)
1267 # For GCC < 4.0 -I- is used for giving the search path for '#include "..."'
1268 # On GCC >= 4.0 -iquote should be used
1272 save_cflags="$CFLAGS"
1273 CC="$aros_kernel_cc"
1275 AC_MSG_CHECKING([whether ${CC} accepts -iquote])
1276 AC_TRY_COMPILE(,, has_iquote="yes", has_iquote="no")
1277 AC_MSG_RESULT($has_iquote)
1278 if test "x-$has_iquote" = "x-yes" ; then
1279 aros_cflags_iquote=-iquote
1280 aros_cflags_iquote_end=
1282 aros_cflags_iquote=-I
1283 aros_cflags_iquote_end=-I-
1286 CFLAGS="$save_cflags"
1288 AC_SUBST(aros_cflags_iquote)
1289 AC_SUBST(aros_cflags_iquote_end)
1292 dnl Check if user specified --with-resolution=XRESxYRESxDEPTH
1293 AC_MSG_CHECKING([for default resolution of WBScreen])
1294 AC_ARG_WITH(resolution,AC_HELP_STRING([--with-resolution=XRESxYRESxDEPTH],[Default resolution of the initial WorkbenchScreen]),resolution=$withval,resolution=none)
1295 # We require an argument, so map --with/--without ("yes"/"no") to "none" specified
1296 if test "$resolution" = "yes" ; then
1299 if test "$resolution" = "no" ; then
1302 if test "$resolution" != "none" ; then
1303 aros_default_wbwidth=`echo $resolution | cut -d'x' -f1`
1304 aros_default_wbheight=`echo $resolution | cut -d'x' -f2`
1305 aros_default_wbdepth=`echo $resolution | cut -d'x' -f3`
1307 AC_MSG_RESULT($aros_default_wbwidth x $aros_default_wbheight x $aros_default_wbdepth)
1308 aros_cv_default_wbwidth=$aros_default_wbwidth
1309 aros_cv_default_wbheight=$aros_default_wbheight
1310 aros_cv_default_wbdepth=$aros_default_wbdepth
1312 dnl See if the user wants the BOCHS hack for native flavour
1313 AC_MSG_CHECKING([if bochs hack is enabled])
1314 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")
1315 if test "$bochs_hack" = "yes" ; then
1318 AC_MSG_RESULT($bochs_hack)
1320 dnl See if the user wants the serial debug output for native flavour
1321 AC_MSG_CHECKING([if serial debug is enabled])
1322 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)
1323 if test "$aros_serial_debug" = 0 ; then
1324 serial_debug_forced=""
1325 if test "$serial_debug" = "yes" ; then
1328 if test "$serial_debug" = "no" ; then
1332 serial_debug_forced="(forced)"
1333 serial_debug=$aros_serial_debug
1335 if test "$serial_debug" != "none" ; then
1336 aros_serial_debug=$serial_debug
1337 AC_MSG_RESULT($serial_debug_forced on port $serial_debug)
1342 dnl See if the user wants the palm debug output hack for palm native flavour
1343 AC_MSG_CHECKING([if palm debug hack is enabled])
1344 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")
1345 if test "$palm_debug_hack" = "yes" ; then
1346 aros_palm_debug_hack="1"
1348 AC_MSG_RESULT($palm_debug_hack)
1351 dnl See if the user wants nesting supervisor activated for unix flavour
1352 AC_MSG_CHECKING([if nesting supervisor support is enabled])
1353 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")
1354 if test "$nesting_supervisor" = "yes" ; then
1355 aros_nesting_supervisor="1"
1357 AC_MSG_RESULT($nesting_supervisor)
1360 dnl things specifically required for hosted flavours
1361 if test "x-$aros_flavour" = "x-emulation" -o "x-$aros_flavour" = "x-emulcompat" ; then
1363 if test "x-$aros_host_arch" != "x-darwin" ; then
1364 dnl some kind of dynamic library access system is required for hostlib.resource
1365 AC_CHECK_FUNC(dlopen, have_dl="yes", have_dl="no")
1366 if test "x-$have_dl" = "x-no" ; then
1367 AC_CHECK_LIB(dl, dlopen, [have_dl="yes"
1368 aros_host_ldflags="$aros_host_ldflags -ldl"],
1371 if test "x-$have_dl" = "x-no" ; then
1372 AC_MSG_ERROR([dlopen() dynamic linker functions not available])
1378 AC_ARG_ENABLE(x11_hidd, AC_HELP_STRING([--enable-x11-hidd],
1379 [build X11 hidd for hosted (default=auto)]),
1380 x11_hidd="$enableval",
1382 case "x-$x11_hidd" in
1383 x-yes|x-no|x-auto) ;;
1384 *) x11_hidd="auto" ;;
1388 if test "x-$x11_hidd" != "x-no" ; then
1394 for path in $x_libraries
1396 x_cflags="$x_cflags -L$path"
1399 for path in $x_includes
1401 x_cflags="$x_cflags -I$path"
1404 if test "x-$no_x" = "x-yes" ; then
1407 if test "x-$x11_hidd" != "x-auto" ; then
1408 dnl and they explicitly asked for it, bail out
1409 AC_MSG_ERROR([X11 libs/headers not found, cannot build X11 hidd as requested])
1413 dnl found it, setup the metatarget
1414 x11_hidd_target=kernel-x11gfx
1417 dnl setup shared memory extensions
1418 AC_ARG_ENABLE(x11_shm, AC_HELP_STRING([--enable-x11-shm],
1419 [use X11 shared memory (default=auto)]),
1420 x11_hidd_shm="$enableval",
1421 x11_hidd_shm="auto")
1422 case "x-$x11_hidd_shm" in
1423 x-yes|x-no|x-auto) ;;
1424 *) x11_hidd_shm="auto" ;;
1430 if test "x-$x11_hidd_shm" != "x-no" ; then
1432 dnl system shm headers
1433 AC_CHECK_HEADERS(sys/ipc.h)
1434 AC_CHECK_HEADERS(sys/shm.h)
1437 if test "x-$ac_cv_header_sys_ipc_h" = "x-yes" -a "x-$ac_cv_header_sys_shm_h" = "x-yes" ; then
1439 dnl make sure X libs have shm functions
1440 save_cflags="$CFLAGS"
1441 CFLAGS="$CFLAGS $x_cflags"
1442 AC_CHECK_LIB(Xext, XShmQueryExtension, have_xshm=yes)
1443 CFLAGS="$save_cflags"
1447 dnl detection done, prepare output
1448 if test "x-$have_xshm" = "x-yes" ; then
1451 elif test "x-$x11_hidd_shm" = "x-yes" ; then
1452 dnl they explicitly asked for it, but we can't do it
1453 AC_MSG_ERROR([X11 has no support for shared memory, cannot enable it as requested])
1455 dnl otherwise just disable it
1460 dnl setup vidmode (fullscreen) extensions
1461 AC_ARG_ENABLE(x11_vidmode, AC_HELP_STRING([--enable-x11-vidmode],
1462 [use X11 vidmode extension (default=auto)]),
1463 x11_hidd_vidmode="$enableval",
1464 x11_hidd_vidmode="auto")
1465 case "x-$x11_hidd_vidmode" in
1466 x-yes|x-no|x-auto) ;;
1467 *) x11_hidd_vidmode="auto" ;;
1473 if test "x-$x11_hidd_vidmode" != "x-no" ; then
1475 dnl make sure X libs have vidmode functions
1476 save_cflags="$CFLAGS"
1477 CFLAGS="$CFLAGS $x_cflags"
1478 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, have_vidmode=yes)
1479 CFLAGS="$save_cflags"
1482 dnl detection done, prepare output
1483 if test "x-$have_vidmode" = "x-yes" ; then
1484 dnl we can do vidmode
1485 DO_VIDMODE_SUPPORT="1"
1486 elif test "x-$x11_hidd_vidmode" = "x-yes" ; then
1487 dnl they explicitly asked for it, but we can't do it
1488 AC_MSG_ERROR([X11 vidmode extension not available, cannot enable it as requested])
1490 dnl otherwise just disable it
1491 DO_VIDMODE_SUPPORT="0"
1495 aros_host_x11_includes=$x_includes
1496 aros_host_x11_libdirs=$x_libraries
1501 AC_ARG_ENABLE(sdl_hidd, AC_HELP_STRING([--enable-sdl-hidd],
1502 [build SDL hidd for hosted (default=auto)]),
1503 sdl_hidd="$enableval",
1505 case "x-$sdl_hidd" in
1506 x-yes|x-no|x-auto) ;;
1507 *) sdl_hidd="auto" ;;
1511 if test "x-$sdl_hidd" != "x-no" ; then
1514 AM_PATH_SDL([1.2.10], have_sdl="yes", have_sdl="no")
1516 if test "x-$have_sdl" != "x-yes" ; then
1519 if test "x-$sdl_hidd" != "x-auto" ; then
1520 dnl and they explicitly asked for it, bail out
1521 AC_MSG_ERROR([SDL libs/headers not found, cannot build SDL hidd as requested])
1525 dnl found it, setup the metatarget
1526 sdl_hidd_target=kernel-hidd-sdl
1527 aros_host_sdl_cflags=SDL_CFLAGS
1528 aros_host_sdl_libs=SDL_LIBS
1535 dnl See if the user wants dbus.library
1536 AC_MSG_CHECKING([if building of dbus.library is enabled])
1537 AC_ARG_ENABLE(dbus,AC_HELP_STRING([--enable-dbus],[Enable DBUS support via dbus.library (default=no)]),dbus="yes",dbus="no")
1538 if test "$dbus" = "yes" ; then
1540 DBUS_CFLAGS=`pkg-config --cflags dbus-1`
1541 DBUS_LIBFLAGS=`pkg-config --libs dbus-1`
1542 KERNEL_DBUS_KOBJ=kernel-dbus-kobj
1543 KERNEL_DBUS_INCLUDES=kernel-dbus-includes
1547 AC_MSG_RESULT($dbus)
1550 dnl --------------------------------------------------------------------
1551 dnl Configuration Output Section
1552 dnl --------------------------------------------------------------------
1557 AC_SUBST(aros_flavour)
1558 AC_SUBST(aros_flavour_uc)
1559 AC_SUBST(AROS_BUILDDIR)
1561 AC_SUBST(AROS_PORTSSRCDIR)
1564 AC_SUBST(aros_cc_pre)
1565 AC_SUBST(aros_host_strip)
1566 AC_SUBST(aros_host_arch)
1567 AC_SUBST(aros_host_cpu)
1568 AC_SUBST(aros_host_cc)
1569 AC_SUBST(aros_host_ar)
1570 AC_SUBST(aros_host_ranlib)
1571 AC_SUBST(aros_host_ld)
1572 AC_SUBST(aros_host_make)
1573 AC_SUBST(aros_host_cflags)
1574 AC_SUBST(aros_host_ldflags)
1575 AC_SUBST(aros_host_debug)
1576 AC_SUBST(aros_host_mkdep)
1577 AC_SUBST(aros_host_mkargs)
1578 AC_SUBST(aros_host_exe_suffix)
1579 AC_SUBST(aros_host_lib_suffix)
1580 AC_SUBST(aros_tools_dir)
1581 AC_SUBST(aros_host_aclocal)
1582 AC_SUBST(aros_host_autoconf)
1583 AC_SUBST(aros_host_autoheader)
1584 AC_SUBST(aros_host_automake)
1587 AC_SUBST(aros_target_guitheme)
1588 AC_SUBST(aros_target_bootloader)
1589 AC_SUBST(aros_target_arch)
1590 AC_SUBST(aros_target_cpu)
1591 AC_SUBST(aros_target_variant)
1592 AC_SUBST(aros_target_suffix)
1593 AC_SUBST(aros_target_incl)
1594 AC_SUBST(aros_target_ar)
1595 AC_SUBST(aros_target_ranlib)
1596 AC_SUBST(aros_kernel_nm)
1597 AC_SUBST(orig_target_cc)
1598 AC_SUBST(aros_target_cc)
1599 AC_SUBST(aros_kernel_cc)
1600 AC_SUBST(aros_target_as)
1601 AC_SUBST(orig_target_ld)
1602 AC_SUBST(aros_target_ld)
1603 AC_SUBST(aros_kernel_ld)
1604 AC_SUBST(aros_target_cc_includes)
1605 AC_SUBST(aros_target_cc_path)
1606 AC_SUBST(aros_target_objdump)
1607 AC_SUBST(aros_target_objcopy)
1608 AC_SUBST(aros_target_strip)
1609 AC_SUBST(aros_target_nm)
1610 AC_SUBST(aros_shared_default)
1611 AC_SUBST(aros_shared_ld)
1612 AC_SUBST(aros_object_format)
1613 AC_SUBST(aros_compiler_libs)
1615 AC_SUBST(aros_config_cflags)
1616 AC_SUBST(aros_config_aflags)
1617 AC_SUBST(aros_config_ldflags)
1619 AC_SUBST(aros_shared_cflags)
1620 AC_SUBST(aros_shared_aflags)
1621 AC_SUBST(aros_shared_ldflags)
1622 AC_SUBST(aros_kernel_cflags)
1623 AC_SUBST(aros_kernel_ldflags)
1624 AC_SUBST(aros_debug_cflags)
1625 AC_SUBST(aros_debug_aflags)
1626 AC_SUBST(aros_debug_ldflags)
1627 AC_SUBST(aros_target_genmap)
1628 AC_SUBST(aros_target_strip_flags)
1631 AC_SUBST(x11_hidd_target)
1632 AC_SUBST(sdl_hidd_target)
1634 AC_SUBST(aros_default_wbwidth)
1635 AC_SUBST(aros_default_wbheight)
1636 AC_SUBST(aros_default_wbdepth)
1637 AC_SUBST(DO_XSHM_SUPPORT)
1638 AC_SUBST(DO_VIDMODE_SUPPORT)
1640 AC_SUBST(aros_host_x11_includes)
1641 AC_SUBST(aros_host_x11_libdirs)
1642 AC_SUBST(aros_host_sdl_cflags)
1643 AC_SUBST(aros_host_sdl_libs)
1645 # Native version related
1646 AC_SUBST(aros_bochs_hack)
1647 AC_SUBST(aros_serial_debug)
1649 # Palm native version related
1650 AC_SUBST(aros_palm_debug_hack)
1652 # Unix/Hosted version related
1653 AC_SUBST(aros_nesting_supervisor)
1656 AC_SUBST(ENABLE_DBUS)
1657 AC_SUBST(DBUS_CFLAGS)
1658 AC_SUBST(DBUS_LIBFLAGS)
1659 AC_SUBST(KERNEL_DBUS_KOBJ)
1660 AC_SUBST(KERNEL_DBUS_INCLUDES)
1663 AC_SUBST(aros_debug)
1664 AC_SUBST(aros_mungwall_debug)
1665 AC_SUBST(aros_stack_debug)
1666 AC_SUBST(aros_modules_debug)
1668 # Collect-aros stuff: "-ius" to ignore undefined symbols
1669 AC_SUBST(ignore_undefined_symbols)
1671 # C compiler related
1672 AC_SUBST(gcc_target_cpu)
1674 dnl Prepare for output, make up all the generated patches
1675 case "$aros_flavour" in
1676 emulation) aros_flavour_uc="AROS_FLAVOUR_EMULATION"
1677 aros_flavour="emulation" ;;
1678 emulcompat) aros_flavour_uc="(AROS_FLAVOUR_EMULATION|AROS_FLAVOUR_BINCOMPAT)"
1679 aros_flavour="emulation" ;;
1680 standalone) aros_flavour_uc="AROS_FLAVOUR_STANDALONE"
1681 aros_flavour="standalone";;
1682 native) aros_flavour_uc="AROS_FLAVOUR_NATIVE"
1683 aros_flavour="native" ;;
1684 nativecompat) aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1685 aros_flavour="native" ;;
1686 linklib) aros_flavour_uc="AROS_FLAVOUR_LINKLIB"
1687 aros_flavour="linklib" ;;
1688 palmnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1689 aros_flavour="palmnative" ;;
1690 mac68knative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1691 aros_flavour="mac68knative" ;;
1692 ppcnative) aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_BINCOMPAT)"
1693 aros_flavour="ppcnative" ;;
1696 if test ! -d ${aros_inc_dir} ; then
1697 ${MKDIR} ${aros_inc_dir}
1699 if test ! -d ${aros_geninc_dir} ; then
1700 ${MKDIR} ${aros_geninc_dir}
1702 if test ! -d ${aros_hostcfg_dir} ; then
1703 ${MKDIR} ${aros_hostcfg_dir}
1705 if test ! -d ${aros_targetcfg_dir} ; then
1706 ${MKDIR} ${aros_targetcfg_dir}
1708 if test ! -d ${aros_tools_dir} ; then
1709 ${MKDIR} ${aros_tools_dir}
1711 if test ! -d ${aros_scripts_dir} ; then
1712 ${MKDIR} ${aros_scripts_dir}
1715 AC_CONFIG_HEADERS(${aros_geninc_dir}/host-conf.h:config/host-conf.h.in)
1717 AC_CONFIG_COMMANDS([compiler_executable],
1719 prefix=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}
1721 prefix="${prefix}/${aros_target_cpu}-aros"
1722 prefix2=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros
1726 chmod a+x ${prefix2}-gcc ${prefix2}-ld
1728 ln -sf ${prefix2}-gcc ${prefix}-gcc
1729 ln -sf ${prefix2}-ld ${prefix}-ld
1731 ln -sf $aros_target_as_ln ${prefix}-as
1732 ln -sf $aros_target_nm_ln ${prefix}-nm
1733 ln -sf $aros_target_ar_ln ${prefix}-ar
1734 ln -sf $aros_target_ranlib_ln ${prefix}-ranlib
1735 ln -sf $aros_target_objcopy_ln ${prefix}-objcopy
1736 ln -sf $aros_target_objdump_ln ${prefix}-objdump
1737 ln -sf $aros_target_strip_ln ${prefix}-strip
1739 ln -sf $aros_target_as_ln ${prefix2}-as
1740 ln -sf $aros_target_nm_ln ${prefix2}-nm
1741 ln -sf $aros_target_ar_ln ${prefix2}-ar
1742 ln -sf $aros_target_ranlib_ln ${prefix2}-ranlib
1743 ln -sf $aros_target_objcopy_ln ${prefix2}-objcopy
1744 ln -sf $aros_target_objdump_ln ${prefix2}-objdump
1745 ln -sf $aros_target_strip_ln ${prefix2}-strip
1748 aros_tools_dir=${aros_tools_dir}
1749 aros_target_cpu=${aros_target_cpu}
1750 aros_target_arch=${aros_target_arch}
1751 aros_target_suffix=${aros_target_suffix}
1752 aros_target_nm_ln=${aros_target_nm_ln}
1753 aros_target_as_ln=${aros_target_as_ln}
1754 aros_target_ar_ln=${aros_target_ar_ln}
1755 aros_target_ranlib_ln=${aros_target_ranlib_ln}
1756 aros_target_objdump_ln=${aros_target_objdump_ln}
1757 aros_target_objcopy_ln=${aros_target_objcopy_ln}
1758 aros_target_strip_ln=${aros_target_strip_ln}
1761 AC_CONFIG_COMMANDS([genshared_executable],
1762 [chmod a+x ${aros_scripts_dir}/genshared],
1763 [aros_scripts_dir=${aros_scripts_dir}]
1765 AC_CONFIG_COMMANDS([genmf_executable],
1766 [chmod a+x ${aros_tools_dir}/genmf.py],
1767 [aros_tools_dir=${aros_tools_dir}]
1769 AC_CONFIG_COMMANDS([adflib_myaros.conf_executable],
1770 [chmod a+x tools/adflib/myconf.aros]
1777 ${aros_inc_dir}/config.h:config/config.h.in
1778 ${aros_geninc_dir}/config.h:config/config.h.in
1779 ${aros_hostcfg_dir}/host.cfg:config/host.cfg.in
1780 ${aros_targetcfg_dir}/target.cfg:config/target.cfg.in
1782 ${aros_targetcfg_dir}/make.defaults:config/make.defaults.in
1783 ${aros_targetcfg_dir}/specs:config/specs.in
1784 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-gcc:scripts/aros-gcc.in
1785 ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-ld:scripts/aros-ld.in
1786 ${aros_scripts_dir}/genshared:compiler/c_lib/source/lib_source/genshared.in
1787 ${aros_tools_dir}/genmf.py:tools/genmf/genmf.py
1788 tools/adflib/myconf.aros
1789 tools/collect-aros/env.h
1794 dnl This is in order to not define SHARED_CFLAGS sometimes
1795 dnl We don't always do aros_shared_ar, aros_shared_cflags
1797 #XXX compatability...
1798 aros_shared_ar="$aros_shared_ld $aros_shared_ldflags -o"
1800 if test -n "$aros_shared_cflags" ; then
1801 echo "SHARED_CFLAGS := $aros_shared_cflags" >> ${aros_hostcfg_dir}/host.cfg
1802 echo "SHARED_AR := $aros_shared_ar" >> ${aros_hostcfg_dir}/host.cfg