From aac7fdd28cf1ffbce75e88a1174e75bf5dfa0f30 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 18 Oct 2000 13:14:49 +0000 Subject: 2000-09-14 Ralf Corsepius * macros: New directory. * macros/bsp-alias.m4: new file. * macros/canonical-host.m4: new file. * macros/canonical-target-name.m4: new file. * macros/canonicalize-tools.m4: new file. * macros/check-bsp-cache.m4: new file. * macros/check-bsps.m4: new file. * macros/check-cpu.m4: new file. * macros/rtems-debug.m4: new file. * macros/check-cxx.m4: new file. * macros/check-itron.m4: new file. * macros/check-multiprocessing.m4: new file. * macros/check-networking.m4: new file. * macros/check-newlib.m4: new file. * macros/check-posix.m4: new file. * macros/check-rdbg.m4: new file. * macros/enable-bare.m4: new file. * macros/enable-cxx.m4: new file. * macros/enable-gcc28.m4: new file. * macros/enable-inlines.m4: new file. * macros/enable-itron.m4: new file. * macros/enable-libcdir.m4: new file. * macros/enable-multiprocessing.m4: new file. * macros/enable-networking.m4: new file. * macros/enable-posix.m4: new file. * macros/enable-rdbg.m4: new file. * macros/enable-rtemsbsp.m4: new file. * macros/enable-tests.m4: new file. * macros/gcc-pipe.m4: new file. * macros/gcc-specs.m4: new file. * macros/i386-gas-code16.m4: new file. * macros/path-ksh.m4: new file. * macros/path-perl.m4: new file. * macros/prog-cc.m4: new file. * macros/prog-cxx.m4: new file. * macros/project-root.m4: new file. * macros/rtems-top.m4: new file. * macros/sysv-ipc.m4: new file. * macros/target.m4: new file. * macros/rtems-test-no-pause.m4: new file. * macros/multilib.m4: new file. * macros/tool-paths.m4: new file. * macros/tool-prefix.m4: new file. --- macros/bsp-alias.m4 | 33 ++++++++++ macros/canonical-host.m4 | 27 ++++++++ macros/canonical-target-name.m4 | 40 ++++++++++++ macros/canonicalize-tools.m4 | 75 ++++++++++++++++++++++ macros/check-bsp-cache.m4 | 17 +++++ macros/check-bsps.m4 | 50 +++++++++++++++ macros/check-cpu.m4 | 17 +++++ macros/check-cxx.m4 | 26 ++++++++ macros/check-itron.m4 | 37 +++++++++++ macros/check-multiprocessing.m4 | 46 ++++++++++++++ macros/check-networking.m4 | 29 +++++++++ macros/check-newlib.m4 | 36 +++++++++++ macros/check-posix.m4 | 37 +++++++++++ macros/check-rdbg.m4 | 24 +++++++ macros/enable-bare.m4 | 21 +++++++ macros/enable-cxx.m4 | 13 ++++ macros/enable-gcc28.m4 | 12 ++++ macros/enable-hwapi.m4 | 15 +++++ macros/enable-inlines.m4 | 22 +++++++ macros/enable-itron.m4 | 35 +++++++++++ macros/enable-libcdir.m4 | 10 +++ macros/enable-multiprocessing.m4 | 13 ++++ macros/enable-networking.m4 | 15 +++++ macros/enable-posix.m4 | 35 +++++++++++ macros/enable-rdbg.m4 | 15 +++++ macros/enable-rtemsbsp.m4 | 58 +++++++++++++++++ macros/enable-tests.m4 | 15 +++++ macros/gcc-pipe.m4 | 21 +++++++ macros/gcc-specs.m4 | 20 ++++++ macros/i386-gas-code16.m4 | 28 +++++++++ macros/multilib.m4 | 59 +++++++++++++++++ macros/path-ksh.m4 | 14 +++++ macros/path-perl.m4 | 12 ++++ macros/prog-cc.m4 | 50 +++++++++++++++ macros/prog-cxx.m4 | 32 ++++++++++ macros/project-root.m4 | 47 ++++++++++++++ macros/rtems-debug.m4 | 21 +++++++ macros/rtems-test-no-pause.m4 | 18 ++++++ macros/rtems-top.m4 | 44 +++++++++++++ macros/sysv-ipc.m4 | 133 +++++++++++++++++++++++++++++++++++++++ macros/target.m4 | 127 +++++++++++++++++++++++++++++++++++++ macros/tool-paths.m4 | 23 +++++++ macros/tool-prefix.m4 | 22 +++++++ 43 files changed, 1444 insertions(+) create mode 100644 macros/bsp-alias.m4 create mode 100644 macros/canonical-host.m4 create mode 100644 macros/canonical-target-name.m4 create mode 100644 macros/canonicalize-tools.m4 create mode 100644 macros/check-bsp-cache.m4 create mode 100644 macros/check-bsps.m4 create mode 100644 macros/check-cpu.m4 create mode 100644 macros/check-cxx.m4 create mode 100644 macros/check-itron.m4 create mode 100644 macros/check-multiprocessing.m4 create mode 100644 macros/check-networking.m4 create mode 100644 macros/check-newlib.m4 create mode 100644 macros/check-posix.m4 create mode 100644 macros/check-rdbg.m4 create mode 100644 macros/enable-bare.m4 create mode 100644 macros/enable-cxx.m4 create mode 100644 macros/enable-gcc28.m4 create mode 100644 macros/enable-hwapi.m4 create mode 100644 macros/enable-inlines.m4 create mode 100644 macros/enable-itron.m4 create mode 100644 macros/enable-libcdir.m4 create mode 100644 macros/enable-multiprocessing.m4 create mode 100644 macros/enable-networking.m4 create mode 100644 macros/enable-posix.m4 create mode 100644 macros/enable-rdbg.m4 create mode 100644 macros/enable-rtemsbsp.m4 create mode 100644 macros/enable-tests.m4 create mode 100644 macros/gcc-pipe.m4 create mode 100644 macros/gcc-specs.m4 create mode 100644 macros/i386-gas-code16.m4 create mode 100644 macros/multilib.m4 create mode 100644 macros/path-ksh.m4 create mode 100644 macros/path-perl.m4 create mode 100644 macros/prog-cc.m4 create mode 100644 macros/prog-cxx.m4 create mode 100644 macros/project-root.m4 create mode 100644 macros/rtems-debug.m4 create mode 100644 macros/rtems-test-no-pause.m4 create mode 100644 macros/rtems-top.m4 create mode 100644 macros/sysv-ipc.m4 create mode 100644 macros/target.m4 create mode 100644 macros/tool-paths.m4 create mode 100644 macros/tool-prefix.m4 (limited to 'macros') diff --git a/macros/bsp-alias.m4 b/macros/bsp-alias.m4 new file mode 100644 index 0000000000..cbf86363c2 --- /dev/null +++ b/macros/bsp-alias.m4 @@ -0,0 +1,33 @@ +dnl +dnl $Id$ +dnl + +dnl _RTEMS_BSP_ALIAS(BSP_ALIAS,RTEMS_BSP_FAMILY) +dnl Internal subroutine to RTEMS_BSP_ALIAS +AC_DEFUN(_RTEMS_BSP_ALIAS, +[# account for "aliased" bsps which share source code + case $1 in + simcpu32) $2=sim68000 ;; # BSVC CPU32 variant + c3xsim) $2=c4xsim ;; # TI C3x Simulator in gdb + mcp750) $2=motorola_powerpc ;; # Motorola PPC board variant + mvme2307) $2=motorola_powerpc ;; # Motorola PPC board variant + mvme162lx) $2=mvme162 ;; # m68k - mvme162 board variant + gen68360_040) $2=gen68360 ;; # m68k - 68360 in companion mode + p4600) $2=p4000 ;; # mips64orion - p4000 board w/IDT 4600 + p4650) $2=p4000 ;; # mips64orion - p4000 board w/IDT 4650 + mbx8*) $2=mbx8xx ;; # MBX821/MBX860 board + pc486) $2=pc386 ;; # i386 - PC with i486DX + pc586) $2=pc386 ;; # i386 - PC with Pentium + pc686) $2=pc386 ;; # i386 - PC with PentiumPro + pck6) $2=pc386 ;; # i386 - PC with K6 + bare*) $2=bare ;; # EXP: bare-aliases + *) $2=$1;; + esac] +) + +dnl RTEMS_BSP_ALIAS(BSP_ALIAS,RTEMS_BSP_FAMILY) +dnl convert a bsp alias $1 into its bsp directory RTEMS_BSP_FAMILY +AC_DEFUN(RTEMS_BSP_ALIAS, +[_RTEMS_BSP_ALIAS(ifelse([$1],,[$RTEMS_BSP],[$1]), + ifelse([$2],,[RTEMS_BSP_FAMILY],[$2]))] +) diff --git a/macros/canonical-host.m4 b/macros/canonical-host.m4 new file mode 100644 index 0000000000..99b5fb07da --- /dev/null +++ b/macros/canonical-host.m4 @@ -0,0 +1,27 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_CANONICAL_HOST, +[dnl +AC_REQUIRE([AC_CANONICAL_HOST]) +RTEMS_HOST=$host_os +changequote(,)dnl +case "${target}" in + # hpux unix port should go here + i[34567]86-*linux*) # unix "simulator" port + RTEMS_HOST=Linux + ;; + i[34567]86-*freebsd*) # unix "simulator" port + RTEMS_HOST=FreeBSD + ;; + i[34567]86-pc-cygwin*) # Cygwin is just enough unix like :) + RTEMS_HOST=Cygwin + ;; + sparc-sun-solaris*) # unix "simulator" port + RTEMS_HOST=Solaris + ;; + *) + ;; +esac +changequote([,])dnl +AC_SUBST(RTEMS_HOST) +])dnl diff --git a/macros/canonical-target-name.m4 b/macros/canonical-target-name.m4 new file mode 100644 index 0000000000..53d1a2962c --- /dev/null +++ b/macros/canonical-target-name.m4 @@ -0,0 +1,40 @@ +dnl +dnl $Id$ +dnl + +dnl canonicalize target cpu +dnl NOTE: Most rtems targets do not fullfil autoconf's +dnl target naming conventions "processor-vendor-os" +dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them +dnl and we have to fix it for rtems ourselves + +AC_DEFUN(RTEMS_CANONICAL_TARGET_CPU, +[ +AC_CANONICAL_SYSTEM +AC_MSG_CHECKING(rtems target cpu) +changequote(,)dnl +case "${target}" in + # hpux unix port should go here + i[34567]86-*linux*) # unix "simulator" port + RTEMS_CPU=unix + ;; + i[34567]86-*freebsd*) # unix "simulator" port + RTEMS_CPU=unix + ;; + i[34567]86-pc-cygwin*) # Cygwin is just enough unix like :) + RTEMS_CPU=unix + ;; + no_cpu-*rtems*) + RTEMS_CPU=no_cpu + ;; + sparc-sun-solaris*) # unix "simulator" port + RTEMS_CPU=unix + ;; + *) + RTEMS_CPU=`echo $target | sed 's%^\([^-]*\)-\(.*\)$%\1%'` + ;; +esac +changequote([,])dnl +AC_SUBST(RTEMS_CPU) +AC_MSG_RESULT($RTEMS_CPU) +]) diff --git a/macros/canonicalize-tools.m4 b/macros/canonicalize-tools.m4 new file mode 100644 index 0000000000..811825b538 --- /dev/null +++ b/macros/canonicalize-tools.m4 @@ -0,0 +1,75 @@ +dnl +dnl $Id$ +dnl +dnl Set target tools +dnl + +AC_DEFUN(RTEMS_HOST_AR, +[AC_CHECK_TOOL(AR,ar,no)]) + +AC_DEFUN(RTEMS_HOST_RANLIB, +[AC_CHECK_TOOL(RANLIB,ranlib,:)]) + +AC_DEFUN(RTEMS_GCC_PRINT, +[ + $1=`$CC --print-prog-name=$2` +]) + +AC_DEFUN(RTEMS_PATH_TOOL, +[ +AC_MSG_CHECKING([target's $2]) +AC_CACHE_VAL(ac_cv_path_$1,:) +AC_MSG_RESULT([$ac_cv_path_$1]) + +if test -n "$ac_cv_path_$1"; then + dnl retrieve the value from the cache + $1=$ac_cv_path_$1 +else + dnl the cache was not set + if test -z "[$]$1" ; then + if test "$ac_cv_prog_gcc" = "yes"; then + # We are using gcc, ask it about its tool + # NOTE: Necessary if gcc was configured to use the target's + # native tools or uses prefixes for gnutools (e.g. gas instead of as) + RTEMS_GCC_PRINT($1,$2) + fi + else + # The user set an environment variable. + # Check whether it is an absolute path, otherwise AC_PATH_PROG + # will override the environment variable, which isn't what the user + # intends + AC_MSG_CHECKING([whether environment variable $1 is an absolute path]) + case "[$]$1" in + /*) # valid + AC_MSG_RESULT("yes") + ;; + *) # invalid for AC_PATH_PROG + AC_MSG_RESULT("no") + AC_MSG_ERROR([***] + [Environment variable $1 should either] + [be unset (preferred) or contain an absolute path]) + ;; + esac + fi + + AC_PATH_PROG($1,"$program_prefix"$2,$3) +fi +]) + +AC_DEFUN(RTEMS_CANONICALIZE_TOOLS, +[AC_REQUIRE([RTEMS_PROG_CC])dnl + +dnl FIXME: What shall be done if these tools are not available? + RTEMS_HOST_AR(AR,ar,no) + RTEMS_PATH_TOOL(AS,as,no) + RTEMS_PATH_TOOL(LD,ld,no) + RTEMS_PATH_TOOL(NM,nm,no) + +dnl special treatment of ranlib + RTEMS_HOST_RANLIB + +dnl NOTE: These may not be available if not using gnutools + AC_CHECK_TOOL(OBJCOPY,objcopy,no) + AC_CHECK_TOOL(SIZE,size,no) + AC_CHECK_TOOL(STRIP,strip,:) +]) diff --git a/macros/check-bsp-cache.m4 b/macros/check-bsp-cache.m4 new file mode 100644 index 0000000000..1eb077026b --- /dev/null +++ b/macros/check-bsp-cache.m4 @@ -0,0 +1,17 @@ +dnl $Id$ + +dnl RTEMS_CHECK_BSP_CACHE(RTEMS_BSP) +AC_DEFUN(RTEMS_CHECK_BSP_CACHE, +[ +AC_REQUIRE([RTEMS_CHECK_CPU])dnl sets RTEMS_CPU, target +AC_REQUIRE([RTEMS_ENV_RTEMSBSP])dnl set RTEMS_BSP +AC_REQUIRE([RTEMS_TOP])dnl sets RTEMS_TOPdir +AC_CACHE_CHECK("for RTEMS_CPU_MODEL", rtems_cv_RTEMS_CPU_MODEL, +. $RTEMS_TOPdir/c/[$]$1/make/[$]$1.cache) +RTEMS_CPU_MODEL=$rtems_cv_RTEMS_CPU_MODEL +AC_SUBST(RTEMS_CPU_MODEL) +AC_CACHE_CHECK("for RTEMS_BSP_FAMILY", rtems_cv_RTEMS_BSP_FAMILY, +. $RTEMS_TOPdir/c/[$]$1/make/[$]$1.cache) +RTEMS_BSP_FAMILY=$rtems_cv_RTEMS_BSP_FAMILY +AC_SUBST(RTEMS_BSP_FAMILY) +])dnl diff --git a/macros/check-bsps.m4 b/macros/check-bsps.m4 new file mode 100644 index 0000000000..36d8164e29 --- /dev/null +++ b/macros/check-bsps.m4 @@ -0,0 +1,50 @@ +dnl $Id$ + +dnl Report all available bsps for a target, +dnl check if a bsp-subdirectory is present for all bsps found +dnl +dnl RTEMS_CHECK_BSPS(bsp_list) +AC_DEFUN(RTEMS_CHECK_BSPS, +[ +AC_REQUIRE([RTEMS_CHECK_CPU])dnl sets RTEMS_CPU, target +AC_REQUIRE([RTEMS_TOP])dnl sets RTEMS_TOPdir +AC_MSG_CHECKING([for bsps]) + files=`ls $srcdir/$RTEMS_TOPdir/c/src/lib/libbsp/$RTEMS_CPU` + for file in $files; do + case $file in + ChangeLog*);; + shared*);; + Makefile*);; + READ*);; + CVS*);; + pxfl*);; + ac*);; + config*);; + # Now account for BSPs with build variants + c4xsim) rtems_bsp="$rtems_bsp c4xsim c3xsim";; + gen68360) rtems_bsp="$rtems_bsp gen68360 gen68360_040";; + p4000) rtems_bsp="$rtems_bsp p4600 p4650";; + mvme162) rtems_bsp="$rtems_bsp mvme162 mvme162lx";; + mbx8xx) rtems_bsp="$rtems_bsp mbx821_001 mbx860_002";; + motorola_powerpc) rtems_bsp="$rtems_bsp mvme2307 mcp750";; + pc386) rtems_bsp="$rtems_bsp pc386 pc486 pc586 pc686 pck6";; + sim68000) rtems_bsp="$rtems_bsp sim68000 simcpu32";; + *) $1="[$]$1 $file";; + esac; + done +dnl ;; +dnl esac +AC_MSG_RESULT([[$]$1 .. done]) +])dnl + +AC_DEFUN(RTEMS_CHECK_CUSTOM_BSP, +[dnl +AC_REQUIRE([RTEMS_TOP]) + +AC_MSG_CHECKING([for make/custom/[$]$1.cfg]) +if test -r "$srcdir/$RTEMS_TOPdir/make/custom/[$]$1.cfg"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_ERROR([no]) +fi +])dnl diff --git a/macros/check-cpu.m4 b/macros/check-cpu.m4 new file mode 100644 index 0000000000..b0b01117d1 --- /dev/null +++ b/macros/check-cpu.m4 @@ -0,0 +1,17 @@ +dnl $Id$ + +dnl check if RTEMS support a cpu +AC_DEFUN(RTEMS_CHECK_CPU, +[dnl +AC_REQUIRE([RTEMS_TOP]) +AC_REQUIRE([RTEMS_CANONICAL_TARGET_CPU]) + +# Is this a supported CPU? +AC_MSG_CHECKING([if cpu $RTEMS_CPU is supported]) +if test -d "$srcdir/$RTEMS_TOPdir/c/src/exec/score/cpu/$RTEMS_CPU"; then + AC_MSG_RESULT(yes) +else + AC_MSG_ERROR(no) +fi +])dnl + diff --git a/macros/check-cxx.m4 b/macros/check-cxx.m4 new file mode 100644 index 0000000000..aa51596de5 --- /dev/null +++ b/macros/check-cxx.m4 @@ -0,0 +1,26 @@ +dnl $Id$ +dnl +AC_DEFUN(RTEMS_CHECK_CXX, +[dnl +AC_REQUIRE([RTEMS_CHECK_CPU])dnl +AC_REQUIRE([RTEMS_PROG_CC_FOR_TARGET])dnl +AC_REQUIRE([RTEMS_PROG_CXX_FOR_TARGET])dnl +AC_CACHE_CHECK([whether to build rtems++], + rtems_cv_HAS_CPLUSPLUS, + [ if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then + if test -n "$CXX"; then + rtems_cv_HAS_CPLUSPLUS="yes" + else + rtems_cv_HAS_CPLUSPLUS="no" + fi + else + rtems_cv_HAS_CPLUSPLUS="no" + fi]) +HAS_CPLUSPLUS="$rtems_cv_HAS_CPLUSPLUS"; +AC_SUBST(HAS_CPLUSPLUS)dnl + +if test "$HAS_CPLUSPLUS" = "yes"; then +CPLUS_LD_LIBS='$(PROJECT_RELEASE)/lib/librtems++$(LIBSUFFIX_VA)' +fi +AC_SUBST(CPLUS_LD_LIBS) +]) diff --git a/macros/check-itron.m4 b/macros/check-itron.m4 new file mode 100644 index 0000000000..4c4dbf0042 --- /dev/null +++ b/macros/check-itron.m4 @@ -0,0 +1,37 @@ +dnl $Id$ +dnl +AC_DEFUN(RTEMS_CHECK_ITRON_API, +[dnl +AC_REQUIRE([RTEMS_CHECK_CPU])dnl +AC_REQUIRE([RTEMS_ENABLE_ITRON])dnl + +AC_CACHE_CHECK([whether CPU supports libitron], + rtems_cv_HAS_ITRON_API, + [dnl + case "$RTEMS_CPU" in + unix*) + rtems_cv_HAS_ITRON_API="no" + ;; + *) + if test "${RTEMS_HAS_ITRON_API}" = "yes"; then + rtems_cv_HAS_ITRON_API="yes"; + else + rtems_cv_HAS_ITRON_API="disabled"; + fi + ;; + esac]) +if test "$rtems_cv_HAS_ITRON_API" = "yes"; then + HAS_ITRON_API="yes"; +else + HAS_ITRON_API="no"; +fi +AC_SUBST(HAS_ITRON_API)dnl +]) + +AC_DEFUN(RTEMS_DEFINE_ITRON_API, +[AC_REQUIRE([RTEMS_CHECK_ITRON_API])dnl +if test x"${HAS_ITRON_API}" = x"yes"; +then + AC_DEFINE_UNQUOTED(RTEMS_ITRON_API,1,[if itron api is supported]) +fi +]) diff --git a/macros/check-multiprocessing.m4 b/macros/check-multiprocessing.m4 new file mode 100644 index 0000000000..6e99a38afa --- /dev/null +++ b/macros/check-multiprocessing.m4 @@ -0,0 +1,46 @@ +dnl +dnl $Id$ +dnl + +AC_DEFUN(RTEMS_CHECK_MULTIPROCESSING, +[dnl +AC_REQUIRE([RTEMS_ENABLE_MULTILIB])dnl +AC_REQUIRE([RTEMS_ENV_RTEMSBSP])dnl +AC_REQUIRE([RTEMS_TOP])dnl +AC_REQUIRE([RTEMS_CHECK_CPU])dnl +AC_REQUIRE([RTEMS_ENABLE_MULTIPROCESSING])dnl +AC_REQUIRE([RTEMS_BSP_ALIAS])dnl + +AC_CACHE_CHECK([whether BSP supports multiprocessing], + rtems_cv_HAS_MP, + [dnl + if test x"$multilib" = x"yes"; then + # FIXME: Currently, multilibs and multiprocessing can not be + # build simultaneously + rtems_cv_HAS_MP="disabled" + else + if test -d "$srcdir/${RTEMS_TOPdir}/c/src/lib/libbsp/${RTEMS_CPU}/${RTEMS_BSP_FAMILY}/shmsupp"; then + if test "$RTEMS_HAS_MULTIPROCESSING" = "yes"; then + rtems_cv_HAS_MP="yes" ; + else + rtems_cv_HAS_MP="disabled"; + fi + else + rtems_cv_HAS_MP="no"; + fi + fi]) +if test "$rtems_cv_HAS_MP" = "yes"; then +HAS_MP="yes" +else +HAS_MP="no" +fi +AC_SUBST(HAS_MP) +]) + +AC_DEFUN(RTEMS_DEFINE_MULTIPROCESSING, +[AC_REQUIRE([RTEMS_CHECK_MULTIPROCESSING])dnl +if test x"${HAS_MP}" = x"yes"; +then + AC_DEFINE_UNQUOTED(RTEMS_MULTIPROCESSING,1,[if multiprocessing is supported]) +fi +]) diff --git a/macros/check-networking.m4 b/macros/check-networking.m4 new file mode 100644 index 0000000000..db3a0c60d3 --- /dev/null +++ b/macros/check-networking.m4 @@ -0,0 +1,29 @@ +dnl $Id$ +dnl +AC_DEFUN(RTEMS_CHECK_NETWORKING, +[dnl +AC_REQUIRE([RTEMS_CHECK_CPU])dnl +AC_REQUIRE([RTEMS_ENABLE_NETWORKING])dnl + +AC_CACHE_CHECK([whether BSP supports networking], + rtems_cv_HAS_NETWORKING, + [dnl + case "$RTEMS_CPU" in + unix*) + rtems_cv_HAS_NETWORKING="no" + ;; + *) + if test "${RTEMS_HAS_NETWORKING}" = "yes"; then + rtems_cv_HAS_NETWORKING="yes"; + else + rtems_cv_HAS_NETWORKING="disabled"; + fi + ;; + esac]) +if test "$rtems_cv_HAS_NETWORKING" = "yes"; then + HAS_NETWORKING="yes"; +else + HAS_NETWORKING="no"; +fi +AC_SUBST(HAS_NETWORKING)dnl +]) diff --git a/macros/check-newlib.m4 b/macros/check-newlib.m4 new file mode 100644 index 0000000000..1984001dc8 --- /dev/null +++ b/macros/check-newlib.m4 @@ -0,0 +1,36 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_CHECK_NEWLIB, +[dnl +AC_REQUIRE([RTEMS_PROG_CC_FOR_TARGET])dnl +AC_REQUIRE([RTEMS_CANONICALIZE_TOOLS])dnl +AC_CACHE_CHECK([for newlib], + rtems_cv_use_newlib, + [ + rtems_save_CC=$CC + +dnl some versions of newlib provide not_required_by_rtems + AC_TRY_LINK( + [extern void not_required_by_rtems() ;], + [not_required_by_rtems()], + rtems_cv_use_newlib="yes") + +dnl some versions of newlib provide rtems_provides_crt0() + if test -z "$rtems_cv_use_newlib"; then + AC_TRY_LINK( + [extern void rtems_provides_crt0() ;], + [rtems_provides_crt0()], + rtems_cv_use_newlib="yes", + rtems_cv_use_newlib="no") + fi + CC=$rtems_save_CC]) +RTEMS_USE_NEWLIB="$rtems_cv_use_newlib" +AC_SUBST(RTEMS_USE_NEWLIB) + +if test x"${RTEMS_USE_NEWLIB}" = x"yes"; +then + AC_DEFINE_UNQUOTED(RTEMS_NEWLIB,1,[if using newlib]) + AC_DEFINE_UNQUOTED(MALLOC_PROVIDED,1,[if malloc is provided]) +fi +]) + diff --git a/macros/check-posix.m4 b/macros/check-posix.m4 new file mode 100644 index 0000000000..b98f382165 --- /dev/null +++ b/macros/check-posix.m4 @@ -0,0 +1,37 @@ +dnl $Id$ +dnl +AC_DEFUN(RTEMS_CHECK_POSIX_API, +[dnl +AC_REQUIRE([RTEMS_CHECK_CPU])dnl +AC_REQUIRE([RTEMS_ENABLE_POSIX])dnl + +AC_CACHE_CHECK([whether CPU supports libposix], + rtems_cv_HAS_POSIX_API, + [dnl + case "$RTEMS_CPU" in + unix*) + rtems_cv_HAS_POSIX_API="no" + ;; + *) + if test "${RTEMS_HAS_POSIX_API}" = "yes"; then + rtems_cv_HAS_POSIX_API="yes"; + else + rtems_cv_HAS_POSIX_API="disabled"; + fi + ;; + esac]) +if test "$rtems_cv_HAS_POSIX_API" = "yes"; then + HAS_POSIX_API="yes"; +else + HAS_POSIX_API="no"; +fi +AC_SUBST(HAS_POSIX_API)dnl +]) + +AC_DEFUN(RTEMS_DEFINE_POSIX_API, +[AC_REQUIRE([RTEMS_CHECK_POSIX_API])dnl +if test x"${HAS_POSIX_API}" = x"yes"; +then + AC_DEFINE_UNQUOTED(RTEMS_POSIX_API,1,[if posix api is supported]) +fi +]) diff --git a/macros/check-rdbg.m4 b/macros/check-rdbg.m4 new file mode 100644 index 0000000000..2ea5919c36 --- /dev/null +++ b/macros/check-rdbg.m4 @@ -0,0 +1,24 @@ +dnl $Id$ +dnl +AC_DEFUN(RTEMS_CHECK_RDBG, +[dnl +AC_REQUIRE([RTEMS_TOP])dnl +AC_REQUIRE([RTEMS_CHECK_CPU])dnl +AC_REQUIRE([RTEMS_CHECK_NETWORKING])dnl +AC_REQUIRE([RTEMS_ENABLE_RDBG])dnl +AC_CACHE_CHECK([whether BSP supports librdbg], + rtems_cv_HAS_RDBG, + [ + if test -d "$srcdir/${RTEMS_TOPdir}/c/src/librdbg/src/${RTEMS_CPU}/${$1}"; + then + rtems_cv_HAS_RDBG="yes" ; + elif test -d "$srcdir/${RTEMS_TOPdir}/c/src/librdbg/src/${RTEMS_CPU}/any"; + then + rtems_cv_HAS_RDBG="yes" ; + else + rtems_cv_HAS_RDBG="no"; + fi + ]) +HAS_RDBG="$rtems_cv_HAS_RDBG" +AC_SUBST(HAS_RDBG) +]) diff --git a/macros/enable-bare.m4 b/macros/enable-bare.m4 new file mode 100644 index 0000000000..fbe2e8de6d --- /dev/null +++ b/macros/enable-bare.m4 @@ -0,0 +1,21 @@ +AC_DEFUN(RTEMS_ENABLE_BARE, +[ +AC_ARG_ENABLE(bare-cpu-cflags, +[ --enable-bare-cpu-cflags specify a particular cpu cflag] +[ (bare bsp specific)], +[case "${enableval}" in + no) BARE_CPU_CFLAGS="" ;; + *) BARE_CPU_CFLAGS="${enableval}" ;; +esac], +[BARE_CPU_CFLAGS=""]) + +AC_ARG_ENABLE(bare-cpu-model, +[ --enable-bare-cpu-model specify a particular cpu model] +[ (bare bsp specific)], +[case "${enableval}" in + no) BARE_CPU_MODEL="" ;; + *) BARE_CPU_MODEL="${enableval}" ;; +esac], +[BARE_CPU_MODEL=""]) +]) + diff --git a/macros/enable-cxx.m4 b/macros/enable-cxx.m4 new file mode 100644 index 0000000000..68cad702a1 --- /dev/null +++ b/macros/enable-cxx.m4 @@ -0,0 +1,13 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_CXX, +[ +AC_ARG_ENABLE(cxx, +[ --enable-cxx enable C++ support,] +[ and build the rtems++ library], +[case "${enableval}" in + yes) RTEMS_HAS_CPLUSPLUS=yes ;; + no) RTEMS_HAS_CPLUSPLUS=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for enable-cxx option) ;; +esac], [RTEMS_HAS_CPLUSPLUS=no]) +]) diff --git a/macros/enable-gcc28.m4 b/macros/enable-gcc28.m4 new file mode 100644 index 0000000000..5f2496f53d --- /dev/null +++ b/macros/enable-gcc28.m4 @@ -0,0 +1,12 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_GCC28, +[ +AC_ARG_ENABLE(gcc28, +[ --enable-gcc28 enable use of gcc 2.8.x features], +[case "${enableval}" in + yes) RTEMS_USE_GCC272=no ;; + no) RTEMS_USE_GCC272=yes ;; + *) AC_MSG_ERROR(bad value ${enableval} for gcc-28 option) ;; +esac],[RTEMS_USE_GCC272=no]) +]) diff --git a/macros/enable-hwapi.m4 b/macros/enable-hwapi.m4 new file mode 100644 index 0000000000..ce6ef3f3a1 --- /dev/null +++ b/macros/enable-hwapi.m4 @@ -0,0 +1,15 @@ +dnl $Id$ +dnl +dnl FIXME: this needs to be reworked + +AC_DEFUN(RTEMS_ENABLE_HWAPI, +[dnl +AC_ARG_ENABLE(hwapi, \ +[ --enable-hwapi enable hardware API library], +[case "${enableval}" in + yes) RTEMS_HAS_HWAPI=yes ;; + no) RTEMS_HAS_HWAPI=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for hwapi option) ;; + esac],[RTEMS_HAS_HWAPI=no]) +AC_SUBST(RTEMS_HAS_HWAPI)dnl +])dnl diff --git a/macros/enable-inlines.m4 b/macros/enable-inlines.m4 new file mode 100644 index 0000000000..259697f825 --- /dev/null +++ b/macros/enable-inlines.m4 @@ -0,0 +1,22 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_INLINES, +[AC_ARG_ENABLE(rtems-inlines, +[ --enable-rtems-inlines enable RTEMS inline functions] +[ (default:enabled, disable to use macros)], +[case "${enableval}" in + yes) RTEMS_USE_MACROS=no ;; + no) RTEMS_USE_MACROS=yes ;; + *) AC_MSG_ERROR(bad value ${enableval} for disable-rtems-inlines option) ;; +esac],[RTEMS_USE_MACROS=no]) +AC_SUBST(RTEMS_USE_MACROS)dnl + +if test x"${RTEMS_USE_MACROS}" = x"yes"; +then + AC_DEFINE_UNQUOTED(USE_MACROS,1,[if using macros]) +else + AC_DEFINE_UNQUOTED(USE_INLINES,1,[if using inlines]) +fi + + +]) diff --git a/macros/enable-itron.m4 b/macros/enable-itron.m4 new file mode 100644 index 0000000000..bb622079e9 --- /dev/null +++ b/macros/enable-itron.m4 @@ -0,0 +1,35 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_ITRON, +[ +## AC_BEFORE([$0], [RTEMS_CHECK_ITRON_API])dnl + +AC_ARG_ENABLE(itron, +[ --enable-itron enable itron interface], +[case "${enableval}" in + yes) RTEMS_HAS_ITRON_API=yes ;; + no) RTEMS_HAS_ITRON_API=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for enable-itron option) ;; +esac],[RTEMS_HAS_ITRON_API=yes]) + +changequote(,)dnl +case "${target}" in + # hpux unix port should go here + i[34567]86-pc-linux*) # unix "simulator" port + RTEMS_HAS_ITRON_API=no + ;; + i[34567]86-*freebsd*) # unix "simulator" port + RTEMS_HAS_ITRON_API=no + ;; + no_cpu-*rtems*) + RTEMS_HAS_ITRON_API=no + ;; + sparc-sun-solaris*) # unix "simulator" port + RTEMS_HAS_ITRON_API=no + ;; + *) + ;; +esac +changequote([,])dnl +AC_SUBST(RTEMS_HAS_ITRON_API) +]) diff --git a/macros/enable-libcdir.m4 b/macros/enable-libcdir.m4 new file mode 100644 index 0000000000..892070522b --- /dev/null +++ b/macros/enable-libcdir.m4 @@ -0,0 +1,10 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_LIBCDIR, +[ +AC_ARG_ENABLE(libcdir, +[ --enable-libcdir=directory set the directory for the C library], +[ RTEMS_LIBC_DIR="${enableval}" ; \ +test -d ${enableval} || AC_MSG_ERROR("$enableval is not a directory" ) ] ) +AC_SUBST(RTEMS_LIBC_DIR)dnl +]) diff --git a/macros/enable-multiprocessing.m4 b/macros/enable-multiprocessing.m4 new file mode 100644 index 0000000000..b04b7ee524 --- /dev/null +++ b/macros/enable-multiprocessing.m4 @@ -0,0 +1,13 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_MULTIPROCESSING, +[ +AC_ARG_ENABLE(multiprocessing, +[ --enable-multiprocessing enable multiprocessing interface], +[case "${enableval}" in + yes) RTEMS_HAS_MULTIPROCESSING=yes ;; + no) RTEMS_HAS_MULTIPROCESSING=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for enable-multiprocessing option) ;; +esac],[RTEMS_HAS_MULTIPROCESSING=no]) +AC_SUBST(RTEMS_HAS_MULTIPROCESSING)dnl +]) diff --git a/macros/enable-networking.m4 b/macros/enable-networking.m4 new file mode 100644 index 0000000000..958f03030d --- /dev/null +++ b/macros/enable-networking.m4 @@ -0,0 +1,15 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_NETWORKING, +[ +## AC_BEFORE([$0], [RTEMS_CHECK_NETWORKING])dnl + +AC_ARG_ENABLE(networking, +[ --enable-networking enable TCP/IP stack], +[case "${enableval}" in + yes) RTEMS_HAS_NETWORKING=yes ;; + no) RTEMS_HAS_NETWORKING=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for enable-networking option) ;; +esac],[RTEMS_HAS_NETWORKING=yes]) +AC_SUBST(RTEMS_HAS_NETWORKING)dnl +]) diff --git a/macros/enable-posix.m4 b/macros/enable-posix.m4 new file mode 100644 index 0000000000..bbf2889b63 --- /dev/null +++ b/macros/enable-posix.m4 @@ -0,0 +1,35 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_POSIX, +[ +## AC_BEFORE([$0], [RTEMS_CHECK_POSIX_API])dnl + +AC_ARG_ENABLE(posix, +[ --enable-posix enable posix interface], +[case "${enableval}" in + yes) RTEMS_HAS_POSIX_API=yes ;; + no) RTEMS_HAS_POSIX_API=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for enable-posix option) ;; +esac],[RTEMS_HAS_POSIX_API=yes]) + +changequote(,)dnl +case "${target}" in + # hpux unix port should go here + i[34567]86-pc-linux*) # unix "simulator" port + RTEMS_HAS_POSIX_API=no + ;; + i[34567]86-*freebsd*) # unix "simulator" port + RTEMS_HAS_POSIX_API=no + ;; + no_cpu-*rtems*) + RTEMS_HAS_POSIX_API=no + ;; + sparc-sun-solaris*) # unix "simulator" port + RTEMS_HAS_POSIX_API=no + ;; + *) + ;; +esac +changequote([,])dnl +AC_SUBST(RTEMS_HAS_POSIX_API) +]) diff --git a/macros/enable-rdbg.m4 b/macros/enable-rdbg.m4 new file mode 100644 index 0000000000..a10294a06c --- /dev/null +++ b/macros/enable-rdbg.m4 @@ -0,0 +1,15 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_RDBG, +[ +AC_BEFORE([$0], [RTEMS_CHECK_RDBG])dnl + +AC_ARG_ENABLE(rdbg, +[ --enable-rdbg enable remote debugger], +[case "${enableval}" in + yes) RTEMS_HAS_RDBG=yes ;; + no) RTEMS_HAS_RDBG=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for enable-rdbg option) ;; +esac],[RTEMS_HAS_RDBG=no]) +AC_SUBST(RTEMS_HAS_RDBG)dnl +]) diff --git a/macros/enable-rtemsbsp.m4 b/macros/enable-rtemsbsp.m4 new file mode 100644 index 0000000000..fd31997d3c --- /dev/null +++ b/macros/enable-rtemsbsp.m4 @@ -0,0 +1,58 @@ +dnl $Id$ + +dnl Override the set of BSPs to be built. +dnl used by the toplevel configure script +dnl RTEMS_ENABLE_RTEMSBSP(rtems_bsp_list) +AC_DEFUN(RTEMS_ENABLE_RTEMSBSP, +[ +AC_BEFORE([$0], [RTEMS_ENV_RTEMSBSP])dnl +AC_ARG_ENABLE(rtemsbsp, +[ --enable-rtemsbsp=bsp1 bsp2 .. BSPs to include in build], +[case "${enableval}" in + yes|no) AC_MSG_ERROR([missing argument to --enable-rtemsbsp=\"bsp1 bsp2\"]);; + *) $1=$enableval;; +esac],[$1=""]) +]) + +dnl Pass a single BSP via an environment variable +dnl used by per BSP configure scripts +AC_DEFUN(RTEMS_ENV_RTEMSBSP, +[dnl +AC_BEFORE([$0], [RTEMS_ENABLE_RTEMSBSP])dnl +AC_BEFORE([$0], [RTEMS_PROJECT_ROOT])dnl +AC_BEFORE([$0], [RTEMS_CHECK_CUSTOM_BSP])dnl + +AC_MSG_CHECKING([for RTEMS_BSP]) +AC_CACHE_VAL(rtems_cv_RTEMS_BSP, +[dnl + test -n "${RTEMS_BSP}" && rtems_cv_RTEMS_BSP="$RTEMS_BSP"; +])dnl +if test -z "$rtems_cv_RTEMS_BSP"; then + AC_MSG_ERROR([Missing RTEMS_BSP]) +fi +RTEMS_BSP="$rtems_cv_RTEMS_BSP" +AC_MSG_RESULT(${RTEMS_BSP}) +AC_SUBST(RTEMS_BSP) + +RTEMS_ENABLE_BARE +AC_SUBST(BARE_CPU_MODEL) +AC_SUBST(BARE_CPU_CFLAGS) + +## RTEMS_ROOT=$RTEMS_TOPdir/'$(top_builddir)'/c/$RTEMS_BSP +## AC_SUBST(RTEMS_ROOT) +]) + +AC_DEFUN(RTEMS_ENV_RTEMSCPU, +[AC_REQUIRE([RTEMS_ENABLE_MULTILIB]) + +if test x"$multilib" = x"no"; then + RTEMS_ENV_RTEMSBSP + RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP) +else + rtems_cv_RTEMS_BSP="multilib" + RTEMS_BSP="$rtems_cv_RTEMS_BSP" + AC_SUBST(RTEMS_BSP) +## RTEMS_ROOT=$RTEMS_TOPdir/'$(top_builddir)'/c +## AC_SUBST(RTEMS_ROOT) +fi +]) diff --git a/macros/enable-tests.m4 b/macros/enable-tests.m4 new file mode 100644 index 0000000000..31419f597a --- /dev/null +++ b/macros/enable-tests.m4 @@ -0,0 +1,15 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_ENABLE_TESTS, +[ +# If the tests are enabled, then find all the test suite Makefiles +AC_MSG_CHECKING([if the test suites are enabled? ]) +AC_ARG_ENABLE(tests, +[ --enable-tests enable tests (default:disabled)], + [case "${enableval}" in + yes) tests_enabled=yes ;; + no) tests_enabled=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for tests option) ;; + esac], [tests_enabled=no]) +AC_MSG_RESULT([$tests_enabled]) +]) diff --git a/macros/gcc-pipe.m4 b/macros/gcc-pipe.m4 new file mode 100644 index 0000000000..dd3a9581d4 --- /dev/null +++ b/macros/gcc-pipe.m4 @@ -0,0 +1,21 @@ +dnl +dnl $Id$ +dnl +dnl Check whether the target compiler accepts -pipe +dnl + +AC_DEFUN(RTEMS_GCC_PIPE, +[AC_REQUIRE([RTEMS_PROG_CC]) +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_CACHE_CHECK(whether $CC accepts --pipe,rtems_cv_gcc_pipe, +[ +rtems_cv_gcc_pipe=no +if test "$ac_cv_prog_gcc" = "yes"; then + echo 'void f(){}' >conftest.c + if test -z "`${CC} --pipe -c conftest.c 2>&1`";then + rtems_cv_gcc_pipe=yes + fi + rm -f conftest* +fi +]) +]) diff --git a/macros/gcc-specs.m4 b/macros/gcc-specs.m4 new file mode 100644 index 0000000000..7d90d24644 --- /dev/null +++ b/macros/gcc-specs.m4 @@ -0,0 +1,20 @@ +dnl +dnl $Id$ +dnl +dnl Check whether the target compiler accepts -specs +dnl + +AC_DEFUN(RTEMS_GCC_SPECS, +[AC_REQUIRE([RTEMS_PROG_CC]) +AC_CACHE_CHECK(whether $CC accepts -specs,rtems_cv_gcc_specs, +[ +rtems_cv_gcc_specs=no +if test "$ac_cv_prog_gcc" = "yes"; then + touch confspec + echo 'void f(){}' >conftest.c + if test -z "`${CC} -specs confspec -c conftest.c 2>&1`";then + rtems_cv_gcc_specs=yes + fi +fi +rm -f confspec conftest* +])]) diff --git a/macros/i386-gas-code16.m4 b/macros/i386-gas-code16.m4 new file mode 100644 index 0000000000..8bfb2a5859 --- /dev/null +++ b/macros/i386-gas-code16.m4 @@ -0,0 +1,28 @@ +dnl +dnl $Id$ +dnl + +dnl check for i386 gas supporting 16 bit mode +dnl - binutils 2.9.1.0.7 and higher + +AC_DEFUN(RTEMS_I386_GAS_CODE16, +[ if test "${host_cpu}" = "i386"; then + AC_CACHE_CHECK([for 16 bit mode assembler support], + rtems_cv_prog_gas_code16, + [cat > conftest.s << EOF + .code16 + data32 + addr32 + lgdt 0 +EOF + if AC_TRY_COMMAND($AS -o conftest.o conftest.s); then + rtems_cv_prog_gas_code16=yes + else + rtems_cv_prog_gas_code16=no + fi]) + RTEMS_GAS_CODE16="$rtems_cv_prog_gas_code16" + fi + AC_SUBST(RTEMS_GAS_CODE16) + AC_DEFINE_UNQUOTED(NEW_GAS,1,[if using 16 bit mode assembler support]) +]) + diff --git a/macros/multilib.m4 b/macros/multilib.m4 new file mode 100644 index 0000000000..1d11561f0a --- /dev/null +++ b/macros/multilib.m4 @@ -0,0 +1,59 @@ +dnl This provides configure definitions used for multilib support + +dnl parts of these macros are derived from newlib-1.8.2's multilib support + +AC_DEFUN(RTEMS_ENABLE_MULTILIB, +[ +AC_ARG_ENABLE(multilib, +[ --enable-multilib build many library versions (default)], +[case "${enableval}" in + yes) multilib=yes ;; + no) multilib=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;; + esac], [multilib=no])dnl + +AM_CONDITIONAL(MULTILIB,test x"${multilib}" = x"yes") +]) + +AC_DEFUN(RTEMS_ENABLE_MULTILIB_MASTER, +[ +AC_REQUIRE([RTEMS_ENABLE_MULTILIB]) + +dnl We may get other options which we don't document: +dnl --with-target-subdir, --with-multisrctop, --with-multisubdir + +test -z "[$]{with_target_subdir}" && with_target_subdir=. + +if test "[$]{srcdir}" = "."; then + if test "[$]{with_target_subdir}" != "."; then + multilib_basedir="[$]{srcdir}/[$]{with_multisrctop}../ifelse([$2],,,[$2])" + else + multilib_basedir="[$]{srcdir}/[$]{with_multisrctop}ifelse([$2],,,[$2])" + fi +else + multilib_basedir="[$]{srcdir}/ifelse([$2],,,[$2])" +fi +AC_SUBST(multilib_basedir) + +if test "${multilib}" = "yes"; then + multilib_arg="--enable-multilib" +else + multilib_arg= +fi + +AC_OUTPUT_COMMANDS( + if test -n "$CONFIG_FILES"; do + $ac_file" = ifelse([$1],,Makefile,[$1]) \ + . ${multilib_basedir}/../config-ml.in + fi, + srcdir=${srcdir} + host=${host} + target=${target} +# with_multisrctop="${with_multisrctop}" +# with_target_subdir="${with_target_subdir}" + with_multisubdir="${with_multisubdir}" + ac_configure_args="${multilib_arg} ${ac_configure_args}" + CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + multilib_basedir=${multilib_basedir} + CC="${CC}") +]) diff --git a/macros/path-ksh.m4 b/macros/path-ksh.m4 new file mode 100644 index 0000000000..881dd0c9ec --- /dev/null +++ b/macros/path-ksh.m4 @@ -0,0 +1,14 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_PATH_KSH, +[ +dnl NOTE: prefer bash over ksh over sh +AC_PATH_PROGS(KSH,bash ksh sh) +if test -z "$KSH"; then +dnl NOTE: This cannot happen -- /bin/sh must always exist +AC_MSG_ERROR( +[***] +[ Cannot determine a usable shell bash/ksh/sh] +[ Please contact your system administrator] ); +fi +]) diff --git a/macros/path-perl.m4 b/macros/path-perl.m4 new file mode 100644 index 0000000000..e0e7dbb1f0 --- /dev/null +++ b/macros/path-perl.m4 @@ -0,0 +1,12 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_PATH_PERL, +[ +AC_PATH_PROG(PERL,perl) +if test -z "$PERL" ; then +AC_MSG_WARN( +[***] +[ perl was not found] +[ Note: Some tools will not be built.]) +fi +]) diff --git a/macros/prog-cc.m4 b/macros/prog-cc.m4 new file mode 100644 index 0000000000..f3cf4a70df --- /dev/null +++ b/macros/prog-cc.m4 @@ -0,0 +1,50 @@ +dnl +dnl $Id$ +dnl +dnl Check for target gcc +dnl + +AC_DEFUN(RTEMS_PROG_CC, +[ +AC_BEFORE([$0], [AC_PROG_CPP])dnl +AC_BEFORE([$0], [AC_PROG_CC])dnl +AC_BEFORE([$0], [RTEMS_CANONICALIZE_TOOLS])dnl +AC_REQUIRE([RTEMS_TOOL_PREFIX])dnl +AC_REQUIRE([RTEMS_ENABLE_LIBCDIR])dnl +AC_REQUIRE([RTEMS_ENABLE_GCC28])dnl + +AC_CHECK_TOOL(CC,gcc) +AC_PROG_CC + +AM_CONDITIONAL(RTEMS_USE_GCC,test x"$ac_cv_prog_gcc" = x"yes") +]) + +AC_DEFUN(RTEMS_PROG_CC_FOR_TARGET, +[ +dnl check target cc +RTEMS_PROG_CC +dnl check if the compiler supports --specs +RTEMS_GCC_SPECS +dnl check if the target compiler may use --pipe +RTEMS_GCC_PIPE +dnl check if the compiler supports --specs if gcc28 is requested +if test "$RTEMS_USE_GCC272" != "yes" ; then + if test "$rtems_cv_gcc_specs" = "no"; then + AC_MSG_WARN([*** disabling --enable-gcc28]) + RTEMS_USE_GCC272=yes + fi +fi +test "$rtems_cv_gcc_pipe" = "yes" && CC_FOR_TARGET="$CC_FOR_TARGET --pipe" + +## Conditional for automake files +AM_CONDITIONAL(RTEMS_USE_GCC272, test x"$RTEMS_USE_GCC272" = x"yes") +## Make variable for autoconf fragments (*.cfg) +AC_SUBST(RTEMS_USE_GCC272) + +dnl FIXME: HACK for egcs/cygwin mixing '\\' and '/' in gcc -print-* +case $host_os in +*cygwin*) GCCSED="| sed 's%\\\\%/%g'" ;; +*) ;; +esac +AC_SUBST(GCCSED) +]) diff --git a/macros/prog-cxx.m4 b/macros/prog-cxx.m4 new file mode 100644 index 0000000000..72d3a20957 --- /dev/null +++ b/macros/prog-cxx.m4 @@ -0,0 +1,32 @@ +dnl +dnl $Id$ +dnl +dnl Check for target g++ +dnl + +AC_DEFUN(RTEMS_PROG_CXX, +[ +AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl +AC_BEFORE([$0], [RTEMS_CANONICALIZE_TOOLS])dnl +AC_REQUIRE([RTEMS_TOOL_PREFIX])dnl +AC_REQUIRE([RTEMS_ENABLE_LIBCDIR])dnl + +dnl Only accept g++ +dnl NOTE: This might be too restrictive +AC_CHECK_TOOL(CXX,g++) +AC_PROG_CXX +test -z "$CXX" \ + && AC_MSG_ERROR([no acceptable c++ found in \$PATH]) +]) + +AC_DEFUN(RTEMS_PROG_CXX_FOR_TARGET, +[ + RTEMS_PROG_CXX + if test "$ac_cv_prog_cc_cross" != "$ac_cv_prog_cxx_cross"; then + AC_MSG_ERROR([***] + [Inconsistency in compiler configuration:] + [Target C compiler and target C++ compiler] + [must both either be cross compilers or native compilers] + [Hint: If building a posix bsp: LD_LIBRARY_PATH?] ) + fi +]) diff --git a/macros/project-root.m4 b/macros/project-root.m4 new file mode 100644 index 0000000000..35fd15b7aa --- /dev/null +++ b/macros/project-root.m4 @@ -0,0 +1,47 @@ +dnl +dnl $Id$ +dnl + +dnl +dnl PROJECT_TOPdir .. relative path to the top of the build-tree +dnl PROJECT_ROOT .. relative path to the top of the temporary +dnl installation directory inside the build-tree +dnl RTEMS_TOPdir .. relative path of a subpackage's configure.in to the +dnl toplevel configure.in of the source-tree +dnl RTEMS_ROOT .. path to the top of a bsp's build directory +dnl [Applied by custom/*.cfg, depredicated otherwise] +dnl + +AC_DEFUN(RTEMS_PROJECT_ROOT, +[dnl +AC_REQUIRE([RTEMS_TOP]) +if test "$TARGET_SUBDIR" = "." ; then +# Native +PROJECT_TOPdir=${RTEMS_TOPdir}/'$(top_builddir)' +PROJECT_ROOT=${RTEMS_TOPdir}/'$(top_builddir)'; +else +# FIXME: Moving the build-tree +# PROJECT_TOPdir=../${RTEMS_TOPdir}/'$(top_builddir)' +# PROJECT_ROOT=${RTEMS_TOPdir}/'$(top_builddir)' + +# FIXME: Old, per-bsp building style +PROJECT_TOPdir=../${RTEMS_TOPdir}/'$(top_builddir)' +PROJECT_ROOT=../${RTEMS_TOPdir}/'$(top_builddir)' +fi +AC_SUBST(PROJECT_ROOT) +AC_SUBST(PROJECT_TOPdir) + +# FIXME: This should not be here +RTEMS_ROOT=$RTEMS_TOPdir/'$(top_builddir)'/c/$RTEMS_BSP +AC_SUBST(RTEMS_ROOT) + +PACKHEX="\$(PROJECT_TOPdir)/tools/build/packhex" +AC_SUBST(PACKHEX) + +PROJECT_INCLUDE="\$(PROJECT_ROOT)/$RTEMS_BSP/lib/include" +AC_SUBST(PROJECT_INCLUDE) + +PROJECT_RELEASE="\$(PROJECT_ROOT)/$RTEMS_BSP" +AC_SUBST(PROJECT_RELEASE) +]) + diff --git a/macros/rtems-debug.m4 b/macros/rtems-debug.m4 new file mode 100644 index 0000000000..d895b921b0 --- /dev/null +++ b/macros/rtems-debug.m4 @@ -0,0 +1,21 @@ +## $Id$ + +AC_DEFUN(RTEMS_ENABLE_RTEMS_DEBUG, +[ +AC_ARG_ENABLE(rtems-debug, +[ --disable-rtems-debug disable RTEMS_DEBUG], +[case "${enableval}" in + yes) RTEMS_DEBUG=yes ;; + no) RTEMS_DEBUG=no ;; + *) AC_MSG_ERROR([bad value ${enableval} for RTEMS_DEBUG]) ;; +esac],[RTEMS_DEBUG=no]) +]) + +AC_DEFUN(RTEMS_CHECK_RTEMS_DEBUG, +[AC_REQUIRE([RTEMS_ENABLE_RTEMS_DEBUG]) +if test x"${RTEMS_DEBUG}" = x"yes"; +then + AC_DEFINE_UNQUOTED(RTEMS_DEBUG,1,[if RTEMS_DEBUG is enabled]) +fi +]) + diff --git a/macros/rtems-test-no-pause.m4 b/macros/rtems-test-no-pause.m4 new file mode 100644 index 0000000000..edf9dea25b --- /dev/null +++ b/macros/rtems-test-no-pause.m4 @@ -0,0 +1,18 @@ +AC_DEFUN(RTEMS_ENABLE_RTEMS_TEST_NO_PAUSE, +[AC_ARG_ENABLE(test-no-pause, +[ --disable-test-no-pause disable RTEMS_TEST_NO_PAUSE], +[case "${enableval}" in + yes) RTEMS_TEST_NO_PAUSE=yes ;; + no) RTEMS_TEST_NO_PAUSE=no ;; + *) AC_MSG_ERROR([bad value ${enableval} for RTEMS_TEST_NO_PAUSE]) ;; +esac],[RTEMS_TEST_NO_PAUSE=yes]) +]) + +AC_DEFUN(RTEMS_CHECK_RTEMS_TEST_NO_PAUSE, +[AC_REQUIRE([RTEMS_ENABLE_RTEMS_TEST_NO_PAUSE]) +if test x"${RTEMS_TEST_NO_PAUSE}" = x"yes"; +then + AC_DEFINE_UNQUOTED(RTEMS_TEST_NO_PAUSE,1,[if RTEMS_TEST_NO_PAUSE is enabled]) +fi +]) + diff --git a/macros/rtems-top.m4 b/macros/rtems-top.m4 new file mode 100644 index 0000000000..26abdf330d --- /dev/null +++ b/macros/rtems-top.m4 @@ -0,0 +1,44 @@ +dnl $Id$ + +dnl +dnl RTEMS_TOP($1) +dnl +dnl $1 .. relative path from this configure.in to the toplevel configure.in +dnl +AC_DEFUN(RTEMS_TOP, +[dnl +AC_CHECK_PROGS(MAKE, gmake make) +AC_BEFORE([$0], [AC_CONFIG_AUX_DIR])dnl +AC_BEFORE([$0], [AM_INIT_AUTOMAKE])dnl + +## HACK to allow gnu-make conditionals in automake-Makefiles. +ENDIF=endif +AC_SUBST(ENDIF) + +## HACK to destinguish between using GNU and RTEMS canonicalization +AM_CONDITIONAL(RTEMS_CANONICALIZATION,test "x" = "y") + +AC_ARG_WITH(target-subdir, +[ --with-target-subdir=DIR], +TARGET_SUBDIR="$withval", +TARGET_SUBDIR=".") + +RTEMS_TOPdir="$1"; +AC_SUBST(RTEMS_TOPdir) + +dnl Determine RTEMS Version string from the VERSION file +dnl Hopefully, Joel never changes its format ;- +AC_MSG_CHECKING([for RTEMS Version]) +if test -r "${srcdir}/${RTEMS_TOPdir}/VERSION"; then +changequote(,)dnl +RTEMS_VERSION=`grep 'RTEMS Version' ${srcdir}/${RTEMS_TOPdir}/VERSION | \ +sed -e 's%RTEMS[ ]*Version[ ]*\(.*\)[ ]*%\1%g'` +changequote([,])dnl +else +AC_MSG_ERROR(Unable to find ${RTEMS_TOPdir}/VERSION) +fi +if test -z "$RTEMS_VERSION"; then +AC_MSG_ERROR(Unable to determine version) +fi +AC_MSG_RESULT($RTEMS_VERSION) +])dnl diff --git a/macros/sysv-ipc.m4 b/macros/sysv-ipc.m4 new file mode 100644 index 0000000000..883921e2c8 --- /dev/null +++ b/macros/sysv-ipc.m4 @@ -0,0 +1,133 @@ +dnl +dnl $Id$ +dnl +dnl Check for System V IPC calls used by Unix simulators +dnl +dnl 98/07/17 Dario Alcocer alcocer@netcom.com +dnl Ralf Corsepius corsepiu@faw.uni-ulm.de +dnl +dnl Note: $host_os should probably *not* ever be used here to +dnl determine if host supports System V IPC calls, since some +dnl (e.g. FreeBSD 2.x) are configured by default to include only +dnl a subset of the System V IPC calls. Therefore, to make sure +dnl all of the required calls are found, test for each call explicitly. +dnl +dnl All of the calls use IPC_PRIVATE, so tests will not unintentionally +dnl modify any existing key sets. See the man pages for semget, shmget, +dnl msgget, semctl, shmctl and msgctl for details. + +AC_DEFUN(RTEMS_UNION_SEMUN, +[ +AC_CACHE_CHECK([whether $RTEMS_HOST defines union semun], + rtems_cv_HAS_UNION_SEMUN, + [AC_TRY_COMPILE([ +#include +#include +#include ], +[union semun arg ;], +[rtems_cv_HAS_UNION_SEMUN="yes"], +[rtems_cv_HAS_UNION_SEMUN="no"]) + +if test "$rtems_cv_HAS_UNION_SEMUN" = "yes"; then + AC_DEFINE(HAS_UNION_SEMUN) +fi]) +]) + +AC_DEFUN(RTEMS_SYSV_SEM, +[AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([RTEMS_CANONICAL_HOST]) +AC_CACHE_CHECK(whether $RTEMS_HOST supports System V semaphores, +rtems_cv_sysv_sem, +[ +AC_TRY_RUN( +[ +#include +#include +#include +#if !HAS_UNION_SEMUN + union semun { + int val; + struct semid_ds *buf; + ushort *array; + } ; +#endif +int main () { + union semun arg ; + + int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400); + if (id == -1) + exit(1); + arg.val = 0; /* avoid implicit type cast to union */ + if (semctl(id, 0, IPC_RMID, arg) == -1) + exit(1); + exit(0); +} +], +rtems_cv_sysv_sem="yes", rtems_cv_sysv_sem="no", :) +]) +]) + +AC_DEFUN(RTEMS_SYSV_SHM, +[AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([RTEMS_CANONICAL_HOST]) +AC_CACHE_CHECK(whether $RTEMS_HOST supports System V shared memory, +rtems_cv_sysv_shm, +[ +AC_TRY_RUN([ +#include +#include +#include +int main () { + int id=shmget(IPC_PRIVATE,1,IPC_CREAT|0400); + if (id == -1) + exit(1); + if (shmctl(id, IPC_RMID, 0) == -1) + exit(1); + exit(0); +} +], +rtems_cv_sysv_shm="yes", rtems_cv_sysv_shm="no", :) +]) +]) + +AC_DEFUN(RTEMS_SYSV_MSG, +[AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([RTEMS_CANONICAL_HOST]) +AC_CACHE_CHECK(whether $RTEMS_HOST supports System V messages, +rtems_cv_sysv_msg, +[ +AC_TRY_RUN([ +#include +#include +#include +int main () { + int id=msgget(IPC_PRIVATE,IPC_CREAT|0400); + if (id == -1) + exit(1); + if (msgctl(id, IPC_RMID, 0) == -1) + exit(1); + exit(0); +} +], +rtems_cv_sysv_msg="yes", rtems_cv_sysv_msg="no", :) +]) +]) + +AC_DEFUN(RTEMS_CHECK_SYSV_UNIX, +[AC_REQUIRE([RTEMS_CANONICAL_HOST]) +if test "$RTEMS_CPU" = "unix" ; then + RTEMS_UNION_SEMUN + RTEMS_SYSV_SEM + if test "$rtems_cv_sysv_sem" != "yes" ; then + AC_MSG_ERROR([System V semaphores don't work, required by simulator]) + fi + RTEMS_SYSV_SHM + if test "$rtems_cv_sysv_shm" != "yes" ; then + AC_MSG_ERROR([System V shared memory doesn't work, required by simulator]) + fi + RTEMS_SYSV_MSG + if test "$rtems_cv_sysv_msg" != "yes" ; then + AC_MSG_ERROR([System V messages don't work, required by simulator]) + fi +fi +]) diff --git a/macros/target.m4 b/macros/target.m4 new file mode 100644 index 0000000000..517811d51b --- /dev/null +++ b/macros/target.m4 @@ -0,0 +1,127 @@ +dnl $Id$ + +AC_DEFUN(RTEMS_CONFIG_SUBDIRS, +[ +define([RTEMS_TGT_SUBDIRS], +ifdef([RTEMS_TGT_SUBDIRS], [RTEMS_TGT_SUBDIRS ],)[$1])dnl +target_subdirs="RTEMS_TGT_SUBDIRS" +AC_SUBST(target_subdirs) +]) + +dnl Derived from automake-1.4's AC_OUTPUT_SUBDIRS +AC_DEFUN(RTEMS_OUTPUT_SUBDIRS, +[ +if test "$no_recursion" != yes; then + if test $target_alias != $host_alias; then + target_subdir="$target_alias" + else + target_subdir="." + fi + # Remove --cache-file and --srcdir arguments so they do not pile up. + ac_sub_configure_args= + ac_prev= + for ac_arg in $ac_configure_args; do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case "$ac_arg" in + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; + esac + done + + test -d $target_subdir || mkdir $target_subdir + for ac_config_dir in $1; do + + # Do not complain, so a configure script can configure whichever + # parts of a large source tree are present. + if test ! -d $srcdir/$ac_config_dir; then + continue + fi + + echo configuring in $target_subdir/$ac_config_dir + + case "$srcdir" in +## .) ;; + *) + if test -d $target_subdir/$ac_config_dir || mkdir $target_subdir/$ac_config_dir; then :; + else + AC_MSG_ERROR(can not create `pwd`/$target_subdir/$ac_config_dir) + fi + ;; + esac + + ac_popdir=`pwd` + cd $target_subdir/$ac_config_dir + +changequote(, )dnl + # A "../" for each directory in /$ac_config_dir. + ac_dots=`echo $target_subdir/$ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` +changequote([, ])dnl + + case "$srcdir" in +## .) # No --srcdir option. We are building in place. +## ac_sub_srcdir=$srcdir ;; + /*) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_config_dir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_sub_srcdir/configure; then + ac_sub_configure=$ac_sub_srcdir/configure + elif test -f $ac_sub_srcdir/configure.in; then + ac_sub_configure=$ac_configure + else + AC_MSG_WARN(no configuration information is in $ac_config_dir) + ac_sub_configure= + fi + + # The recursion is here. + if test -n "$ac_sub_configure"; then + + # Make the cache file name correct relative to the subdirectory. + if test "$target_alias" != "$host_alias"; then + ac_sub_cache_file=$cache_file + else + case "$cache_file" in + /*) ac_sub_cache_file=$cache_file ;; + *) # Relative path. + ac_sub_cache_file="$ac_dots$cache_file" ;; + esac + fi +ifdef([AC_PROVIDE_AC_PROG_INSTALL], + [ case "$ac_given_INSTALL" in +changequote(, )dnl + [/$]*) INSTALL="$ac_given_INSTALL" ;; +changequote([, ])dnl + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac +])dnl + + echo "[running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file] --srcdir=$ac_sub_srcdir" + # The eval makes quoting arguments work. + if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure \ + $ac_sub_configure_args --srcdir=$ac_sub_srcdir \ + --with-target-subdir=$target_subdir --cache-file=$ac_sub_cache_file + then : + else + AC_MSG_ERROR($ac_sub_configure failed for $ac_config_dir) + fi + fi + + cd $ac_popdir + done +fi +]) diff --git a/macros/tool-paths.m4 b/macros/tool-paths.m4 new file mode 100644 index 0000000000..cb61747afd --- /dev/null +++ b/macros/tool-paths.m4 @@ -0,0 +1,23 @@ +AC_DEFUN(RTEMS_TOOLPATHS, +[ +# tooldir='$(exec_prefix)/'$target_alias +# Temporary work-around until building in source tree is supported +AC_REQUIRE([RTEMS_PROJECT_ROOT]) + +tooldir='$(PROJECT_ROOT)' +AC_SUBST(tooldir) + +project_includedir='$(tooldir)'/include +AC_SUBST(project_includedir) + +project_libdir='$(tooldir)/lib$(MULTISUBDIR)' +AC_SUBST(project_libdir) + +project_bindir='$(tooldir)/bin' +AC_SUBST(project_bindir) + +rtems_bspdir='$(prefix)/${RTEMS_BSP}' +AC_SUBST(rtems_bspdir) +rtems_makedir='$(prefix)/make' +AC_SUBST(rtems_makedir) +]) diff --git a/macros/tool-prefix.m4 b/macros/tool-prefix.m4 new file mode 100644 index 0000000000..563cca8e8f --- /dev/null +++ b/macros/tool-prefix.m4 @@ -0,0 +1,22 @@ +dnl +dnl $Id$ +dnl +dnl Set program_prefix +dnl +dnl 98/05/20 Ralf Corsepius (corsepiu@faw.uni-ulm.de) +dnl Extracted from configure + +AC_DEFUN(RTEMS_TOOL_PREFIX, +[AC_REQUIRE([AC_CANONICAL_TARGET])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl + +changequote(,)dnl +if [ "${program_prefix}" = "NONE" ] ; then + if [ "${target}" = "${host}" ] ; then + program_prefix= + else + program_prefix=${target}- + fi +fi +changequote([,])dnl +]) -- cgit v1.2.3