source: rtems/aclocal.m4 @ 613ab62

4.104.114.84.95
Last change on this file since 613ab62 was 613ab62, checked in by Joel Sherrill <joel.sherrill@…>, on 07/23/98 at 19:39:25

Patch from Dario Alcocer <alcocer@…> and Ralf Corsepius
<corsepiu@…> which attempts to detect when the UNIX port
is being configured on a system without System V IPC support. This
is an optional component on both FreeBSD and Linux systems. Most
Linux 2.x kernels ship with it enabled but it is still a real risk.

This test may have undesirable side-effects on some hosts. We will
address those conflicts as they arise.

  • Property mode set to 100644
File size: 13.5 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
436dnl $Id$
437dnl
438dnl Check for System V IPC calls used by Unix simulators
439dnl
440dnl 98/07/17 Dario Alcocer     alcocer@netcom.com
441dnl          Ralf Corsepius    corsepiu@faw.uni-ulm.de
442dnl
443dnl Note: $host_os should probably *not* ever be used here to
444dnl determine if host supports System V IPC calls, since some
445dnl (e.g. FreeBSD 2.x) are configured by default to include only
446dnl a subset of the System V IPC calls.  Therefore, to make sure
447dnl all of the required calls are found, test for each call explicitly.
448dnl
449dnl All of the calls use IPC_PRIVATE, so tests will not unintentionally
450dnl modify any existing key sets.  See the man pages for semget, shmget,
451dnl msgget, semctl, shmctl and msgctl for details.
452
453AC_DEFUN(RTEMS_SYSV_SEM,
454[AC_REQUIRE([RTEMS_PROG_CC])
455AC_REQUIRE([AC_CANONICAL_HOST])
456AC_CACHE_CHECK(whether $RTEMS_HOST supports System V semaphores,
457rtems_cv_sysv_sem,
458[
459AC_TRY_RUN([
460#include <sys/types.h>
461#include <sys/ipc.h>
462#include <sys/sem.h>
463int main () {
464  union semun arg ;
465  int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
466  if (id == -1)
467    exit(1);
468  arg.val = 0; /* avoid implicit type cast to union */
469  if (semctl(id, 0, IPC_RMID, arg) == -1)
470    exit(1);
471  exit(0);
472}
473],
474rtems_cv_sysv_sem="yes", rtems_cv_sysv_sem="no", :)
475])
476])
477
478AC_DEFUN(RTEMS_SYSV_SHM,
479[AC_REQUIRE([RTEMS_PROG_CC])
480AC_REQUIRE([AC_CANONICAL_HOST])
481AC_CACHE_CHECK(whether $RTEMS_HOST supports System V shared memory,
482rtems_cv_sysv_shm,
483[
484AC_TRY_RUN([
485#include <sys/types.h>
486#include <sys/ipc.h>
487#include <sys/shm.h>
488int main () {
489  int id=shmget(IPC_PRIVATE,1,IPC_CREAT|0400);
490  if (id == -1)
491    exit(1);
492  if (shmctl(id, IPC_RMID, 0) == -1)
493    exit(1);
494  exit(0);
495}
496],
497rtems_cv_sysv_shm="yes", rtems_cv_sysv_shm="no", :)
498])
499])
500
501AC_DEFUN(RTEMS_SYSV_MSG,
502[AC_REQUIRE([RTEMS_PROG_CC])
503AC_REQUIRE([AC_CANONICAL_HOST])
504AC_CACHE_CHECK(whether $RTEMS_HOST supports System V messages,
505rtems_cv_sysv_msg,
506[
507AC_TRY_RUN([
508#include <sys/types.h>
509#include <sys/ipc.h>
510#include <sys/msg.h>
511int main () {
512  int id=msgget(IPC_PRIVATE,IPC_CREAT|0400);
513  if (id == -1)
514    exit(1);
515  if (msgctl(id, IPC_RMID, 0) == -1)
516    exit(1);
517  exit(0);
518}
519],
520rtems_cv_sysv_msg="yes", rtems_cv_sysv_msg="no", :)
521])
522])
523
524dnl $Id$
525
526dnl RTEMS_CHECK_MAKEFILE(path)
527dnl Search for Makefile.in's within the directory starting
528dnl at path and append an entry for Makefile to global variable
529dnl "makefiles" (from configure.in) for each Makefile.in found
530dnl
531AC_DEFUN(RTEMS_CHECK_MAKEFILE,
532[RTEMS_CHECK_FILES_IN($1,Makefile,makefiles)
533])
534
535dnl $Id$
536
537dnl RTEMS_CHECK_FILES_IN(path,file,var)
538dnl path .. path relative to srcdir, where to start searching for files
539dnl file .. name of the files to search for
540dnl var  .. shell variable to append files found
541AC_DEFUN(RTEMS_CHECK_FILES_IN,
542[
543AC_MSG_CHECKING(for $2.in in $1)
544if test -d $srcdir/$1; then
545  rtems_av_save_dir=`pwd`;
546  cd $srcdir;
547  rtems_av_tmp=`find $1 -name "$2.in" -print | sed "s/$2\.in/%/" | sort | sed "s/%/$2/"`
548  $3="$$3 $rtems_av_tmp";
549  cd $rtems_av_save_dir;
550  AC_MSG_RESULT(done)
551else
552  AC_MSG_RESULT(no)
553fi
554])
555
556
Note: See TracBrowser for help on using the repository browser.