Build contrib binary archive again because it isn't included in FreeBSD
[AROS.git] / configure.in
blob9d4673aba8c3a5753dab9edbd06ef3cac12ca4f7
1 dnl Copyright (C) 1997-2005 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.
9 # ar, ranlib, strip, nm for target
12 # ------------------------------------------------------------------------
13 # Here starts the first section of the configure.in file.
14 # ------------------------------------------------------------------------
16 AC_INIT(mmakefile)
17 AC_PREREQ(2.53)
18 AC_CONFIG_AUX_DIR(scripts/autoconf)
20 # Check what host we are running on.
21 # If a target is not suggested, we use this one.
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 # We don't yet support cross-compiling, but we may later on.
77 AC_CYGWIN
78 AC_EXEEXT
79 AC_OBJEXT
81 # Check for gawk and mmake.
82 AC_CHECK_PROGS(AWK,[gawk nawk])
83 AC_SUBST(AWK)
84 AROS_REQUIRED(gawk,$AWK)
85 AROS_PROG(MMAKE,mmake)
87 # Perform some default variable assignments. Note all of these will be
88 # Regenerated from the script, so there is no need to cache them.
90 aros_host_cc="$CC"
91 AROS_TOOL_CCPATH(aros_host_ld,ld)
92 AROS_REQUIRED(ld,$aros_host_ld)
93 aros_host_make="make"
94 aros_host_cflags=$CFLAGS
95 aros_host_ldflags=$LDFLAGS
96 aros_host_debug="-g -O0"
97 aros_host_mkdep="\$(TOP)/scripts/mkdep"
98 aros_host_mkargs="--no-print-directory"
99 aros_host_incl="/usr/include"
100 aros_host_exe_suffix="$EXEEXT"
101 aros_host_lib_suffix=""
103 AC_CHECK_PROGS(aros_host_aclocal,[aclocal aclocal19])
104 AC_CHECK_PROGS(aros_host_autoconf,[autoconf autoconf259 autoconf253])
105 AC_CHECK_PROGS(aros_host_autoheader,[autoheader autoheader259 autoheader253])
106 AC_CHECK_PROGS(aros_host_automake,[automake automake19])
108 case "$CC" in
109     *gcc*)
110         aros_host_cc_pipe="-pipe"
111         ;;
112     icc)
113         aros_host_cc_pipe=""
114         ;;
115     *)
116         aros_host_cc_pipe=""
117         ;;
118 esac
120 dnl Despite the name, this is really a host configuration variable.
121 aros_target_cc_includes=""
123 # This is the main host configuration section. It is where the host
124 # can change the values of any variables it needs to change. We do
125 # not look at anything that compiles to the target yet, we'll get
126 # to that later.
128 case "$host_os" in
129     linux*)
130         aros_host_arch="linux"
131         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
132         case "$host_cpu" in
133             *i?86*)
134                 aros_host_cpu="i386"
135                 ;;
136             *x86_64*)
137                 aros_host_cpu="x86_64"
138                 ;;
139             *m68k*)
140                 aros_host_cpu="m68k"
141                 ;;
142             *powerpc*)
143                 aros_host_cpu="ppc"
144                 ;;
145             *)
146                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
147                 aros_host_cpu="$host_cpu"
148                 ;;
149         esac
150         ;;
152     freebsd*)
153         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
154         aros_host_make="gmake"
155         aros_host_arch="freebsd"
156         aros_host_cpu="i386"
158         dnl Need to override this here, it's just too hard later.
159         dnl This shouldn't be here at all...
160         dnl aros_target_cc_includes="/usr/include"
162         dnl FreeBSD 5.x (and later) has changed the default object format.
163         dnl The double [[]] is necessary to get around m4's quoting rules.
164         case $host_os in
165             freebsd[[234]]*)
166                 aros_object_format="elf_i386"
167                 ;;
169             *)
170                 aros_object_format="elf_i386_fbsd"
171                 ;;
172         esac
174         ;;
176     netbsd*)
177         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
178         aros_host_make="gmake"
179         aros_host_arch="netbsd"
180         case "$host_cpu" in
181             *i?86*)
182                 aros_host_cpu="i386"
183                 ;;
184             *m68k*)
185                 aros_host_cpu="m68k"
186                 ;;
187             *)
188                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
189                 aros_host_cpu="$host_cpu"
190                 ;;
191         esac    
192         aros_host_lib_suffix=".0.0"
193         ;;
195     openbsd*)
196         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
197         aros_host_make="gmake"
198         aros_host_arch="openbsd"
199         case "$host_cpu" in
200             *i?86*)
201                 aros_host_cpu="i386"
202                 ;;
203             *)
204                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
205                 aros_host_cpu="$host_cpu"
206                 ;;
207         esac
208         ;;
209         
210     solaris*)
211         aros_host_arch="solaris"
212         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
213         case "$host_cpu" in
214             *sparc*)
215                 aros_host_cpu="sparc"
216                 ;;
217             *)
218                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
219                 aros_host_cpu="$host_cpu"
220                 ;;
221         esac
222         ;;
224     morphos*)
225         aros_host_cc="$aros_host_cc"
226         aros_host_arch="morphos"
227         aros_host_cpu="ppc"
228         ;;
230     amiga*)
231         aros_host_arch="amiga"
232         SORT="/gg/bin/sort"
233         TEST="/gg/bin/test"
234         UNIQ="/gg/bin/uniq"
235         FOR="for"
236         TOUCH="/gg/bin/touch"
237         case "$host_cpu" in
238             *m68k*)
239                 aros_host_cpu="m68k"
240                 ;;
241             *powerpc*)
242                 aros_host_cpu="ppc"
243                 ;;
244             *)
245                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
246                 aros_host_cpu="$host_cpu"
247                 ;;
248         esac
249         ;;
251     cygwin*)
252         aros_host_arch="cygwin"
253         aros_host_cc="$aros_host_cc $aros_host_cc_pipe"
254         case "$host_cpu" in
255             *i?86*)
256                 aros_host_cpu="i386"
257                 ;;
258             *)
259                 AC_MSG_WARN("Unknown CPU for host -- $host_cpu")
260                 aros_host_cpu="$host_cpu"
261                 ;;
262         esac
263         ;;
264     *)
265         AC_MSG_ERROR([Unsupported host architecture $host])
266         ;;
267 esac
269 AROS_PROG(HOST_AR,[ar],[cr])
270 AROS_REQUIRED(ar,$HOST_AR)
271 AROS_PROG(HOST_RANLIB,ranlib)
273 AROS_PROG(RM,[rm],[-rf])
274 AROS_REQUIRED(rm,$RM)
275 AROS_PROG(CP,[cp])
276 AROS_REQUIRED(cp,$CP)
277 AROS_PROG(MV,[mv])
278 AROS_REQUIRED(mv,$MV)
279 AROS_PROG(ECHO,[echo])
280 AROS_REQUIRED(echo,$ECHO)
281 AROS_PROG(MKDIR,[mkdir],[-p])
282 AROS_REQUIRED(mkdir,$MKDIR)
283 AROS_PROG(TOUCH,[touch])
284 AROS_REQUIRED(touch,$TOUCH)
285 AROS_PROG(SORT,[sort])
286 AROS_REQUIRED(sort,$SORT)
287 AROS_PROG(UNIQ,[uniq])
288 AROS_REQUIRED(uniq,$UNIQ)
289 AROS_PROG(NOP,[true])
290 AROS_REQUIRED(true,$NOP)
291 AROS_PROG(CAT,[cat])
292 AROS_REQUIRED(cat,$CAT)
293 AROS_PROG(BISON,[bison])
294 AROS_REQUIRED(bison,$BISON)
295 AROS_PROG(PNGTOPNM,[pngtopnm])
296 AROS_REQUIRED(pngtopnm,$PNGTOPNM)
297 AROS_PROG(PPMTOILBM,[ppmtoilbm])
298 AROS_REQUIRED(ppmtoilbm,$PPMTOILBM)
299 AROS_PROG(STRIP,[strip])
300 AROS_REQUIRED(strip,$STRIP)
301 AROS_PROG(SED,[sed])
302 AROS_REQUIRED(sed,$SED)
303 AROS_PROG(CHMOD,[chmod])
304 AROS_REQUIRED(chmod,$CHMOD)
306 AM_PATH_PYTHON(2.2.1)
308 FOR=for
309 IF=if
310 TEST=test
311 CMP=cmp
312 AC_SUBST(FOR)
313 AC_SUBST(IF)
314 AC_SUBST(TEST)
315 AC_SUBST(CMP)
317 dnl ---------------------------------------------------------------------------
318 dnl Look for things about the host system, good for hosted targets.
319 dnl ---------------------------------------------------------------------------
321 # Check for some includes for the X11 HIDD and the kernel
322 AC_CHECK_HEADERS([sys/ipc.h sys/shm.h \
323     sys/mmap.h sys/mman.h sysexits.h \
324     sys/statfs.h sys/statvfs.h sys/vfs.h sys/param.h \
327 AC_CHECK_HEADERS([sys/mount.h],,,[#include <sys/param.h>])
329 AC_HEADER_DIRENT
330 AC_HEADER_STAT
331 AC_HEADER_STDC
332 AC_HEADER_SYS_WAIT
333 AC_HEADER_TIME
334 AC_STRUCT_ST_BLKSIZE
335 AC_STRUCT_ST_BLOCKS
336 AC_STRUCT_ST_RDEV
337 AC_STRUCT_TM
338 AC_STRUCT_TIMEZONE
339 AC_TYPE_OFF_T
340 AC_TYPE_PID_T
341 AC_TYPE_SIZE_T
342 AC_TYPE_UID_T
344 AC_CHECK_MEMBERS(struct tm.tm_gmtoff)
346 # Look for some functions
347 AC_CHECK_FUNCS([getpagesize kqueue statfs statvfs \
348     clone kse_create rfork_thread thr_create sa_register \
349     getcontext makecontext setcontext sigaltstack swapcontext])
351 AC_FUNC_MMAP
353 # Find X
354 AC_PATH_X
357 dnl --------------------------------------------------------------------
358 dnl Target Configuration Section
359 dnl --------------------------------------------------------------------
361 dnl The target configuration section is responsible for setting up all
362 dnl the paths for includes, and tools required to build AROS to some
363 dnl particular target.
365 # Find all the tools we need to compile. This could be cross-compiling
366 # though! If that is the case we use the GNU form of the target and
367 # simply add this to the front of the binary name. This is rather simple,
368 # but it should work under most circumstances.
370 # The default tools are to use the same as the host, but only if the
371 # host and target CPU are the same. With GCC this is normally enough.
374 aros_cc_pre=""
375 aros_target_cc="$aros_host_cc"
376 aros_target_as="$aros_host_cc"
377 aros_shared_ld="$aros_host_ld"
378 aros_kernel_ld="$aros_host_ld"
379 aros_target_ld="$aros_host_ld"
381 aros_target_mkdep="$aros_host_mkdep"
382 aros_target_incl_def="$aros_host_incl"
384 # The default tools executables to be linked at.
385 AROS_TOOL_CCPATH(aros_target_ar_ln,ar)
386 AROS_REQUIRED(ar,$aros_target_ar_ln)
387 AROS_TOOL_CCPATH(aros_target_nm_ln,nm)
388 AROS_REQUIRED(nm,$aros_target_nm_ln)
389 AROS_TOOL_CCPATH(aros_target_objcopy_ln,objcopy)
390 AROS_REQUIRED(objcopy,$aros_target_objcopy_ln)
391 AROS_TOOL_CCPATH(aros_target_objdump_ln,objdump)
392 AROS_REQUIRED(objdump,$aros_target_objdump_ln)
393 AROS_TOOL_CCPATH(aros_target_ranlib_ln,ranlib)
394 AROS_REQUIRED(ranlib,$aros_target_ranlib_ln)
395 AROS_TOOL_CCPATH(aros_target_strip_ln,strip)
396 AROS_REQUIRED(strip,$aros_target_strip_ln)
398 if test "$GCC" = "yes"; then
399     aros_target_cc_path=`$CC -print-search-dirs | grep "programs: =" | cut -c 12-`
402 # It is necessary to clear the include and link paths for target
403 # commands. This should help clear up problems when cross compiling.
404 aros_config_cflags="-Wall -Werror-implicit-function-declaration"
405 aros_config_aflags="-Wall -x assembler-with-cpp"
406 aros_config_ldflags=""
408 aros_shared_default=yes
410 aros_shared_cflags="-fPIC"
411 aros_shared_aflags=""
412 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
413 aros_kernel_ldflags="-Wl,-rpath,./lib"
415 aros_compiler_libs=
417 aros_target_genmap="-Wl,-Map -Xlinker"
419 # Native flavour stuff
420 aros_bochs_hack="0"
421 aros_serial_debug="0"
423 # Palm native flavour stuff
424 aros_palm_debug_hack="0"
426 # Unix flavour stuff
427 aros_nesting_supervisor="0"
429 # Collect-aros stuff: "-ius" to ignore undefined symbols
430 ignore_undefined_symbols=""
432 # X11 Xshm
433 DO_XSHM_SUPPORT="1"
434 DO_VIDMODE_SUPPORT="1"
436 #-----------------------------------------------------------------------------
438 AC_MSG_CHECKING([for type of build])
439 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")
441 if test "$build_type" = "nightly"; then
442     build_type_string="NIGHTLY"
443 elif test "$build_type" = "snapshot"; then
444     build_type_string="SNAPSHOT"
445 elif test "$build_type" = "milestone"; then
446     build_type_string="MILESTONE"
447 elif test "$build_type" = "release"; then
448     build_type_string="RELEASE"
449 else
450     build_type_string="PERSONAL"
451     build_type="personal"
454 aros_config_cflags="$aros_config_cflags -DAROS_BUILD_TYPE=AROS_BUILD_TYPE_$build_type_string"
456 AC_MSG_RESULT($build_type)
458 #-----------------------------------------------------------------------------
459 all_debug_types="messages stack mungwall modules symbols"
461 AC_MSG_CHECKING([which debug types to enable])
462 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)]),
463  debug="$enableval",debug="")
465 if test "$debug" = "" -o "$debug" = "no"; then
466     debug="none"
467 elif test "$debug" = "yes"; then
468     debug="all"
471 if test "$debug" = "all" ; then
472     debug=$all_debug_types
473     for d in $all_debug_types; do
474         export aros_${d}_debug="1"
475     done
476 else
477     for d in $all_debug_types; do
478         export aros_${d}_debug="0"
479     done
482 if test "$debug" != "none"; then
483     debug=`echo $debug | sed s/,/\ /g`
484     for d in $debug; do
485         found="0"
486         for d2 in $all_debug_types; do
487             if test "$d2" = "$d"; then
488                 found="1"
489                 break
490             fi
491         done
492         if test "$found" = "0"; then
493             AC_MSG_ERROR([unrecognized debug type "$d". Available types are: all none $all_debug_types])
494         fi
495         export aros_${d}_debug="1"
496     done
497     aros_debug="yes"
499 AC_MSG_RESULT($debug)
501 if test "$aros_messages_debug" = "1"; then
502     aros_messages_debug="-DADEBUG=1 -DMDEBUG=1"
503 else
504     aros_messages_debug=""
506 if test "$aros_symbols_debug" = "1"; then
507     aros_symbols_debug="-g"
508 else
509     aros_symbols_debug=""
512 # These are the flags to pass when compiling debugged programs
513 aros_debug_cflags="$aros_symbols_debug $aros_messages_debug"
514 aros_debug_aflags=""
515 aros_debug_ldflags="$aros_symbols_debug"
517 #-----------------------------------------------------------------------------
518 #   Checking for distcc and ccache.
520 #   Always apply the transforms in this particular order. Basically you should
521 #   always run 'ccache distcc compiler' in that order for the best performance.
523 AC_MSG_CHECKING([whether to enable distcc])
524 AC_ARG_ENABLE(distcc,AC_HELP_STRING([--enable-distcc],[Use distcc as a front end to the compiler (default=no).]),distcc="$enableval",distcc="no")
525 if test "$distcc" != "" -a "$distcc" != "no"; then
526     # AC_CHECK_PROG will print out the result in this case
527     AC_PATH_PROG(DISTCC,[distcc],distcc,)
528 else
529     AC_MSG_RESULT(no)
532 AC_MSG_CHECKING([whether to enable ccache])
533 AC_ARG_ENABLE(ccache,AC_HELP_STRING([--enable-ccache],[Use ccache as a front end to the compiler (default=no).]),ccache="$enableval",ccache="no")
534 if test "$ccache" != "" -a "$ccache" != "no"; then
535     # AC_CHECK_PROG will print out the result in this case
536     AC_CHECK_PROG(CCACHE,[ccache],ccache,)
537 else
538     AC_MSG_RESULT(no)
541 #-----------------------------------------------------------------------------
542 AC_MSG_CHECKING([what optimization flags to use])
543 AC_ARG_WITH(optimization,AC_HELP_STRING([--with-optimization=FLAGS],[Use optimization flags FLAGS (default=-O2).]),optimization="$withval",optimization="unknown")
544 if test "$optimization" = "unknown"; then
545     dnl default is -O2 for normal builds, -O0 for debug builds
546     if test "$debug" != "none"; then
547         optimization="-O0"
548     else
549         optimization="-O2"
550     fi
552 aros_config_cflags="$aros_config_cflags $optimization"
553 AC_MSG_RESULT($optimization)
555 #-----------------------------------------------------------------------------
556 AC_MSG_CHECKING([what target variant to enable])
557 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")
558 if test "$target_variant" = "none"; then
559     aros_target_variant=""
560     aros_target_suffix=""
561 else
562     aros_target_variant="$target_variant"
563     aros_target_suffix="-$target_variant"
565 AC_MSG_RESULT($enableval)
567 #-----------------------------------------------------------------------------
568 # This is the target configuration switch.
569 case "$target_os" in
570     linux*)
571         aros_target_arch="linux"
572         case "$target_cpu" in
573             *m68k*)
574                 aros_target_cpu="m68k"
575                 aros_object_format="m68kelf"
576                 aros_flavour="emulcompat"
577                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__linux__"
578                 aros_shared_ldflags="-Wl,-T,\$(TOP)/config/linux/m68k/script.so"
579                 aros_kernel_ldflags="-Wl,-rpath,./lib,-T,\$(TOP)/config/linux/m68k/script.normal"
580                 gcc_target_cpu="mc68000"
581                 ;;
582             *i?86*)
583                 aros_target_cpu="i386"
584                 aros_object_format="elf_i386"
585                 aros_flavour="emulation"
586                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__linux__"
587                 aros_default_wbdepth=8
588                 gcc_target_cpu="i386"
589                 ;;
590             *x86_64*)
591                 aros_target_cpu="x86_64"
592                 aros_object_format="elf_x86_64"
593                 aros_flavour="emulation"
594                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dx86_64 -D__linux__"
595                 aros_default_wbdepth=8
596                 gcc_target_cpu="x86_64"
597                 ;;
598             *powerpc*)
599                 aros_target_cpu="ppc"
600                 aros_object_format="elf32ppc"
601                 aros_flavour="emulation"
602                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc -D__linux__"
603                 aros_default_wbdepth=8
604                 aros_compiler_libs="-lgcc"
605                 gcc_target_cpu="ppc"
606                 ;;
607             *)
608                 AC_MSG_ERROR("Unknown CPU for Linux -- $target_cpu")
609                 ;;
610         esac
611     ;;
613     pc)
614         aros_target_arch="pc"
615         aros_shared_default="no"
616         case "$target_cpu" in
617             *i?86*)
618                 aros_target_cpu="i386"
620                 dnl If somebody hasn't already set the target object
621                 dnl format, then use this value. Mostly to support
622                 dnl FreeBSD cross-compilation.
623                 dnl TODO: Remove when we always use our compiler.
625                 if test "$aros_object_format" = "" ; then
626                     aros_object_format="elf_i386"
627                 fi
628                 aros_flavour="standalone"
629                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
630                 aros_kernel_ldflags=""
631                 aros_default_wbwidth=640
632                 aros_default_wbheight=480
633                 gcc_target_cpu="i386"
634                 ;;
635             *)
636                 AC_MSG_ERROR("Unknown native CPU -- $target_cpu")
637                 ;;
638         esac
639         ;;
641     prep)
642         aros_target_arch="prep"
643         aros_shared_default="no"
644         aros_target_cpu="ppc"
645         aros_object_format="elf32ppc"
646         aros_flavour="ppcnative"
647         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
648         aros_kernel_ldflags=""
649         aros_default_wbwidth=640
650         aros_default_wbheight=480
651         gcc_target_cpu="ppc"
652         case "$target_cpu" in
653             *cross*)
654                 aros_target_cc="ppc-linux-gcc -pipe"
655                 aros_target_ld="ppc-linux-ld"
656                 aros_target_as="ppc-linux-as"
657                 aros_target_ar="ppc-linux-ar"
658                 aros_target_ranlib="ppc-linux-ranlib"
659                 aros_target_nm="ppc-linux-nm"
660                 aros_target_strip="ppc-linux-strip"
661                 aros_target_objcopy="ppc-linux-objcopy"
662                 aros_target_objdump="ppc-linux-objdump"
663                 aros_shared_ld="ppc-linux-ld"
664                 aros_kernel_ld="ppc-linux-ld"
665                 ;;
666             *)
667                 ;;
668         esac
669         ;;
671     freebsd*)
672         aros_target_arch="freebsd"
673         aros_target_cpu="i386"
674         aros_flavour="emulation"
675         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
676         gcc_target_cpu="i386"
678         strip_args="-x"
679         ;;
681     netbsd*)
682         aros_target_arch="netbsd"
683         case "$target_cpu" in
684             *m68k*)
685                 aros_target_cpu="m68k"
686                 aros_object_format="m68kelf"
687                 aros_flavour="emulcompat"
688                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D__mc68000 -D__NetBSD__"
689                 gcc_target_cpu="mc68000"
690                 ;;
691             *i?86*)
692                 aros_target_cpu="i386"
693                 aros_object_format="elf_i386"
694                 aros_flavour="emulation"
695                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__NetBSD__"
696                 aros_default_wbdepth=8
697                 gcc_target_cpu="i386"
698                 ;;
699             *)
700                 AC_MSG_ERROR("Unknown CPU for NetBSD -- $target_cpu")
701                 ;;
702         esac
703         aros_target_genmap="-Wl,-M -Xlinker >"
704         aros_flavour="emulation"
705         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386"
706         ;;   
708     openbsd*)
709         aros_target_arch="openbsd"
710         case "$target_cpu" in
711             *i?86*)
712                 aros_target_cpu="i386"
713                 aros_object_format="elf_i386"
714                 aros_flavour="emulation"
715                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__OpenBSD__"
716                 gcc_target_cpu="i386"
717                 ;;
718             *)
719                 AC_MSG_ERROR("Unknown CPU for OpenBSD -- $target_cpu")
720                 ;;
721         esac
722         aros_target_genmap="-Wl,-M -Xlinker >"
723         aros_target_nm_flags="-u"
724         aros_flavour="emulation"
725         ;;
727     solaris*)
728         aros_target_arch="solaris"
729         case "$target_cpu" in
730             *sparc*)
731                 aros_target_cpu="sparc"
732                 aros_object_format="elf_sparc"
733                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dsparc -D__Solaris__"
734                 gcc_target_cpu="sparc"
735                 ;;
736             *)
737                 AC_MSG_ERROR("Unknown CPU for Solaris -- $target_cpu")
738                 ;;
739         esac
740         aros_config_cflags="$aros_config_cflags -D$aros_target_cpu"
741         aros_flavour="emulation"
742         ;;
744     morphos*)
745         aros_target_arch="morphos"
746         aros_shared_default="no"
747         aros_target_cpu="ppc"
748         aros_object_format="elf_ppc"
749         aros_flavour="nativecompat"
750         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dppc"
751         gcc_target_cpu="ppc"
752         ;;
754     amiga*)
755         aros_target_arch="amiga"
756         aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -D_AMIGA -DAMIGA"
757         aros_shared_default="no"
759         aros_config_cflags="$aros_config_cflags -fomit-frame-pointer -fbuiltin -ffreestanding"
761         case "$target_cpu" in
762             *m68k*)
763                 aros_target_cpu="m68k"
764                 aros_object_format="m68kelf"
765                 aros_flavour="nativecompat"
766                 gcc_target_cpu="mc68000"
767                 ;;
768             *ppc*)
769                 aros_cpu="ppc"
770                 aros_flavour="native"
771                 gcc_target_cpu="ppc"
772                 ;;
773             *)
774                 AC_MSG_ERROR("Unknown CPU for Amiga $target_cpu")
775                 ;;
776         esac
777         ;;
779     cygwin*)
780         aros_target_arch="cygwin"
781         aros_shared_default="no"
782         case "$target_cpu" in
783             *i?86*)
784                 aros_target_cpu="i386"
785                 aros_object_format="elf_i386"
786                 aros_flavour="emulation"
787                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Di386 -D__CYGWIN32__"
788                 aros_shared_cflags=""
789                 aros_default_wbdepth=8
790                 gcc_target_cpu="i386"
791                 ;;
792             *)
793                 AC_MSG_ERROR("Unknown CPU for CygWin -- $target_cpu")
794                 ;;
795         esac
796     ;;
797     pp*)
798         aros_target_arch="pp"
799         aros_shared_default="no"
800         case "$target_cpu" in
801             *m68k*)
802                 aros_target_cpu="m68k"
803                 aros_object_format="m68kelf"
804                 aros_flavour="palmnative"
805                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
806                 aros_kernel_ldflags=""
807                 aros_default_wbwidth=160
808                 aros_default_wbheight=160
809                 aros_default_wbdepth=1
810                 aros_target_cc="m68k-elf-gcc -pipe"
811                 aros_target_ld="$(which m68k-elf-ld)"
812                 aros_target_as="m68k-elf-gcc -pipe"
813                 aros_shared_ld="m68k-elf-gcc"
814                 aros_kernel_ld="m68k-elf-gcc"
815                 aros_target_ar="m68k-elf-ar"
816                 aros_target_ar_flags="cru"
817                 aros_target_ranlib="m68k-elf-ranlib"
818                 aros_target_nm="m68k-elf-nm"
819                 aros_target_objcopy="m68k-elf-objcopy"
820                 aros_target_objdump="m68k-elf-objdump"
821                 aros_compiler_libs="-lgcc1"
822                 aros_shared_default=no
823                 aros_shared_cflags="-fpic"
824                 aros_shared_aflags=""
825                 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
826                 aros_kernel_ldflags="-Wl,-rpath,./lib"
827                 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug  $aros_messages_debug -mc68000 -Wa,-mc68000"
828                 aros_debug_aflags=""
829                 aros_debug_ldflags="$aros_symbols_debug"
830                 aros_mungwall_debug="0"
831                 aros_modules_debug="0"
832                 gcc_target_cpu="mc68000"
833                 ignore_undefined_symbols="-ius"
834                 ;;
835            *)
836                 AC_MSG_ERROR("Unknown CPU for PalmPilot -- $target_cpu")
837                 ;;
838         esac
839         ;;
841     mac*)
842         aros_target_arch="mac"
843         aros_shared_default="no"
844         case "$target_cpu" in
845             *m68k*)
846                 aros_target_cpu="m68k"
847                 aros_object_format="m68kelf"
848                 aros_flavour="mac68knative"
849                 aros_target_mkdep="$aros_target_mkdep -D__GNUC__ -Dm68k"
850                 aros_kernel_ldflags=""
851                 aros_default_wbwidth=512
852                 aros_default_wbheight=384
853                 aros_default_wbdepth=8
854                 aros_target_cc="m68k-elf-gcc -pipe"
855                 aros_target_ld="$(which m68k-elf-ld)"
856                 aros_target_as="m68k-elf-gcc -pipe"
857                 aros_shared_ld="m68k-elf-gcc"
858                 aros_kernel_ld="m68k-elf-gcc"
859                 aros_target_ar="m68k-elf-ar"
860                 aros_target_ar_flags="cru"
861                 aros_target_ranlib="m68k-elf-ranlib"
862                 aros_target_nm="m68k-elf-nm"
863                 aros_target_objcopy="m68k-elf-objcopy"
864                 aros_target_objdump="m68k-elf-objdump"
865                 aros_compiler_libs="-lgcc1"
866                 aros_shared_default=no
867                 aros_shared_cflags="-fpic"
868                 aros_shared_aflags=""
869                 aros_shared_ldflags="-Wl,-rpath,./lib -shared"
870                 aros_kernel_ldflags="-Wl,-rpath,./lib"
871                 aros_debug_cflags="-Wall -Werror-implicit-function-declaration $aros_symbols_debug  $aros_messages_debug -mc68000"
872                 aros_debug_aflags=""
873                 aros_debug_ldflags="$aros_symbols_debug"
874                 aros_mungwall_debug="0"
875                 aros_modules_debug="0"
876                 gcc_target_cpu="mc68000"
877                 ignore_undefined_symbols="-ius"
878                 ;;
879            *)
880                 AC_MSG_ERROR("Unknown CPU for Mac68k -- $target_cpu")
881                 ;;
882         esac
883         ;;
885     *)
886         AC_MSG_ERROR([Unsupported target architecture $target])
887         ;;
888 esac
890 aros_hostcfg_dir="bin/${aros_host_arch}-${aros_host_cpu}/gen/config"
891 aros_targetcfg_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/config"
892 aros_inc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/AROS/Development/include/aros"
893 aros_gendir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen"
894 aros_geninc_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/include/aros"
895 aros_tools_dir="bin/${aros_host_arch}-${aros_host_cpu}/tools"
896 aros_scripts_dir="bin/${aros_target_arch}-${aros_target_cpu}${aros_target_suffix}/gen/scripts"
898 # aros_cc_pre is a variable that is added to the front of the compiler name
899 # in the generated aros-gcc shell script. We need this to enable the cache
900 # to work across cleaned builds. Also, support DISTCC using the correct
901 # environment variable.
904 if test "x${DISTCC}" != "x" ; then
905     if test "x${CCACHE}" != "x" ; then
906         aros_cc_pre="env CCACHE_PREFIX=${DISTCC} ${CCACHE} "
907     else
908         aros_cc_pre="${DISTCC} "
909     fi
910 else
911     if test "x${CCACHE}" != "x" ; then
912         aros_cc_pre="${CCACHE} "
913     fi
916 prefix="${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros"
918 TARGET_CC="${prefix}-gcc"
919 TARGET_AS="$TARGET_CC"
920 TARGET_LD="${prefix}-ld"
921 aros_target_ld="${prefix}-ld"
923 NOSTDINC_CFLAGS=-nostdinc
925 NOSTARTUP_LDFLAGS=-nostartfiles
926 NIX_LDFLAGS=-nix
927 DETACH_LDFLAGS=-detach
928 NOSTDLIB_LDFLAGS=-nostdlib
930 AROS_TOOL_CC(SHARED_LD,$aros_shared_ld)
931 AROS_TOOL_CC(KERNEL_LD,$aros_kernel_ld)
933 # The default tools
934 aros_target_ar=${prefix}-ar
935 aros_target_ar_flags="cr"
936 aros_target_nm=${prefix}-nm
937 aros_target_nm_flags="-C -ul"
938 aros_target_objcopy=${prefix}-objcopy
939 aros_target_objdump=${prefix}-objdump
940 aros_target_ranlib=${prefix}-ranlib
941 aros_target_strip="${prefix}-strip --strip-unneeded -R.comment"
943 prefix="\$(TOOLDIR)/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros"
944 AR="${prefix}-ar $aros_target_ar_flags"
945 RANLIB="${prefix}-ranlib $aros_target_ranlib_flags"
946 NM="${prefix}-nm $aros_target_nm_flags"
947 NM_PLAIN="${prefix}-nm"
948 STRIP="${prefix}-strip $aros_target_strip_flags"
949 OBJDUMP="${prefix}-objdump"
950 OBJCOPY="${prefix}-objcopy"
952 AC_SUBST(TARGET_CC)
953 AC_SUBST(TARGET_AS)
954 AC_SUBST(TARGET_LD)
955 AC_SUBST(NOSTDINC_CFLAGS)
956 AC_SUBST(NOSTARTUP_LDFLAGS)
957 AC_SUBST(NIX_LDFLAGS)
958 AC_SUBST(DETACH_LDFLAGS)
959 AC_SUBST(NOSTDLIB_LDFLAGS)
960 AC_SUBST(aros_cc_pre)
961 AC_SUBST(AR)
962 AC_SUBST(RANLIB)
963 AC_SUBST(NM)
964 AC_SUBST(NM_PLAIN)
965 AC_SUBST(STRIP)
966 AC_SUBST(OBJDUMP)
967 AC_SUBST(OBJCOPY)
969 #-----------------------------------------------------------------------------
970 # See if we can compile SHM support
971 HAVE_XSHM_SUPPORT=0
972 if [[ "x$no_x" != "xyes" -a "x$ac_cv_header_sys_ipc_h" = "xyes" -a "x$ac_cv_header_sys_shm_h" = "xyes" ]]; then
973   AC_MSG_CHECKING(whether the X11 MIT-SHM extension can be compiled in)
974   if test -z "$x_includes" ; then
975     CFLAGS=""
976   else
977     CFLAGS="-I $x_includes"
978   fi
979   LIBS="-L/usr/X11/lib -L/usr/X11R6/lib -lX11 -lXext"
980   AC_TRY_LINK([
981 #include <sys/types.h>
982 #include <X11/Xlib.h>
983 #include <X11/Xutil.h>
984 #include <X11/keysym.h>
985 #include <X11/cursorfont.h>
986 #include <sys/ipc.h>
987 #include <sys/shm.h>
988 #include <X11/extensions/XShm.h>],[
989 static XShmSegmentInfo shminfo;
990 static Display *display;
991 XShmAttach(display, &shminfo);
992 XSync(display,0);
993 shmctl(shminfo.shmid, IPC_RMID, 0);
995 HAVE_XSHM_SUPPORT=1
996 AC_MSG_RESULT(yes),
997 HAVE_XSHM_SUPPORT=0
998 AC_MSG_RESULT(no))
1001 #-----------------------------------------------------------------------------
1002 # See if we can compile VIDMODE support
1003 HAVE_VIDMODE_SUPPORT=0
1004 if [[ "x$no_x" != "xyes" ]]; then
1005   LIBS=""
1006   AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, HAVE_VIDMODE_SUPPORT=1, HAVE_VIDMODE_SUPPORT=0, [ -L/usr/X11R6/lib -lXext -lX11 ])
1010 # Find the system include path. We can suggest that an alternative is
1011 # used if we don't get it correct. The default is to use /usr/include.
1012 # Which is set in the aros_target_incl_def variable.
1014 AC_ARG_ENABLE(includes,
1015 AC_HELP_STRING([--enable-includes=dir],[Alternative system include directory]),
1016 [aros_target_incl=$enable_includes], [aros_target_incl=$aros_target_incl_def])
1018 dnl find out about the target cc's include path
1019 AC_MSG_CHECKING([for the target compiler's include path])
1020 if test "$aros_target_cc_includes" = "" ; then
1021     #try to guess where the directory is
1022     aros_target_cc_includes=`dirname \`${aros_target_cc} -print-libgcc-file-name\``/include
1023     if ! test -d $aros_target_cc_includes; then
1024         #the directory doesn't exist, we need to do some more work
1025         aros_target_cc_includes=${PWD}/${aros_gendir}/cc_include
1026         
1027         #these are the headers we're looling for
1028         headers="limits.h mmintrin.h stdbool.h syslimits.h float.h \
1029                  stddef.h xmmintrin.h iso646.h stdarg.h unwind.h   \
1030                  zutil.h"
1032         dirs=
1033         for h in $headers; do
1034             #which other headers each of the above headers needs?
1035             deps=$(echo "#include <$h>" | \
1036                    $aros_host_cc -E -M - 2>/dev/null | \
1037                    sed 's/^.*://; s/\\$/ /g; s/[[ \t]]\+/ /g')
1038             
1039             #copy all the needed headers to a directory beneath gendir
1040             for d in $deps; do
1041                 h=$(basename $d)
1042                 dir=${aros_target_cc_includes}$(echo $(dirname $d) | \
1043                                                 sed -n "s,^.*/include\(/.*\),\1,p")
1044                 ! test -d $dir && mkdir -p $dir
1045                 ! test -f $dir/$h && { cp $d $dir; chmod u+w $dir/$h; }
1046             done
1047         done        
1048     fi
1050 AC_MSG_RESULT($aros_target_cc_includes)
1052 dnl Check if user specified --with-resolution=XRESxYRESxDEPTH
1053 AC_MSG_CHECKING([for default resolution of WBScreen])
1054 AC_ARG_WITH(resolution,AC_HELP_STRING([--with-resolution=XRESxYRESxDEPTH],[Default resolution of the initial WorkbenchScreen]),resolution=$withval,resolution=none)
1055 # We require an argument, so map --with/--without ("yes"/"no") to "none" specified
1056 if test "$resolution" = "yes" ; then
1057     resolution="none"
1059 if test "$resolution" = "no" ; then
1060     resolution="none"
1062 if test "$resolution" != "none" ; then
1063     aros_default_wbwidth=`echo $resolution | cut -d'x' -f1`
1064     aros_default_wbheight=`echo $resolution | cut -d'x' -f2`
1065     aros_default_wbdepth=`echo $resolution | cut -d'x' -f3`
1067 AC_MSG_RESULT($aros_default_wbwidth x $aros_default_wbheight x $aros_default_wbdepth)
1068 aros_cv_default_wbwidth=$aros_default_wbwidth
1069 aros_cv_default_wbheight=$aros_default_wbheight
1070 aros_cv_default_wbdepth=$aros_default_wbdepth
1072 dnl See if the user wants the BOCHS hack for native flavour
1073 AC_MSG_CHECKING([if bochs hack is enabled])
1074 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")
1075 if test "$bochs_hack" = "yes" ; then
1076     aros_bochs_hack="1"
1078 AC_MSG_RESULT($bochs_hack)
1080 dnl See if the user wants the serial debug output for native flavour
1081 AC_MSG_CHECKING([if serial debug is enabled])
1082 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)
1083 if test "$serial_debug" = "yes" ; then
1084     serial_debug="2"
1086 if test "$serial_debug" = "no" ; then
1087     serial_debug="none"
1089 if test "$serial_debug" != "none" ; then
1090     aros_serial_debug=$serial_debug
1091     AC_MSG_RESULT(on port $serial_debug)
1092 else
1093     AC_MSG_RESULT(no)
1096 dnl See if the user wants the palm debug output hack for palm native flavour
1097 AC_MSG_CHECKING([if palm debug hack is enabled])
1098 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")
1099 if test "$palm_debug_hack" = "yes" ; then
1100     aros_palm_debug_hack="1"
1102 AC_MSG_RESULT($palm_debug_hack)
1105 dnl See if the user wants nesting supervisor activated for unix flavour
1106 AC_MSG_CHECKING([if nesting supervisor support is enabled])
1107 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")
1108 if test "$nesting_supervisor" = "yes" ; then
1109     aros_nesting_supervisor="1"
1111 AC_MSG_RESULT($nesting_supervisor)
1115 if test "$HAVE_XSHM_SUPPORT" = "1" ; then
1116   dnl See if the user wants the X11 MIT-SHM extension to be enabled
1117   AC_MSG_CHECKING([if X11 MIT-SHM extension is enabled])
1118   AC_ARG_ENABLE(xshm_extension,AC_HELP_STRING([--enable-xshm-extension],[Enable X11 MIT-SHM extension (default=yes)]),xshm_extension="$enableval",xshm_extension="yes")
1119   if test "$xshm_extension" = "no" ; then
1120       DO_XSHM_SUPPORT="0"
1121   fi
1122   AC_MSG_RESULT($xshm_extension)
1123 else
1124   DO_XSHM_SUPPORT="0"
1127 if test "$HAVE_VIDMODE_SUPPORT" = "1" ; then
1128   dnl See if the user wants the X11 vidmode extension to be enabled
1129   AC_MSG_CHECKING([if vidmode extension is enabled])
1130   AC_ARG_ENABLE(vidmodeextension,AC_HELP_STRING([--enable-vidmode-extension],[Enable X11 vidmode extension (default=yes)]),vidmode_extension="$enableval",vidmode_extension="yes")
1131   if test "$vidmode_extension" = "no" ; then
1132       DO_VIDMODE_SUPPORT="0"
1133   fi
1134   AC_MSG_RESULT($vidmode_extension)
1135 else
1136   DO_VIDMODE_SUPPORT="0"
1140 dnl See if the user wants dbus.library
1141 AC_MSG_CHECKING([if building of dbus.library is enabled])
1142 AC_ARG_ENABLE(dbus,AC_HELP_STRING([--enable-dbus],[Enable DBUS support via dbus.library (default=no)]),dbus="yes",dbus="no")
1143 if test "$dbus" = "yes" ; then
1144     ENABLE_DBUS=1
1145     DBUS_CFLAGS=`pkg-config --cflags dbus-1`
1146     DBUS_LIBFLAGS=`pkg-config --libs dbus-1`
1147     KERNEL_DBUS_KOBJ=kernel-dbus-kobj
1148     KERNEL_DBUS_INCLUDES=kernel-dbus-includes
1149 else
1150     ENABLE_DBUS=0
1152 AC_MSG_RESULT($dbus)
1155 dnl --------------------------------------------------------------------
1156 dnl Configuration Output Section
1157 dnl --------------------------------------------------------------------
1159 # Generic
1160 AC_SUBST(aros_arch)
1161 AC_SUBST(aros_cpu)
1162 AC_SUBST(aros_flavour)
1163 AC_SUBST(aros_flavour_uc)
1164 AC_SUBST(TOPDIR)
1166 # Host related
1167 AC_SUBST(aros_host_arch)
1168 AC_SUBST(aros_host_cpu)
1169 AC_SUBST(aros_host_cc)
1170 AC_SUBST(aros_host_ld)
1171 AC_SUBST(aros_host_make)
1172 AC_SUBST(aros_host_cflags)
1173 AC_SUBST(aros_host_ldflags)
1174 AC_SUBST(aros_host_debug)
1175 AC_SUBST(aros_host_mkdep)
1176 AC_SUBST(aros_host_mkargs)
1177 AC_SUBST(aros_host_exe_suffix)
1178 AC_SUBST(aros_host_lib_suffix)
1179 AC_SUBST(aros_tools_dir)
1180 AC_SUBST(aros_host_aclocal)
1181 AC_SUBST(aros_host_autoconf)
1182 AC_SUBST(aros_host_autoheader)
1183 AC_SUBST(aros_host_automake)
1185 # Target Related
1186 AC_SUBST(aros_target_arch)
1187 AC_SUBST(aros_target_cpu)
1188 AC_SUBST(aros_target_variant)
1189 AC_SUBST(aros_target_suffix)
1190 AC_SUBST(aros_target_incl)
1191 AC_SUBST(aros_target_cc)
1192 AC_SUBST(aros_target_cc_includes)
1193 AC_SUBST(aros_target_cc_path)
1194 AC_SUBST(aros_target_objdump)
1195 AC_SUBST(aros_target_objcopy)
1196 AC_SUBST(aros_target_strip)
1197 AC_SUBST(aros_target_as)
1198 AC_SUBST(aros_target_nm)
1199 AC_SUBST(aros_shared_default)
1200 AC_SUBST(aros_object_format)
1201 AC_SUBST(aros_compiler_libs)
1203 AC_SUBST(aros_config_cflags)
1204 AC_SUBST(aros_config_aflags)
1205 AC_SUBST(aros_target_ld)
1206 AC_SUBST(aros_config_ldflags)
1208 AC_SUBST(aros_shared_cflags)
1209 AC_SUBST(aros_shared_aflags)
1210 AC_SUBST(aros_shared_ldflags)
1211 AC_SUBST(aros_kernel_ldflags)
1212 AC_SUBST(aros_debug_cflags)
1213 AC_SUBST(aros_debug_aflags)
1214 AC_SUBST(aros_debug_ldflags)
1215 AC_SUBST(aros_target_genmap)
1217 # Graphics Related
1218 AC_SUBST(aros_gui_libdir)
1219 AC_SUBST(aros_gui_ldflags)
1220 AC_SUBST(aros_gui_libflags)
1221 AC_SUBST(aros_gui_incdir)
1222 AC_SUBST(aros_gui_ccflags)
1224 AC_SUBST(aros_default_wbwidth)
1225 AC_SUBST(aros_default_wbheight)
1226 AC_SUBST(aros_default_wbdepth)
1227 AC_SUBST(DO_XSHM_SUPPORT)
1228 AC_SUBST(DO_VIDMODE_SUPPORT)
1230 # Native version related
1231 AC_SUBST(aros_bochs_hack)
1232 AC_SUBST(aros_serial_debug)
1234 # Palm native version related
1235 AC_SUBST(aros_palm_debug_hack)
1237 # Unix/Hosted version related
1238 AC_SUBST(aros_nesting_supervisor)
1240 # DBUS related
1241 AC_SUBST(ENABLE_DBUS)
1242 AC_SUBST(DBUS_CFLAGS)
1243 AC_SUBST(DBUS_LIBFLAGS)
1244 AC_SUBST(KERNEL_DBUS_KOBJ)
1245 AC_SUBST(KERNEL_DBUS_INCLUDES)
1247 # Debug related
1248 AC_SUBST(aros_debug)
1249 AC_SUBST(aros_mungwall_debug)
1250 AC_SUBST(aros_stack_debug)
1251 AC_SUBST(aros_modules_debug)
1253 # Collect-aros stuff: "-ius" to ignore undefined symbols
1254 AC_SUBST(ignore_undefined_symbols)
1256 # C compiler related
1257 AC_SUBST(gcc_target_cpu)
1259 dnl Prepare for output, make up all the generated patches
1260 case "$aros_flavour" in
1261 emulation)      aros_flavour_uc="AROS_FLAVOUR_EMULATION"
1262                 aros_flavour="emulation" ;;
1263 emulcompat)     aros_flavour_uc="(AROS_FLAVOUR_EMULATION|AROS_FLAVOUR_BINCOMPAT)"
1264                 aros_flavour="emulation" ;;
1265 standalone)     aros_flavour_uc="AROS_FLAVOUR_STANDALONE"
1266                 aros_flavour="standalone";;
1267 native)         aros_flavour_uc="AROS_FLAVOUR_NATIVE"
1268                 aros_flavour="native" ;;
1269 nativecompat)   aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1270                 aros_flavour="native" ;;
1271 linklib)        aros_flavour_uc="AROS_FLAVOUR_LINKLIB"
1272                 aros_flavour="linklib" ;;
1273 palmnative)     aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1274                 aros_flavour="palmnative" ;;
1275 mac68knative)   aros_flavour_uc="(AROS_FLAVOUR_STANDALONE|AROS_FLAVOUR_EMULATION)"
1276                 aros_flavour="mac68knative" ;;
1277 ppcnative)      aros_flavour_uc="(AROS_FLAVOUR_NATIVE|AROS_FLAVOUR_BINCOMPAT)"
1278                 aros_flavour="ppcnative" ;;
1279 esac
1281 if test -z "$aros_gui_basedir" ; then
1282     dnl Use X as the default GUI
1283     aros_gui_libdir="$x_libraries"
1284     if test -z "$x_libraries" ; then
1285         aros_gui_ldflags=""
1286     else
1287         aros_gui_ldflags="-L $x_libraries"
1288     fi
1289     if test "$HAVE_XSHM_SUPPORT" = "1" ; then
1290       aros_gui_libflags="-lX11 -lXext"
1291     else
1292       aros_gui_libflags="-lX11"
1293     fi
1294     if test "$HAVE_VIDMODE_SUPPORT" = "1"; then
1295       aros_gui_libflags="$aros_gui_libflags -lXxf86vm"
1296     fi
1297     
1298     aros_gui_incdir="$x_includes"
1299     if test -z "$x_includes" ; then
1300         aros_gui_ccflags=""
1301     else
1302         aros_gui_ccflags="-I $x_includes"
1303     fi
1304 else
1305     if test -n "$aros_gui_basedir" ; then
1306         aros_gui_libdir="${aros_gui_basedir}/lib"
1307         aros_gui_incdir="${aros_gui_basedir}/include"
1308     fi
1310     if test -n "$aros_gui_libdir" ; then
1311         aros_gui_ldflags="-L ${aros_gui_libdir}"
1312     fi
1314     if test -n "$aros_gui_incdir" ; then
1315         aros_gui_ccflags="-I ${aros_gui_incdir}"
1316     else
1317         aros_gui_incdir="${aros_sysincludes}"
1318         aros_gui_ccflags=""
1319     fi
1322 if test ! -d ${aros_inc_dir} ; then
1323     ${MKDIR} ${aros_inc_dir}
1325 if test ! -d ${aros_geninc_dir} ; then
1326     ${MKDIR} ${aros_geninc_dir}
1328 if test ! -d ${aros_hostcfg_dir} ; then
1329     ${MKDIR} ${aros_hostcfg_dir}
1331 if test ! -d ${aros_targetcfg_dir} ; then
1332     ${MKDIR} ${aros_targetcfg_dir}
1334 if test ! -d ${aros_tools_dir} ; then
1335     ${MKDIR} ${aros_tools_dir}
1337 if test ! -d ${aros_scripts_dir} ; then
1338     ${MKDIR} ${aros_scripts_dir}
1341 AC_CONFIG_HEADERS(${aros_geninc_dir}/host-conf.h:config/host-conf.h.in)
1343 AC_CONFIG_COMMANDS([compiler_executable],
1344     [
1345         prefix=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}
1346         mkdir -p $prefix
1347         prefix="${prefix}/${aros_target_cpu}-aros"
1348         prefix2=${PWD}/${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros
1350         echo ${prefix}
1351         echo ${prefix2}
1352         chmod a+x ${prefix2}-gcc ${prefix2}-ld
1353         
1354         ln -sf ${prefix2}-gcc          ${prefix}-gcc
1355         ln -sf ${prefix2}-ld           ${prefix}-ld
1356         
1357         ln -sf $aros_target_nm_ln      ${prefix}-nm
1358         ln -sf $aros_target_ar_ln      ${prefix}-ar
1359         ln -sf $aros_target_ranlib_ln  ${prefix}-ranlib
1360         ln -sf $aros_target_objcopy_ln ${prefix}-objcopy
1361         ln -sf $aros_target_objdump_ln ${prefix}-objdump
1362         ln -sf $aros_target_strip_ln   ${prefix}-strip
1363     
1364         ln -sf $aros_target_nm_ln      ${prefix2}-nm
1365         ln -sf $aros_target_ar_ln      ${prefix2}-ar
1366         ln -sf $aros_target_ranlib_ln  ${prefix2}-ranlib
1367         ln -sf $aros_target_objcopy_ln ${prefix2}-objcopy
1368         ln -sf $aros_target_objdump_ln ${prefix2}-objdump
1369         ln -sf $aros_target_strip_ln   ${prefix2}-strip
1370     ],
1371     [
1372         aros_tools_dir=${aros_tools_dir}
1373         aros_target_cpu=${aros_target_cpu}
1374         aros_target_arch=${aros_target_arch}
1375         aros_target_suffix=${aros_target_suffix}
1376         aros_target_nm_ln=${aros_target_nm_ln}
1377         aros_target_ar_ln=${aros_target_ar_ln}
1378         aros_target_ranlib_ln=${aros_target_ranlib_ln}
1379         aros_target_objdump_ln=${aros_target_objdump_ln}
1380         aros_target_objcopy_ln=${aros_target_objcopy_ln}
1381         aros_target_strip_ln=${aros_target_strip_ln}
1382     ]
1384 AC_CONFIG_COMMANDS([genshared_executable],
1385     [chmod a+x ${aros_scripts_dir}/genshared],
1386     [aros_scripts_dir=${aros_scripts_dir}]
1388 AC_CONFIG_COMMANDS([genmf_executable],
1389     [chmod a+x ${aros_tools_dir}/genmf.py],
1390     [aros_tools_dir=${aros_tools_dir}]
1392 AC_CONFIG_COMMANDS([adflib_myaros.conf_executable],
1393     [chmod a+x tools/adflib/myconf.aros]
1396 AC_CONFIG_FILES(
1397     Makefile
1398     rom/mmakefile
1399     ${aros_inc_dir}/config.h:config/config.h.in
1400     ${aros_geninc_dir}/config.h:config/config.h.in
1401     ${aros_hostcfg_dir}/host.cfg:config/host.cfg.in
1402     ${aros_targetcfg_dir}/target.cfg:config/target.cfg.in
1403     mmake.config
1404     ${aros_targetcfg_dir}/make.defaults:config/make.defaults.in
1405     ${aros_targetcfg_dir}/specs:config/specs.in
1406     ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-gcc:scripts/aros-gcc.in
1407     ${aros_tools_dir}/${aros_target_cpu}-${aros_target_arch}${aros_target_suffix}-aros-ld:scripts/aros-ld.in
1408     ${aros_scripts_dir}/genshared:compiler/c_lib/source/lib_source/genshared.in
1409     ${aros_tools_dir}/genmf.py:tools/genmf/genmf.py
1410     tools/adflib/myconf.aros
1413 AC_OUTPUT
1414          
1415 dnl This is in order to not defined SHARED_CFLAGS sometimes
1416 dnl We don't always do aros_shared_ar, aros_shared_cflags
1418 #XXX compatability...
1419 aros_shared_ar="$aros_shared_ld $aros_shared_ldflags -o"
1421 if test -n "$aros_shared_cflags" ; then
1422     echo "SHARED_CFLAGS := $aros_shared_cflags" >> ${aros_hostcfg_dir}/host.cfg
1423     echo "SHARED_AR := $aros_shared_ar" >> ${aros_hostcfg_dir}/host.cfg