source: rtems/aclocal/prog-cc.m4 @ 78ffe89

4.104.114.84.95
Last change on this file since 78ffe89 was b62a92c, checked in by Joel Sherrill <joel.sherrill@…>, on 10/04/99 at 18:20:14

Patch from Ralf Corsepius <corsepiu@…>:

The patch below actuallly consists of two patches:
1) moving librpc to c/src/librpc similar to what has been done to librtems++
2) reworked configure scripts, many safety and dependency checks added to
aclocal/*.m4 macros + configuration fixes.

To apply:

mkdir c/src/librpc
mkdir c/src/librpc/src
cp c/src/lib/librpc/*.c c/src/librpc/src
cp c/src/lib/librpc/Makefile.in c/src/librpc/src
mkdir c/src/librpc/include
mkdir c/src/librpc/include/rpc
cp c/src/lib/include/rpc/* c/src/librpc/include/rpc
patch -p1 < ../rtems-rc-19990820-7.diff
rm -rf c/src/lib/librpc
rm -rf c/src/lib/include/rpc
./autogen

The additional checks in aclocal/*m4 macros add rather restrictive, sometimes
unnecessarily restrictive constraints on the sequence of how macros can be
used in a configure.in script. Adding them has let my problems with some more
complicated configuration options vanish. Apparently some macros had not been
in the required order .


Now I still get some linking errors for some cpus and bsps, esp when linking
cdtest, but also at other locations:

e.g. this happens for mips64orion/p4600:

# make[5]: Entering directory
`/lfs/poseidon/users/rtems/src/multi/build/mips64orion-rtems/c/p4600/tests/samples/hello'

/opt/rtems/bin/mips64orion-rtems-gcc --pipe -B../../../../../../p4600/lib/
-specs bsp_specs -qrtems -DP4000 -DCPU_R4000 -DP3_DIAG -D_R4000 -Dmips=3
-mcpu=4600 -G0 -I../../../../../../p4600/lib/include/networking -g -Wall
-ansi -fasm -O4 -fomit-frame-pointer -o o-p4600/hello.exe
o-p4600/init.o ../../../../../../p4600/lib/no-dpmem.rel
../../../../../../p4600/lib/no-event.rel
../../../../../../p4600/lib/no-msg.rel ../../../../../../p4600/lib/no-mp.rel
../../../../../../p4600/lib/no-part.rel
../../../../../../p4600/lib/no-signal.rel
../../../../../../p4600/lib/no-timer.rel
../../../../../../p4600/lib/no-rtmon.rel
/opt/rtems/mips64orion-rtems/lib/libc.a(dtoa.o): In function `_dtoa_r':
/opt/hermes/embedded/build/build-mips64orion-tools/mips64orion-rtems/newlib/libc/stdlib/../../../../../src/newlib/libc/stdlib/dtoa.c:348: relocation truncated to fit: R_MIPS_LITERAL no symbol
/opt/hermes/embedded/build/build-mips64orion-tools/mips64orion-rtems/newlib/libc/stdlib/../../../../../src/newlib/libc/stdlib/dtoa.c:348: relocation truncated to fit: R_MIPS_LITERAL no symbol
/opt/hermes/embedded/build/build-mips64orion-tools/mips64orion-rtems/newlib/libc/stdlib/../../../../../src/newlib/libc/stdlib/dtoa.c:348: relocation truncated to fit: R_MIPS_LITERAL no symbol
collect2: ld returned 1 exit status

# mips64orion-rtems-gcc -v
Reading specs from /opt/rtems/lib/gcc-lib/mips64orion-rtems/2.95.1/specs
gcc version 2.95.1 19990816 (release)

# mips64orion-rtems-ld -v
GNU ld version 2.9.5 (with BFD 2.9.5)

  • Property mode set to 100644
File size: 2.2 KB
Line 
1dnl
2dnl $Id$
3dnl
4dnl Check for target gcc
5dnl
6dnl 98/05/20 Ralf Corsepius     (corsepiu@faw.uni-ulm.de)
7dnl                             Completely reworked
8
9AC_DEFUN(RTEMS_PROG_CC,
10[
11AC_BEFORE([$0], [AC_PROG_CPP])dnl
12AC_BEFORE([$0], [AC_PROG_CC])dnl
13AC_BEFORE([$0], [RTEMS_CANONICALIZE_TOOLS])dnl
14AC_REQUIRE([RTEMS_TOOL_PREFIX])dnl
15
16dnl Only accept gcc and cc
17dnl NOTE: This might be too restrictive for native compilation
18AC_PATH_PROGS(CC_FOR_TARGET, "$program_prefix"gcc "$program_prefix"cc )
19test -z "$CC_FOR_TARGET" \
20  && AC_MSG_ERROR([no acceptable cc found in \$PATH])
21
22dnl backup
23rtems_save_CC=$CC
24rtems_save_CFLAGS=$CFLAGS
25
26dnl temporarily set CC
27CC=$CC_FOR_TARGET
28
29AC_PROG_CC_WORKS
30AC_PROG_CC_GNU
31
32if test $ac_cv_prog_gcc = yes; then
33  GCC=yes
34dnl Check whether -g works, even if CFLAGS is set, in case the package
35dnl plays around with CFLAGS (such as to build both debugging and
36dnl normal versions of a library), tasteless as that idea is.
37  ac_test_CFLAGS="${CFLAGS+set}"
38  ac_save_CFLAGS="$CFLAGS"
39  CFLAGS=
40  AC_PROG_CC_G
41  if test "$ac_test_CFLAGS" = set; then
42    CFLAGS="$ac_save_CFLAGS"
43  elif test $ac_cv_prog_cc_g = yes; then
44    CFLAGS="-g -O2"
45  else
46    CFLAGS="-O2"
47  fi
48else
49  GCC=
50  test "${CFLAGS+set}" = set || CFLAGS="-g"
51fi
52
53rtems_cv_prog_gcc=$ac_cv_prog_gcc
54rtems_cv_prog_cc_g=$ac_cv_prog_cc_g
55rtems_cv_prog_cc_works=$ac_cv_prog_cc_works
56rtems_cv_prog_cc_cross=$ac_cv_prog_cc_cross
57
58dnl restore initial values
59CC=$rtems_save_CC
60CFLAGS=$rtems_save_CFLAGS
61
62unset ac_cv_prog_gcc
63unset ac_cv_prog_cc_g
64unset ac_cv_prog_cc_works
65unset ac_cv_prog_cc_cross
66])
67
68AC_DEFUN(RTEMS_PROG_CC_FOR_TARGET,
69[
70dnl check target cc
71RTEMS_PROG_CC
72dnl check if the compiler supports --specs
73RTEMS_GCC_SPECS
74dnl check if the target compiler may use --pipe
75RTEMS_GCC_PIPE
76dnl check if the compiler supports --specs if gcc28 is requested
77if test "$RTEMS_USE_GCC272" != "yes" ; then
78  if test "$rtems_cv_gcc_specs" = "no"; then
79    AC_MSG_WARN([*** disabling --enable-gcc28])
80      RTEMS_USE_GCC272=yes
81  fi
82fi
83test "$rtems_cv_gcc_pipe" = "yes" && CC_FOR_TARGET="$CC_FOR_TARGET --pipe"
84
85dnl FIXME: HACK for egcs/cygwin mixing '\\' and '/' in gcc -print-*
86case $host_os in
87*cygwin*)     GCCSED="| sed 's%\\\\%/%g'" ;;
88*) ;;
89esac
90AC_SUBST(GCCSED)
91])
Note: See TracBrowser for help on using the repository browser.