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

Subversion Repositories openrisc

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

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

powered by: WebSVN 2.1.0

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