source: rtems/configure.in @ 9b8baa1

4.104.114.84.95
Last change on this file since 9b8baa1 was 9b8baa1, checked in by Joel Sherrill <joel.sherrill@…>, on 03/23/99 at 18:02:17

Automake II patch from Ralf Corsepius <corsepiu@…>. Email
description follows:

Description:

  • automake for *all* tool subdirectories (Makefile.am, configure.in etc.)
  • autogen now also considers CONFIG_HEADER (generates stamp-h.ins and config.h.ins)
  • c/src/tests/tools/generic/difftest and c/src/tests/tools/generic/sorttimes generated by configure scripts
  • c/update-tools/ampolish, beautifier for Makefile.ams, similar to acpolish
  • rtems-polish.sh added to c/update-tools/ + ampolish support
  • New subdirectory ./automake, contains automake -Makefile fragments to support RTEMS make "debug, debug_install, profile, profile_install" for native Makefile.ams (== ignore these make targets).
  • aclocal/rtems-top.m4's RTEMS_TOP now reads the automake makefile variable VERSION from RTEMS ./VERSION file.
  • ./configure.in uses the macros from aclocal + support for the tools' configure scripts

Remarks:

  • To run rtems-polish.sh, "cd <rtems-source-tree>; ./c/update-tools/rtems-polish.sh"
  • AFAIS, now all native subdirectories are converted to automake (Please drop me a note, if I forgot something).
  • Unless you notice something fatal, IMO the time has come for a public try (== snapshot). I do not intend to send more automake related patches within, say 2 weeks, to give these patches time to settle and to give me some time to think on how to continue.
  • The patch assumes installation to the new main installation directory [$(prefix)].
  • Property mode set to 100644
File size: 12.7 KB
Line 
1dnl Process this file with autoconf to produce a configure script.
2dnl
3dnl  $Id$
4
5AC_PREREQ(2.13)
6AC_INIT(README)
7RTEMS_TOP(.)
8
9dnl Checks for programs.
10AC_PROG_MAKE_SET
11AC_CANONICAL_SYSTEM
12
13AC_ARG_WITH(cross-host,[  --with-cross-host=HOST      host (cygnus)], \
14host=$withval)
15
16RTEMS_ENABLE_GMAKE_PRINT
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_HOST=$host_os
81
82RTEMS_CANONICAL_TARGET_CPU
83RTEMS_CHECK_CPU
84RTEMS_CANONICAL_HOST
85
86changequote(,)dnl
87case "${target}" in
88  i[3456]86-go32-rtems*)
89    rtems_bsp="go32 go32_p5"
90    skip_startfiles="yes"
91    ;;
92  *)
93    ;;
94esac
95changequote([,])dnl
96
97# Override the set of BSPs to be built.
98AC_ARG_ENABLE(rtemsbsp, \
99  [  --enable-rtemsbsp=bsp1 bsp2 ..   BSPs to include in build], \
100      rtems_bsp=$enableval \
101)
102
103RTEMS_TOOL_PREFIX
104
105dnl check target cc
106RTEMS_PROG_CC
107dnl check if the compiler supports --specs
108RTEMS_GCC_SPECS
109dnl check if the target compiler may use --pipe
110RTEMS_GCC_PIPE
111
112dnl check if the compiler supports --specs if gcc28 is requested
113if test "$RTEMS_USE_GCC272" != "yes" ; then
114  if test "$rtems_cv_gcc_specs" = "no"; then
115    AC_MSG_WARN([*** disabling --enable-gcc28])
116     RTEMS_USE_GCC272=yes
117  fi
118fi
119test "$rtems_cv_gcc_pipe" = "yes" && CC_FOR_TARGET="$CC_FOR_TARGET --pipe"
120
121dnl check for g++
122if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then
123  RTEMS_PROG_CXX
124  if test "$rtems_cv_prog_cc_cross" != "$rtems_cv_prog_cxx_cross"; then
125    AC_MSG_ERROR([***]
126     [Inconsistency in compiler configuration:]
127     [Target C compiler and Target C++ compiler]
128     [must both either be cross compilers or native compilers]
129     [Hint: If building a posix bsp: LD_LIBRARY_PATH?] )
130  fi
131else
132  CXX_FOR_TARGET="no"
133fi
134
135RTEMS_CANONICALIZE_TOOLS
136
137dnl if this is an i386, does gas have good code16 support?
138RTEMS_I386_GAS_CODE16
139
140dnl check host cc
141AC_PROG_CC
142dnl check for .exe (Cygwin)
143AC_EXEEXT
144
145dnl FIXME: HACK for egcs/cygwin mixing '\\' and '/' in gcc -print-*
146case $host_os in
147*cygwin32*)     GCCSED="| sed 's%\\\\%/%g'" ;;
148*) ;;
149esac
150AC_SUBST(GCCSED)
151
152dnl FIXME: This is a kludge
153dnl Set flags to settings all gcc variants are assumed to accept.
154if test "$ac_cv_prog_gcc" = "yes"; then
155dnl Add -Wall if using gcc as host compiler
156  CC_CFLAGS_DEFAULT=-Wall
157dnl Add -pg to profile flags, unless specified in the environment
158  CC_CFLAGS_PROFILE_V=${CC_CFLAGS_PROFILE_V-"-pg"}
159dnl propagate cflags to ldflags, unless specified in the environment
160  CC_LDFLAGS_PROFILE_V=${CC_LDFLAGS_PROFILE_V-$CC_CFLAGS_PROFILE_V}
161fi
162
163dnl Add -g if the host compiler accepts -g, assume -g means debugging
164test "$ac_cv_prog_cc_g" = "yes" && CC_CFLAGS_DEBUG_V=${CC_CFLAGS_DEBUG_V-"-g"}
165
166dnl check for SysV IPC used by simulators
167if test "$target_cpu" = "unix" ; then
168  RTEMS_SYSV_SEM
169  if test "$rtems_cv_sysv_sem" != "yes" ; then
170    AC_MSG_ERROR([System V semaphores don't work, required by simulator])
171  fi
172  RTEMS_SYSV_SHM
173  if test "$rtems_cv_sysv_shm" != "yes" ; then
174    AC_MSG_ERROR([System V shared memory doesn't work, required by simulator])
175  fi
176  RTEMS_SYSV_MSG
177  if test "$rtems_cv_sysv_msg" != "yes" ; then
178    AC_MSG_ERROR([System V messages don't work, required by simulator])
179  fi
180fi
181
182# Collect config subdirs for exec/score/tools
183t="c/src/exec/score/tools"
184scoretools_cfgdirs="$t/generic"
185if test -d $srcdir/$t/$target_cpu; then
186  scoretools_cfgdirs="$scoretools_cfgdirs $t/$target_cpu"
187fi
188
189# find all the Executive Makefiles
190RTEMS_CHECK_MAKEFILE(c/src/exec/rtems)
191RTEMS_CHECK_MAKEFILE(c/src/exec/sapi)
192RTEMS_CHECK_MAKEFILE(c/src/exec/score/cpu/$target_cpu)
193
194if test "$RTEMS_HAS_POSIX_API" = "yes"; then
195  RTEMS_CHECK_MAKEFILE(c/src/exec/posix)
196  makefiles="$makefiles c/src/exec/wrapup/posix/Makefile"
197fi
198
199# find all the Makefiles for the BSPs
200if test -d "$srcdir/c/src/lib/libbsp/$target_cpu"; then
201  makefiles="$makefiles c/src/lib/libbsp/$target_cpu/Makefile"
202
203  if test -z "$rtems_bsp"; then
204    AC_MSG_CHECKING([for bsps])
205    files=`ls $srcdir/c/src/lib/libbsp/$target_cpu`
206    for file in $files; do
207      case $file in
208        shared*);;
209        Makefile*);;
210        READ*);;
211        CVS*);;
212        pxfl*);;
213        go32*);;       # so the i386 port can pick up the other Makefiles
214        # Now account for BSPs with build variants
215        gen68360)      rtems_bsp="$rtems_bsp gen68360 gen68360_040";;
216        p4000)         rtems_bsp="$rtems_bsp p4600 p4650";;
217        mvme162)       rtems_bsp="$rtems_bsp mvme162 mvme162lx";;
218        *) rtems_bsp="$rtems_bsp $file";;
219      esac;
220    done
221
222    makefiles="$makefiles c/src/lib/libbsp/bare/Makefile"
223
224    AC_MSG_RESULT([$rtems_bsp done])
225  fi
226
227  # collect makefiles for each bsp
228  for i in $rtems_bsp; do
229    # make sure there is a make/custom file for the bsp
230    if test ! -r "$srcdir/make/custom/${i}.cfg"; then
231      AC_MSG_ERROR([no make/custom/${i}.cfg file for BSP $i])
232    fi
233 
234    # account for "aliased" bsps which share source code
235    case $i in
236      mvme162lx)    bspdir=mvme162  ;;  # mvme162 board variant
237      gen68360_040) bspdir=gen68360 ;;  # 68360 in companion mode
238      go32_p5)      bspdir=go32     ;;  # go32 on Pentium class CPU
239      p4600)        bspdir=p4000    ;;  # p4000 board with IDT 4600
240      p4650)        bspdir=p4000    ;;  # p4000 board with IDT 4650
241      *)            bspdir=$i;;
242    esac
243
244    # Is there code where there should be for this BSP?
245    # The bare bsp is a special case as it is not under the target_cpu path
246    case $i in
247      bare)
248        bspcpudir=
249        if test "X${BARE_CPU_CFLAGS}" = "X" ; then
250          AC_MSG_ERROR([--enable-bare-cpu-cflags not specified for bare bsp])
251        fi
252        if test "X${BARE_CPU_MODEL}" = "X" ; then
253          AC_MSG_ERROR([--enable-bare-cpu-model not specified for bare bsp])
254        fi
255        ;;
256      *)
257        bspcpudir=$target_cpu/
258        ;;
259    esac
260     
261    if test -d "$srcdir/c/src/lib/libbsp/$bspcpudir$bspdir"; then
262      RTEMS_BSP_LIST="$RTEMS_BSP_LIST $i"
263      # make sure the Makefiles in a bsp directory are only done once
264      echo $bspdirs | grep $bspdir >/dev/null 2>&1
265      if test $? -ne 0 ; then
266        bspdirs="$bspdirs $bspdir"
267        RTEMS_CHECK_MAKEFILE(c/src/lib/libbsp/$bspcpudir$bspdir)
268        RTEMS_CHECK_MAKEFILE(c/src/lib/libbsp/${bspcpudir}shared)
269
270        # HACK: sed out bsp-tools from makefiles
271        t="c/src/lib/libbsp/$bspcpudir$bspdir/tools"
272        if test -d "$srcdir/$t"; then
273          bsptools_cfgdirs="$bsptools_cfgdirs $t"
274          makefiles=`echo "$makefiles" | sed -e "s%$t/Makefile%%g"`
275        fi
276      fi
277    else
278      AC_MSG_ERROR([unable to find libbsp directory ($bspdir) for  $i])
279    fi
280  done
281fi
282
283# find all the CPU dependent library Makefiles
284RTEMS_CHECK_MAKEFILE(c/src/lib/libcpu/$target_cpu)
285
286dnl Workaround for go32
287if test "$skip_startfiles" != "yes"; then
288  RTEMS_CHECK_MAKEFILE(c/src/lib/start/$target_cpu)
289fi
290
291dnl END configure.target.in
292
293PROJECT_ROOT=`pwd;`
294
295# If RTEMS macros are enabled, then use them.  Otherwise, use inlines.
296if test "$RTEMS_USE_MACROS" = "yes"; then
297  inline_dir=macros
298  if test "$RTEMS_HAS_POSIX_API" = "yes"; then
299    # The problem is that there is currently no code in posix/macros :)
300    AC_MSG_ERROR(Macros are not implemented for the POSIX API)
301  fi
302else
303  inline_dir=inline
304fi
305
306# If the TCP/IP stack is enabled, then find all TCP/IP Makefiles
307AC_MSG_CHECKING([if networking is enabled? ])
308AC_MSG_RESULT($RTEMS_HAS_NETWORKING)
309if test "$RTEMS_HAS_NETWORKING" = "yes"; then
310  RTEMS_CHECK_MAKEFILE(c/src/lib/libnetworking)
311  RTEMS_CHECK_MAKEFILE(c/src/lib/librpc)
312  if test "$RTEMS_HAS_RDBG" = "yes"; then
313    RTEMS_CHECK_MAKEFILE(c/src/lib/librdbg)
314  fi
315fi
316
317# If the C++ support is enabled, then include the Makefiles
318if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then
319  makefiles="$makefiles c/src/lib/librtems++/Makefile"
320fi
321
322RTEMS_ENABLE_TESTS
323
324RTEMS_CHECK_MAKEFILE(c/src/tests/tools/$target_cpu)
325
326if test "$tests_enabled" = "yes"; then
327   RTEMS_CHECK_MAKEFILE(c/src/tests/libtests)
328   RTEMS_CHECK_MAKEFILE(c/src/tests/sptests)
329   RTEMS_CHECK_MAKEFILE(c/src/tests/tmtests)
330   if test "$RTEMS_HAS_MULTIPROCESSING" = "yes"; then
331       RTEMS_CHECK_MAKEFILE(c/src/tests/mptests)
332   fi
333   if test "$RTEMS_HAS_POSIX_API" = "yes"; then
334     RTEMS_CHECK_MAKEFILE(c/src/tests/psxtests)
335   fi
336   AC_CONFIG_SUBDIRS(c/src/tests/tools/generic)
337fi
338
339# If the HWAPI is enabled, the find the HWAPI Makefiles
340RTEMS_ENABLE_HWAPI
341if test "$RTEMS_HAS_HWAPI" = "yes"; then
342  AC_MSG_CHECKING(whether libwapi is present)
343  if test -f ${srcdir}/c/src/lib/libhwapi/Makefile.in ; then
344    AC_MSG_RESULT(yes)
345    makefiles="$makefiles c/src/lib/libhwapi/Makefile"
346    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/analog)
347    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/discrete)
348    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/drivers)
349    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/non_volatile_memory)
350    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/serial)
351    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/support)
352    RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi/wrapup)
353  else
354    AC_MSG_ERROR(No source code found for the HWAPI)
355  fi
356fi
357
358AC_SUBST(RTEMS_GAS_CODE16)
359AC_SUBST(rtems_cv_prog_cc_cross)
360AC_SUBST(RTEMS_BSP_LIST)
361AC_SUBST(RTEMS_HOST)
362AC_SUBST(RTEMS_LIBC_DIR)
363AC_SUBST(RTEMS_USE_OWN_PDIR)
364AC_SUBST(RTEMS_HAS_POSIX_API)
365AC_SUBST(RTEMS_HAS_NETWORKING)
366AC_SUBST(RTEMS_HAS_RDBG)
367AC_SUBST(RTEMS_USE_MACROS)
368AC_SUBST(RTEMS_HAS_CPLUSPLUS)
369AC_SUBST(RTEMS_USE_GCC272)
370AC_SUBST(RTEMS_LIBC_DIR)
371AC_SUBST(BARE_CPU_CFLAGS)
372AC_SUBST(BARE_CPU_MODEL)
373AC_SUBST(PROJECT_ROOT)
374AC_SUBST(program_prefix)
375AC_SUBST(CC_CFLAGS_DEFAULT)
376AC_SUBST(CC_CFLAGS_DEBUG_V)
377AC_SUBST(CC_CFLAGS_PROFILE_V)
378AC_SUBST(CC_LDFLAGS_PROFILE_V)
379
380# pick up all the Makefiles in required parts of the tree
381RTEMS_CHECK_MAKEFILE(make)
382RTEMS_CHECK_MAKEFILE(c/src/lib/libchip)
383RTEMS_CHECK_MAKEFILE(c/src/lib/libmisc)
384RTEMS_CHECK_MAKEFILE(c/src/tests/samples)
385
386AC_CONFIG_SUBDIRS(c/build-tools)
387AC_CONFIG_SUBDIRS($scoretools_cfgdirs)
388AC_CONFIG_SUBDIRS($bsptools_cfgdirs)
389
390# FIXME: libwapi needs a separate configure.in in future ;-
391# AC_CONFIG_SUBDIRS(c/src/lib/libwapi)
392
393# try not to explicitly list a Makefile here
394AC_OUTPUT(
395Makefile
396make/host.cfg
397make/target.cfg
398make/Templates/Makefile.inc
399make/compilers/gcc.cfg
400c/Makefile
401c/src/Makefile
402c/src/exec/Makefile
403c/src/exec/score/Makefile
404c/src/exec/score/cpu/Makefile
405c/src/exec/score/include/Makefile
406c/src/exec/score/include/rtems/Makefile
407c/src/exec/score/include/rtems/wrap/Makefile
408c/src/exec/score/include/rtems/score/Makefile
409c/src/exec/score/${inline_dir}/Makefile
410c/src/exec/score/${inline_dir}/rtems/Makefile
411c/src/exec/score/${inline_dir}/rtems/score/Makefile
412c/src/exec/score/src/Makefile
413c/src/exec/score/tools/Makefile
414c/src/exec/wrapup/Makefile
415c/src/exec/wrapup/rtems/Makefile
416c/src/lib/Makefile
417c/src/lib/include/Makefile
418c/src/lib/libbsp/Makefile
419c/src/lib/libbsp/shmdr/Makefile
420c/src/lib/libc/Makefile
421c/src/lib/libcpu/Makefile
422c/src/lib/start/Makefile
423c/src/lib/wrapup/Makefile
424c/src/tests/Makefile
425c/src/tests/support/Makefile
426c/src/tests/support/include/Makefile
427c/src/tests/support/stubdr/Makefile
428c/src/tests/support/wrapup/Makefile
429c/src/tests/tools/Makefile
430$makefiles
431c/update-tools/Makefile)
432
433echo
434echo target architecture: $target_cpu.
435echo available BSPs: $rtems_bsp.
436echo \'make all\' will build the following BSPs: $RTEMS_BSP_LIST.
437echo other BSPs can be built with \'make RTEMS_BSP=\"bsp1 bsp2 ...\"\'
438echo
Note: See TracBrowser for help on using the repository browser.