source: rtems/configure.in @ d7c9cbe4

4.104.114.84.95
Last change on this file since d7c9cbe4 was d7c9cbe4, checked in by Joel Sherrill <joel.sherrill@…>, on 06/03/98 at 11:22:18

ppc-rtems is now an alias for powerpc-rtems.

  • Property mode set to 100644
File size: 13.8 KB
Line 
1dnl Process this file with autoconf to produce a configure script.
2dnl
3dnl  $Id$
4
5AC_PREREQ(2.12)
6AC_INIT(README)
7
8dnl Checks for programs.
9AC_PROG_MAKE_SET
10AC_CANONICAL_SYSTEM
11AC_ARG_WITH(cross-host,[  --with-cross-host=HOST      host (cygnus)], \
12host=$withval)
13
14AC_ARG_ENABLE(gmake-print-directory, \
15[  --enable-gmake-print-directory    enable GNU Make's print directory], \
16[case "${enableval}" in
17  yes) RTEMS_USE_OWN_PDIR=no ;;
18  no) RTEMS_USE_OWN_PDIR=yes ;;
19  *)  AC_MSG_ERROR(bad value ${enableval} for gmake-print-directory option) ;;
20esac],[RTEMS_USE_OWN_PDIR=yes])
21
22AC_ARG_ENABLE(posix, \
23[  --enable-posix                   enable posix interface], \
24[case "${enableval}" in
25  yes) RTEMS_HAS_POSIX_API=yes ;;
26  no) RTEMS_HAS_POSIX_API=no ;;
27  *)  AC_MSG_ERROR(bad value ${enableval} for enable-posix option) ;;
28esac],[RTEMS_HAS_POSIX_API=yes])
29
30AC_ARG_ENABLE(ka9q, \
31[  --enable-ka9q                enable KA9Q TCP/IP stack], \
32[case "${enableval}" in
33  yes) RTEMS_HAS_KA9Q=yes ;;
34  no) RTEMS_HAS_KA9Q=no ;;
35  *)  AC_MSG_ERROR(bad value ${enableval} for enable-ka9q option) ;;
36esac],[RTEMS_HAS_KA9Q=yes])
37
38AC_ARG_ENABLE(rtems-inlines, \
39[  --enable-rtems-inlines           enable RTEMS inline functions (use macros)], \
40[case "${enableval}" in
41  yes) RTEMS_USE_MACROS=no ;;
42  no) RTEMS_USE_MACROS=yes ;;
43  *)  AC_MSG_ERROR(bad value ${enableval} for disable-rtems-inlines option) ;;
44esac],[RTEMS_USE_MACROS=no])
45
46AC_ARG_ENABLE(cxx, \
47[  --enable-cxx            enable C++ support, and build the rtems++ library], \
48[case "${enableval}" in
49  yes) RTEMS_HAS_CPLUSPLUS=yes ;;
50  no) RTEMS_HAS_CPLUSPLUS=no   ;;
51  *)  AC_MSG_ERROR(bad value ${enableval} for enable-cxx option) ;;
52esac], [RTEMS_HAS_CPLUSPLUS=no])
53
54AC_ARG_ENABLE(gcc28, \
55[  --enable-gcc28                   enable use of gcc 2.8.x features], \
56[case "${enableval}" in
57  yes) RTEMS_USE_GCC272=no ;;
58  no) RTEMS_USE_GCC272=yes ;;
59  *)  AC_MSG_ERROR(bad value ${enableval} for gcc-28 option) ;;
60esac],[RTEMS_USE_GCC272=no])
61
62AC_ARG_ENABLE(libcdir, \
63[  --enable-libcdir=directory       set the directory for the C library], \
64[ RTEMS_LIBC_DIR="${enableval}" ; \
65test -d ${enableval} || AC_MSG_ERROR("$enableval is not a directory" ) ] )
66
67AC_ARG_ENABLE(bare-cpu-cflags,
68[  --enable-bare-cpu-cflags          \
69         specify a particular cpu cflag (bare bsp specific)],
70[case "${enableval}" in
71  no) BARE_CPU_CFLAGS="" ;;
72  *)    BARE_CPU_CFLAGS="${enableval}" ;;
73esac],
74[BARE_CPU_CFLAGS=""])
75
76AC_ARG_ENABLE(bare-cpu-model,
77[  --enable-bare-cpu-model              \
78         specify a particular cpu model (bare bsp specific)],
79[case "${enableval}" in
80  no)   BARE_CPU_MODEL="" ;;
81  *)    BARE_CPU_MODEL="${enableval}" ;;
82esac],
83[BARE_CPU_MODEL=""])
84
85RTEMS_PREFIX=${target_cpu}-${target_vendor}
86
87dnl BEGIN configure.host.in
88
89AC_PATH_PROG(CAT,cat)
90AC_PATH_PROG(RM,rm)
91AC_PATH_PROG(CP,cp)
92AC_PATH_PROG(MV,mv)
93AC_PATH_PROG(LN,ln)
94AC_PROG_LN_S
95AC_PATH_PROG(CHMOD,chmod)
96AC_PATH_PROG(SORT,sort)
97
98dnl check mkdir behaviour, try to get mkdir -p -m 0755
99RTEMS_PATH_MKDIR
100RTEMS_PROG_MKDIR_M
101RTEMS_PROG_MKDIR_P
102test "$rtems_cv_prog_MKDIR_P" = "yes" && MKDIR="$MKDIR -p"
103test "$rtems_cv_prog_MKDIR_M" = "yes" && MKDIR="$MKDIR -m 0755"
104
105AC_PATH_PROG(TOUCH,touch)
106AC_PATH_PROG(CMP,cmp)
107
108AC_PATH_PROG(SED,sed)
109AC_PATH_PROGS(M4,gm4 m4)
110
111dnl NOTE: prefer bash over ksh over sh
112AC_PATH_PROGS(KSH,bash ksh sh)
113
114if test -z "$KSH"; then
115dnl NOTE: This cannot happen -- /bin/sh must always exist
116AC_MSG_ERROR(
117[***]
118[    Cannot determine a usable shell bash/ksh/sh]
119[    Please contact your system administrator] );
120fi
121
122dnl BEGIN configure.target.in
123
124dnl echo "TARGET"
125dnl echo "    cpu    --> $target_cpu"
126dnl echo "    os     --> $target_os"
127dnl echo "    vendor --> $target_vendor"
128
129dnl canonicalize target name
130dnl NOTE: Most rtems targets do not fullfil autoconf
131dnl targets naming conventions "processor-vendor-os"
132dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them
133dnl and we have to fix it for rtems ourselves
134dnl
135dnl The original plan was to do CPU-BSP-rtems or CPU-rtems to
136dnl imply all BSPs.  Eventually we would like to build a collection
137dnl of CPU model specific RTEMS libraries which in conjunction with
138dnl a BSP library would be used to link an application.
139
140RTEMS_HOST=$host_os
141
142case "${target}" in
143  # hpux unix port should go here
144  i[[3456]]86-go32-rtems*)
145        target_cpu=i386
146        rtems_bsp="go32 go32_p5"
147        skip_startfiles="yes"
148        RTEMS_HAS_POSIX_API=no
149        ;;
150  i[[3456]]86-pc-linux*)         # unix "simulator" port
151        target_cpu=unix
152        RTEMS_HOST=Linux
153        # override these settings
154        RTEMS_HAS_POSIX_API=no
155        ;;
156  no_cpu-*rtems*)
157        target_cpu=no_cpu
158        RTEMS_HAS_POSIX_API=no
159        ;;
160  ppc*-*rtems*)
161        target_cpu=powerpc
162        ;;
163  sparc-sun-solaris*)             # unix "simulator" port
164        target_cpu=unix
165        RTEMS_HOST=Solaris
166        # override these settings
167        RTEMS_HAS_POSIX_API=no
168        ;;
169  *)
170        RTEMS_CANONICAL_TARGET_CPU
171        ;;
172esac
173
174# Override the set of BSPs to be built.
175AC_ARG_ENABLE(rtemsbsp, \
176  [  --enable-rtemsbsp=bsp1 bsp2 ..   BSPs to include in build], \
177      rtems_bsp=$enableval \
178)
179
180# Is this a supported CPU?
181AC_MSG_CHECKING([if cpu $target_cpu is supported])
182if test -d "$srcdir/c/src/exec/score/cpu/$target_cpu"; then
183  AC_MSG_RESULT(yes)
184  makefiles="$makefiles c/src/exec/score/cpu/$target_cpu/Makefile"
185else
186  AC_MSG_ERROR(no)
187fi
188
189RTEMS_TOOL_PREFIX
190
191dnl check target cc
192RTEMS_PROG_CC
193dnl check if the compiler supports --specs
194RTEMS_GCC_SPECS
195dnl check if the target compiler may use --pipe
196RTEMS_GCC_PIPE
197
198dnl check if the compiler supports --specs if gcc28 is requested
199if test "$RTEMS_USE_GCC272" != "yes" ; then
200  if test "$rtems_cv_gcc_specs" = "no"; then
201    AC_MSG_WARN([*** disabling --enable-gcc28])
202     RTEMS_USE_GCC272=yes
203  fi
204fi
205test "$rtems_cv_gcc_pipe" = "yes" && CC_FOR_TARGET="$CC_FOR_TARGET --pipe"
206
207dnl check for g++
208if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then
209  RTEMS_PROG_CXX
210  if test "$rtems_cv_prog_cc_cross" != "$rtems_cv_prog_cxx_cross"; then
211    AC_MSG_ERROR([***]
212     [Inconsistency in compiler configuration:]
213     [Target C compiler and Target C++ compiler]
214     [must both ether be cross compilers or native compilers]
215     [Hint: If building a posix bsp: LD_LIBRARY_PATH?] )
216  fi
217else
218  CXX_FOR_TARGET="no"
219fi
220
221RTEMS_CANONICALIZE_TOOLS
222
223dnl check host cc
224AC_PROG_CC
225
226dnl check for host library functions
227dnl NOTE: must be called after AC_PROG_CC
228AC_CHECK_FUNCS(strerror)
229
230# find all the Executive Makefiles
231RTEMS_CHECK_MAKEFILE(c/src/exec/score/tools/$target_cpu)
232RTEMS_CHECK_MAKEFILE(c/src/exec/rtems)
233RTEMS_CHECK_MAKEFILE(c/src/exec/sapi)
234
235if test "$RTEMS_HAS_POSIX_API" = "yes"; then
236  RTEMS_CHECK_MAKEFILE(c/src/exec/posix)
237  makefiles="$makefiles c/src/exec/wrapup/posix/Makefile"
238fi
239
240# find all the Makefiles for the BSPs
241if test -d "$srcdir/c/src/lib/libbsp/$target_cpu"; then
242  makefiles="$makefiles c/src/lib/libbsp/$target_cpu/Makefile"
243
244  if test -z "$rtems_bsp"; then
245    AC_MSG_CHECKING([for bsps])
246    files=`ls $srcdir/c/src/lib/libbsp/$target_cpu`
247    for file in $files; do
248      case $file in
249        shared*);;
250        Makefile*);;
251        READ*);;
252        CVS*);;
253        pxfl*);;
254        go32*);;       # so the i386 port can pick up the other Makefiles
255        # Now account for BSPs with build variants
256        gen68360)      rtems_bsp="$rtems_bsp gen68360 gen68360_040";;
257        p4000)         rtems_bsp="$rtems_bsp p4600 p4650";;
258        mvme162)       rtems_bsp="$rtems_bsp mvme162 mvme162lx";;
259        *) rtems_bsp="$rtems_bsp $file";;
260      esac;
261    done
262
263    makefiles="$makefiles c/src/lib/libbsp/bare/Makefile"
264
265    AC_MSG_RESULT([$rtems_bsp done])
266  fi
267
268  # collect makefiles for each bsp
269  for i in $rtems_bsp; do
270    # make sure there is a make/custom file for the bsp
271    if test ! -r "$srcdir/make/custom/${i}.cfg"; then
272      AC_MSG_ERROR([no make/custom/${i}.cfg file for BSP $i])
273    fi
274 
275    # account for "aliased" bsps which share source code
276    case $i in
277      mvme162lx)    bspdir=mvme162  ;;  # mvme162 board variant
278      gen68360_040) bspdir=gen68360 ;;  # 68360 in companion mode
279      go32_p5)      bspdir=go32     ;;  # go32 on Pentium class CPU
280      p4600)        bspdir=p4000    ;;  # p4000 board with IDT 4600
281      p4650)        bspdir=p4000    ;;  # p4000 board with IDT 4650
282      *)            bspdir=$i;;
283    esac
284
285    # Is there code where there should be for this BSP?
286    # The bare bsp is a special case as it is not under the target_cpu path
287    case $i in
288      bare)
289        if test -d "$srcdir/c/src/lib/libbsp/$bspdir"; then
290          RTEMS_BSP_LIST="$RTEMS_BSP_LIST $i"
291          # make sure the Makefiles in a bsp directory are only done once
292          echo $bspdirs | grep $bspdir >/dev/null 2>&1
293          if test $? -ne 0 ; then
294            bspdirs="$bspdirs $bspdir"
295            RTEMS_CHECK_MAKEFILE(c/src/lib/libbsp/$bspdir)
296          fi
297        else
298          AC_MSG_ERROR([unable to find libbsp directory ($bspdir) for  $i])
299        fi
300      ;;
301      *)
302        if test -d "$srcdir/c/src/lib/libbsp/$target_cpu/$bspdir"; then
303          RTEMS_BSP_LIST="$RTEMS_BSP_LIST $i"
304          # make sure the Makefiles in a bsp directory are only done once
305          echo $bspdirs | grep $bspdir >/dev/null 2>&1
306          if test $? -ne 0 ; then
307            bspdirs="$bspdirs $bspdir"
308            RTEMS_CHECK_MAKEFILE(c/src/lib/libbsp/$target_cpu/$bspdir)
309          fi
310        else
311          AC_MSG_ERROR([unable to find libbsp directory ($bspdir) for  $i])
312        fi
313      ;;
314    esac
315   
316  done
317fi
318
319# find all the CPU dependent library Makefiles
320RTEMS_CHECK_MAKEFILE(c/src/lib/libcpu/$target_cpu)
321
322dnl Workaround for go32
323if test "$skip_startfiles" != "yes"; then
324  RTEMS_CHECK_MAKEFILE(c/src/lib/start/$target_cpu)
325fi
326
327dnl END configure.target.in
328
329
330PROJECT_ROOT=`pwd;`
331
332# If RTEMS macros are enabled, then use them.  Otherwise, use inlines.
333if test "$RTEMS_USE_MACROS" = "yes"; then
334  inline_dir=macros
335  if test "$RTEMS_HAS_POSIX_API" = "yes"; then
336    # The problem is that there is currently no code in posix/macros :)
337    AC_MSG_ERROR(Macros are not implemented for the POSIX API)
338  fi
339else
340  inline_dir=inline
341fi
342
343# If the KA9Q TCP/IP stack is enabled, then find all KA9Q Makefiles
344if test "$RTEMS_HAS_KA9Q" = "yes"; then
345  makefiles="$makefiles c/src/lib/libka9q/Makefile"
346fi
347
348# If the C++ support is enabled, then include the Makefiles
349if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then
350  makefiles="$makefiles c/src/lib/librtems++/Makefile"
351fi
352
353# If the tests are enabled, then find all the test suite Makefiles
354AC_MSG_CHECKING([if the test suites are enabled? ])
355tests_enabled=yes
356AC_ARG_ENABLE(tests, \
357[  --enable-tests                   enable tests], \
358  [case "${enableval}" in
359    yes) AC_MSG_RESULT(yes) ;;
360    no)  AC_MSG_RESULT(no) ; tests_enabled=no ;;
361    *)   AC_MSG_ERROR(bad value ${enableval} for tests option) ;;
362  esac],
363AC_MSG_RESULT(yes)
364)
365
366RTEMS_CHECK_MAKEFILE(c/src/tests/tools/$target_cpu)
367
368if test "$tests_enabled" = "yes"; then
369   RTEMS_CHECK_MAKEFILE(c/src/tests/libtests)
370   RTEMS_CHECK_MAKEFILE(c/src/tests/sptests)
371   RTEMS_CHECK_MAKEFILE(c/src/tests/tmtests)
372   RTEMS_CHECK_MAKEFILE(c/src/tests/mptests)
373   if test "$RTEMS_HAS_POSIX_API" = "yes"; then
374     RTEMS_CHECK_MAKEFILE(c/src/tests/psxtests)
375   fi
376fi
377
378# If the HWAPI is enabled, the find the HWAPI Makefiles
379AC_MSG_CHECKING([if the HWAPI is enabled? ])
380AC_ARG_ENABLE(hwapi, \
381[  --enable-hwapi                 enable hardware API library], \
382  [case "${enableval}" in
383    yes) AC_MSG_RESULT(yes)
384         if test -f ${srcdir}/c/src/lib/libhwapi/Makefile.in ; then
385            makefiles="$makefiles c/src/lib/libhwapi/Makefile"
386            RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/analog)
387            RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/discrete)
388            RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/drivers)
389            RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/non_volatile_memory)
390            RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/serial)
391            RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/support)
392            RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/wrapup)
393         else
394            AC_MSG_ERROR(No source code found for the HWAPI)
395         fi
396         ;;
397    no)  AC_MSG_RESULT(no) ;;
398    *)  AC_MSG_ERROR(bad value ${enableval} for hwapi option) ;;
399  esac],
400  AC_MSG_RESULT(no)
401)
402
403AC_SUBST(rtems_cv_prog_cc_cross)
404AC_SUBST(RTEMS_BSP_LIST)
405AC_SUBST(RTEMS_HOST)
406AC_SUBST(RTEMS_LIBC_DIR)
407AC_SUBST(RTEMS_USE_OWN_PDIR)
408AC_SUBST(RTEMS_HAS_POSIX_API)
409AC_SUBST(RTEMS_HAS_KA9Q)
410AC_SUBST(RTEMS_USE_MACROS)
411AC_SUBST(RTEMS_HAS_CPLUSPLUS)
412AC_SUBST(RTEMS_USE_GCC272)
413AC_SUBST(RTEMS_LIBC_DIR)
414AC_SUBST(BARE_CPU_CFLAGS)
415AC_SUBST(BARE_CPU_MODEL)
416AC_SUBST(PROJECT_ROOT)
417AC_SUBST(program_prefix)
418
419# pick up all the Makefiles in required parts of the tree
420RTEMS_CHECK_MAKEFILE(c/build-tools)
421RTEMS_CHECK_MAKEFILE(make)
422RTEMS_CHECK_MAKEFILE(c/src/lib/libmisc)
423RTEMS_CHECK_MAKEFILE(c/src/tests/samples)
424
425AC_CONFIG_HEADER(c/build-tools/src/config.h)
426
427# try not to explicitly list a Makefile here
428AC_OUTPUT(
429Makefile
430make/host.cfg
431make/target.cfg
432make/Templates/Makefile.inc
433c/Makefile
434c/src/Makefile
435c/src/exec/Makefile
436c/src/exec/score/Makefile
437c/src/exec/score/cpu/Makefile
438c/src/exec/score/headers/Makefile
439c/src/exec/score/${inline_dir}/Makefile
440c/src/exec/score/src/Makefile
441c/src/exec/score/tools/Makefile
442c/src/exec/score/tools/generic/Makefile
443c/src/exec/score/tools/generic/size_rtems
444c/src/exec/wrapup/Makefile
445c/src/exec/wrapup/rtems/Makefile
446c/src/lib/Makefile
447c/src/lib/include/Makefile
448c/src/lib/libbsp/Makefile
449c/src/lib/libbsp/shmdr/Makefile
450c/src/lib/libc/Makefile
451c/src/lib/libcpu/Makefile
452c/src/lib/start/Makefile
453c/src/lib/wrapup/Makefile
454c/src/tests/Makefile
455c/src/tests/support/Makefile
456c/src/tests/support/include/Makefile
457c/src/tests/support/stubdr/Makefile
458c/src/tests/support/wrapup/Makefile
459c/src/tests/tools/Makefile
460c/src/tests/tools/generic/Makefile
461$makefiles
462c/build-tools/scripts/rtems-glom
463c/update-tools/Makefile)
464
465echo
466echo target architecture: $target_cpu.
467echo available BSPs: $rtems_bsp.
468echo \'make all\' will build the following BSPs: $RTEMS_BSP_LIST.
469echo other BSPs can be built with \'make RTEMS_BSP=\"bsp1 bsp2 ...\"\'
470echo
Note: See TracBrowser for help on using the repository browser.