source: rtems/configure.in @ e2ba0af6

4.104.114.84.95
Last change on this file since e2ba0af6 was 15aa5ffb, checked in by Joel Sherrill <joel.sherrill@…>, on 06/14/99 at 18:54:24

Patch ("FIX: no_cpu/no_bsp") from Ralf Corsepius <corsepiu@…>:

This patch should fix the nastiest configuration bugs for no_cpu/no_bsp.

With this patch applied, configure --target=no_cpu-rtems now correctly
acknowledges its configuration, but later fails building when trying to
build libcsupport (I leave this problem for you :-).

Fixes/Changes?:

  • aclocal/canonicalize-target-name.m4: use RTEMS_CPU instead of target_cpu, switch to a native compiler setup if target = no_cpu*rtems, ie. implicitly use host=target (native) and RTEMS_CPU=no_cpu for --target=no_cpu*rtems.
  • add no_bsp/bsp_specs (Support -qrtems, -qrtems_debug; please check before adding :-)
  • Use RTEMS_CANONICALIZE_TARGET_CPU instead of AC_CANONICAL_SYSTEM in toplevel/configure.in
  • All references to $target_cpu in aclocal/*.m4, Makefile.ins and *.cfg files changed to RTEMS_CPU
  • bug fixes to exec/score/cpu/no_cpu/wrap (This part of the patch may result into patch rejections, because your recently posted patch may also have addressed this problem).

After applying this patch, please do:

cvs add c/src/lib/libbsp/no_cpu/no_bsp/bsp_specs
./autogen

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