source: rtems/cpukit/configure.ac @ 94d45f6

4.115
Last change on this file since 94d45f6 was 94d45f6, checked in by Hesham ALMatary <heshamelmatary@…>, on 08/12/14 at 15:57:42

Add support for OpenRISC - Fixed issues

This work is based on the old or32 port (that has been
removed back in 2005) authored by Chris Ziomkowski. The patch includes the
basic functions every port should implement like: context switch, exception
handling, OpenRISC ABI and machine definitions and configurations.

  • Property mode set to 100644
File size: 12.5 KB
Line 
1## Process this file with autoconf to produce a configure script.
2
3AC_PREREQ([2.69])
4AC_INIT([rtems-cpukit],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
5AC_CONFIG_SRCDIR([score])
6RTEMS_TOP([..],[])
7
8RTEMS_CANONICAL_TARGET_CPU
9
10AM_INIT_AUTOMAKE([no-define nostdinc subdir-objects foreign 1.12.2])
11AM_MAINTAINER_MODE
12
13RTEMS_ENABLE_MULTILIB
14RTEMS_ENABLE_MULTIPROCESSING
15RTEMS_ENABLE_POSIX
16RTEMS_ENABLE_RTEMS_DEBUG
17RTEMS_ENABLE_NETWORKING
18RTEMS_ENABLE_PARAVIRT
19RTEMS_ENABLE_PROFILING
20
21RTEMS_ENV_RTEMSCPU
22RTEMS_CHECK_RTEMS_DEBUG
23
24# Is this a supported CPU?
25AC_MSG_CHECKING([if cpu $RTEMS_CPU is supported])
26if test -d "$srcdir/score/cpu/$RTEMS_CPU"; then
27  AC_MSG_RESULT(yes)
28else
29  AC_MSG_ERROR(no)
30fi
31
32RTEMS_PROG_CC_FOR_TARGET
33RTEMS_PROG_CCAS
34RTEMS_CANONICALIZE_TOOLS
35AM_PROG_CC_C_O
36AC_PROG_RANLIB
37
38RTEMS_CHECK_NEWLIB
39
40# BSD-isms, used throughout the sources
41# Not really used by this configure script
42# FIXME: They should be eliminated if possible.
43AC_CHECK_FUNCS([strsep strcasecmp snprintf])
44AC_CHECK_FUNCS([strdup strndup strncasecmp])
45AC_CHECK_FUNCS([bcopy bcmp])
46AC_CHECK_FUNCS([isascii fileno])
47
48# <FIXME>
49#   Check for functions supplied by newlib >= 1.17.0
50# Newlib's posix/ directory
51AC_CHECK_FUNCS([readdir_r isatty])
52AC_CHECK_FUNCS([creat \
53  opendir closedir readdir rewinddir scandir seekdir \
54  sleep \
55  telldir \
56  usleep],,
57  [rtems_missing_func="$ac_func";break])
58AS_IF([test -n "$rtems_missing_func"],
59  AC_MSG_ERROR([Missing function $rtems_missing_func in libc])])
60AC_CHECK_FUNCS([__assert])
61AC_CHECK_FUNCS([execl execlp execle execv execvp execve])
62AC_CHECK_FUNCS([regcomp regexec regerror regfree])
63
64# Mandated by POSIX, decls not present in some versions of newlib
65AC_CHECK_DECLS([flockfile],[AC_CHECK_FUNCS([flockfile])],,[#include <stdio.h>])
66AC_CHECK_DECLS([funlockfile],[AC_CHECK_FUNCS([funlockfile])],,[#include <stdio.h>])
67AC_CHECK_DECLS([ftrylockfile],[AC_CHECK_FUNCS([ftrylockfile])],,[#include <stdio.h>])
68
69# Newlib proprietary
70AC_CHECK_HEADERS([envlock.h])
71AC_CHECK_DECLS([__env_lock],,,[#include <envlock.h>])
72AC_CHECK_DECLS([__env_unlock],,,[#include <envlock.h>])
73
74# Mandated by POSIX, older newlibs bogusly provided CLOCK_PROCESS_CPUTIME+CLOCK_THREAD_CPUTIME
75AC_CHECK_DECL([CLOCK_PROCESS_CPUTIME_ID],[],[AC_MSG_ERROR([missing define CLOCK_PROCESS_CPUTIME_ID])],[#include <time.h>])
76AC_CHECK_DECL([CLOCK_THREAD_CPUTIME_ID],[],[AC_MSG_ERROR([missing define CLOCK_THREAD_CPUTIME_ID])],[#include <time.h>])
77
78# Mandated by POSIX, decls not present in some versions of newlib,
79# some versions stubbed in newlib's rtems crt0
80RTEMS_CHECK_FUNC([seteuid],[#include <unistd.h>])
81RTEMS_CHECK_FUNC([geteuid],[#include <unistd.h>])
82RTEMS_CHECK_FUNC([setegid],[#include <unistd.h>])
83RTEMS_CHECK_FUNC([getegid],[#include <unistd.h>])
84RTEMS_CHECK_FUNC([setuid],[#include <unistd.h>])
85RTEMS_CHECK_FUNC([getuid],[#include <unistd.h>])
86RTEMS_CHECK_FUNC([setgid],[#include <unistd.h>])
87RTEMS_CHECK_FUNC([getgid],[#include <unistd.h>])
88RTEMS_CHECK_FUNC([setsid],[#include <unistd.h>])
89RTEMS_CHECK_FUNC([getsid],[#include <unistd.h>])
90RTEMS_CHECK_FUNC([setpgid],[#include <unistd.h>])
91RTEMS_CHECK_FUNC([getpgid],[#include <unistd.h>])
92RTEMS_CHECK_FUNC([setpgrp],[#include <unistd.h>])
93RTEMS_CHECK_FUNC([getpgrp],[#include <unistd.h>])
94
95# pthread-functions not declared in some versions of newlib.
96RTEMS_CHECK_FUNC([pthread_attr_getguardsize],[#include <pthread.h>])
97RTEMS_CHECK_FUNC([pthread_attr_setguardsize],[#include <pthread.h>])
98RTEMS_CHECK_FUNC([pthread_attr_setstack],[#include <pthread.h>])
99RTEMS_CHECK_FUNC([pthread_attr_getstack],[#include <pthread.h>])
100
101# These are SMP related and were added to newlib by RTEMS.
102RTEMS_CHECK_FUNC([pthread_attr_setaffinity_np],[
103  #define _GNU_SOURCE
104  #include <pthread.h>])
105RTEMS_CHECK_FUNC([pthread_attr_getaffinity_np],[
106  #define _GNU_SOURCE
107  #include <pthread.h>])
108RTEMS_CHECK_FUNC([pthread_setaffinity_np],[
109  #define _GNU_SOURCE
110  #include <pthread.h>])
111RTEMS_CHECK_FUNC([pthread_getaffinity_np],[
112  #define _GNU_SOURCE
113  #include <pthread.h>])
114RTEMS_CHECK_FUNC([pthread_getattr_np],[
115  #define _GNU_SOURCE
116  #include <pthread.h>])
117AC_CHECK_HEADERS([sys/cpuset.h])
118
119# Mandated by POSIX, not declared in some versions of newlib.
120AC_CHECK_DECLS([getrusage],,,[#include sys/resource.h])
121
122# Newlib's unix/ directory
123AC_CHECK_FUNCS([ttyname getcwd])
124# </FIXME>
125
126# Check if the installed toolchain provides these headers
127# and error out if not.
128AC_CHECK_HEADERS([tar.h errno.h sched.h sys/cdefs.h sys/queue.h],,
129  [rtems_missing_header="$ac_header";break])
130AS_IF([test -n "$rtems_missing_header"],
131  AC_MSG_ERROR([Missing required header $rtems_missing_header])])
132
133## error out if libc doesn't provide stdint.h
134AS_IF([test x"${ac_cv_header_stdint_h}" != xyes],
135[AC_MSG_ERROR([Required header stdint.h not found])])
136
137## error out if libc doesn't provide inttypes.h
138AS_IF([test x"${ac_cv_header_inttypes_h}" != xyes],
139[AC_MSG_ERROR([Required header inttypes.h not found])])
140
141AC_HEADER_STDBOOL
142AS_IF([test x"${ac_cv_header_stdbool_h}" != xyes],
143[AC_MSG_ERROR([No sufficient stdbool.h found])])
144
145AC_CHECK_TYPES([ uint8_t,  int8_t])
146AC_CHECK_TYPES([uint16_t, int16_t])
147AC_CHECK_TYPES([uint32_t, int32_t])
148AC_CHECK_TYPES([uint64_t, int64_t])
149AC_CHECK_TYPES([uintmax_t, intmax_t])
150AC_CHECK_TYPES([uintptr_t, intptr_t])
151
152# Some toolchain sanity checks and diagnostics
153RTEMS_CHECK_GCC_SANITY
154
155# These are conditionally defined by the toolchain
156# FIXME: we should either conditionally compile those parts in
157# RTEMS depending on them, or abort - For now, simply check.
158AC_CHECK_HEADER([pthread.h],[
159  AC_CHECK_TYPES([pthread_rwlock_t])
160  AC_CHECK_TYPES([pthread_barrier_t])
161  AC_CHECK_TYPES([pthread_spinlock_t])
162  AC_CHECK_TYPES([struct _pthread_cleanup_context],[],[],[#include <pthread.h>])
163])
164
165AC_CHECK_HEADER([signal.h],[
166  AC_CHECK_TYPES([sighandler_t])
167])
168
169RTEMS_CHECK_MULTIPROCESSING
170RTEMS_CHECK_POSIX_API
171RTEMS_CHECK_NETWORKING
172RTEMS_CHECK_SMP
173if test "${RTEMS_HAS_SMP}" = "yes"; then
174  AC_CHECK_HEADERS([stdatomic.h],[],[AC_MSG_ERROR([<stdatomic.h> is required for SMP support])])
175fi
176
177rtems_major=`echo _RTEMS_VERSION | sed "s/\..*//"`
178rtems_minor=`echo _RTEMS_VERSION | sed "s/[[0-9]][[0-9]]*\.//;s/\..*//"`
179rtems_revision=`echo _RTEMS_VERSION | sed "s/[[0-9]][[0-9]]*\.//;s/[[0-9]][[0-9]]*\.//;s/\..*//"`
180
181_RTEMS_CPUOPT_INIT
182
183RTEMS_CPUOPT([RTEMS_DEBUG],
184  [test x"${enable_rtems_debug}" = x"yes"],
185  [1],
186  [if RTEMS_DEBUG is enabled])
187
188RTEMS_CPUOPT([RTEMS_MULTIPROCESSING],
189  [test x"$enable_multiprocessing" = xyes],
190  [1],
191  [if multiprocessing is enabled])
192
193RTEMS_CPUOPT([RTEMS_NEWLIB],
194  [test x"$RTEMS_USE_NEWLIB" = xyes],
195  [1],
196  [if using newlib])
197
198RTEMS_CPUOPT([RTEMS_POSIX_API],
199  [test x"$rtems_cv_HAS_POSIX_API" = xyes],
200  [1],
201  [if posix api is supported])
202
203RTEMS_CPUOPT([RTEMS_SMP],
204  [test x"$RTEMS_HAS_SMP" = xyes],
205  [1],
206  [if SMP is enabled])
207
208RTEMS_CPUOPT([RTEMS_PARAVIRT],
209  [test x"$RTEMS_HAS_PARAVIRT" = xyes],
210  [1],
211  [PARAVIRT is enabled])
212
213RTEMS_CPUOPT([RTEMS_PROFILING],
214  [test x"$RTEMS_HAS_PROFILING" = xyes],
215  [1],
216  [if profiling is enabled])
217
218RTEMS_CPUOPT([RTEMS_NETWORKING],
219  [test x"$rtems_cv_HAS_NETWORKING" = xyes],
220  [1],
221  [if networking is enabled])
222
223RTEMS_CPUOPT([RTEMS_VERSION],
224  [true],
225  ["]_RTEMS_VERSION["],
226  [RTEMS version string])
227
228RTEMS_CPUOPT([__RTEMS_USE_TICKS_FOR_STATISTICS__],
229  [test x"${USE_TICKS_FOR_STATISTICS}" = x"1"],
230  [1],
231  [disable nanosecond granularity for statistics])
232
233## Header file differences that need to be known in .h after install
234RTEMS_CPUOPT([__RTEMS_HAVE_SYS_CPUSET_H__],
235  [test x"${ac_cv_header_sys_cpuset_h}" = x"yes"],
236  [1],
237  [indicate if <sys/cpuset.h> is present in toolset])
238
239## This improves both the size and coverage analysis.
240RTEMS_CPUOPT([__RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__],
241  [test x"${RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH}" = x"1"],
242  [1],
243  [disable inlining _Thread_Enable_dispatch])
244
245## This improves both the size and coverage analysis.
246RTEMS_CPUOPT([__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__],
247  [test x"${RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE}" = x"1"],
248  [1],
249  [disable inlining _Thread_Enable_dispatch])
250
251## This gives the same behavior as 4.8 and older
252RTEMS_CPUOPT([__RTEMS_STRICT_ORDER_MUTEX__],
253  [test x"${ENABLE_STRICT_ORDER_MUTEX}" = x"1"],
254  [1],
255  [disable strict order mutex])
256
257## Deactivate ada bindings
258RTEMS_CPUOPT([__RTEMS_ADA__],
259  [test x"${enable_ada}" = x"yes"],
260  [1],
261  [Define to 1 if ada/gnat bindings are built-in])
262
263## Then we propagate a private copy of the value into cpuopts.h
264## so it is always available to the RTEMS header files.
265
266RTEMS_CPUOPT([__RTEMS_MAJOR__],
267  [true],
268  [$rtems_major],
269  [major version portion of an RTEMS release])
270
271RTEMS_CPUOPT([__RTEMS_MINOR__],
272  [true],
273  [$rtems_minor],
274  [minor version portion of an RTEMS release])
275
276RTEMS_CPUOPT([__RTEMS_REVISION__],
277  [true],
278  [$rtems_revision],
279  [revision version portion of an RTEMS release])
280
281_RTEMS_CPUOPT_FINI
282
283AC_ENABLE_MULTILIB([Makefile],[..])
284
285# libmisc/shell/* wants to assign file descriptors to stdio file descriptors.
286AC_MSG_CHECKING([for assignable stdio])
287AC_COMPILE_IFELSE(
288  [AC_LANG_PROGRAM(
289    [#include <stdio.h>],
290    [stdin = fopen("/tmp", "r")])],
291  [HAVE_ASSIGNABLE_STDIO=yes],
292  [HAVE_ASSIGNABLE_STDIO=no])
293AC_MSG_RESULT([$HAVE_ASSIGNABLE_STDIO])
294
295# libmisc/serdbg exploits weak symbols
296RTEMS_CHECK_GCC_WEAK
297
298# FIXME: These checks are only in here to provide
299# configuration-time diagnostics and are not really used.
300AC_CHECK_DECLS([_POSIX_LOGIN_NAME_MAX],,,[#include <limits.h>])
301AC_CHECK_DECLS([CHAR_BIT],,,[#include <limits.h>])
302
303# FIXME: We should get rid of this.
304# So far, only used in libfs/src/nfsclient/src/dirutils.c
305AC_CHECK_SIZEOF([mode_t])
306AC_CHECK_SIZEOF([off_t])
307
308# FIXME: We should get rid of this. It's a cludge.
309AC_CHECK_SIZEOF([time_t])
310
311AC_CHECK_SIZEOF([size_t])
312
313# FIXME: Mandatory in SUSv4, optional in SUSv3.
314#   Not implemented in GCC/newlib, so far.
315AC_CHECK_DECLS([WORD_BIT],,,[#include <limits.h>])
316AC_CHECK_DECLS([LONG_BIT],,,[#include <limits.h>])
317
318## BSD-ism, excluded from POSIX, but available on most platforms
319AC_CHECK_DECLS([sbrk],,,[#include <unistd.h>])
320AC_CHECK_DECLS([rcmd],,,[#include <unistd.h>])
321
322## Check if libc provides BSD's strlcpy/strlcat
323AC_CHECK_FUNCS(strlcpy strlcat)
324
325## Check if libc provides decl of utime
326## FIXME: utime has been deprecated in SUSv4.
327##        and is likely to be removed in future versions.
328## FIXME (BUG in newlib): SUSv4 saids including <utime.h> should be sufficient.
329AC_CHECK_DECLS([utime],,,[#include <sys/types.h>
330#include <utime.h>])
331## Check if libc provides decl of utimes
332AC_CHECK_DECLS([utimes],,,[#include <sys/time.h>])
333
334# ... far too many conditionals ...
335AM_CONDITIONAL(LIBRPC,[test x"$rtems_cv_HAS_NETWORKING" = x"yes"])
336AM_CONDITIONAL(NEWLIB,test x"$RTEMS_USE_NEWLIB" = x"yes")
337
338AM_CONDITIONAL(HAS_MP,test x"$enable_multiprocessing" = x"yes" )
339AM_CONDITIONAL(HAS_SMP,[test "$RTEMS_HAS_SMP" = "yes"])
340
341AM_CONDITIONAL(HAS_PTHREADS,test x"$rtems_cv_HAS_POSIX_API" = x"yes")
342AM_CONDITIONAL(LIBNETWORKING,test x"$rtems_cv_HAS_NETWORKING" = x"yes")
343
344AM_CONDITIONAL([LIBSHELL],[test x"$HAVE_ASSIGNABLE_STDIO" = x"yes"])
345AM_CONDITIONAL([LIBSERDBG],[test x"$rtems_cv_cc_attribute_weak" = x"yes"])
346AM_CONDITIONAL([LIBGNAT],[test x"$rtems_cv_HAS_POSIX_API" = x"yes" \
347&& test x"$enable_ada" = x"yes"])
348
349AM_CONDITIONAL([LIBUTF8PROC],[test $ac_cv_sizeof_size_t -gt 2])
350
351AM_CONDITIONAL([LIBDOSFS],[dnl
352test x"$ac_cv_type_uint8_t" = xyes \
353&& test x"$ac_cv_type_uint16_t" = xyes])
354
355AC_CONFIG_HEADER(config.h)
356
357## These are needed by the NFS Client
358AC_CHECK_PROG(RPCGEN,rpcgen,rpcgen)
359AM_CONDITIONAL([RPCTOOLS],[test "$RPCGEN" = rpcgen \
360&& test -n "$AWK" \
361&& test "$enable_rpcgen" = yes])
362
363RTEMS_AMPOLISH3
364
365# Explicitly list all Makefiles here
366AC_CONFIG_FILES([
367Doxyfile
368Makefile
369rtems/Makefile
370sapi/Makefile
371score/Makefile
372score/cpu/Makefile
373score/cpu/arm/Makefile
374score/cpu/bfin/Makefile
375score/cpu/avr/Makefile
376score/cpu/h8300/Makefile
377score/cpu/i386/Makefile
378score/cpu/lm32/Makefile
379score/cpu/m68k/Makefile
380score/cpu/m32c/Makefile
381score/cpu/m32r/Makefile
382score/cpu/mips/Makefile
383score/cpu/moxie/Makefile
384score/cpu/nios2/Makefile
385score/cpu/or1k/Makefile
386score/cpu/powerpc/Makefile
387score/cpu/sh/Makefile
388score/cpu/sparc/Makefile
389score/cpu/sparc64/Makefile
390score/cpu/v850/Makefile
391score/cpu/no_cpu/Makefile
392posix/Makefile
393libblock/Makefile
394libfs/Makefile
395libfs/src/nfsclient/Makefile
396libgnat/Makefile
397libcsupport/Makefile
398libnetworking/Makefile
399librpc/Makefile
400libmisc/Makefile
401libi2c/Makefile
402libmd/Makefile
403zlib/Makefile
404ftpd/Makefile
405telnetd/Makefile
406pppd/Makefile
407mghttpd/Makefile
408wrapup/Makefile])
409
410AC_CONFIG_COMMANDS([preinstall-stamp],
411[test -z "$with_multisubdir" && ${MAKE} preinstall-stamp],
412[MAKE=${MAKE}
413with_multisubdir="$with_multisubdir"])
414
415AC_OUTPUT
Note: See TracBrowser for help on using the repository browser.