source: rtems/configure.in @ 0895bdb

4.104.114.84.95
Last change on this file since 0895bdb was 97e2729d, checked in by Joel Sherrill <joel.sherrill@…>, on 11/23/98 at 17:38:09

Added --disable-multiprocessing flag and modified a lot of files to make
it work.

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