hal/x86: update I-pipe patches
[xenomai-head.git] / configure.in
blobcec3ecb6d971f1d9d0dbb4c4da1856e9731f93fb
1 dnl Process this file with autoconf to produce a configure script.
2 AC_PREREQ(2.62)
4 AC_INIT([Xenomai],m4_normalize(m4_include([config/version])),xenomai@xenomai.org)
6 CONFIG_XENO_VERSION_MAJOR=`expr $PACKAGE_VERSION : '\([[0-9]]*\)'`
7 CONFIG_XENO_VERSION_MINOR=`expr $PACKAGE_VERSION : '[[0-9]]*\.\([[0-9]]*\)'`
8 CONFIG_XENO_REVISION_LEVEL=`expr $PACKAGE_VERSION : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
9 test "x$CONFIG_XENO_REVISION_LEVEL" = "x" && CONFIG_XENO_REVISION_LEVEL=0
11 if test "x$CFLAGS" = "x"; then
12         XENO_EMPTY_CFLAGS=true
13 else
14         XENO_EMPTY_CFLAGS=false
17 if eval test $includedir = /usr/include; then
18   AC_MSG_ERROR([Using /usr/include as includedir is not supported. Please change your --prefix or specify another --includedir])
21 AC_CONFIG_HEADERS(src/include/xeno_config.h)
22 AC_CONFIG_AUX_DIR(config)
23 AC_CONFIG_MACRO_DIR([config])
24 AC_CONFIG_SRCDIR(src/skins/native/task.c)
25 AC_PREFIX_DEFAULT(/usr/xenomai)
26 AC_CANONICAL_BUILD
27 AC_CANONICAL_HOST
28 AC_PROG_INSTALL
30 AC_ARG_WITH(cc,
31     AS_HELP_STRING([--with-cc=compiler],[use specific C compiler]),
32     [
33         case "$withval" in
34         "" | y | ye | yes | n | no)
35             AC_MSG_ERROR([You must supply an argument to --with-cc.])
36           ;;
37         esac
38         CC="$withval"
39     ])
40 AC_PROG_CC
42 # Do not let autoconf set the default value of CFLAGS
43 if $XENO_EMPTY_CFLAGS; then
44         CFLAGS=""
47 AC_PROG_CC_FOR_BUILD
49 AC_DEFINE_UNQUOTED(CONFIG_XENO_BUILD_STRING,"$build",[Build system alias])
50 XENO_BUILD_STRING="$build"
51 AC_DEFINE_UNQUOTED(CONFIG_XENO_HOST_STRING,"$host",[Host system alias])
52 XENO_HOST_STRING="$host"
53 AC_DEFINE_UNQUOTED(CONFIG_XENO_COMPILER,"`$CC -v 2>&1 | tail -n 1`",[Compiler])
55 AM_INIT_AUTOMAKE([foreign no-exeext dist-bzip2])
56 AM_MAINTAINER_MODE
57 AM_PROG_AS
58 AM_PROG_LEX
60 AC_MSG_CHECKING([for target architecture])
62 CONFIG_XENO_FASTSYNCH=
64 if test x$host_alias = x; then
65   build_for=$host
66 else
67   build_for=$host_alias
70 case "$build_for" in
71  i*86*-*)
72         XENO_TARGET_ARCH=x86
73         CONFIG_XENO_FASTSYNCH=y
74         CONFIG_XENO_DEFAULT_PERIOD=100000
75         ;;
76  ppc-*)
77         XENO_TARGET_ARCH=powerpc
78         CONFIG_XENO_FASTSYNCH=y
79         CONFIG_XENO_DEFAULT_PERIOD=100000
80         ;;
81  powerpc-*|powerpc64-*|ppc64-*)
82         XENO_TARGET_ARCH=powerpc
83         CONFIG_XENO_FASTSYNCH=y
84         CONFIG_XENO_DEFAULT_PERIOD=100000
85         ;;
86  bfin-*|bfinnommu-*|blackfin-*)
87         XENO_TARGET_ARCH=blackfin
88         CONFIG_XENO_DEFAULT_PERIOD=100000
89         ;;
90  arm*-*)
91         XENO_TARGET_ARCH=arm
92         CONFIG_XENO_DEFAULT_PERIOD=1000000
93         # We set CONFIG_XENO_FASTSYNCH in asm/features.h, when we know
94         # what architecture we are running
95         ;;
96  x86_64-*|amd64-*)
97         XENO_TARGET_ARCH=x86
98         CONFIG_XENO_FASTSYNCH=y
99         CONFIG_XENO_DEFAULT_PERIOD=100000
100         ;;
101  nios2-*)
102         XENO_TARGET_ARCH=nios2
103         CONFIG_XENO_DEFAULT_PERIOD=10000000
104         ;;
105  sh-*|sh4-*)
106         XENO_TARGET_ARCH=sh
107         CONFIG_XENO_DEFAULT_PERIOD=100000
108         ;;
109  *) echo ""
110    echo "*******************************************"
111    echo "Still unsupported target: $build_for -- Sorry."
112    echo "*******************************************"
113    echo ""
114    exit 1;;
115 esac
117 AC_MSG_RESULT([$XENO_TARGET_ARCH])
118 AM_CONDITIONAL(XENO_TARGET_ARCH_X86,[test $XENO_TARGET_ARCH = x86])
120 case "$XENO_TARGET_ARCH" in
121  nios2)
122         AC_DISABLE_SHARED
123         ;;
124  *)
125         AC_ENABLE_SHARED
126         ;;
127 esac
128 AC_PROG_LIBTOOL
131 dnl Parse options
134 dnl Debug build (default: off)
136 debug_symbols=
137 AC_MSG_CHECKING(for debug symbols)
138 AC_ARG_ENABLE(debug,
139         AS_HELP_STRING([--enable-debug], [Enable debug symbols in programs [default=no]]),
140         [case "$enableval" in
141         y | yes) debug_symbols=y ;;
142         *) unset debug_symbols ;;
143         esac])
144 AC_MSG_RESULT(${debug_symbols:-no})
146 dnl Implementation of atomic operations in userland
148 case $XENO_TARGET_ARCH in
149 arm)
150         atomic_ops=builtins ;;
152         atomic_ops=ad-hoc ;;
153 esac
154 AC_MSG_CHECKING(for atomic operation support)
155 AC_ARG_WITH(atomic-ops,
156         AS_HELP_STRING([--with-atomic-ops], [Select implementation of atomic ops [default=builtins on ARM, ad-hoc otherwise]]),
157         [case "$withval" in
158         y | yes | built*)
159                 atomic_ops=builtins
160                 ;;
161         ad-hoc|adhoc)
162                 atomic_ops=ad-hoc
163                 ;;
164         *)
165                 AC_MSG_ERROR([invalid switch "$withval" for atomic-ops (builtins/ad-hoc)])
166                 ;;
167         esac])
168 AC_MSG_RESULT(${atomic_ops})
170 dnl SMP support (default: on for all SMP-capable architecture except
171 dnl ARM, off otherwise)
173 case $XENO_TARGET_ARCH in
174 x86|powerpc|arm)
175         CONFIG_SMP=y ;;
177         unset CONFIG_SMP ;;
178 esac
179 AC_MSG_CHECKING(for SMP support)
180 AC_ARG_ENABLE(smp,
181         AS_HELP_STRING([--enable-smp], [Enable SMP support [default=yes on x86, Power, ARM]]),
182         [case "$enableval" in
183         y | yes) CONFIG_SMP=y ;;
184         *) unset CONFIG_SMP ;;
185         esac])
186 AC_MSG_RESULT(${CONFIG_SMP:-no})
188 dnl SEP (default: enabled) and TSC support for x86 (default: enabled)
190 CONFIG_XENO_X86_SEP=y
191 CONFIG_X86_TSC=y
193 if test $XENO_TARGET_ARCH = x86; then
194   AC_MSG_CHECKING(for x86 SEP instructions in syscalls)
195   AC_ARG_ENABLE(x86-sep,
196         AS_HELP_STRING([--enable-x86-sep], [Enable x86 SEP instructions for issuing syscalls [default=yes]]),
197         [case "$enableval" in
198         y | yes) CONFIG_XENO_X86_SEP=y ;;
199         *) unset CONFIG_XENO_X86_SEP ;;
200         esac])
201   AC_MSG_RESULT(${CONFIG_XENO_X86_SEP:-no})
203   AC_MSG_CHECKING(for x86 TSC support)
204   AC_ARG_ENABLE(x86-tsc,
205         AS_HELP_STRING([--enable-x86-tsc], [Enable x86 TSC for timings [default=yes]]),
206         [case "$enableval" in
207         y | yes) CONFIG_X86_TSC=y ;;
208         *) unset CONFIG_X86_TSC ;;
209         esac])
210   AC_MSG_RESULT(${CONFIG_X86_TSC:-no})
213 dnl ARCH support for ARM (default: 4)
215 if test $XENO_TARGET_ARCH = arm ; then
217   unset CONFIG_XENO_ARM_SA1100
218   unset CONFIG_XENO_CPU_XSC3
219   CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_KUSER
221   AC_MSG_CHECKING(for ARM tsc type)
222   AC_ARG_ENABLE(arm-tsc,
223         AS_HELP_STRING([--enable-arm-tsc], [You only need this option
224   if you get the following message when starting an application:
225 Xenomai: incompatible feature set
226 (userland requires "kuser_tsc ...", kernel provides "...", missing="kuser_tsc").
227 In that case, this option allows to select the machine for which a
228 user-space tsc emulation should be generated. Valid machines are at91,
229 kuser, imx, ixp4xx, omap, orion, pxa, s3c24x, sa1100. [default=kuser]]),
230         [case "$enableval" in
231         at91*)      CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING_FAST_WRAP;;
233         integrator) unset tsc_type;;
235         ixp4xx)     CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;;
237         imx*|mx*)   CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;;
239         generic|kuser)      CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_KUSER;;
241         omap*)      CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;;
243         orion)      CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING_COUNTDOWN;;
245         pxa*)       CONFIG_XENO_CPU_XSC3=y
246                     CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;;
248         s3c24*)     CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_DECREMENTER;;
250         sa1100)     CONFIG_XENO_ARM_SA1100=y
251                     CONFIG_XENO_ARM_TSC_TYPE=__XN_TSC_TYPE_FREERUNNING;;
253         n | no)     unset CONFIG_XENO_ARM_TSC_TYPE;;
255         *)AC_MSG_ERROR([Invalid SOC selected: "$enableval"]);;
256         esac])
257   AC_MSG_RESULT(${enable_arm_tsc:-kuser})
259   AC_ARG_ENABLE(arm-quirks,
260         AS_HELP_STRING([--enable-arm-quirks], [Enable quirks for
261         specific systems. Currently supported quirks are for sa1100 and
262         xscale3. [default=no]]),
263         [case "$enableval" in
264         sa1100)  CONFIG_XENO_ARM_SA1100=y;;
265         xscale3) CONFIG_XENO_CPU_XSC3=y;;
266         *)AC_MSG_ERROR([Invalid SOC selected: "$enableval"]);;
267         esac])
269   AC_MSG_CHECKING(for ARM SA1100 architecture)
270   AC_MSG_RESULT(${CONFIG_XENO_ARM_SA1100:-no})
272   AC_MSG_CHECKING(for ARM Xscale3 architecture)
273   AC_MSG_RESULT(${CONFIG_XENO_CPU_XSC3:-no})
276 dnl Documentation package.
278 if test x"$docdir" = x; then
279         docdir=$datadir/doc/$PACKAGE-$VERSION
281 AC_SUBST(docdir)
283 if test \! -d $srcdir/doc ; then
284     unset XENO_MAYBE_DOCDIR
285 else
286     XENO_MAYBE_DOCDIR=doc
287     AC_MSG_CHECKING(whether installing documentation)
288     AC_ARG_ENABLE(doc-install,
289        AS_HELP_STRING([--disable-doc-install], [Do not install documentation [default=no]]),
290        [case "$enableval" in
291        y | yes);;
292        *) unset XENO_MAYBE_DOCDIR;;
293        esac])
294     AC_MSG_RESULT(${XENO_MAYBE_DOCDIR:-no})
296 AC_SUBST(XENO_MAYBE_DOCDIR)
298 AC_MSG_CHECKING(for Doxygen documentation)
299 AC_ARG_ENABLE(dox-doc,
300         AS_HELP_STRING([--enable-dox-doc], [Build Doxygen documentation [default=no]]),
301         [case "$enableval" in
302         y | yes) CONFIG_XENO_DOC_DOX=y ;;
303         *) unset CONFIG_XENO_DOC_DOX ;;
304         esac])
306 if test \! -d $srcdir/doc ; then
307     if test x$CONFIG_XENO_DOC_DOX = xy ;
308     then
309         AC_MSG_ERROR([documentation tree is missing.])
310     fi
311     AC_MSG_RESULT([not present])
312 else
313     AC_MSG_RESULT(${CONFIG_XENO_DOC_DOX:-no})
316 AC_CHECK_PROG(DOXYGEN, doxygen, doxygen)
318 if test x${CONFIG_XENO_DOC_DOX} = xy -a x"$DOXYGEN" = x ; then
319    AC_MSG_ERROR([Missing the Doxygen tools to generate the documentation.])
322 AC_CHECK_PROG(DOXYGEN_HAVE_DOT, dot, YES, NO)
323 if test x"$DOXYGEN_HAVE_DOT" = xYES ; then
324    DOXYGEN_SHOW_INCLUDE_FILES=NO
325 else
326    DOXYGEN_SHOW_INCLUDE_FILES=YES
329 AC_MSG_CHECKING(whether using LaTeX non-stop mode)
330 AC_ARG_ENABLE(verbose-latex,
331         AS_HELP_STRING([--enable-verbose-latex], [Uses LaTeX non-stop mode [default=no]]),
332         [case "$enableval" in
333         y | yes) CONFIG_XENO_DOC_LATEX_NONSTOP=y ;;
334         *) unset CONFIG_XENO_DOC_LATEX_NONSTOP ;;
335         esac])
336 AC_MSG_RESULT(${CONFIG_XENO_DOC_LATEX_NONSTOP:-no})
338 if test x${CONFIG_XENO_DOC_LATEX_NONSTOP} = xy; then
339    LATEX_BATCHMODE=NO
340    LATEX_MODE=nonstopmode
341 else
342    LATEX_BATCHMODE=YES
343    LATEX_MODE=batchmode
346 AC_MSG_CHECKING(for asciidoc documentation)
347 AC_ARG_ENABLE(asciidoc,
348         AS_HELP_STRING([--enable-asciidoc], [Build Asciidoc documentation [default=no]]),
349         [case "$enableval" in
350         y | yes) CONFIG_XENO_ASCIIDOC=y ;;
351         *) unset CONFIG_XENO_ASCIIDOC ;;
352         esac])
354 if test \! -d $srcdir/doc ; then
355     if test x$CONFIG_XENO_ASCIIDOC = xy ;
356     then
357         AC_MSG_ERROR([documentation tree is missing.])
358     fi
359     AC_MSG_RESULT([not present])
360 else
361     AC_MSG_RESULT(${CONFIG_XENO_ASCIIDOC:-no})
364 AC_CHECK_PROG(ASCIIDOC, asciidoc, asciidoc)
365 if test x${CONFIG_XENO_ASCIIDOC} = xy -a x"$ASCIIDOC" = x ; then
366    AC_MSG_ERROR([Missing the asciidoc tool to generate the documentation.])
368 AC_CHECK_PROG(A2X, a2x, a2x)
369 if test x${CONFIG_XENO_ASCIIDOC} = xy -a x"$A2X" = x ; then
370    AC_MSG_ERROR([Missing the a2x tool to generate the documentation.])
372 AC_CHECK_PROG(W3M, w3m, w3m)
373 if test x${CONFIG_XENO_ASCIIDOC} = xy -a x"$W3M" = x ; then
374    AC_MSG_ERROR([Missing the w3m tool to generate the documentation.])
379 dnl Determine whether some specific headers are present on this system.
380 AC_CHECK_HEADERS(mqueue.h)
382 dnl Check for presence of some routines we need
383 save_LIBS="$LIBS"
384 LIBS="$LIBS -lrt -lpthread"
385 AC_CHECK_FUNCS([shm_open shm_unlink open64 mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock pthread_spin_lock fork])
386 LIBS="$save_LIBS"
389 dnl Produce the info needed to build xeno_config.h
392 AC_DEFINE_UNQUOTED(CONFIG_XENO_VERSION_MAJOR,$CONFIG_XENO_VERSION_MAJOR,[config])
393 AC_DEFINE_UNQUOTED(CONFIG_XENO_VERSION_MINOR,$CONFIG_XENO_VERSION_MINOR,[config])
394 AC_DEFINE_UNQUOTED(CONFIG_XENO_REVISION_LEVEL,$CONFIG_XENO_REVISION_LEVEL,[config])
395 AC_DEFINE_UNQUOTED(CONFIG_XENO_HAVE_MQUEUE_H, $HAVE_MQUEUE_H,[config])
396 AC_DEFINE_UNQUOTED(CONFIG_XENO_HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL, $HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL,[config])
397 AC_DEFINE_UNQUOTED(CONFIG_XENO_HAVE_PTHREAD_CONDATTR_SETCLOCK, $HAVE_PTHREAD_CONDATTR_SETCLOCK,[config])
400 dnl Features we enabled and likely want to find at kernel level.
401 dnl When applicable, we reuse the kernel option symbol so that we
402 dnl don't need to make particular cases with kernel code which may
403 dnl also be compiled in user-space libs.
406 test x$CONFIG_XENO_X86_SEP = xy && AC_DEFINE(CONFIG_XENO_X86_SEP,1,[config])
407 test x$CONFIG_SMP = xy && AC_DEFINE(CONFIG_SMP,1,[config])
408 test x$CONFIG_XENO_FASTSYNCH = xy && AC_DEFINE(CONFIG_XENO_FASTSYNCH,1,[config])
409 AM_CONDITIONAL(CONFIG_XENO_FASTSYNCH,[test "$CONFIG_XENO_FASTSYNCH" = y])
411 dnl Userland may want to know about MMU availability on the target.
412 dnl For now, we assume that having fork() means having an MMU.
414 test x$ac_cv_func_fork = xyes && AC_DEFINE(CONFIG_MMU,1,[config])
416 dnl Where we should get the atomic ops implementation from: "builtins"
417 dnl means gcc __sync_*() routines, "ad-hoc" means Xenomai's ad hoc
418 dnl implementation.
419 test x$atomic_ops = xbuiltins && AC_DEFINE(CONFIG_XENO_ATOMIC_BUILTINS,1,[config])
421 test x$CONFIG_X86_TSC = xy && AC_DEFINE(CONFIG_X86_TSC,1,[config])
423 test x$CONFIG_XENO_ARM_SA1100 = xy && AC_DEFINE(CONFIG_XENO_ARM_SA1100,1,[config])
424 test x$CONFIG_XENO_CPU_XSC3 = xy && AC_DEFINE(CONFIG_XENO_CPU_XSC3,1,[config])
425 test $CONFIG_XENO_ARM_TSC_TYPE && AC_DEFINE_UNQUOTED(CONFIG_XENO_ARM_TSC_TYPE,$CONFIG_XENO_ARM_TSC_TYPE,[config])
426 AM_CONDITIONAL(CONFIG_XENO_SHARED,[test "$enable_shared" = 'yes'])
428 # Default sampling period (ns) used in various tests
429 AC_DEFINE_UNQUOTED(CONFIG_XENO_DEFAULT_PERIOD,$CONFIG_XENO_DEFAULT_PERIOD,[config])
431 dnl CAUTION: We need to have the CONFIG_XENO_XX symbols always
432 dnl defined when the configuration header is read, but we want the
433 dnl Autoconf-produced symbols to be defined only when compiling
434 dnl Xenomai. This way, we won't pollute the namespace with the latter
435 dnl when our configuration header is indirectly included by a client
436 dnl application. To achieve this, we ask autoheader to produce the
437 dnl following header structure:
438 dnl #define CONFIG_XX
439 dnl #define CONFIG_XX ...
440 dnl #ifdef __IN_XENO__
441 dnl <Autoconf-defined symbols>
442 dnl #endif /* __IN_XENO__ */
443 dnl This is quite a hack since we have to rely on the fact that
444 dnl all Autoconf-generated symbols are lexicographically sorted
445 dnl after CONFIG_XENO_XX ones, but, well...
446 dnl Use a key which will cause the verbatim string to be put after
447 dnl all CONFIG_XENO_XX symbols, but still before any Autoconf-generated
448 dnl symbol, hence CONFIG_XENO___.
449 AH_VERBATIM(CONFIG_XENO___,[#ifdef __IN_XENO__])
451 dnl Now we can close the conditional section, right after all
452 dnl Autoconf-generated symbols have been listed.
453 AH_BOTTOM([#endif /* __IN_XENO__ */])
456 dnl Produce automake conditionals.
459 dnl Documentation.
460 AM_CONDITIONAL(CONFIG_XENO_DOC_DOX,[test "$CONFIG_XENO_DOC_DOX" = y])
462 AM_CONDITIONAL(CONFIG_XENO_ASCIIDOC,[test "$CONFIG_XENO_ASCIIDOC" = y])
464 AC_MSG_CHECKING([for sched_setaffinity])
465 AC_CACHE_VAL(ac_cv_sched_setaffinity,
466  save_CFLAGS="$CFLAGS"
467  CFLAGS="-Wimplicit-function-declaration -Werror -D_GNU_SOURCE"
468  [AC_TRY_LINK([#include <sched.h>],
469  [cpu_set_t cpu_set; sched_setaffinity(0, sizeof(cpu_set), &cpu_set);],
470  [ac_cv_sched_setaffinity=new],
471  [ac_cv_sched_setaffinity=bad])]
472  if test $ac_cv_sched_setaffinity = bad ; then
473    [AC_TRY_LINK([#include <sched.h>],
474    [cpu_set_t cpu_set; sched_setaffinity(0, &cpu_set);],
475    [ac_cv_sched_setaffinity=old],
476    [ac_cv_sched_setaffinity=no])]
477  fi
478  if test $ac_cv_sched_setaffinity = old ; then
479      AC_MSG_RESULT(old)
480      AC_DEFINE(HAVE_OLD_SETAFFINITY,1,[config])
481  elif test $ac_cv_sched_setaffinity = new ; then
482      AC_MSG_RESULT(ok)
483      AC_DEFINE(HAVE_RECENT_SETAFFINITY,1,[config])
484  else
485      AC_MSG_RESULT(no)
486  fi
487  CFLAGS="$save_CFLAGS")
489 AC_MSG_CHECKING([for specific GCC switches])
490 AC_CACHE_VAL(ac_cv_gcc_wnoalias,
491 AC_LANG_SAVE
492 AC_LANG_C
493 save_CFLAGS="$CFLAGS"
494 CFLAGS="-Wno-strict-aliasing -Werror"
495 [AC_TRY_COMPILE([],
496 [return 0;],
497 [ac_cv_gcc_wnoalias=yes],
498 [ac_cv_gcc_wnoalias=no])]
499 CFLAGS="$save_CFLAGS"
500 AC_LANG_RESTORE)
501 if [[ $ac_cv_gcc_wnoalias = no ]]; then
502   gcc_w_noalias=
503 else
504   gcc_w_noalias="-Wno-strict-aliasing"
506 AC_MSG_RESULT([done])
508 dnl Exported CFLAGS and LDFLAGS, shared with internal flags
509 XENO_USER_APP_CFLAGS="-D_GNU_SOURCE -D_REENTRANT"
510 XENO_USER_APP_LDFLAGS=
512 dnl Internal CFLAGS and LDFLAGS, may be enhanced per-arch below
513 XENO_USER_CFLAGS="$XENO_USER_APP_CFLAGS -Wall -Werror-implicit-function-declaration -pipe"
514 XENO_USER_LDFLAGS="$XENO_USER_APP_LDFLAGS"
516 if test x$debug_symbols = xy; then
517    XENO_USER_CFLAGS="-g $XENO_USER_CFLAGS"
518 else
519    XENO_USER_CFLAGS="-O2 $XENO_USER_CFLAGS"
522 XENO_USER_CFLAGS="$XENO_USER_CFLAGS -D__XENO__ -D__IN_XENO__ -Wstrict-prototypes"
524 case $XENO_TARGET_ARCH in
525  x86)
526         XENO_USER_CFLAGS="$XENO_USER_CFLAGS -fstrict-aliasing $gcc_w_noalias"
527         ;;
528  powerpc)
529         ;;
530  blackfin|nios2)
531         # Produce libraries in FDPIC format.
532         ;;
533  arm)
534         ;;
535 esac
537 XENO_LIB_CFLAGS="$XENO_USER_CFLAGS"
538 XENO_LIB_LDFLAGS="$XENO_USER_LDFLAGS"
540 case "$build_for" in
541  arm*-*)
542         AC_CACHE_CHECK([whether using r7 causes errors], ac_cv_r7_error,
543                 [cat > conftest.c <<\EOF
544 int foo(void) {
545         register unsigned x __asm__("r7");
546         __asm__("mov %0,#0\n\t": "=r"(x));
547         return x;
550                 if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $CFLAGS $XENO_USER_CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
551                         ac_cv_r7_error=no
552                 else
553                         ac_cv_r7_error=yes
554                 fi
555                 rm -f conftest*])
556         if test x"$ac_cv_r7_error" = xyes; then
557                 XENO_USER_CFLAGS="-fomit-frame-pointer $XENO_USER_CFLAGS"
558                 XENO_LIB_CFLAGS="-fomit-frame-pointer $XENO_LIB_CFLAGS"
559         fi
560         ;;
561  i*86*-*)
562         XENO_LIB_CFLAGS="$XENO_LIB_CFLAGS -fno-omit-frame-pointer"
563         ;;
564 esac
566 AC_MSG_CHECKING([whether ld supports @file])
567 AC_CACHE_VAL(ac_cv_ld_file_option,
568   AC_LANG_SAVE
569   AC_LANG_C
570   save_LDFLAGS="$LDFLAGS"
571   [LDFLAGS="-Wl,@/dev/null"]
572   AC_LINK_IFELSE([AC_LANG_SOURCE([main(){}])],
573     [ac_cv_ld_file_option=yes],
574     [ac_cv_ld_file_option=no])
575   LDFLAGS="$save_LDFLAGS"
576   AC_LANG_RESTORE)
577 if [[ $ac_cv_ld_file_option = yes ]]; then
578         XENO_POSIX_WRAPPERS="-Wl,@`cd $srcdir && pwd`/src/skins/posix/posix.wrappers"
579 else
580         XENO_POSIX_WRAPPERS=`while read wrap_option symbol ; do \
581                         echo -n "-Wl,$wrap_option,$symbol " ; \
582                 done < $srcdir/src/skins/posix/posix.wrappers`
584 AC_MSG_RESULT(${ac_cv_ld_file_option:-no})
585 LD_FILE_OPTION=$ac_cv_ld_file_option
586 AC_SUBST(LD_FILE_OPTION)
587 AM_CONDITIONAL(CONFIG_XENO_FAST_WRAP,[test "$LD_FILE_OPTION" = "yes"])
589 XENO_DLOPEN_CONSTRAINT=
590 use__thread=no
592 AC_ARG_WITH([__thread],
593             AC_HELP_STRING([--with-__thread],
594                            [use optimized TLS features (x86 only),
595 disabling the ability to use dlopen on Xenomai skin libraries]),
596             [use__thread=$withval])
598 dnl Check whether the compiler supports the __thread keyword.
599 if test "x$use__thread" = xyes; then
600         AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
601         [cat > conftest.c <<\EOF
602 __thread int a __attribute__ ((tls_model ("initial-exec"))) = 42;
604         if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
605                 libc_cv_gcc___thread=yes
606         else
607                 libc_cv_gcc___thread=no
608         fi
609         rm -f conftest*])
610         if test "$libc_cv_gcc___thread" = yes; then
611                 AC_DEFINE(HAVE___THREAD,1,[config])
612                 XENO_DLOPEN_CONSTRAINT="-Wl,-z -Wl,nodlopen"
613         fi
616 AC_MSG_CHECKING(location for test binaries)
617 AC_ARG_WITH(testdir,
618     AS_HELP_STRING([--with-testdir=<test-binaries-dir>],[location for test binaries (defaults to $bindir)]),
619     [
620         case "$withval" in
621         "" | y | ye | yes | n | no)
622             AC_MSG_ERROR([You must supply an argument to --with-testdir.])
623           ;;
624         esac
625         XENO_TEST_DIR="$withval"
626     ], [XENO_TEST_DIR=$bindir])
627 AC_MSG_RESULT($XENO_TEST_DIR)
629 unset want_fortify
630 AC_MSG_CHECKING(for fortify support)
631 AC_ARG_ENABLE([fortify],
632               AC_HELP_STRING([--enable-fortify],
633                              [Enable support for applications compiled
634                              with _FORTIFY_SOURCE]),
635               [case "$enableval" in
636               y | yes) want_fortify=yes;;
637               *) want_fortify=no;;
638               esac])
639 AC_MSG_RESULT(${want_fortify:-autodetect})
640 if test x"$want_fortify" != xno; then
641    AC_CHECK_FUNC(__vfprintf_chk,
642               [AC_DEFINE(CONFIG_XENO_FORTIFY,1,[configure])],
643               [if test x"$want_fortify" = "xyes"; then
644               AC_MSG_ERROR([Fortify support enabled but not available])
645                fi])
649 dnl Build the Makefiles
652 AC_SUBST(DOXYGEN_SHOW_INCLUDE_FILES)
653 AC_SUBST(DOXYGEN_HAVE_DOT)
654 AC_SUBST(DOXYGEN)
655 AC_SUBST(LATEX_BATCHMODE)
656 AC_SUBST(LATEX_MODE)
658 AC_SUBST(XENO_TARGET_ARCH)
659 AC_SUBST(XENO_BUILD_STRING)
660 AC_SUBST(XENO_HOST_STRING)
661 AC_SUBST(XENO_LIB_CFLAGS)
662 AC_SUBST(XENO_LIB_LDFLAGS)
663 AC_SUBST(XENO_USER_CFLAGS)
664 AC_SUBST(XENO_USER_LDFLAGS)
665 AC_SUBST(XENO_USER_APP_CFLAGS)
666 AC_SUBST(XENO_USER_APP_LDFLAGS)
667 AC_SUBST(XENO_DLOPEN_CONSTRAINT)
668 AC_SUBST(XENO_TEST_DIR)
669 AC_SUBST([CONFIG_STATUS_DEPENDENCIES],
670         ['$(top_srcdir)/src/skins/posix/posix.wrappers'])
671 AC_SUBST(XENO_POSIX_WRAPPERS)
673 base=asm-$XENO_TARGET_ARCH
674 AC_CONFIG_LINKS([src/include/asm/xenomai:$srcdir/include/$base])
675 base=asm-generic
676 AC_CONFIG_LINKS([src/include/$base/xenomai:$srcdir/include/$base])
678 AC_CONFIG_FILES([ \
679         Makefile \
680         config/Makefile \
681         scripts/Makefile \
682         scripts/xeno-config \
683         scripts/xeno \
684         src/Makefile \
685         src/skins/Makefile \
686         src/skins/common/Makefile \
687         src/skins/posix/Makefile \
688         src/skins/native/Makefile \
689         src/skins/native/libxenomai_native.pc \
690         src/skins/vxworks/Makefile \
691         src/skins/vxworks/libxenomai_vxworks.pc \
692         src/skins/psos+/Makefile \
693         src/skins/psos+/libxenomai_psos+.pc \
694         src/skins/vrtx/Makefile \
695         src/skins/vrtx/libxenomai_vrtx.pc \
696         src/skins/rtdm/Makefile \
697         src/skins/rtdm/libxenomai_rtdm.pc \
698         src/skins/uitron/Makefile \
699         src/skins/uitron/libxenomai_uitron.pc \
700         src/drvlib/Makefile \
701         src/drvlib/analogy/Makefile \
702         src/include/Makefile \
703         src/testsuite/Makefile \
704         src/testsuite/latency/Makefile \
705         src/testsuite/cyclic/Makefile \
706         src/testsuite/switchtest/Makefile \
707         src/testsuite/irqbench/Makefile \
708         src/testsuite/clocktest/Makefile \
709         src/testsuite/klatency/Makefile \
710         src/testsuite/unit/Makefile \
711         src/testsuite/xeno-test/Makefile \
712         src/testsuite/regression/Makefile \
713         src/testsuite/regression/native/Makefile \
714         src/testsuite/regression/posix/Makefile \
715         src/testsuite/regression/native+posix/Makefile \
716         src/utils/Makefile \
717         src/utils/can/Makefile \
718         src/utils/analogy/Makefile \
719         src/utils/ps/Makefile \
720         include/Makefile \
721         include/asm-generic/Makefile \
722         include/asm-generic/bits/Makefile \
723         include/asm-blackfin/Makefile \
724         include/asm-blackfin/bits/Makefile \
725         include/asm-x86/Makefile \
726         include/asm-x86/bits/Makefile \
727         include/asm-powerpc/Makefile \
728         include/asm-powerpc/bits/Makefile \
729         include/asm-arm/Makefile \
730         include/asm-arm/bits/Makefile \
731         include/asm-nios2/Makefile \
732         include/asm-nios2/bits/Makefile \
733         include/asm-sh/Makefile \
734         include/asm-sh/bits/Makefile \
735         include/asm-sim/Makefile \
736         include/asm-sim/bits/Makefile \
737         include/native/Makefile \
738         include/nucleus/Makefile \
739         include/posix/Makefile \
740         include/posix/sys/Makefile \
741         include/psos+/Makefile \
742         include/rtdm/Makefile \
743         include/analogy/Makefile \
744         include/uitron/Makefile \
745         include/vrtx/Makefile \
746         include/vxworks/Makefile \
747         ])
749 if test x"$LD_FILE_OPTION" = x"yes" ; then
750       AC_CONFIG_FILES([ \
751         src/skins/posix/libxenomai_posix.pc \
752         ])
755 if test \! x$XENO_MAYBE_DOCDIR = x ; then
756       AC_CONFIG_FILES([ \
757         doc/Makefile \
758         doc/txt/Makefile \
759         doc/man/Makefile \
760         doc/doxygen/Makefile \
761         doc/doxygen/Doxyfile-common \
762         doc/doxygen/Doxyfile \
763         doc/doxygen/Doxyfile-native \
764         doc/doxygen/Doxyfile-nucleus \
765         doc/doxygen/Doxyfile-posix \
766         doc/doxygen/Doxyfile-rtdm \
767         doc/asciidoc/Makefile \
768       ])
771 AC_OUTPUT()