source: rtems/configure.in @ 196094eb

4.104.114.84.95
Last change on this file since 196094eb was 6b7ab9bf, checked in by Joel Sherrill <joel.sherrill@…>, on 04/16/99 at 18:23:48

Patch from Ralf Corsepius <corsepiu@…>:

FYI: I am not talking about using "make -C <dir>", which probably
is much faster on M$ hosts than RTEMS's implementation, but about
removing --enable-gmake-print support and to apply a variant of
automake's subdirectory.

Automake's subdirectory rule seems to be a little bit faster, but I
wouldn't bet on this.

Attached to this mail is my proposal.

After applying the patch, please run

cvs rm aclocal/enable-gmake-print.m4
./autogen

  • Property mode set to 100644
File size: 13.0 KB
Line 
1
2dnl Process this file with autoconf to produce a configure script.
3dnl
4dnl  $Id$
5
6AC_PREREQ(2.13)
7AC_INIT(README)
8RTEMS_TOP(.)
9
10dnl Checks for programs.
11AC_PROG_MAKE_SET
12AC_CANONICAL_SYSTEM
13
14AC_ARG_WITH(cross-host,[  --with-cross-host=HOST      host (cygnus)], \
15host=$withval)
16
17RTEMS_ENABLE_MULTIPROCESSING
18RTEMS_ENABLE_POSIX
19RTEMS_ENABLE_NETWORKING
20RTEMS_ENABLE_RDBG
21RTEMS_ENABLE_INLINES
22RTEMS_ENABLE_CXX
23RTEMS_ENABLE_GCC28
24RTEMS_ENABLE_LIBCDIR
25RTEMS_ENABLE_BARE
26
27RTEMS_PREFIX=${target_cpu}-${target_vendor}
28
29dnl BEGIN configure.host.in
30
31AC_PATH_PROG(CAT,cat)
32AC_PATH_PROG(RM,rm)
33AC_PATH_PROG(CP,cp)
34AC_PATH_PROG(MV,mv)
35AC_PATH_PROG(LN,ln)
36AC_PROG_LN_S
37AC_PATH_PROG(CHMOD,chmod)
38AC_PATH_PROG(SORT,sort)
39AC_PROG_INSTALL
40RTEMS_PATH_PERL
41
42dnl check mkdir behaviour, try to get mkdir -p -m 0755
43dnl NOTE: This is considered obsolete
44dnl MKDIR is not used anywhere in the source tree anymore.
45dnl In Makefile.ins/Makefile.ams, use
46dnl "mkinstalldirs" for recursive mkdir and
47dnl "mkdir" for non-recursive mkdir, instead
48RTEMS_PATH_MKDIR
49RTEMS_PROG_MKDIR_M
50RTEMS_PROG_MKDIR_P
51test "$rtems_cv_prog_MKDIR_P" = "yes" && MKDIR="$MKDIR -p"
52#test "$rtems_cv_prog_MKDIR_M" = "yes" && MKDIR="$MKDIR -m 0755"
53
54AC_PATH_PROG(TOUCH,touch)
55AC_PATH_PROG(CMP,cmp)
56
57AC_PATH_PROG(SED,sed)
58AC_PATH_PROGS(M4,gm4 m4)
59
60RTEMS_PATH_KSH
61
62dnl BEGIN configure.target.in
63
64dnl echo "TARGET"
65dnl echo "    cpu    --> $target_cpu"
66dnl echo "    os     --> $target_os"
67dnl echo "    vendor --> $target_vendor"
68
69dnl canonicalize target name
70dnl NOTE: Most rtems targets do not fullfil autoconf
71dnl targets naming conventions "processor-vendor-os"
72dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them
73dnl and we have to fix it for rtems ourselves
74dnl
75dnl The original plan was to do CPU-BSP-rtems or CPU-rtems to
76dnl imply all BSPs.  Eventually we would like to build a collection
77dnl of CPU model specific RTEMS libraries which in conjunction with
78dnl a BSP library would be used to link an application.
79
80RTEMS_CANONICAL_TARGET_CPU
81RTEMS_CHECK_CPU
82RTEMS_CANONICAL_HOST
83
84changequote(,)dnl
85case "${target}" in
86  i[3456]86-go32-rtems*)
87    rtems_bsp="go32 go32_p5"
88    skip_startfiles="yes"
89    ;;
90  *)
91    ;;
92esac
93changequote([,])dnl
94
95# Override the set of BSPs to be built.
96AC_ARG_ENABLE(rtemsbsp, \
97  [  --enable-rtemsbsp=bsp1 bsp2 ..   BSPs to include in build], \
98      rtems_bsp=$enableval \
99)
100
101RTEMS_TOOL_PREFIX
102
103dnl check target cc
104RTEMS_PROG_CC
105dnl check if the compiler supports --specs
106RTEMS_GCC_SPECS
107dnl check if the target compiler may use --pipe
108RTEMS_GCC_PIPE
109
110dnl check if the compiler supports --specs if gcc28 is requested
111if test "$RTEMS_USE_GCC272" != "yes" ; then
112  if test "$rtems_cv_gcc_specs" = "no"; then
113    AC_MSG_WARN([*** disabling --enable-gcc28])
114     RTEMS_USE_GCC272=yes
115  fi
116fi
117test "$rtems_cv_gcc_pipe" = "yes" && CC_FOR_TARGET="$CC_FOR_TARGET --pipe"
118
119dnl check for g++
120if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then
121  RTEMS_PROG_CXX
122  if test "$rtems_cv_prog_cc_cross" != "$rtems_cv_prog_cxx_cross"; then
123    AC_MSG_ERROR([***]
124     [Inconsistency in compiler configuration:]
125     [Target C compiler and Target C++ compiler]
126     [must both either be cross compilers or native compilers]
127     [Hint: If building a posix bsp: LD_LIBRARY_PATH?] )
128  fi
129else
130  CXX_FOR_TARGET="no"
131fi
132
133RTEMS_CANONICALIZE_TOOLS
134
135dnl if this is an i386, does gas have good code16 support?
136RTEMS_I386_GAS_CODE16
137
138dnl check host cc
139AC_PROG_CC
140dnl check for .exe (Cygwin)
141AC_EXEEXT
142
143dnl FIXME: HACK for egcs/cygwin mixing '\\' and '/' in gcc -print-*
144case $host_os in
145*cygwin32*)     GCCSED="| sed 's%\\\\%/%g'" ;;
146*) ;;
147esac
148AC_SUBST(GCCSED)
149
150dnl FIXME: This is a kludge
151dnl Set flags to settings all gcc variants are assumed to accept.
152if test "$ac_cv_prog_gcc" = "yes"; then
153dnl Add -Wall if using gcc as host compiler
154  CC_CFLAGS_DEFAULT=-Wall
155dnl Add -pg to profile flags, unless specified in the environment
156  CC_CFLAGS_PROFILE_V=${CC_CFLAGS_PROFILE_V-"-pg"}
157dnl propagate cflags to ldflags, unless specified in the environment
158  CC_LDFLAGS_PROFILE_V=${CC_LDFLAGS_PROFILE_V-$CC_CFLAGS_PROFILE_V}
159fi
160
161dnl Add -g if the host compiler accepts -g, assume -g means debugging
162test "$ac_cv_prog_cc_g" = "yes" && CC_CFLAGS_DEBUG_V=${CC_CFLAGS_DEBUG_V-"-g"}
163
164dnl check for SysV IPC used by simulators
165if test "$target_cpu" = "unix" ; then
166  RTEMS_SYSV_SEM
167  if test "$rtems_cv_sysv_sem" != "yes" ; then
168    AC_MSG_ERROR([System V semaphores don't work, required by simulator])
169  fi
170  RTEMS_SYSV_SHM
171  if test "$rtems_cv_sysv_shm" != "yes" ; then
172    AC_MSG_ERROR([System V shared memory doesn't work, required by simulator])
173  fi
174  RTEMS_SYSV_MSG
175  if test "$rtems_cv_sysv_msg" != "yes" ; then
176    AC_MSG_ERROR([System V messages don't work, required by simulator])
177  fi
178fi
179
180# Collect config subdirs for exec/score/tools
181t="c/src/exec/score/tools"
182scoretools_cfgdirs="$t/generic"
183if test -d $srcdir/$t/$target_cpu; then
184  scoretools_cfgdirs="$scoretools_cfgdirs $t/$target_cpu"
185fi
186
187# find all the Executive Makefiles
188RTEMS_CHECK_MAKEFILE(c/src/exec/rtems)
189RTEMS_CHECK_MAKEFILE(c/src/exec/sapi)
190RTEMS_CHECK_MAKEFILE(c/src/exec/score/cpu/$target_cpu)
191
192if test "$RTEMS_HAS_POSIX_API" = "yes"; then
193  RTEMS_CHECK_MAKEFILE(c/src/exec/posix)
194  makefiles="$makefiles c/src/exec/wrapup/posix/Makefile"
195fi
196
197# find all the Makefiles for the BSPs
198if test -d "$srcdir/c/src/lib/libbsp/$target_cpu"; then
199  makefiles="$makefiles c/src/lib/libbsp/$target_cpu/Makefile"
200
201  if test -z "$rtems_bsp"; then
202    AC_MSG_CHECKING([for bsps])
203    files=`ls $srcdir/c/src/lib/libbsp/$target_cpu`
204    for file in $files; do
205      case $file in
206        shared*);;
207        Makefile*);;
208        READ*);;
209        CVS*);;
210        pxfl*);;
211        go32*);;       # so the i386 port can pick up the other Makefiles
212        # Now account for BSPs with build variants
213        gen68360)      rtems_bsp="$rtems_bsp gen68360 gen68360_040";;
214        p4000)         rtems_bsp="$rtems_bsp p4600 p4650";;
215        mvme162)       rtems_bsp="$rtems_bsp mvme162 mvme162lx";;
216        *) rtems_bsp="$rtems_bsp $file";;
217      esac;
218    done
219
220    makefiles="$makefiles c/src/lib/libbsp/bare/Makefile"
221
222    AC_MSG_RESULT([$rtems_bsp done])
223  fi
224
225  # collect makefiles for each bsp
226  for i in $rtems_bsp; do
227    # make sure there is a make/custom file for the bsp
228    if test ! -r "$srcdir/make/custom/${i}.cfg"; then
229      AC_MSG_ERROR([no make/custom/${i}.cfg file for BSP $i])
230    fi
231 
232    # account for "aliased" bsps which share source code
233    case $i in
234      mvme162lx)    bspdir=mvme162  ;;  # mvme162 board variant
235      gen68360_040) bspdir=gen68360 ;;  # 68360 in companion mode
236      go32_p5)      bspdir=go32     ;;  # go32 on Pentium class CPU
237      p4600)        bspdir=p4000    ;;  # p4000 board with IDT 4600
238      p4650)        bspdir=p4000    ;;  # p4000 board with IDT 4650
239      *)            bspdir=$i;;
240    esac
241
242    # Is there code where there should be for this BSP?
243    # The bare bsp is a special case as it is not under the target_cpu path
244    case $i in
245      bare)
246        bspcpudir=
247        if test "X${BARE_CPU_CFLAGS}" = "X" ; then
248          AC_MSG_ERROR([--enable-bare-cpu-cflags not specified for bare bsp])
249        fi
250        if test "X${BARE_CPU_MODEL}" = "X" ; then
251          AC_MSG_ERROR([--enable-bare-cpu-model not specified for bare bsp])
252        fi
253        ;;
254      *)
255        bspcpudir=$target_cpu/
256        ;;
257    esac
258     
259    if test -d "$srcdir/c/src/lib/libbsp/$bspcpudir$bspdir"; then
260      RTEMS_BSP_LIST="$RTEMS_BSP_LIST $i"
261      # make sure the Makefiles in a bsp directory are only done once
262      echo $bspdirs | grep $bspdir >/dev/null 2>&1
263      if test $? -ne 0 ; then
264        bspdirs="$bspdirs $bspdir"
265        RTEMS_CHECK_MAKEFILE(c/src/lib/libbsp/$bspcpudir$bspdir)
266        RTEMS_CHECK_MAKEFILE(c/src/lib/libbsp/${bspcpudir}shared)
267
268        # HACK: sed out bsp-tools from makefiles
269        t="c/src/lib/libbsp/$bspcpudir$bspdir/tools"
270        if test -d "$srcdir/$t"; then
271          bsptools_cfgdirs="$bsptools_cfgdirs $t"
272          makefiles=`echo "$makefiles" | sed -e "s%$t/Makefile%%g"`
273        fi
274      fi
275    else
276      AC_MSG_ERROR([unable to find libbsp directory ($bspdir) for  $i])
277    fi
278  done
279fi
280
281# find all the CPU dependent library Makefiles
282RTEMS_CHECK_MAKEFILE(c/src/lib/libcpu/$target_cpu)
283
284dnl Workaround for go32
285if test "$skip_startfiles" != "yes"; then
286  RTEMS_CHECK_MAKEFILE(c/src/lib/start/$target_cpu)
287fi
288
289dnl END configure.target.in
290
291# If RTEMS macros are enabled, then use them.  Otherwise, use inlines.
292if test "$RTEMS_USE_MACROS" = "yes"; then
293  inline_dir=macros
294  if test "$RTEMS_HAS_POSIX_API" = "yes"; then
295    # The problem is that there is currently no code in posix/macros :)
296    AC_MSG_ERROR(Macros are not implemented for the POSIX API)
297  fi
298else
299  inline_dir=inline
300fi
301
302# If the TCP/IP stack is enabled, then find all TCP/IP Makefiles
303AC_MSG_CHECKING([if networking is enabled? ])
304AC_MSG_RESULT($RTEMS_HAS_NETWORKING)
305if test "$RTEMS_HAS_NETWORKING" = "yes"; then
306  RTEMS_CHECK_MAKEFILE(c/src/lib/libnetworking)
307  RTEMS_CHECK_MAKEFILE(c/src/lib/librpc)
308  if test "$RTEMS_HAS_RDBG" = "yes"; then
309    AC_MSG_CHECKING([whether cpu supports rdbg? ])
310    test ! -d "$srcdir/c/src/lib/librdbg/$target_cpu" && RTEMS_HAS_RDBG="no" ;
311    AC_MSG_RESULT($RTEMS_HAS_RDBG)
312    if test "$RTEMS_HAS_RDBG" = "yes"; then
313      AC_PATH_PROG(RPCGEN,rpcgen)
314      test -z "$RPCGEN" && RTEMS_HAS_RDBG="no"
315    fi
316    if test "$RTEMS_HAS_RDBG" = "yes"; then
317      AC_PROG_AWK
318      test -z "$AWK" && RTEMS_HAS_RDBG="no"
319    fi
320    if test "$RTEMS_HAS_RDBG" = "yes"; then
321      RTEMS_CHECK_MAKEFILE(c/src/lib/librdbg)
322    else
323      AC_MSG_WARN([*** warning disabling --enable-rdbg])
324    fi
325  fi
326fi
327
328# If the C++ support is enabled, then include the Makefiles
329if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then
330  makefiles="$makefiles c/src/lib/librtems++/Makefile"
331fi
332
333RTEMS_ENABLE_TESTS
334
335# always build the test tools
336testtools_cfgdirs="c/src/tests/tools/generic"
337if test "$tests_enabled" = "yes"; then
338   RTEMS_CHECK_MAKEFILE(c/src/tests/libtests)
339   RTEMS_CHECK_MAKEFILE(c/src/tests/sptests)
340   RTEMS_CHECK_MAKEFILE(c/src/tests/tmtests)
341   if test "$RTEMS_HAS_MULTIPROCESSING" = "yes"; then
342       RTEMS_CHECK_MAKEFILE(c/src/tests/mptests)
343   fi
344   if test "$RTEMS_HAS_POSIX_API" = "yes"; then
345     RTEMS_CHECK_MAKEFILE(c/src/tests/psxtests)
346   fi
347   if test -d "$srcdir/c/src/tests/tools/$target_cpu"; then
348     testtools_cfgdirs="$testtools_cfgdirs c/src/tests/tools/$target_cpu"
349   fi
350fi
351
352# If the HWAPI is enabled, the find the HWAPI Makefiles
353RTEMS_ENABLE_HWAPI
354if test "$RTEMS_HAS_HWAPI" = "yes"; then
355  AC_MSG_CHECKING(whether libwapi is present)
356  if test -f ${srcdir}/c/src/lib/libhwapi/Makefile.in ; then
357    AC_MSG_RESULT(yes)
358    makefiles="$makefiles c/src/lib/libhwapi/Makefile"
359    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/analog)
360    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/discrete)
361    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/drivers)
362    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/non_volatile_memory)
363    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/serial)
364    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/support)
365    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/wrapup)
366  else
367    AC_MSG_ERROR(No source code found for the HWAPI)
368  fi
369fi
370
371AC_SUBST(rtems_cv_prog_cc_cross)
372AC_SUBST(RTEMS_BSP_LIST)
373AC_SUBST(RTEMS_HAS_CPLUSPLUS)
374AC_SUBST(RTEMS_USE_GCC272)
375AC_SUBST(BARE_CPU_CFLAGS)
376AC_SUBST(BARE_CPU_MODEL)
377AC_SUBST(program_prefix)
378AC_SUBST(CC_CFLAGS_DEFAULT)
379AC_SUBST(CC_CFLAGS_DEBUG_V)
380AC_SUBST(CC_CFLAGS_PROFILE_V)
381AC_SUBST(CC_LDFLAGS_PROFILE_V)
382
383# pick up all the Makefiles in required parts of the tree
384RTEMS_CHECK_MAKEFILE(make)
385RTEMS_CHECK_MAKEFILE(c/src/lib/libchip)
386RTEMS_CHECK_MAKEFILE(c/src/lib/libmisc)
387RTEMS_CHECK_MAKEFILE(c/src/tests/samples)
388
389AC_CONFIG_SUBDIRS(c/build-tools)
390AC_CONFIG_SUBDIRS(c/update-tools)
391AC_CONFIG_SUBDIRS($scoretools_cfgdirs)
392AC_CONFIG_SUBDIRS($bsptools_cfgdirs)
393AC_CONFIG_SUBDIRS($testtools_cfgdirs)
394
395# FIXME: libhwapi needs a separate configure.in in future ;-
396# AC_CONFIG_SUBDIRS(c/src/lib/libhwapi)
397
398# try not to explicitly list a Makefile here
399AC_OUTPUT(
400Makefile
401make/host.cfg
402make/target.cfg
403make/Templates/Makefile.inc
404make/compilers/gcc.cfg
405c/Makefile
406c/src/Makefile
407c/src/exec/Makefile
408c/src/exec/score/Makefile
409c/src/exec/score/cpu/Makefile
410c/src/exec/score/include/Makefile
411c/src/exec/score/include/rtems/Makefile
412c/src/exec/score/include/rtems/wrap/Makefile
413c/src/exec/score/include/rtems/score/Makefile
414c/src/exec/score/${inline_dir}/Makefile
415c/src/exec/score/${inline_dir}/rtems/Makefile
416c/src/exec/score/${inline_dir}/rtems/score/Makefile
417c/src/exec/score/src/Makefile
418c/src/exec/score/tools/Makefile
419c/src/exec/wrapup/Makefile
420c/src/exec/wrapup/rtems/Makefile
421c/src/lib/Makefile
422c/src/lib/include/Makefile
423c/src/lib/libbsp/Makefile
424c/src/lib/libbsp/shmdr/Makefile
425c/src/lib/libc/Makefile
426c/src/lib/libcpu/Makefile
427c/src/lib/start/Makefile
428c/src/lib/wrapup/Makefile
429c/src/tests/Makefile
430c/src/tests/support/Makefile
431c/src/tests/support/include/Makefile
432c/src/tests/support/stubdr/Makefile
433c/src/tests/support/wrapup/Makefile
434c/src/tests/tools/Makefile
435$makefiles)
436
437echo
438echo target architecture: $target_cpu.
439echo available BSPs: $rtems_bsp.
440echo \'make all\' will build the following BSPs: $RTEMS_BSP_LIST.
441echo other BSPs can be built with \'make RTEMS_BSP=\"bsp1 bsp2 ...\"\'
442echo
Note: See TracBrowser for help on using the repository browser.