r26191@plastic: rob | 2007-04-27 14:59:49 +1000
[cake.git] / configure.in
blob680b92b8f6928fab399c36200f00e916072b35a0
1 dnl Copyright (C) 1997-2006 AROS - The Amiga Research OS
2 dnl $Id$
3 dnl
4 dnl Desc: Autoconf source for configuration file
5 dnl Lang: english
7 #TODO
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 # ------------------------------------------------------------------------
15 AC_INIT(mmakefile)
16 AC_PREREQ(2.53)
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.
22 AC_CANONICAL_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
35     cross_compile=no
36 else
37     if test "$target" = "" ; then
38         target=$host_os-$host_cpu
39         cross_compile=no
40     else
41         cross_compile=yes
42     fi
44 AC_MSG_RESULT($target)
46 #don't know where else to put this...
47 TOPDIR=$PWD
49 # Parse the target field into something useful.
50 changequote(<<,>>)
51 target_os=`echo $target | sed 's/^\([^-]*\)-\(.*\)$/\1/'`
52 target_cpu=`echo $target | sed 's/^\([^-]*\)-\(.*\)$/\2/'`
53 changequote([,])
55 dnl --------------------------------------------------------------------
56 dnl Set the default Workbench resolution
57 dnl --------------------------------------------------------------------
58 aros_default_wbwidth=800
59 aros_default_wbheight=600
60 aros_default_wbdepth=4
62 dnl --------------------------------------------------------------------
63 dnl Host Configuration Section
64 dnl --------------------------------------------------------------------
65 dnl
66 dnl The idea here is to find out all the information we need about the
67 dnl host. This means things like tools for building directory structures,
68 dnl copying files around and the like.
70 # The first step is to find the host binaries.
71 # Check for a compiler.
72 AC_PROG_CC
73 AC_PROG_CC_STDC
74 AC_PROG_CPP
76 # Check for a compatible awk
77 AC_CHECK_PROGS(AWK,[gawk nawk])
78 AROS_REQUIRED(gawk,$AWK)
79 AROS_PROG(MMAKE,mmake)
81 # Perform some default variable assignments. Note all of these will be
82 # Regenerated from the script, so there is no need to cache them.
84 aros_host_cc="$CC"
85 AROS_TOOL_CCPATH(aros_host_ld,ld)
86 AROS_REQUIRED(ld,$aros_host_ld)
87 aros_host_make="make"
88 aros_host_cflags=$CFLAGS
89 aros_host_ldflags=$LDFLAGS
90 aros_host_debug="-g -O0"
91 aros_host_mkdep="\$(TOP)/scripts/mkdep"
92 aros_host_mkargs="--no-print-directory"
93 aros_host_incl="/usr/include"
94 aros_host_exe_suffix="$EXEEXT"
95 aros_host_lib_suffix=""
97 AC_CHECK_PROGS(aros_host_aclocal,[aclocal aclocal19])
98 AC_CHECK_PROGS(aros_host_autoconf,[autoconf autoconf259 autoconf253])
99 AC_CHECK_PROGS(aros_host_autoheader,[autoheader autoheader259 autoheader253])
100 AC_CHECK_PROGS(aros_host_automake,[automake automake19])
102 case "$aros_host_cc" in
103     *gcc*)
104         aros_host_cc_pipe="-pipe"
105         ;;
106     icc)
107         aros_host_cc_pipe=""
108         ;;
109     *)
110         aros_host_cc_pipe=""
111         ;;
112 esac
114 dnl Despite the name, this is really a host configuration variable.
115 aros_target_cc_includes=""
117 # This is the main host configuration section. It is where the host
118 # can change the values of any variables it needs to change. We do
119 # not look at anything that compiles to the target yet, we'll get
120 # to that later.
122 case "$host_os" in
123     linux*)
124         aros_host_arch="linux"
125         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
126         case "$host_cpu" in
127             *i?86*)
128                 aros_host_cpu="i386"
129                 ;;
130             *x86_64*)
131                 aros_host_cpu="x86_64"
132                 ;;
133             *m68k*)
134                 aros_host_cpu="m68k"
135                 ;;
136             *powerpc*)
137                 aros_host_cpu="ppc"
138                 ;;
139             *)
140                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
141                 aros_host_cpu="$host_cpu"
142                 ;;
143         esac
144         ;;
146     freebsd*)
147         aros_host_cc="$aros_host_cc $aros_host_cc_pipe -I/usr/local/include"
148         aros_host_make="gmake"
149         aros_host_arch="freebsd"
150         aros_host_cpu="i386"
152         aros_host_ldflags="$aros_host_ldflags -L/usr/local/lib -liconv"
154         dnl Need to override this here, it's just too hard later.
155         dnl This shouldn't be here at all...
156         dnl aros_target_cc_includes="/usr/include"
158         dnl FreeBSD 5.x (and later) has changed the default object format.
159         dnl The double [[]] is necessary to get around m4's quoting rules.
160         case $host_os in
161             freebsd[[234]]*)
162                 aros_object_format="elf_i386"
163                 ;;
165             *)
166                 aros_object_format="elf_i386_fbsd"
167                 ;;
168         esac
170         ;;
172     darwin*)
173         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
174         aros_host_arch="darwin"
175         case "$host_cpu" in
176             *i?86*)
177                 aros_host_cpu="i386"
178                 ;;
179             *powerpc*)
180                 aros_host_cpu="ppc"
181                 ;;
182             *)
183                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
184                 aros_host_cpu="$host_cpu"
185                 ;;
186         esac
188         aros_host_ldflags="$aros_host_ldflags -liconv"
190         ;;
192     netbsd*)
193         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
194         aros_host_make="gmake"
195         aros_host_arch="netbsd"
196         case "$host_cpu" in
197             *i?86*)
198                 aros_host_cpu="i386"
199                 ;;
200             *m68k*)
201                 aros_host_cpu="m68k"
202                 ;;
203             *)
204                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
205                 aros_host_cpu="$host_cpu"
206                 ;;
207         esac    
208         aros_host_lib_suffix=".0.0"
209         ;;
211     openbsd*)
212         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
213         aros_host_make="gmake"
214         aros_host_arch="openbsd"
215         case "$host_cpu" in
216             *i?86*)
217                 aros_host_cpu="i386"
218                 ;;
219             *)
220                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
221                 aros_host_cpu="$host_cpu"
222                 ;;
223         esac
224         ;;
225         
226     solaris*)
227         aros_host_arch="solaris"
228         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
229         case "$host_cpu" in
230             *sparc*)
231                 aros_host_cpu="sparc"
232                 ;;
233             *)
234                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
235                 aros_host_cpu="$host_cpu"
236                 ;;
237         esac
238         ;;
240     morphos*)
241         aros_host_arch="morphos"
242         aros_host_cpu="ppc"
243         ;;
245     amiga*)
246         aros_host_arch="amiga"
247         SORT="/gg/bin/sort"
248         TEST="/gg/bin/test"
249         UNIQ="/gg/bin/uniq"
250         FOR="for"
251         TOUCH="/gg/bin/touch"
252         case "$host_cpu" in
253             *m68k*)
254                 aros_host_cpu="m68k"
255                 ;;
256             *powerpc*)
257                 aros_host_cpu="ppc"
258                 ;;
259             *)
260                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
261                 aros_host_cpu="$host_cpu"
262                 ;;
263         esac
264         ;;
266     cygwin*)
267         aros_host_arch="cygwin"
268         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
269         case "$host_cpu" in
270             *i?86*)
271                 aros_host_cpu="i386"
272                 ;;
273             *)
274                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
275                 aros_host_cpu="$host_cpu"
276                 ;;
277         esac
278         ;;
279     *)
280         AC_MSG_ERROR([Unsupported host architecture $host])
281         ;;
282 esac
284 AROS_PROG(aros_host_ar,[ar],[cr])
285 AROS_REQUIRED(ar,$aros_host_ar)
286 AROS_PROG(aros_host_ranlib,ranlib)
287 AROS_REQUIRED(ranlib,$aros_host_ranlib)
288 AROS_PROG(aros_host_strip,strip)
289 AROS_REQUIRED(strip,$aros_host_strip)
291 AROS_PROG(RM,[rm],[-rf])
292 AROS_REQUIRED(rm,$RM)
293 AROS_PROG(CP,[cp])
294 AROS_REQUIRED(cp,$CP)
295 AROS_PROG(MV,[mv])
296 AROS_REQUIRED(mv,$MV)
297 AROS_PROG(ECHO,[echo])
298 AROS_REQUIRED(echo,$ECHO)
299 AROS_PROG(MKDIR,[mkdir],[-p])
300 AROS_REQUIRED(mkdir,$MKDIR)
301 AROS_PROG(TOUCH,[touch])
302 AROS_REQUIRED(touch,$TOUCH)
303 AROS_PROG(SORT,[sort])
304 AROS_REQUIRED(sort,$SORT)
305 AROS_PROG(UNIQ,[uniq])
306 AROS_REQUIRED(uniq,$UNIQ)
307 AROS_PROG(NOP,[true])
308 AROS_REQUIRED(true,$NOP)
309 AROS_PROG(CAT,[cat])
310 AROS_REQUIRED(cat,$CAT)
311 AROS_PROG(BISON,[bison])
312 AROS_REQUIRED(bison,$BISON)
313 AROS_PROG(FLEX,[flex])
314 AROS_REQUIRED(flex,$FLEX)
315 AROS_PROG(PNGTOPNM,[pngtopnm])
316 AROS_REQUIRED(pngtopnm,$PNGTOPNM)
317 AROS_PROG(PPMTOILBM,[ppmtoilbm])
318 AROS_REQUIRED(ppmtoilbm,$PPMTOILBM)
319 AROS_PROG(SED,[sed])
320 AROS_REQUIRED(sed,$SED)
321 AROS_PROG(CHMOD,[chmod])
322 AROS_REQUIRED(chmod,$CHMOD)
324 AM_PATH_PYTHON(2.2.1)
326 AC_SUBST(FOR, for)
327 AC_SUBST(IF, if)
328 AC_SUBST(TEST, test)
329 AC_SUBST(CMP, cmp)
331 dnl ---------------------------------------------------------------------------
332 dnl Look for things about the host system, good for hosted targets.
333 dnl ---------------------------------------------------------------------------
335 # Check for some includes for the X11 HIDD and the kernel
336 AC_CHECK_HEADERS([sys/ipc.h sys/shm.h \
337     sys/mmap.h sys/mman.h sysexits.h \
338     sys/statfs.h sys/statvfs.h sys/vfs.h sys/param.h \
341 AC_CHECK_HEADERS([sys/mount.h],,,[#include <sys/param.h>])
343 AC_HEADER_DIRENT
344 AC_HEADER_STAT
345 AC_HEADER_STDC
346 AC_HEADER_SYS_WAIT
347 AC_HEADER_TIME
348 AC_STRUCT_ST_BLKSIZE
349 AC_STRUCT_ST_BLOCKS
350 AC_STRUCT_ST_RDEV
351 AC_STRUCT_TM
352 AC_STRUCT_TIMEZONE
353 AC_TYPE_OFF_T
354 AC_TYPE_PID_T
355 AC_TYPE_SIZE_T
356 AC_TYPE_UID_T
358 AC_CHECK_MEMBERS(struct tm.tm_gmtoff)
360 # Look for some functions
361 AC_CHECK_FUNCS([getpagesize kqueue statfs statvfs \
362     clone kse_create rfork_thread thr_create sa_register \
363     getcontext makecontext setcontext sigaltstack swapcontext])
365 AC_FUNC_MMAP
367 # Find X
368 AC_PATH_X
371 dnl --------------------------------------------------------------------
372 dnl Target Configuration Section
373 dnl --------------------------------------------------------------------
375 dnl The target configuration section is responsible for setting up all
376 dnl the paths for includes, and tools required to build AROS to some
377 dnl particular target.
379 aros_config_cflags="-Wall -Werror-implicit-function-declaration"
380 aros_config_aflags="-Wall -x assembler-with-cpp -c"
381 aros_config_ldflags=""
383 aros_shared_default=yes
385 aros_shared_cflags="-fPIC"
386 aros_shared_aflags=""
387 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
388 aros_kernel_ldflags="-Wl,-rpath,./lib"
390 aros_target_ar_flags="cr"
391 aros_target_nm_flags="-C -ul"
392 aros_target_strip_flags="--strip-unneeded -R.comment"
394 aros_compiler_libs=
396 aros_target_genmap="-Wl,-Map -Xlinker"
398 # Native flavour stuff
399 aros_bochs_hack="0"
400 aros_serial_debug="0"
402 # Palm native flavour stuff
403 aros_palm_debug_hack="0"
405 # Unix flavour stuff
406 aros_nesting_supervisor="0"
408 # Collect-aros stuff: "-ius" to ignore undefined symbols
409 ignore_undefined_symbols=""
411 # X11 Xshm
412 DO_XSHM_SUPPORT="1"
413 DO_VIDMODE_SUPPORT="1"
415 #-----------------------------------------------------------------------------
417 AC_MSG_CHECKING([for type of build])
418 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")
420 if test "$build_type" = "nightly"; then
421     build_type_string="NIGHTLY"
422 elif test "$build_type" = "snapshot"; then
423     build_type_string="SNAPSHOT"
424 elif test "$build_type" = "milestone"; then
425     build_type_string="MILESTONE"
426 elif test "$build_type" = "release"; then
427     build_type_string="RELEASE"
428 else
429     build_type_string="PERSONAL"
430     build_type="personal"
433 aros_config_cflags="$aros_config_cflags -DAROS_BUILD_TYPE=AROS_BUILD_TYPE_$build_type_string"
435 AC_MSG_RESULT($build_type)
437 #-----------------------------------------------------------------------------
438 all_debug_types="messages stack mungwall modules symbols"
440 AC_MSG_CHECKING([which debug types to enable])
441 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)]),
442  debug="$enableval",debug="")
444 if test "$debug" = "" -o "$debug" = "no"; then
445     debug="none"
446 elif test "$debug" = "yes"; then
447     debug="all"
450 if test "$debug" = "all" ; then
451     debug=$all_debug_types
452     for d in $all_debug_types; do
453         export aros_${d}_debug="1"
454     done
455 else
456     for d in $all_debug_types; do
457         export aros_${d}_debug="0"
458     done
461 if test "$debug" != "none"; then
462     debug=`echo $debug | sed s/,/\ /g`
463     for d in $debug; do
464         found="0"
465         for d2 in $all_debug_types; do
466             if test "$d2" = "$d"; then
467                 found="1"
468                 break
469             fi
470         done
471         if test "$found" = "0"; then
472             AC_MSG_ERROR([unrecognized debug type "$d". Available types are: all none $all_debug_types])
473         fi
474         export aros_${d}_debug="1"
475     done
476     aros_debug="yes"
478 AC_MSG_RESULT($debug)
480 if test "$aros_messages_debug" = "1"; then
481     aros_messages_debug="-DADEBUG=1 -DMDEBUG=1"
482 else
483     aros_messages_debug=""
485 if test "$aros_symbols_debug" = "1"; then
486     aros_symbols_debug="-g"
487 else
488     aros_symbols_debug=""
491 # These are the flags to pass when compiling debugged programs
492 aros_debug_cflags="$aros_symbols_debug $aros_messages_debug"
493 aros_debug_aflags=""
494 aros_debug_ldflags="$aros_symbols_debug"
496 #-----------------------------------------------------------------------------
497 #   Checking for distcc and ccache.
499 #   Always apply the transforms in this particular order. Basically you should
500 #   always run 'ccache distcc compiler' in that order for the best performance.
502 AC_MSG_CHECKING([whether to enable distcc])
503 AC_ARG_ENABLE(distcc,AC_HELP_STRING([--enable-distcc],[Use distcc as a front end to the compiler (default=no).]),distcc="$enableval",distcc="no")
504 if test "$distcc" != "" -a "$distcc" != "no"; then
505     # AC_CHECK_PROG will print out the result in this case
506     AC_PATH_PROG(DISTCC,[distcc],distcc,)
507 else
508     AC_MSG_RESULT(no)
511 AC_MSG_CHECKING([whether to enable ccache])
512 AC_ARG_ENABLE(ccache,AC_HELP_STRING([--enable-ccache],[Use ccache as a front end to the compiler (default=no).]),ccache="$enableval",ccache="no")
513 if test "$ccache" != "" -a "$ccache" != "no"; then
514     # AC_CHECK_PROG will print out the result in this case
515     AC_CHECK_PROG(CCACHE,[ccache],ccache,)
516 else
517     AC_MSG_RESULT(no)
520 #-----------------------------------------------------------------------------
521 AC_MSG_CHECKING([what optimization flags to use])
522 AC_ARG_WITH(optimization,AC_HELP_STRING([--with-optimization=FLAGS],[Use optimization flags FLAGS (default=-O2).]),optimization="$withval",optimization="unknown")
523 if test "$optimization" = "unknown"; then
524     dnl default is -O2 for normal builds, -O0 for debug builds
525     if test "$debug" != "none"; then
526         optimization="-O0"
527     else
528         optimization="-O2"
529     fi
531 aros_config_cflags="$aros_config_cflags $optimization"
532 AC_MSG_RESULT($optimization)
534 #-----------------------------------------------------------------------------
535 AC_MSG_CHECKING([what target variant to enable])
536 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")
537 if test "$target_variant" = "none"; then
538     aros_target_variant=""
539     aros_target_suffix=""
540 else
541     aros_target_variant="$target_variant"
542     aros_target_suffix="-$target_variant"
544 AC_MSG_RESULT($enableval)
546 #-----------------------------------------------------------------------------
547 # This is the target configuration switch.
548 case "$target_os" in
549     linux*)
550         aros_target_arch="linux"
551         case "$target_cpu" in
552             *m68k*)
553                 aros_target_cpu="m68k"
554                 aros_object_format="m68kelf"
555                 aros_flavour="emulcompat"
556                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__linux__"
557                 aros_shared_ldflags="-Wl,-T,\$(TOP)/config/linux/m68k/script.so"
558                 aros_kernel_ldflags="-Wl,-rpath,./lib,-T,\$(TOP)/config/linux/m68k/script.normal"
559                 gcc_target_cpu="mc68000"
560                 ;;
561             *i?86*)
562                 aros_target_cpu="i386"
563                 aros_object_format="elf_i386"
564                 aros_flavour="emulation"
565                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__linux__"
566                 aros_default_wbdepth=8
567                 gcc_target_cpu="i386"
568                 ;;
569             *x86_64*)
570                 aros_target_cpu="x86_64"
571                 aros_object_format="elf_x86_64"
572                 aros_flavour="emulation"
573                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64 -D__linux__"
574                 aros_default_wbdepth=8
575                 gcc_target_cpu="x86_64"
576                 ;;
577             *powerpc*)
578                 aros_target_cpu="ppc"
579                 aros_object_format="elf32ppc"
580                 aros_flavour="emulation"
581                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
582                 aros_default_wbdepth=8
583                 gcc_target_cpu="ppc"
584                 ;;
585             *)
586                 AC_MSG_ERROR("Unknown CPU for Linux -- $target_cpu")
587                 ;;
588         esac
589     ;;
591     pc)
592         aros_target_arch="pc"
593         aros_shared_default="no"
594         case "$target_cpu" in
595             *i?86*)
596                 aros_target_cpu="i386"
598                 dnl If somebody hasn't already set the target object
599                 dnl format, then use this value. Mostly to support
600                 dnl FreeBSD cross-compilation.
601                 dnl TODO: Remove when we always use our compiler.
603                 if test "$aros_object_format" = "" ; then
604                     aros_object_format="elf_i386"
605                 fi
606                 aros_flavour="standalone"
607                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
608                 aros_kernel_ldflags=""
609                 aros_default_wbwidth=640
610                 aros_default_wbheight=480
611                 gcc_target_cpu="i386"
612                 ;;
613             *)
614                 AC_MSG_ERROR("Unknown native CPU -- $target_cpu")
615                 ;;
616         esac
617         ;;
619     prep)
620         aros_target_arch="prep"
621         aros_shared_default="no"
622         aros_target_cpu="ppc"
623         aros_object_format="elf32ppc"
624         aros_flavour="ppcnative"
625         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
626         aros_kernel_ldflags=""
627         aros_default_wbwidth=640
628         aros_default_wbheight=480
629         gcc_target_cpu="ppc"
630         case "$target_cpu" in
631             *cross*)
632                 aros_target_cc="ppc-linux-gcc -pipe"
633                 aros_target_ld="ppc-linux-ld"
634                 aros_target_as="ppc-linux-as"
635                 aros_target_ar="ppc-linux-ar"
636                 aros_target_ranlib="ppc-linux-ranlib"
637                 aros_target_nm="ppc-linux-nm"
638                 aros_target_strip="ppc-linux-strip"
639                 aros_target_objcopy="ppc-linux-objcopy"
640                 aros_target_objdump="ppc-linux-objdump"
641                 aros_shared_ld="ppc-linux-ld"
642                 aros_kernel_ld="ppc-linux-ld"
643                 ;;
644             *)
645                 ;;
646         esac
647         ;;
649     freebsd*)
650         aros_target_arch="freebsd"
651         aros_target_cpu="i386"
652         aros_flavour="emulation"
653         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
654         gcc_target_cpu="i386"
656         aros_target_strip_flags="-x"
657         ;;
659     darwin*)
660         aros_target_arch="darwin"
661         aros_target_cpu="i386"
662         aros_flavour="emulation"
663         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
664         gcc_target_cpu="i386"
666         aros_target_strip_flags="-x"
667         ;;
669     netbsd*)
670         aros_target_arch="netbsd"
671         case "$target_cpu" in
672             *m68k*)
673                 aros_target_cpu="m68k"
674                 aros_object_format="m68kelf"
675                 aros_flavour="emulcompat"
676                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__NetBSD__"
677                 gcc_target_cpu="mc68000"
678                 ;;
679             *i?86*)
680                 aros_target_cpu="i386"
681                 aros_object_format="elf_i386"
682                 aros_flavour="emulation"
683                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__NetBSD__"
684                 aros_default_wbdepth=8
685                 gcc_target_cpu="i386"
686                 ;;
687             *)
688                 AC_MSG_ERROR("Unknown CPU for NetBSD -- $target_cpu")
689                 ;;
690         esac
691         aros_target_genmap="-Wl,-M -Xlinker >"
692         aros_flavour="emulation"
693         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
694         ;;   
696     openbsd*)
697         aros_target_arch="openbsd"
698         case "$target_cpu" in
699             *i?86*)
700                 aros_target_cpu="i386"
701                 aros_object_format="elf_i386"
702                 aros_flavour="emulation"
703                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__OpenBSD__"
704                 gcc_target_cpu="i386"
705                 ;;
706             *)
707                 AC_MSG_ERROR("Unknown CPU for OpenBSD -- $target_cpu")
708                 ;;
709         esac
710         aros_target_genmap="-Wl,-M -Xlinker >"
711         aros_target_nm_flags="-u"
712         aros_flavour="emulation"
713         ;;
715     solaris*)
716         aros_target_arch="solaris"
717         case "$target_cpu" in
718             *sparc*)
719                 aros_target_cpu="sparc"
720                 aros_object_format="elf_sparc"
721                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dsparc -D__Solaris__"
722                 gcc_target_cpu="sparc"
723                 ;;
724             *)
725                 AC_MSG_ERROR("Unknown CPU for Solaris -- $target_cpu")
726                 ;;
727         esac
728         aros_config_cflags="$aros_config_cflags -D$aros_target_cpu"
729         aros_flavour="emulation"
730         ;;
732     morphos*)
733         aros_target_arch="morphos"
734         aros_shared_default="no"
735         aros_target_cpu="ppc"
736         aros_object_format="elf_ppc"
737         aros_flavour="nativecompat"
738         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
739         gcc_target_cpu="ppc"
740         ;;
742     amiga*)
743         aros_target_arch="amiga"
744         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D_AMIGA -DAMIGA"
745         aros_shared_default="no"
747         aros_config_cflags="$aros_config_cflags -fomit-frame-pointer -fbuiltin -ffreestanding"
749         case "$target_cpu" in
750             *m68k*)
751                 aros_target_cpu="m68k"
752                 aros_object_format="m68kelf"
753                 aros_flavour="nativecompat"
754                 gcc_target_cpu="mc68000"
755                 ;;
756             *ppc*)
757                 aros_cpu="ppc"
758                 aros_flavour="native"
759                 gcc_target_cpu="ppc"
760                 ;;
761             *)
762                 AC_MSG_ERROR("Unknown CPU for Amiga $target_cpu")
763                 ;;
764         esac
765         ;;
767     cygwin*)
768         aros_target_arch="cygwin"
769         aros_shared_default="no"
770         case "$target_cpu" in
771             *i?86*)
772                 aros_target_cpu="i386"
773                 aros_object_format="elf_i386"
774                 aros_flavour="emulation"
775                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__CYGWIN32__"
776                 aros_shared_cflags=""
777                 aros_default_wbdepth=8
778                 gcc_target_cpu="i386"
779                 ;;
780             *)
781                 AC_MSG_ERROR("Unknown CPU for CygWin -- $target_cpu")
782                 ;;
783         esac
784     ;;
785     pp*)
786         aros_target_arch="pp"
787         aros_shared_default="no"
788         case "$target_cpu" in
789             *m68k*)
790                 aros_target_cpu="m68k"
791                 aros_object_format="m68kelf"
792                 aros_flavour="palmnative"
793                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
794                 aros_kernel_ldflags=""
795                 aros_default_wbwidth=160
796                 aros_default_wbheight=160
797                 aros_default_wbdepth=1
798                 aros_target_cc="m68k-elf-gcc -pipe"
799                 aros_target_ld="$(which m68k-elf-ld)"
800                 aros_target_as="m68k-elf-gcc -pipe"
801                 aros_shared_ld="m68k-elf-gcc"
802                 aros_kernel_ld="m68k-elf-gcc"
803                 aros_target_ar="m68k-elf-ar"
804                 aros_target_ar_flags="cru"
805                 aros_target_ranlib="m68k-elf-ranlib"
806                 aros_target_nm="m68k-elf-nm"
807                 aros_target_objcopy="m68k-elf-objcopy"
808                 aros_target_objdump="m68k-elf-objdump"
809                 aros_compiler_libs="-lgcc1"
810                 aros_shared_default=no
811                 aros_shared_cflags="-fpic"
812                 aros_shared_aflags=""
813                 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
814                 aros_kernel_ldflags="-Wl,-rpath,./lib"
815                 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug  $aros_messages_debug -mc68000 -Wa,-mc68000"
816                 aros_debug_aflags=""
817                 aros_debug_ldflags="$aros_symbols_debug"
818                 aros_mungwall_debug="0"
819                 aros_modules_debug="0"
820                 gcc_target_cpu="mc68000"
821                 ignore_undefined_symbols="-ius"
822                 ;;
823            *)
824                 AC_MSG_ERROR("Unknown CPU for PalmPilot -- $target_cpu")
825                 ;;
826         esac
827         ;;
829     mac*)
830         aros_target_arch="mac"
831         aros_shared_default="no"
832         case "$target_cpu" in
833             *m68k*)
834                 aros_target_cpu="m68k"
835                 aros_object_format="m68kelf"
836                 aros_flavour="mac68knative"
837                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
838                 aros_default_wbwidth=512
839                 aros_default_wbheight=384
840                 aros_default_wbdepth=8
841                 aros_target_cc="m68k-elf-gcc -pipe"
842                 aros_target_ld="$(which m68k-elf-ld)"
843                 aros_target_as="m68k-elf-gcc -pipe"
844                 aros_shared_ld="m68k-elf-gcc"
845                 aros_kernel_ld="m68k-elf-gcc"
846                 aros_target_ar="m68k-elf-ar"
847                 aros_target_ar_flags="cru"
848                 aros_target_ranlib="m68k-elf-ranlib"
849                 aros_target_nm="m68k-elf-nm"
850                 aros_target_objcopy="m68k-elf-objcopy"
851                 aros_target_objdump="m68k-elf-objdump"
852                 aros_compiler_libs="-lgcc1"
853                 aros_shared_default=no
854                 aros_shared_cflags="-fpic"
855                 aros_shared_aflags=""
856                 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
857                 aros_kernel_ldflags="-Wl,-rpath,./lib"
858                 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug  $aros_messages_debug -mc68000"
859                 aros_debug_aflags=""
860                 aros_debug_ldflags="$aros_symbols_debug"
861                 aros_mungwall_debug="0"
862                 aros_modules_debug="0"
863                 gcc_target_cpu="mc68000"
864                 ignore_undefined_symbols="-ius"
865                 ;;
866            *)
867                 AC_MSG_ERROR("Unknown CPU for Mac68k -- $target_cpu")
868                 ;;
869         esac
870         ;;
872     *)
873         AC_MSG_ERROR([Unsupported target architecture $target])
874         ;;
875 esac
878 # Find out if we are cross-compiling (ie. if we can't use the host compiler
879 # for target code)
880 cross_compiling=no
881 if test "$aros_host_cpu" != "$aros_target_cpu" ; then
882     cross_compiling=yes
884 if test "$aros_host_arch" == "darwin" ; then
885     cross_compiling=yes
888 # Set prefix for target compiler etc. if we're cross-compiling
889 # (should possibly be earlier but needs to be after AC_PROG_CC)
890 if test "$cross_compiling" = "yes" ; then
891     target_tool_prefix=${target_cpu}-elf-
892     CC=${target_tool_prefix}gcc
895 # Find all the tools we need to compile. This could be cross-compiling
896 # though! If that is the case we use the GNU form of the target and
897 # simply add this to the front of the binary name. This is rather simple,
898 # but it should work under most circumstances.
900 # The default tools are to use the same as the host, but only if the
901 # host and target CPU are the same. With GCC this is normally enough.
904 aros_cc_pre=""
905 aros_shared_ld="$aros_host_ld"
907 aros_target_mkdep="$aros_host_mkdep"
908 aros_target_incl_def="$aros_host_incl"
910 AC_PATH_PROG(aros_kernel_cc,$CC)
912 # The default tools executables to be linked to.
913 AROS_TOOL_TARGET(aros_target_as_ln,as)
914 AROS_REQUIRED(as,$aros_target_as_ln)
915 AROS_TOOL_TARGET(aros_kernel_ld,ld)
916 AROS_REQUIRED(ld,$aros_kernel_ld)
917 AROS_TOOL_TARGET(aros_target_ar_ln,ar)
918 AROS_REQUIRED(ar,$aros_target_ar_ln)
919 AROS_TOOL_TARGET(aros_target_nm_ln,nm)
920 AROS_REQUIRED(nm,$aros_target_nm_ln)
921 AROS_TOOL_TARGET(aros_target_objcopy_ln,objcopy)
922 AROS_REQUIRED(objcopy,$aros_target_objcopy_ln)
923 AROS_TOOL_TARGET(aros_target_objdump_ln,objdump)
924 AROS_REQUIRED(objdump,$aros_target_objdump_ln)
925 AROS_TOOL_TARGET(aros_target_ranlib_ln,ranlib)
926 AROS_REQUIRED(ranlib,$aros_target_ranlib_ln)
927 AROS_TOOL_TARGET(aros_target_strip_ln,strip)
928 AROS_REQUIRED(strip,$aros_target_strip_ln)
930 if test "$GCC" = "yes"; then
931     aros_target_cc_path=`$aros_kernel_cc -print-search-dirs | grep "programs: =" | cut -c 12-`
934 aros_hostcfg_dir="bin/${aros_host_arch}-${aros_host_cpu}/gen/config"
935 aros_targetcfg_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/config"
936 aros_inc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/AROS/Development/include/aros"
937 aros_gendir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen"
938 aros_geninc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/include/aros"
939 aros_tools_dir="bin/${aros_host_arch}-${aros_host_cpu}/tools"
940 aros_scripts_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/scripts"
942 # aros_cc_pre is a variable that is added to the front of the compiler name
943 # in the generated aros-gcc shell script. We need this to enable the cache
944 # to work across cleaned builds. Also, support DISTCC using the correct
945 # environment variable.
948 if test "x${DISTCC}" != "x" ; then
949     if test "x${CCACHE}" != "x" ; then
950         aros_cc_pre="env CCACHE_PREFIX=${DISTCC} ${CCACHE} "
951     else
952         aros_cc_pre="${DISTCC} "
953     fi
954 else
955     if test "x${CCACHE}" != "x" ; then
956         aros_cc_pre="${CCACHE} "
957     fi
960 prefix="${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros"
962 AC_SUBST(aros_target_nostdinc_cflags,-nostdinc)
963 AC_SUBST(aros_target_nostartup_ldflags,-nostartfiles)
964 AC_SUBST(aros_target_nix_ldflags,-nix)
965 AC_SUBST(aros_target_detach_ldflags,-detach)
966 AC_SUBST(aros_target_nostdlib_ldflags,-nostdlib)
968 # Target tools
969 aros_target_cc="${prefix}-gcc"
970 aros_target_as="${prefix}-as"
971 aros_target_ld="${prefix}-ld"
972 aros_target_ar="${prefix}-ar $aros_target_ar_flags"
973 aros_target_objcopy=${prefix}-objcopy
974 aros_target_objdump=${prefix}-objdump
975 aros_target_ranlib="${prefix}-ranlib $aros_target_ranlib_flags"
976 aros_target_nm="${prefix}-nm $aros_target_nm_flags"
977 aros_kernel_nm="${prefix}-nm"
978 aros_target_strip=${prefix}-strip
980 #-----------------------------------------------------------------------------
981 # See if we can compile SHM support
982 HAVE_XSHM_SUPPORT=0
983 if [[ "x$no_x" != "xyes" -a "x$ac_cv_header_sys_ipc_h" = "xyes" -a "x$ac_cv_header_sys_shm_h" = "xyes" ]]; then
984   AC_MSG_CHECKING(whether the X11 MIT-SHM extension can be compiled in)
985   if test -z "$x_includes" ; then
986     CFLAGS=""
987   else
988     CFLAGS="-I $x_includes"
989   fi
990   LIBS="-L/usr/X11/lib -L/usr/X11R6/lib -lX11 -lXext"
991   AC_TRY_LINK([
992 #include <sys/types.h>
993 #include <X11/Xlib.h>
994 #include <X11/Xutil.h>
995 #include <X11/keysym.h>
996 #include <X11/cursorfont.h>
997 #include <sys/ipc.h>
998 #include <sys/shm.h>
999 #include <X11/extensions/XShm.h>],[
1000 static XShmSegmentInfo shminfo;
1001 static Display *display;
1002 XShmAttach(display, &shminfo);
1003 XSync(display,0);
1004 shmctl(shminfo.shmid, IPC_RMID, 0);
1006 HAVE_XSHM_SUPPORT=1
1007 AC_MSG_RESULT(yes),
1008 HAVE_XSHM_SUPPORT=0
1009 AC_MSG_RESULT(no))
1012 #-----------------------------------------------------------------------------
1013 # See if we can compile VIDMODE support
1014 HAVE_VIDMODE_SUPPORT=0
1015 if [[ "x$no_x" != "xyes" ]]; then
1016   LIBS=""
1017   AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, HAVE_VIDMODE_SUPPORT=1, HAVE_VIDMODE_SUPPORT=0, [ -L/usr/X11R6/lib -lXext -lX11 ])
1021 # Find the system include path. We can suggest that an alternative is
1022 # used if we don't get it correct. The default is to use /usr/include.
1023 # Which is set in the aros_target_incl_def variable.
1025 AC_ARG_ENABLE(includes,
1026 AC_HELP_STRING([--enable-includes=dir],[Alternative system include directory]),
1027 [aros_target_incl=$enable_includes], [aros_target_incl=$aros_target_incl_def])
1029 dnl find out about the target cc's include path
1030 AC_MSG_CHECKING([for the target compiler's include path])
1031 if test "$aros_target_cc_includes" = "" ; then
1032     #try to guess where the directory is
1033     aros_target_cc_includes=`dirname \`${aros_kernel_cc} -print-libgcc-file-name\``/include
1034     if ! test -d $aros_target_cc_includes; then
1035         #the directory doesn't exist, we need to do some more work
1036         aros_target_cc_includes=${PWD}/${aros_gendir}/cc_include
1037         
1038         #these are the headers we're looling for
1039         headers="limits.h mmintrin.h stdbool.h syslimits.h float.h \
1040                  stddef.h xmmintrin.h iso646.h stdarg.h unwind.h   \
1041                  zutil.h"
1043         dirs=
1044         for h in $headers; do
1045             #which other headers each of the above headers needs?
1046             deps=$(echo "#include <$h>" | \
1047                    $aros_host_cc -E -M - 2>/dev/null | \
1048                    sed 's/^.*://; s/\\$/ /g; s/[[ \t]]\+/ /g')
1049             
1050             #copy all the needed headers to a directory beneath gendir
1051             for d in $deps; do
1052                 h=$(basename $d)
1053                 dir=${aros_target_cc_includes}$(echo $(dirname $d) | \
1054                                                 sed -n "s,^.*/include\(/.*\),\1,p")
1055                 ! test -d $dir && mkdir -p $dir
1056                 ! test -f $dir/$h && { cp $d $dir; chmod u+w $dir/$h; }
1057             done
1058         done        
1059     fi
1061 AC_MSG_RESULT($aros_target_cc_includes)
1063 dnl Check if user specified --with-resolution=XRESxYRESxDEPTH
1064 AC_MSG_CHECKING([for default resolution of WBScreen])
1065 AC_ARG_WITH(resolution,AC_HELP_STRING([--with-resolution=XRESxYRESxDEPTH],[Default resolution of the initial WorkbenchScreen]),resolution=$withval,resolution=none)
1066 # We require an argument, so map --with/--without ("yes"/"no") to "none" specified
1067 if test "$resolution" = "yes" ; then
1068     resolution="none"
1070 if test "$resolution" = "no" ; then
1071     resolution="none"
1073 if test "$resolution" != "none" ; then
1074     aros_default_wbwidth=`echo $resolution | cut -d'x' -f1`
1075     aros_default_wbheight=`echo $resolution | cut -d'x' -f2`
1076     aros_default_wbdepth=`echo $resolution | cut -d'x' -f3`
1078 AC_MSG_RESULT($aros_default_wbwidth x $aros_default_wbheight x $aros_default_wbdepth)
1079 aros_cv_default_wbwidth=$aros_default_wbwidth
1080 aros_cv_default_wbheight=$aros_default_wbheight
1081 aros_cv_default_wbdepth=$aros_default_wbdepth
1083 dnl See if the user wants the BOCHS hack for native flavour
1084 AC_MSG_CHECKING([if bochs hack is enabled])
1085 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")
1086 if test "$bochs_hack" = "yes" ; then
1087     aros_bochs_hack="1"
1089 AC_MSG_RESULT($bochs_hack)
1091 dnl See if the user wants the serial debug output for native flavour
1092 AC_MSG_CHECKING([if serial debug is enabled])
1093 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)
1094 if test "$serial_debug" = "yes" ; then
1095     serial_debug="2"
1097 if test "$serial_debug" = "no" ; then
1098     serial_debug="none"
1100 if test "$serial_debug" != "none" ; then
1101     aros_serial_debug=$serial_debug
1102     AC_MSG_RESULT(on port $serial_debug)
1103 else
1104     AC_MSG_RESULT(no)
1107 dnl See if the user wants the palm debug output hack for palm native flavour
1108 AC_MSG_CHECKING([if palm debug hack is enabled])
1109 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")
1110 if test "$palm_debug_hack" = "yes" ; then
1111     aros_palm_debug_hack="1"
1113 AC_MSG_RESULT($palm_debug_hack)
1116 dnl See if the user wants nesting supervisor activated for unix flavour
1117 AC_MSG_CHECKING([if nesting supervisor support is enabled])
1118 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")
1119 if test "$nesting_supervisor" = "yes" ; then
1120     aros_nesting_supervisor="1"
1122 AC_MSG_RESULT($nesting_supervisor)
1126 if test "$HAVE_XSHM_SUPPORT" = "1" ; then
1127   dnl See if the user wants the X11 MIT-SHM extension to be enabled
1128   AC_MSG_CHECKING([if X11 MIT-SHM extension is enabled])
1129   AC_ARG_ENABLE(xshm_extension,AC_HELP_STRING([--enable-xshm-extension],[Enable X11 MIT-SHM extension (default=yes)]),xshm_extension="$enableval",xshm_extension="yes")
1130   if test "$xshm_extension" = "no" ; then
1131       DO_XSHM_SUPPORT="0"
1132   fi
1133   AC_MSG_RESULT($xshm_extension)
1134 else
1135   DO_XSHM_SUPPORT="0"
1138 if test "$HAVE_VIDMODE_SUPPORT" = "1" ; then
1139   dnl See if the user wants the X11 vidmode extension to be enabled
1140   AC_MSG_CHECKING([if vidmode extension is enabled])
1141   AC_ARG_ENABLE(vidmodeextension,AC_HELP_STRING([--enable-vidmode-extension],[Enable X11 vidmode extension (default=yes)]),vidmode_extension="$enableval",vidmode_extension="yes")
1142   if test "$vidmode_extension" = "no" ; then
1143       DO_VIDMODE_SUPPORT="0"
1144   fi
1145   AC_MSG_RESULT($vidmode_extension)
1146 else
1147   DO_VIDMODE_SUPPORT="0"
1151 dnl See if the user wants dbus.library
1152 AC_MSG_CHECKING([if building of dbus.library is enabled])
1153 AC_ARG_ENABLE(dbus,AC_HELP_STRING([--enable-dbus],[Enable DBUS support via dbus.library (default=no)]),dbus="yes",dbus="no")
1154 if test "$dbus" = "yes" ; then
1155     ENABLE_DBUS=1
1156     DBUS_CFLAGS=`pkg-config --cflags dbus-1`
1157     DBUS_LIBFLAGS=`pkg-config --libs dbus-1`
1158     KERNEL_DBUS_KOBJ=kernel-dbus-kobj
1159     KERNEL_DBUS_INCLUDES=kernel-dbus-includes
1160 else
1161     ENABLE_DBUS=0
1163 AC_MSG_RESULT($dbus)
1166 dnl --------------------------------------------------------------------
1167 dnl Configuration Output Section
1168 dnl --------------------------------------------------------------------
1170 # Generic
1171 AC_SUBST(aros_arch)
1172 AC_SUBST(aros_cpu)
1173 AC_SUBST(aros_flavour)
1174 AC_SUBST(aros_flavour_uc)
1175 AC_SUBST(TOPDIR)
1177 # Host related
1178 AC_SUBST(aros_cc_pre)
1179 AC_SUBST(aros_host_strip)
1180 AC_SUBST(aros_host_arch)
1181 AC_SUBST(aros_host_cpu)
1182 AC_SUBST(aros_host_cc)
1183 AC_SUBST(aros_host_ar)
1184 AC_SUBST(aros_host_ranlib)
1185 AC_SUBST(aros_host_ld)
1186 AC_SUBST(aros_host_make)
1187 AC_SUBST(aros_host_cflags)
1188 AC_SUBST(aros_host_ldflags)
1189 AC_SUBST(aros_host_debug)
1190 AC_SUBST(aros_host_mkdep)
1191 AC_SUBST(aros_host_mkargs)
1192 AC_SUBST(aros_host_exe_suffix)
1193 AC_SUBST(aros_host_lib_suffix)
1194 AC_SUBST(aros_tools_dir)
1195 AC_SUBST(aros_host_aclocal)
1196 AC_SUBST(aros_host_autoconf)
1197 AC_SUBST(aros_host_autoheader)
1198 AC_SUBST(aros_host_automake)
1200 # Target Related
1201 AC_SUBST(aros_target_arch)
1202 AC_SUBST(aros_target_cpu)
1203 AC_SUBST(aros_target_variant)
1204 AC_SUBST(aros_target_suffix)
1205 AC_SUBST(aros_target_incl)
1206 AC_SUBST(aros_target_ar)
1207 AC_SUBST(aros_target_ranlib)
1208 AC_SUBST(aros_kernel_nm)
1209 AC_SUBST(aros_target_cc)
1210 AC_SUBST(aros_kernel_cc)
1211 AC_SUBST(aros_target_as)
1212 AC_SUBST(aros_target_ld)
1213 AC_SUBST(aros_kernel_ld)
1214 AC_SUBST(aros_target_cc_includes)
1215 AC_SUBST(aros_target_cc_path)
1216 AC_SUBST(aros_target_objdump)
1217 AC_SUBST(aros_target_objcopy)
1218 AC_SUBST(aros_target_strip)
1219 AC_SUBST(aros_target_nm)
1220 AC_SUBST(aros_shared_default)
1221 AC_SUBST(aros_shared_ld)
1222 AC_SUBST(aros_object_format)
1223 AC_SUBST(aros_compiler_libs)
1225 AC_SUBST(aros_config_cflags)
1226 AC_SUBST(aros_config_aflags)
1227 AC_SUBST(aros_config_ldflags)
1229 AC_SUBST(aros_shared_cflags)
1230 AC_SUBST(aros_shared_aflags)
1231 AC_SUBST(aros_shared_ldflags)
1232 AC_SUBST(aros_kernel_ldflags)
1233 AC_SUBST(aros_debug_cflags)
1234 AC_SUBST(aros_debug_aflags)
1235 AC_SUBST(aros_debug_ldflags)
1236 AC_SUBST(aros_target_genmap)
1237 AC_SUBST(aros_target_strip_flags)
1239 # Graphics Related
1240 AC_SUBST(aros_gui_libdir)
1241 AC_SUBST(aros_gui_ldflags)
1242 AC_SUBST(aros_gui_libflags)
1243 AC_SUBST(aros_gui_incdir)
1244 AC_SUBST(aros_gui_ccflags)
1246 AC_SUBST(aros_default_wbwidth)
1247 AC_SUBST(aros_default_wbheight)
1248 AC_SUBST(aros_default_wbdepth)
1249 AC_SUBST(DO_XSHM_SUPPORT)
1250 AC_SUBST(DO_VIDMODE_SUPPORT)
1252 # Native version related
1253 AC_SUBST(aros_bochs_hack)
1254 AC_SUBST(aros_serial_debug)
1256 # Palm native version related
1257 AC_SUBST(aros_palm_debug_hack)
1259 # Unix/Hosted version related
1260 AC_SUBST(aros_nesting_supervisor)
1262 # DBUS related
1263 AC_SUBST(ENABLE_DBUS)
1264 AC_SUBST(DBUS_CFLAGS)
1265 AC_SUBST(DBUS_LIBFLAGS)
1266 AC_SUBST(KERNEL_DBUS_KOBJ)
1267 AC_SUBST(KERNEL_DBUS_INCLUDES)
1269 # Debug related
1270 AC_SUBST(aros_debug)
1271 AC_SUBST(aros_mungwall_debug)
1272 AC_SUBST(aros_stack_debug)
1273 AC_SUBST(aros_modules_debug)
1275 # Collect-aros stuff: "-ius" to ignore undefined symbols
1276 AC_SUBST(ignore_undefined_symbols)
1278 # C compiler related
1279 AC_SUBST(gcc_target_cpu)
1281 dnl Prepare for output, make up all the generated patches
1282 case "$aros_flavour" in
1283 emulation)      aros_flavour_uc="AROS_FLAVOUR_EMULATION"
1284                 aros_flavour="emulation" ;;
1285 emulcompat)     aros_flavour_uc="(AROS_FLAVOUR_EMULATION|AROS_FLAVOUR_BINCOMPAT)"
1286                 aros_flavour="emulation" ;;
1287 standalone)     aros_flavour_uc="AROS_FLAVOUR_STANDALONE"
1288                 aros_flavour="standalone";;
1289 native)         aros_flavour_uc="AROS_FLAVOUR_NATIVE"
1290                 aros_flavour="native" ;;
1291 nativecompat)   aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1292                 aros_flavour="native" ;;
1293 linklib)        aros_flavour_uc="AROS_FLAVOUR_LINKLIB"
1294                 aros_flavour="linklib" ;;
1295 palmnative)     aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1296                 aros_flavour="palmnative" ;;
1297 mac68knative)   aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1298                 aros_flavour="mac68knative" ;;
1299 ppcnative)      aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1300                 aros_flavour="ppcnative" ;;
1301 esac
1303 if test -z "$aros_gui_basedir" ; then
1304     dnl Use X as the default GUI
1305     aros_gui_libdir="$x_libraries"
1306     if test -z "$x_libraries" ; then
1307         aros_gui_ldflags=""
1308     else
1309         aros_gui_ldflags="-L $x_libraries"
1310     fi
1311     if test "$HAVE_XSHM_SUPPORT" = "1" ; then
1312       aros_gui_libflags="-lX11 -lXext"
1313     else
1314       aros_gui_libflags="-lX11"
1315     fi
1316     if test "$HAVE_VIDMODE_SUPPORT" = "1"; then
1317       aros_gui_libflags="$aros_gui_libflags -lXxf86vm"
1318     fi
1319     
1320     aros_gui_incdir="$x_includes"
1321     if test -z "$x_includes" ; then
1322         aros_gui_ccflags=""
1323     else
1324         aros_gui_ccflags="-I $x_includes"
1325     fi
1326 else
1327     if test -n "$aros_gui_basedir" ; then
1328         aros_gui_libdir="${aros_gui_basedir}/lib"
1329         aros_gui_incdir="${aros_gui_basedir}/include"
1330     fi
1332     if test -n "$aros_gui_libdir" ; then
1333         aros_gui_ldflags="-L ${aros_gui_libdir}"
1334     fi
1336     if test -n "$aros_gui_incdir" ; then
1337         aros_gui_ccflags="-I ${aros_gui_incdir}"
1338     else
1339         aros_gui_incdir="${aros_sysincludes}"
1340         aros_gui_ccflags=""
1341     fi
1344 if test ! -d ${aros_inc_dir} ; then
1345     ${MKDIR} ${aros_inc_dir}
1347 if test ! -d ${aros_geninc_dir} ; then
1348     ${MKDIR} ${aros_geninc_dir}
1350 if test ! -d ${aros_hostcfg_dir} ; then
1351     ${MKDIR} ${aros_hostcfg_dir}
1353 if test ! -d ${aros_targetcfg_dir} ; then
1354     ${MKDIR} ${aros_targetcfg_dir}
1356 if test ! -d ${aros_tools_dir} ; then
1357     ${MKDIR} ${aros_tools_dir}
1359 if test ! -d ${aros_scripts_dir} ; then
1360     ${MKDIR} ${aros_scripts_dir}
1363 AC_CONFIG_HEADERS(${aros_geninc_dir}/host-conf.h:config/host-conf.h.in)
1365 AC_CONFIG_COMMANDS([compiler_executable],
1366     [
1367         prefix=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}
1368         mkdir -p $prefix
1369         prefix="${prefix}/${aros_target_cpu}-aros"
1370         prefix2=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros
1372         echo ${prefix}
1373         echo ${prefix2}
1374         chmod a+x ${prefix2}-gcc ${prefix2}-ld
1376         ln -sf ${prefix2}-gcc          ${prefix}-gcc
1377         ln -sf ${prefix2}-ld           ${prefix}-ld
1379         ln -sf $aros_target_as_ln      ${prefix}-as
1380         ln -sf $aros_target_nm_ln      ${prefix}-nm
1381         ln -sf $aros_target_ar_ln      ${prefix}-ar
1382         ln -sf $aros_target_ranlib_ln  ${prefix}-ranlib
1383         ln -sf $aros_target_objcopy_ln ${prefix}-objcopy
1384         ln -sf $aros_target_objdump_ln ${prefix}-objdump
1385         ln -sf $aros_target_strip_ln   ${prefix}-strip
1387         ln -sf $aros_target_as_ln      ${prefix2}-as
1388         ln -sf $aros_target_nm_ln      ${prefix2}-nm
1389         ln -sf $aros_target_ar_ln      ${prefix2}-ar
1390         ln -sf $aros_target_ranlib_ln  ${prefix2}-ranlib
1391         ln -sf $aros_target_objcopy_ln ${prefix2}-objcopy
1392         ln -sf $aros_target_objdump_ln ${prefix2}-objdump
1393         ln -sf $aros_target_strip_ln   ${prefix2}-strip
1394     ],
1395     [
1396         aros_tools_dir=${aros_tools_dir}
1397         aros_target_cpu=${aros_target_cpu}
1398         aros_target_arch=${aros_target_arch}
1399         aros_target_suffix=${aros_target_suffix}
1400         aros_target_nm_ln=${aros_target_nm_ln}
1401         aros_target_as_ln=${aros_target_as_ln}
1402         aros_target_ar_ln=${aros_target_ar_ln}
1403         aros_target_ranlib_ln=${aros_target_ranlib_ln}
1404         aros_target_objdump_ln=${aros_target_objdump_ln}
1405         aros_target_objcopy_ln=${aros_target_objcopy_ln}
1406         aros_target_strip_ln=${aros_target_strip_ln}
1407     ]
1409 AC_CONFIG_COMMANDS([genshared_executable],
1410     [chmod a+x ${aros_scripts_dir}/genshared],
1411     [aros_scripts_dir=${aros_scripts_dir}]
1413 AC_CONFIG_COMMANDS([genmf_executable],
1414     [chmod a+x ${aros_tools_dir}/genmf.py],
1415     [aros_tools_dir=${aros_tools_dir}]
1417 AC_CONFIG_COMMANDS([adflib_myaros.conf_executable],
1418     [chmod a+x tools/adflib/myconf.aros]
1421 AC_CONFIG_FILES(
1422     Makefile
1423     rom/mmakefile
1424     ${aros_inc_dir}/config.h:config/config.h.in
1425     ${aros_geninc_dir}/config.h:config/config.h.in
1426     ${aros_hostcfg_dir}/host.cfg:config/host.cfg.in
1427     ${aros_targetcfg_dir}/target.cfg:config/target.cfg.in
1428     mmake.config
1429     ${aros_targetcfg_dir}/make.defaults:config/make.defaults.in
1430     ${aros_targetcfg_dir}/specs:config/specs.in
1431     ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-gcc:scripts/aros-gcc.in
1432     ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-ld:scripts/aros-ld.in
1433     ${aros_scripts_dir}/genshared:compiler/c_lib/source/lib_source/genshared.in
1434     ${aros_tools_dir}/genmf.py:tools/genmf/genmf.py
1435     tools/adflib/myconf.aros
1436     tools/collect-aros/env.h
1439 AC_OUTPUT
1441 dnl This is in order to not define SHARED_CFLAGS sometimes
1442 dnl We don't always do aros_shared_ar, aros_shared_cflags
1444 #XXX compatability...
1445 aros_shared_ar="$aros_shared_ld $aros_shared_ldflags -o"
1447 if test -n "$aros_shared_cflags" ; then
1448     echo "SHARED_CFLAGS := $aros_shared_cflags" >> ${aros_hostcfg_dir}/host.cfg
1449     echo "SHARED_AR := $aros_shared_ar" >> ${aros_hostcfg_dir}/host.cfg