OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [or1ksim/] [configure.ac] - Blame information for rev 566

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 82 jeremybenn
# configure.ac -- Top level autoconf configuration file
2 19 jeremybenn
#
3
# Copyright (C) 1999-2008 OpenCores
4 460 jeremybenn
# Copyright (C) 2008, 2010, 2011 Embecosm Limited
5 19 jeremybenn
#
6
# Contributor Jeremy Bennett 
7
#
8
# This file is part of OpenRISC 1000 Architectural Simulator.
9
#
10
# This program is free software; you can redistribute it and/or modify it
11
# under the terms of the GNU General Public License as published by the Free
12
# Software Foundation; either version 3 of the License, or (at your option)
13
# any later version.
14
#
15
# This program is distributed in the hope that it will be useful, but WITHOUT
16
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
18
# more details.
19
#
20
# You should have received a copy of the GNU General Public License along
21
# with this program.  If not, see .
22
 
23
 
24
# Configure script for the OpenRISC 1000 simulator
25
 
26
# Process this file with autoconf to produce a configure script.
27
 
28
 
29 82 jeremybenn
# Use a full version number (x.y.z, possibly with "rcn" as a suffix) when
30 89 jeremybenn
# preparing a release, otherwise use a the date version (yyyy-mm-dd).
31 532 jeremybenn
AC_INIT([or1ksim], [2011-04-28], [openrisc@opencores.org])
32 82 jeremybenn
AC_CONFIG_MACRO_DIR([m4])
33
 
34 91 jeremybenn
# Generically use extensions such as _GNU_SOURCE if available.
35
AC_USE_SYSTEM_EXTENSIONS
36
 
37 82 jeremybenn
# Check we have the execute source file present for sanity. Specify a separate
38 90 jeremybenn
# config for the testsuite OR1K specific programs, since we'll need different
39
# tool chain there (the OpenRISC one, rather than the native one).
40 19 jeremybenn
AC_CONFIG_SRCDIR([cpu/or32/execute.c])
41 90 jeremybenn
AC_CONFIG_SUBDIRS([testsuite/test-code-or1k])
42 82 jeremybenn
 
43 19 jeremybenn
AC_CANONICAL_TARGET([])
44
AC_PROG_LIBTOOL
45
AM_INIT_AUTOMAKE
46 91 jeremybenn
 
47 19 jeremybenn
AC_CONFIG_HEADERS([config.h])
48
 
49
AC_REVISION([$Id: configure.ac 556 2011-06-06 19:17:37Z julius $ using automake version] AC_ACVERSION)
50
 
51
# make sure we are using a recent autoconf version
52
AC_PREREQ(2.59)
53
 
54
# yuck.
55
case "$target_cpu" in
56
or32*)  CPU_ARCH=or32;
57
        ARCH_ISA=OR32;
58
        AC_DEFINE(OR32_TYPES, 1, "The compiler uses the OR32 ELF types");;
59 385 jeremybenn
 
60
*)      AC_MSG_WARN(Unknown target architecture $target_cpu: OR32 ELF assumed);
61 19 jeremybenn
        CPU_ARCH=or32;
62
        ARCH_ISA=OR32;
63
        AC_DEFINE(OR32_TYPES, 1, "The compiler uses the OR32 ELF types");;
64
esac
65
 
66
# determine endianism from target CPU name. If it has "little" in the name,
67
# then its litte endian, otherwise its big endian (default for OR1K)
68
case "$target_cpu" in
69
*little*)  AC_DEFINE(OR32_LITTLE_ENDIAN, 1, "The OR32 is little endian");;
70
       *)  AC_DEFINE(OR32_BIG_ENDIAN,    1, "The OR32 is big endian");;
71
esac
72
 
73
AC_SUBST(CPU_ARCH)
74
 
75 236 jeremybenn
# Set the CFLAGS we want. We put the user flags last, so that if the user
76
# changes the optimization level, that will take precedence.
77
CFLAGS="-g -Wall -Werror -O2 -D$ARCH_ISA $CFLAGS"
78 19 jeremybenn
 
79 82 jeremybenn
AM_PROG_AS
80
 
81 19 jeremybenn
AC_PROG_CC
82
AM_PROG_CC_C_O
83
 
84
AC_PROG_MAKE_SET
85
 
86
AC_PROG_INSTALL
87
AC_CHECK_PROG(AR, ar, ar)
88
 
89
# Set default for ARFLAGS, since autoconf does not have a macro for it.
90
# This allows people to set it when running configure or make
91
test -n "$ARFLAGS" || ARFLAGS="cr"
92
 
93
AC_TYPE_SIGNAL
94 236 jeremybenn
AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h string.h strings.h      \
95 82 jeremybenn
                 sys/ptem.h sys/pte.h sys/stream.h sys/stropts.h sys/select.h \
96
                 termcap.h termios.h termio.h sys/file.h locale.h getopt.h    \
97 118 jeremybenn
                 net/ethernet.h sys/ethernet.h malloc.h inttypes.h libintl.h  \
98 538 julius
                 limits.h linux/if_tun.h)
99 19 jeremybenn
AC_CHECK_FUNCS(strcasecmp select setenv putenv tcgetattr setlocale lstat)
100 82 jeremybenn
AC_CHECK_FUNCS(grantpt unlockpt ptsname on_exit)
101 19 jeremybenn
AC_CHECK_FUNCS(basename)
102
AC_FUNC_STRCOLL
103 82 jeremybenn
AC_CHECK_DECLS([I_PUSH, rl_event_hook], [], [], \
104
               [#include ])
105 19 jeremybenn
AC_C_BIGENDIAN
106
 
107 82 jeremybenn
# The test for strndup, strcasecmp and isblank fails on modern machines. I
108
# think it's because GCC 4 does not like the way autoconf overrides the built
109
# in type declaration. So we must check for them by steam.
110
AC_MSG_CHECKING(for strndup)
111
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef HAVE_STRING_H
112
                                  #include 
113
                                  #else
114
                                  char *strndup (const char *s,
115
                                                 size_t      n);
116
                                  #endif]],                      \
117
                                [[const char *s = "test";
118
                                  char       *t;
119
                                  t = strndup (s, 3);]])], \
120
               [AC_DEFINE(HAVE_STRNDUP, 1, \
121
                          "Whether the strndup function is available") \
122
                AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])
123
 
124
AC_MSG_CHECKING(for strcasecmp)
125
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef HAVE_STRINGS_H
126
                                  #include 
127
                                  #else
128
                                  int strcasecmp (const char *s1,
129
                                                  const char *s2);
130
                                  #endif]],                       \
131
                                [[const char *s = "test";
132
                                  const char *t = "TEST";
133
                                  int         res;
134
                                  res = strcasecmp (s, t);]])], \
135
               [AC_DEFINE(HAVE_STRCASECMP, 1, \
136
                          "Whether the strcasecmp function is available") \
137
                AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])
138
 
139
AC_MSG_CHECKING(for isblank)
140
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef HAVE_CTYPE_H
141
                                  #include 
142
                                  #else
143
                                  int isblank (int  c);
144
                                  #endif]],               \
145
                                [[return isblank ('x');]])], \
146
               [AC_DEFINE(HAVE_ISBLANK, 1, \
147
                          "Whether the isblank function is available") \
148
                AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])
149
 
150 19 jeremybenn
# Checks for typedefs, structures, and compiler characteristics (for argtable2)
151
AC_TYPE_SIZE_T
152
AC_STRUCT_TM
153
 
154
# Checks for library functions (for argtable2).
155
AC_FUNC_MALLOC
156
AC_FUNC_STRFTIME
157
AC_FUNC_STRTOD
158
AC_CHECK_FUNCS([bzero strchr strcspn strrchr strtol])
159
AC_CHECK_FUNC(getopt_long, SYS_GETOPTLONG=1, SYS_GETOPTLONG=0)
160
AC_CHECK_FUNC(regcomp,     SYS_REGEX=1,      SYS_REGEX=0)
161
AC_CHECK_FUNC(strptime,    SYS_STRPTIME=1,   SYS_STRPTIME=0)
162
 
163
# Define automake conditionals (for argtable2)
164
AM_CONDITIONAL(USE_SYS_GETOPTLONG, test "$SYS_GETOPTLONG" = "1")
165
AM_CONDITIONAL(USE_ARGREX,         test "$SYS_REGEX" = "1")
166
AM_CONDITIONAL(USE_ARGDATE,        test "$SYS_STRPTIME" = "1")
167
 
168
# check for "long long" (added by Erez)
169
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long ll; unsigned long long ull;]])],[AC_DEFINE(CC_HAS_LONG_LONG, 1, "Whether the compiler supports 'long long'.")],[])
170
 
171
# check for {u,}int{8,16,32}_t in inttypes.h.
172
AC_CHECK_TYPES([uint8_t, uint16_t, uint32_t],,, [#include ])
173
AC_CHECK_TYPES([int8_t, int16_t, int32_t],,, [#include ])
174
 
175
AC_CHECK_SIZEOF(char, 1)
176
AC_CHECK_SIZEOF(short, 1)
177
AC_CHECK_SIZEOF(int, 1)
178
AC_CHECK_SIZEOF(long, 1)
179 233 julius
AC_CHECK_SIZEOF(long long, 1)
180 19 jeremybenn
 
181
#Check for compare function type for qsort (needed by some Linuxes)
182
AC_CHECK_TYPES([__compar_fn_t])
183
 
184
# check for GNU readline
185
AC_CHECK_LIB(readline, add_history)
186
 
187
# yuck
188
case "$host_os" in
189
aix*)   prefer_curses=yes ;;
190
esac
191
 
192
case "$host_cpu" in
193
*cray*) LOCAL_CFLAGS=-DCRAY ;;
194
esac
195
 
196
case "$host_os" in
197
isc*)   LOCAL_CFLAGS=-Disc386 ;;
198
esac
199
 
200
case "$host_os" in
201
solaris*) LIBS="-lsocket -lnsl" ;;
202
esac
203
 
204
# define options
205
AC_MSG_CHECKING(whether to enable profiling)
206
AC_ARG_ENABLE(profiling,
207
    [  --enable-profiling      generate profiling code], [
208
    case "$enableval" in
209
        yes) profile="-pg" ;;
210
    esac
211
])
212
AC_MSG_RESULT(${enable_profiling-no})
213
 
214
execution="1"
215
 
216
INCLUDES="-I\${top_builddir}/cpu/$CPU_ARCH"
217
AC_MSG_CHECKING(which execution style to use)
218
AC_ARG_ENABLE(execution,
219 552 julius
    [  --enable-execution Execution style to use (simple/complex)],
220 19 jeremybenn
    [
221
    case "$enableval" in
222
    simple)
223
      INCLUDES="-I\${top_srcdir}/cpu/$CPU_ARCH"
224
      execution="0"
225
      AC_MSG_RESULT(simple)
226
      ;;
227
    complex)
228
      INCLUDES="-I\${top_builddir}/cpu/$CPU_ARCH"
229
      execution="1"
230
      AC_MSG_RESULT(complex)
231
      ;;
232
    *)
233 552 julius
      AC_MSG_ERROR("execution must one of simple/complex")
234 19 jeremybenn
      ;;
235
    esac
236
    ],
237
    [
238
      AC_MSG_RESULT(complex)
239
    ])
240
 
241
eth_phy="0"
242
AC_MSG_CHECKING(whether to enable ethernet phy emulation)
243
AC_ARG_ENABLE(ethphy,
244
    [  --enable-ethphy    compiles sim with ethernet phy support], [
245
    case "$enableval" in
246
  no)  eth_phy="0" ;;
247
        yes) eth_phy="1" ;;
248
    esac
249
])
250
AC_MSG_RESULT(${enable_eth_phy-no})
251
 
252 127 jeremybenn
unsigned_xori="0"
253
AC_MSG_CHECKING(whether l.xori takes an unsigned immediate operand)
254
AC_ARG_ENABLE(unsigned-xori,
255
    [  --enable-unsigned-xori    l.xori immediate operand treated as unsigned], [
256
    case "$enableval" in
257
  no)  unsigned_xori="0" ;;
258
        yes) unsigned_xori="1" ;;
259
    esac
260
])
261
AC_MSG_RESULT(${enable_unsigned_xori-no})
262 19 jeremybenn
 
263
raw_range_stats="0"
264
AC_MSG_CHECKING(whether to use raw range stats)
265
AC_ARG_ENABLE(range_stats,
266
    [  --enable-range-stats      Specifies, whether we should do register accesses over time analysis.], [
267
    case "$enableval" in
268
  no)  raw_range_stats="0" ;;
269
        yes) raw_range_stats="1" simple_execution="1" ;;
270
    esac
271
])
272
AC_MSG_RESULT(${enable_range_stats-no})
273
 
274
# check for --enable-debug argument (for argtable2)
275
AC_ARG_ENABLE(
276
    [debug],
277
    AC_HELP_STRING([--enable-debug],[enable library debugging symbols]),
278
    [
279
       case $enableval in
280
          yes) echo "enabling argtable2 debugging symbols" & DEBUGFLAGS="-g -UNDEBUG";;
281
          no)  echo "disabling argtable2 debugging symbols" & DEBUGFLAGS="-DNDEBUG";;
282
          *)   echo "illegal argument to --enable-debug" & exit 1;;
283
       esac
284
    ],
285
    [DEBUGFLAGS="-DNDEBUG"]
286
    )
287
AC_SUBST(DEBUGFLAGS)
288
 
289
AC_DEFINE_UNQUOTED(RAW_RANGE_STATS, $raw_range_stats, [ Specifies, whether we should do register accesses over time analysis. Simple execution must be enabled!])
290
AC_DEFINE_UNQUOTED(HAVE_ETH_PHY, $eth_phy, [Whether we have ethernet PHY support])
291 127 jeremybenn
AC_DEFINE_UNQUOTED(HAVE_UNSIGNED_XORI, $unsigned_xori, [Whether l.xori takes an unsigned immediate operand])
292 19 jeremybenn
AC_DEFINE_UNQUOTED(SIMPLE_EXECUTION, $execution == 0, [Whether we are building with simple execution module])
293
AC_DEFINE_UNQUOTED(COMPLEX_EXECUTION, $execution == 1, [Whether we are building with complex execution module])
294
AM_CONDITIONAL(GENERATE_NEEDED, test x$execution = x1)
295
 
296
 
297 552 julius
 
298 19 jeremybenn
test -n "$profile"  && CFLAGS="$CFLAGS $profile" LDFLAGS="$LDFLAGS $profile"
299
 
300 90 jeremybenn
# Check for a DejaGNU global config file. If not set, then set it
301
# ourselves. This stops runtest complaining
302 387 jeremybenn
DEJAGNU="\$(top_srcdir)/testsuite/global-conf.exp"
303 90 jeremybenn
 
304 96 jeremybenn
AC_SUBST(DEJAGNU)
305
 
306
# The following line will override the default definition of the srcdir, and
307
# ensure that short names are used for the test names.
308
RUNTESTDEFAULTFLAGS="--tool \$\$tool"
309
AC_SUBST(RUNTESTDEFAULTFLAGS)
310
 
311 19 jeremybenn
BUILD_DIR=`pwd`
312
AC_SUBST(BUILD_DIR)
313
 
314
AC_SUBST(CFLAGS)
315
AC_SUBST(LOCAL_CFLAGS)
316
AC_SUBST(LOCAL_LDFLAGS)
317
AC_SUBST(LOCAL_DEFS)
318
 
319
AC_SUBST(AR)
320
AC_SUBST(ARFLAGS)
321
 
322
AC_SUBST(host_cpu)
323
AC_SUBST(host_os)
324
AC_SUBST(host)
325
 
326
AC_SUBST(SUMVERSION)
327
AC_SUBST(TERMCAP_LIB)
328
 
329
AC_DEFINE(HAVE_EXECUTION, 1, [ Some shared files require to know, whether we have execution functions defined.])
330
 
331
# yuck
332
INCLUDES="$INCLUDES -I\${top_srcdir} -I\${top_srcdir}/cpu/common \
333
-I\${top_srcdir}/cpu/or1k -I\${top_srcdir}/cache -I\${top_srcdir}/mmu \
334
-I\${top_srcdir}/bpb -I\${top_srcdir}/peripheral -I\${top_srcdir}/tick \
335
-I\${top_srcdir}/peripheral/channels -I\${top_srcdir}/pm -I\${top_srcdir}/pic \
336
-I\${top_srcdir}/debug -I\${top_srcdir}/vapi -I\${top_srcdir}/support \
337 233 julius
-I\${top_srcdir}/cuc -I\${top_srcdir}/port -I\${top_srcdir}/argtable2 \
338 556 julius
-I\${top_srcdir}/softfloat -I\${top_srcdir}/pcu"
339 19 jeremybenn
AC_SUBST(INCLUDES)
340
 
341 93 jeremybenn
AC_CONFIG_FILES([Makefile                                 \
342
                 argtable2/Makefile                       \
343
                 bpb/Makefile                             \
344
                 cache/Makefile                           \
345
                 cpu/Makefile                             \
346
                 cpu/common/Makefile                      \
347
                 cpu/or1k/Makefile                        \
348
                 cuc/Makefile                             \
349 233 julius
                 softfloat/Makefile                       \
350 93 jeremybenn
                 debug/Makefile                           \
351
                 doc/Makefile                             \
352
                 mmu/Makefile                             \
353
                 peripheral/Makefile                      \
354
                 peripheral/channels/Makefile             \
355
                 pm/Makefile                              \
356
                 pic/Makefile                             \
357 556 julius
                 pcu/Makefile                             \
358 93 jeremybenn
                 port/Makefile                            \
359
                 support/Makefile                         \
360
                 testsuite/Makefile                       \
361
                 testsuite/config/Makefile                \
362
                 testsuite/lib/Makefile                   \
363
                 testsuite/libsim.tests/Makefile          \
364
                 testsuite/or1ksim.tests/Makefile         \
365
                 testsuite/test-code/Makefile             \
366
                 testsuite/test-code/lib-iftest/Makefile  \
367
                 testsuite/test-code/lib-inttest/Makefile \
368 97 jeremybenn
                 testsuite/test-code/lib-jtag/Makefile    \
369 93 jeremybenn
                 testsuite/test-code/lib-upcalls/Makefile \
370
                 tick/Makefile                            \
371 90 jeremybenn
                 vapi/Makefile])
372 19 jeremybenn
 
373
# yuck. I don't know why I cannot just substitute $CPU_ARCH in the above
374
case "$CPU_ARCH" in
375
*)      AC_CONFIG_FILES([cpu/or32/Makefile]);;
376
esac
377
 
378 82 jeremybenn
# Generate the output
379
AC_COPYRIGHT([Copyright (C) 1999-2008 OpenCores
380
Copyright (C) 2008, 2010 Embecosm Limited
381
 
382
Contributor Jeremy Bennett 
383
 
384
This file is part of OpenRISC 1000 Architectural Simulator.
385
 
386
This program is free software; you can redistribute it and/or modify it
387
under the terms of the GNU General Public License as published by the Free
388
Software Foundation; either version 3 of the License, or (at your option)
389
any later version.
390
 
391
This program is distributed in the hope that it will be useful, but WITHOUT
392
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
393
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
394
more details.
395
 
396
You should have received a copy of the GNU General Public License along
397
with this program.  If not, see .])
398
 
399 19 jeremybenn
AC_OUTPUT

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.