1 dnl Process this file with autoconf to produce a configure script.
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
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)
31 AS_HELP_STRING([--with-cc=compiler],[use specific C compiler]),
34 "" | y | ye | yes | n | no)
35 AC_MSG_ERROR([You must supply an argument to --with-cc.])
42 # Do not let autoconf set the default value of CFLAGS
43 if $XENO_EMPTY_CFLAGS; then
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])
60 AC_MSG_CHECKING([for target architecture])
62 CONFIG_XENO_FASTSYNCH=
64 if test x$host_alias = x; then
73 CONFIG_XENO_FASTSYNCH=y
74 CONFIG_XENO_DEFAULT_PERIOD=100000
77 XENO_TARGET_ARCH=powerpc
78 CONFIG_XENO_FASTSYNCH=y
79 CONFIG_XENO_DEFAULT_PERIOD=100000
81 powerpc-*|powerpc64-*|ppc64-*)
82 XENO_TARGET_ARCH=powerpc
83 CONFIG_XENO_FASTSYNCH=y
84 CONFIG_XENO_DEFAULT_PERIOD=100000
86 bfin-*|bfinnommu-*|blackfin-*)
87 XENO_TARGET_ARCH=blackfin
88 CONFIG_XENO_DEFAULT_PERIOD=100000
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
98 CONFIG_XENO_FASTSYNCH=y
99 CONFIG_XENO_DEFAULT_PERIOD=100000
102 XENO_TARGET_ARCH=nios2
103 CONFIG_XENO_DEFAULT_PERIOD=10000000
107 CONFIG_XENO_DEFAULT_PERIOD=100000
110 echo "*******************************************"
111 echo "Still unsupported target: $build_for -- Sorry."
112 echo "*******************************************"
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
134 dnl Debug build (default: off)
137 AC_MSG_CHECKING(for debug symbols)
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 ;;
144 AC_MSG_RESULT(${debug_symbols:-no})
146 dnl Implementation of atomic operations in userland
148 case $XENO_TARGET_ARCH in
150 atomic_ops=builtins ;;
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]]),
165 AC_MSG_ERROR([invalid switch "$withval" for atomic-ops (builtins/ad-hoc)])
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
179 AC_MSG_CHECKING(for SMP support)
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 ;;
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
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 ;;
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 ;;
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"]);;
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"]);;
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
283 if test \! -d $srcdir/doc ; then
284 unset XENO_MAYBE_DOCDIR
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
292 *) unset XENO_MAYBE_DOCDIR;;
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 ;;
306 if test \! -d $srcdir/doc ; then
307 if test x$CONFIG_XENO_DOC_DOX = xy ;
309 AC_MSG_ERROR([documentation tree is missing.])
311 AC_MSG_RESULT([not present])
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
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 ;;
336 AC_MSG_RESULT(${CONFIG_XENO_DOC_LATEX_NONSTOP:-no})
338 if test x${CONFIG_XENO_DOC_LATEX_NONSTOP} = xy; then
340 LATEX_MODE=nonstopmode
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 ;;
354 if test \! -d $srcdir/doc ; then
355 if test x$CONFIG_XENO_ASCIIDOC = xy ;
357 AC_MSG_ERROR([documentation tree is missing.])
359 AC_MSG_RESULT([not present])
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
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])
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
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.
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])]
478 if test $ac_cv_sched_setaffinity = old ; then
480 AC_DEFINE(HAVE_OLD_SETAFFINITY,1,[config])
481 elif test $ac_cv_sched_setaffinity = new ; then
483 AC_DEFINE(HAVE_RECENT_SETAFFINITY,1,[config])
487 CFLAGS="$save_CFLAGS")
489 AC_MSG_CHECKING([for specific GCC switches])
490 AC_CACHE_VAL(ac_cv_gcc_wnoalias,
493 save_CFLAGS="$CFLAGS"
494 CFLAGS="-Wno-strict-aliasing -Werror"
497 [ac_cv_gcc_wnoalias=yes],
498 [ac_cv_gcc_wnoalias=no])]
499 CFLAGS="$save_CFLAGS"
501 if [[ $ac_cv_gcc_wnoalias = no ]]; then
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"
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
526 XENO_USER_CFLAGS="$XENO_USER_CFLAGS -fstrict-aliasing $gcc_w_noalias"
531 # Produce libraries in FDPIC format.
537 XENO_LIB_CFLAGS="$XENO_USER_CFLAGS"
538 XENO_LIB_LDFLAGS="$XENO_USER_LDFLAGS"
542 AC_CACHE_CHECK([whether using r7 causes errors], ac_cv_r7_error,
543 [cat > conftest.c <<\EOF
545 register unsigned x __asm__("r7");
546 __asm__("mov %0,#0\n\t": "=r"(x));
550 if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $CFLAGS $XENO_USER_CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
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"
562 XENO_LIB_CFLAGS="$XENO_LIB_CFLAGS -fno-omit-frame-pointer"
566 AC_MSG_CHECKING([whether ld supports @file])
567 AC_CACHE_VAL(ac_cv_ld_file_option,
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"
577 if [[ $ac_cv_ld_file_option = yes ]]; then
578 XENO_POSIX_WRAPPERS="-Wl,@`cd $srcdir && pwd`/src/skins/posix/posix.wrappers"
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=
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
607 libc_cv_gcc___thread=no
610 if test "$libc_cv_gcc___thread" = yes; then
611 AC_DEFINE(HAVE___THREAD,1,[config])
612 XENO_DLOPEN_CONSTRAINT="-Wl,-z -Wl,nodlopen"
616 AC_MSG_CHECKING(location for test binaries)
618 AS_HELP_STRING([--with-testdir=<test-binaries-dir>],[location for test binaries (defaults to $bindir)]),
621 "" | y | ye | yes | n | no)
622 AC_MSG_ERROR([You must supply an argument to --with-testdir.])
625 XENO_TEST_DIR="$withval"
626 ], [XENO_TEST_DIR=$bindir])
627 AC_MSG_RESULT($XENO_TEST_DIR)
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;;
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])
649 dnl Build the Makefiles
652 AC_SUBST(DOXYGEN_SHOW_INCLUDE_FILES)
653 AC_SUBST(DOXYGEN_HAVE_DOT)
655 AC_SUBST(LATEX_BATCHMODE)
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])
676 AC_CONFIG_LINKS([src/include/$base/xenomai:$srcdir/include/$base])
682 scripts/xeno-config \
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 \
717 src/utils/can/Makefile \
718 src/utils/analogy/Makefile \
719 src/utils/ps/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 \
749 if test x"$LD_FILE_OPTION" = x"yes" ; then
751 src/skins/posix/libxenomai_posix.pc \
755 if test \! x$XENO_MAYBE_DOCDIR = x ; then
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 \