source: rtems/aclocal.m4 @ 98100d2

4.104.114.84.95
Last change on this file since 98100d2 was 98100d2, checked in by Joel Sherrill <joel.sherrill@…>, on Jun 27, 1998 at 5:09:47 PM

Monstrous patch from Ralf Corsepius <corsepiu@…>. I have
made no attempt to divide the comments up and place them with just
the appropriate files. Here is an excerpt from Ralf's email:

Changes including comments on changes I made after cycling through
all the targets:

  • Added ranlib support. Now all targets use "ranlib" instead of "ar -s" to build an index for a library. If ranlib isn't detected during configuration, check if ar -s is working and try "ar -s" instead of
  • Removed $(XXX_FOR_TARGET) from make/target.cfg.in, use $(XXX) instead now.
  • gcc-target-default.cfg: LINK_XXXX-defines reworked to solve the -l problem under posix (cf gcc-target-default.cfg)
  • rtems-glom replaced by Makefile-rules inside of the wrapup/Makefile.in that has been using rtems-glom until now.
  • Removed CCC and friends in gcc-target-default.cfg, as they have been breaking CXX support.
  • Removed CONFIG.$(TARGET_ARCH).CC lines from several custom/*.cfg files, because this is now set in custom/default.cfg.
  • Added aclocal/ar-s.m4, check whether "ar -s" is working
  • Added aclocal/cygwin.m4 and aclocal/exeext.m4.
  • Reworked aclocal/canonicalize-tools.m4: Added ar -s check; fixes for problems when XXX_FOR_TARGET is given via environment variables (didn't work for gcc until now), adding cygwin check, improved autoconf-cache handling.
  • Removed -l from make rule dependencies. LINK_LIBS is now allowed to contain -L and -l. LINK_OBJS and LINK_FILES must not contain -L or -l. gcc28 make-exe rules now link using $(LINK_OBJS) $(LINK_LIBS) => Almost all custom/*.cfg are modified. This is very likely to break something because of typos or having missed to edit a file.

Open problems, known bugs, things I didn't do:

  • custom/p4000.cfg seems to be out of date and requires to be reviewed.

(JRS NOTE: It is subordinate p4650 and p4600 -- both of which build ok

after minor changes.)

  • custom/psim.cfg needs to be reviewed, I added some changes to it, I am insecure about.

(JRS NOTE: psim had a minor problem endif/endef swapped but runs fine.)

  • rtems-glom.in can now be removed.
  • gcc*.cfg files "make depend" rules don't honor language specific flags (e.g CXXFLAGS is ignored for *.cc) - Nothing to worry about now, but may cause problems for hosts/targets not using gcc or rtems-add-ons that use external packages.
  • AFAIS, the no_bsp BSP can't be build anymore, i.e. configure refused to configure for it whatever I tried.
  • The toplevel and toplevel+1 README files are quite out-dated
  • cygwin.m4 isn't of much use for rtems. In most cases (cf. aclocal/*.m4) it is worked around by directly using $host_os. I think I'll remove it soon after the next snapshot
  • Before release the cygwin patch needs to be tested under cygwin. I may have broken/missed something (esp. the sed-pattern to convert
    into / may be broken).
  • You should try to build/run the posix-BSP under solaris - I don't expect problems, but I am not 100% sure, esp. with regard to ranlib/ar -s.
  • You should consider to convert all make/compilers/*.cfg files into make/compilers/*.cfg.in files and let autoconf generate the *.cfg. This may help getting rid of some if/then/else statements and help hard-coding some defines into those files in future and shouldn't disturb now.
  • Not having installed libc.a/libm.a on a host may still break building rtems, esp. when using -disable-gcc28 as the gcc27-configuration scheme directly accesses libc.a and libm.a. The problem should not appear when using gcc28 because it references libc/libm only through -lc and -lm which may be static or dynamic (I didn't test this).
  • shgen is not yet included (I didn't yet have enough time to integrate it).
  • I know about a few more configure-probs (esp. cross-checking --enable-* flags).

+ warn/refuse to configure when --enable-libcdir and

--enable-gcc28 are given.

+ force --enable-libcdir when --disable-gcc28 is given

  • Replaced KSHELL with @KSH@ in some shell scripts generated by configure.in.
  • Added a dependency to aclocal/*.m4 in the toplevel Makefile => configure and aclocal.m4 will now be rebuild when any aclocal/*.m4 file is changed
  • Some changes to aclocal/gcc-pipe.m4 and aclocal/gcc-specs.m4
  • Replaced i3456?86-unknown-freebsd2.12? with i3456?86-*freebsd2.* in configure.in, as I suppose there might exist a variety of valid vendors (2nd field of the name-tripple)
  • Disabled override MAKEFLAGS in toplevel Makefile.in - Potential side-effects are not really clear to me.
  • In mvme162.cfg, $(LINK_LIBS) is missing in the CC line in gcc28's make-exe rule (yet another one I missed to edit). Just append $(LINK_LIBS) to the "CC" line, like I hopefully did to ALL other custom/*.cfg files.
  • the problem with mvme162lx.cfg is a follow-up problem of the mvme162.cfg-bug.
  • mvme162/console and idp/console had variables named Buffer which conflicted with similarly named variables in some tests.
  • Property mode set to 100644
File size: 11.4 KB
Line 
1dnl aclocal.m4 generated automatically by aclocal 1.2
2
3dnl $Id$
4
5dnl macro to detect mkdir
6AC_DEFUN(RTEMS_PATH_MKDIR,
7[AC_PATH_PROG(MKDIR,mkdir)
8])
9
10dnl macro to check for mkdir -p
11AC_DEFUN(RTEMS_PROG_MKDIR_P,
12[
13AC_REQUIRE([RTEMS_PATH_MKDIR])
14AC_MSG_CHECKING([for working $MKDIR -p])
15AC_CACHE_VAL(rtems_cv_prog_mkdir_p,
16[rm -rf conftestdata
17if $MKDIR -p conftestdata 2>/dev/null ;then
18rtems_cv_prog_MKDIR_P="yes"
19else
20rtems_cv_prog_MKDIR_P="no"
21fi])dnl
22rm -rf conftestdata
23AC_MSG_RESULT($rtems_cv_prog_MKDIR_P)
24])
25
26dnl macro to check for mkdir -m 0755
27AC_DEFUN(RTEMS_PROG_MKDIR_M,
28[
29AC_REQUIRE([RTEMS_PATH_MKDIR])
30AC_MSG_CHECKING([for working $MKDIR -m 0755])
31AC_CACHE_VAL(rtems_cv_prog_MKDIR_P,
32[rm -rf conftestdata
33if $MKDIR -m 0775 conftestdata 2>/dev/null; then
34rtems_cv_prog_MKDIR_M="yes"
35else
36rtems_cv_prog_MKDIR_M="no"
37fi])dnl
38rm -rf conftestdata
39AC_MSG_RESULT($rtems_cv_prog_MKDIR_M)
40])
41
42
43dnl $Id$
44
45dnl canonicalize target name
46dnl NOTE: Most rtems targets do not fullfil autoconf's
47dnl target naming conventions "processor-vendor-os"
48dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them
49dnl and we have to fix it for rtems ourselves
50
51AC_DEFUN(RTEMS_CANONICAL_TARGET_CPU,
52[AC_MSG_CHECKING(rtems target cpu)
53changequote(<<, >>)dnl
54target_cpu=`echo $target | sed 's%^\([^-]*\)-\(.*\)$%\1%'`
55changequote([, ])dnl
56AC_MSG_RESULT($target_cpu)
57])
58
59dnl Set program_prefix
60dnl
61dnl 98/05/20 Ralf Corsepius     (corsepiu@faw.uni-ulm.de)
62dnl                             Extracted from configure
63
64AC_DEFUN(RTEMS_TOOL_PREFIX,
65[AC_REQUIRE([AC_CANONICAL_TARGET])dnl
66AC_REQUIRE([AC_CANONICAL_BUILD])dnl
67
68if [[ "${program_prefix}" = "NONE" ]] ; then
69  if [[ "${target}" = "${host}" ]] ; then
70    program_prefix=
71  else
72    program_prefix=${target}-
73  fi
74fi
75])
76
77dnl
78dnl $Id$
79dnl
80dnl Check for target gcc
81dnl
82dnl 98/05/20 Ralf Corsepius     (corsepiu@faw.uni-ulm.de)
83dnl                             Completely reworked
84
85AC_DEFUN(RTEMS_PROG_CC,
86[
87AC_BEFORE([$0], [AC_PROG_CPP])dnl
88AC_BEFORE([$0], [AC_PROG_CC])dnl
89AC_REQUIRE([RTEMS_TOOL_PREFIX])dnl
90
91dnl Only accept gcc and cc
92dnl NOTE: This might be too restrictive for native compilation
93AC_PATH_PROGS(CC_FOR_TARGET, "$program_prefix"gcc "$program_prefix"cc )
94test -z "$CC_FOR_TARGET" \
95  && AC_MSG_ERROR([no acceptable cc found in \$PATH])
96
97dnl backup
98rtems_save_CC=$CC
99rtems_save_CFLAGS=$CFLAGS
100
101dnl temporarily set CC
102CC=$CC_FOR_TARGET
103
104AC_PROG_CC_WORKS
105AC_PROG_CC_GNU
106
107if test $ac_cv_prog_gcc = yes; then
108  GCC=yes
109dnl Check whether -g works, even if CFLAGS is set, in case the package
110dnl plays around with CFLAGS (such as to build both debugging and
111dnl normal versions of a library), tasteless as that idea is.
112  ac_test_CFLAGS="${CFLAGS+set}"
113  ac_save_CFLAGS="$CFLAGS"
114  CFLAGS=
115  AC_PROG_CC_G
116  if test "$ac_test_CFLAGS" = set; then
117    CFLAGS="$ac_save_CFLAGS"
118  elif test $ac_cv_prog_cc_g = yes; then
119    CFLAGS="-g -O2"
120  else
121    CFLAGS="-O2"
122  fi
123else
124  GCC=
125  test "${CFLAGS+set}" = set || CFLAGS="-g"
126fi
127
128rtems_cv_prog_gcc=$ac_cv_prog_gcc
129rtems_cv_prog_cc_g=$ac_cv_prog_cc_g
130rtems_cv_prog_cc_works=$ac_cv_prog_cc_works
131rtems_cv_prog_cc_cross=$ac_cv_prog_cc_cross
132
133dnl restore initial values
134CC=$rtems_save_CC
135CFLAGS=$rtems_save_CFLAGS
136
137unset ac_cv_prog_gcc
138unset ac_cv_prog_cc_g
139unset ac_cv_prog_cc_works
140unset ac_cv_prog_cc_cross
141])
142
143dnl
144dnl $Id$
145dnl
146dnl Check whether the target compiler accepts -specs
147dnl
148dnl 98/02/11 Ralf Corsepius     corsepiu@faw.uni-ulm.de
149dnl
150
151AC_DEFUN(RTEMS_GCC_SPECS,
152[AC_REQUIRE([RTEMS_PROG_CC])
153AC_CACHE_CHECK(whether $CC_FOR_TARGET accepts -specs,rtems_cv_gcc_specs,
154[
155rtems_cv_gcc_specs=no
156if test "$rtems_cv_prog_gcc" = "yes"; then
157  touch confspec
158  echo 'void f(){}' >conftest.c
159  if test -z "`${CC_FOR_TARGET} -specs confspec -c conftest.c 2>&1`";then
160    rtems_cv_gcc_specs=yes
161  fi
162fi
163rm -f confspec conftest*
164])])
165
166dnl
167dnl $Id$
168dnl
169dnl Check whether the target compiler accepts -pipe
170dnl
171dnl 98/02/11 Ralf Corsepius     corsepiu@faw.uni-ulm.de
172dnl
173
174AC_DEFUN(RTEMS_GCC_PIPE,
175[AC_REQUIRE([RTEMS_PROG_CC])
176AC_REQUIRE([AC_CANONICAL_HOST])
177AC_CACHE_CHECK(whether $CC_FOR_TARGET accepts --pipe,rtems_cv_gcc_pipe,
178[
179rtems_cv_gcc_pipe=no
180if test "$rtems_cv_prog_gcc" = "yes"; then
181case "$host_os" in
182  cygwin32*)
183    ;;
184  *)
185    echo 'void f(){}' >conftest.c
186    if test -z "`${CC_FOR_TARGET} --pipe -c conftest.c 2>&1`";then
187      rtems_cv_gcc_pipe=yes
188    fi
189    rm -f conftest*
190    ;;
191esac
192fi
193])
194])
195
196dnl
197dnl $Id$
198dnl
199dnl Check for target g++
200dnl
201dnl 98/05/20 Ralf Corsepius     (corsepiu@faw.uni-ulm.de)
202dnl                             Completely reworked
203
204AC_DEFUN(RTEMS_PROG_CXX,
205[
206AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
207AC_BEFORE([$0], [AC_PROG_CXX])dnl
208AC_REQUIRE([RTEMS_TOOL_PREFIX])dnl
209
210dnl Only accept g++ and c++
211dnl NOTE: This might be too restrictive for native compilation
212AC_PATH_PROGS(CXX_FOR_TARGET, "$program_prefix"g++ "$program_prefix"c++)
213test -z "$CXX_FOR_TARGET" \
214  && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
215
216dnl backup
217rtems_save_CXX=$CXX
218rtems_save_CXXFLAGS=$CXXFLAGS
219
220dnl temporarily set CXX
221CXX=$CXX_FOR_TARGET
222
223AC_PROG_CXX_WORKS
224AC_PROG_CXX_GNU
225
226if test $ac_cv_prog_gxx = yes; then
227  GXX=yes
228dnl Check whether -g works, even if CXXFLAGS is set, in case the package
229dnl plays around with CXXFLAGS (such as to build both debugging and
230dnl normal versions of a library), tasteless as that idea is.
231  ac_test_CXXFLAGS="${CXXFLAGS+set}"
232  ac_save_CXXFLAGS="$CXXFLAGS"
233  CXXFLAGS=
234  AC_PROG_CXX_G
235  if test "$ac_test_CXXFLAGS" = set; then
236    CXXFLAGS="$ac_save_CXXFLAGS"
237  elif test $ac_cv_prog_cxx_g = yes; then
238    CXXFLAGS="-g -O2"
239  else
240    CXXFLAGS="-O2"
241  fi
242else
243  GXX=
244  test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
245fi
246
247rtems_cv_prog_gxx=$ac_cv_prog_gxx
248rtems_cv_prog_cxx_g=$ac_cv_prog_cxx_g
249rtems_cv_prog_cxx_works=$ac_cv_prog_cxx_works
250rtems_cv_prog_cxx_cross=$ac_cv_prog_cxx_cross
251
252CXX=$rtems_save_CXX
253CXXFLAGS=$rtems_save_CXXFLAGS
254
255dnl restore initial values
256unset ac_cv_prog_gxx
257unset ac_cv_prog_cc_g
258unset ac_cv_prog_cxx_works
259unset ac_cv_prog_cxx_cross
260])
261
262dnl $Id$
263dnl
264dnl Set target tools
265dnl
266dnl 98/06/23 Ralf Corsepius     (corsepiu@faw.uni-ulm.de)
267dnl             fixing cache/environment variable handling
268dnl             adding checks for cygwin/egcs '\\'-bug
269dnl             adding checks for ranlib/ar -s problem
270dnl
271dnl 98/02/12 Ralf Corsepius     (corsepiu@faw.uni-ulm.de)
272dnl
273
274AC_DEFUN(RTEMS_GCC_PRINT,
275[ case $host_os in
276  *cygwin32*)
277    dnl FIXME: Hack for cygwin/egcs reporting mixed '\\' and '/'
278    dnl        Should be removed once cygwin/egcs reports '/' only
279    $1=`$CC_FOR_TARGET --print-prog-name=$2 | sed -e "s%\\\\%/%g" `
280    ;;
281  *)
282    $1=`$CC_FOR_TARGET --print-prog-name=$2`
283    ;;
284  esac
285])
286
287AC_DEFUN(RTEMS_PATH_TOOL,
288[
289AC_MSG_CHECKING([target's $2])
290AC_CACHE_VAL(ac_cv_path_$1,:)
291AC_MSG_RESULT([$ac_cv_path_$1])
292
293if test -n "$ac_cv_path_$1"; then
294  dnl retrieve the value from the cache
295  $1=$ac_cv_path_$1
296else
297  dnl the cache was not set
298  if test -z "[$]$1" ; then
299    if test "$rtems_cv_prog_gcc" = "yes"; then
300      # We are using gcc, ask it about its tool
301      # NOTE: Necessary if gcc was configured to use the target's
302      # native tools or uses prefixes for gnutools (e.g. gas instead of as)
303      RTEMS_GCC_PRINT($1,$2)
304    fi
305  else
306    # The user set an environment variable.
307    # Check whether it is an absolute path, otherwise AC_PATH_PROG
308    # will override the environment variable, which isn't what the user
309    # intends
310    AC_MSG_CHECKING([whether environment variable $1 is an absolute path])
311    case "[$]$1" in
312    /*) # valid
313      AC_MSG_RESULT("yes")
314    ;;
315    *)  # invalid for AC_PATH_PROG
316      AC_MSG_RESULT("no")
317      AC_MSG_ERROR([***]
318        [Environment variable $1 should ether]
319        [be unset (preferred) or contain an absolute path])
320    ;;
321    esac
322  fi
323
324  AC_PATH_PROG($1,"$program_prefix"$2,$3)
325fi
326])
327
328AC_DEFUN(RTEMS_CANONICALIZE_TOOLS,
329[AC_REQUIRE([RTEMS_PROG_CC])dnl
330
331dnl FIXME: What shall be done if these tools are not available?
332  RTEMS_PATH_TOOL(AR_FOR_TARGET,ar,no)
333  RTEMS_PATH_TOOL(AS_FOR_TARGET,as,no)
334  RTEMS_PATH_TOOL(LD_FOR_TARGET,ld,no)
335  RTEMS_PATH_TOOL(NM_FOR_TARGET,nm,no)
336
337dnl special treatment of ranlib
338  RTEMS_PATH_TOOL(RANLIB_FOR_TARGET,ranlib,no)
339  if test "$RANLIB_FOR_TARGET" = "no"; then
340    # ranlib wasn't found; check if ar -s is available
341    RTEMS_AR_FOR_TARGET_S
342    if test $rtems_cv_AR_FOR_TARGET_S = "yes" ; then
343      dnl override RANLIB_FOR_TARGET's cache
344      ac_cv_path_RANLIB_FOR_TARGET="$AR_FOR_TARGET -s"
345      RANLIB_FOR_TARGET=$ac_cv_path_RANLIB_FOR_TARGET
346    else
347      AC_MSG_ERROR([***]
348        [Can't figure out how to build a library index]
349        [Nether ranlib nor ar -s seem to be available] )
350    fi
351  fi
352
353dnl NOTE: These may not be available if not using gnutools
354  RTEMS_PATH_TOOL(OBJCOPY_FOR_TARGET,objcopy,no)
355  RTEMS_PATH_TOOL(SIZE_FOR_TARGET,size,no)
356])
357
358AC_DEFUN(RTEMS_AR_FOR_TARGET_S,
359[
360AC_CACHE_CHECK(whether $AR_FOR_TARGET -s works,
361rtems_cv_AR_FOR_TARGET_S,
362[
363cat > conftest.$ac_ext <<EOF
364int foo( int b )
365{ return b; }
366EOF
367if AC_TRY_COMMAND($CC_FOR_TARGET -o conftest.o -c conftest.$ac_ext) \
368  && AC_TRY_COMMAND($AR_FOR_TARGET -sr conftest.a conftest.o) \
369  && test -s conftest.a ; \
370then
371  rtems_cv_AR_FOR_TARGET_S="yes"
372else
373  rtems_cv_AR_FOR_TARGET_S="no"
374fi
375  rm -f conftest*
376])
377])
378
379
380dnl Detect the Cygwin32 environment (unix under Win32)
381dnl
382dnl 98/06/16 David Fiddes       (D.J.Fiddes@hw.ac.uk)
383dnl                             Hacked from automake-1.3
384
385# Check to see if we're running under Cygwin32, without using
386# AC_CANONICAL_*.  If so, set output variable CYGWIN32 to "yes".
387# Otherwise set it to "no".
388
389dnl RTEMS_CYGWIN32()
390AC_DEFUN(RTEMS_CYGWIN32,
391[AC_CACHE_CHECK(for Cygwin32 environment, rtems_cv_cygwin32,
392[AC_TRY_COMPILE(,[return __CYGWIN32__;],
393rtems_cv_cygwin32=yes, rtems_cv_cygwin32=no)
394rm -f conftest*])
395CYGWIN32=
396test "$rtems_cv_cygwin32" = yes && CYGWIN32=yes])
397
398
399dnl Set the EXE extension
400dnl
401dnl 98/06/16 David Fiddes       (D.J.Fiddes@hw.ac.uk)
402dnl                             Hacked from automake-1.3
403
404# Check to see if we're running under Win32, without using
405# AC_CANONICAL_*.  If so, set output variable EXEEXT to ".exe".
406# Otherwise set it to "".
407
408dnl RTEMS_EXEEXT()
409dnl This knows we add .exe if we're building in the Cygwin32
410dnl environment. But if we're not, then it compiles a test program
411dnl to see if there is a suffix for executables.
412AC_DEFUN(RTEMS_EXEEXT,
413[AC_REQUIRE([RTEMS_CYGWIN32])
414AC_MSG_CHECKING([for executable suffix])
415AC_CACHE_VAL(rtems_cv_exeext,
416[if test "$CYGWIN32" = yes; then
417rtems_cv_exeext=.exe
418else
419cat > rtems_c_test.c << 'EOF'
420int main() {
421/* Nothing needed here */
422}
423EOF
424${CC-cc} -o rtems_c_test $CFLAGS $CPPFLAGS $LDFLAGS rtems_c_test.c $LIBS 1>&5
425rtems_cv_exeext=`echo rtems_c_test.* | grep -v rtems_c_test.c | sed -e s/rtems_c_test//`
426rm -f rtems_c_test*])
427test x"${rtems_cv_exeext}" = x && rtems_cv_exeext=no
428fi
429EXEEXT=""
430test x"${rtems_cv_exeext}" != xno && EXEEXT=${rtems_cv_exeext}
431AC_MSG_RESULT(${rtems_cv_exeext})
432AC_SUBST(EXEEXT)])
433
434
435dnl $Id$
436
437dnl RTEMS_CHECK_MAKEFILE(path)
438dnl Search for Makefile.in's within the directory starting
439dnl at path and append an entry for Makefile to global variable
440dnl "makefiles" (from configure.in) for each Makefile.in found
441dnl
442AC_DEFUN(RTEMS_CHECK_MAKEFILE,
443[RTEMS_CHECK_FILES_IN($1,Makefile,makefiles)
444])
445
446dnl $Id$
447
448dnl RTEMS_CHECK_FILES_IN(path,file,var)
449dnl path .. path relative to srcdir, where to start searching for files
450dnl file .. name of the files to search for
451dnl var  .. shell variable to append files found
452AC_DEFUN(RTEMS_CHECK_FILES_IN,
453[
454AC_MSG_CHECKING(for $2.in in $1)
455if test -d $srcdir/$1; then
456  rtems_av_save_dir=`pwd`;
457  cd $srcdir;
458  rtems_av_tmp=`find $1 -name "$2.in" -print | sed "s/$2\.in/%/" | sort | sed "s/%/$2/"`
459  $3="$$3 $rtems_av_tmp";
460  cd $rtems_av_save_dir;
461  AC_MSG_RESULT(done)
462else
463  AC_MSG_RESULT(no)
464fi
465])
466
467
Note: See TracBrowser for help on using the repository browser.