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

Subversion Repositories openrisc

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

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 234 jeremybenn
AC_INIT([or1ksim], [2010-08-03], [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 234 2010-08-03 10:10: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
dlx*)   CPU_ARCH=dlx;
60
        ARCH_ISA=DLX;;
61
*)      AC_MSG_WARN(Unknown target architecture $target_cpu: OR32 assumed);
62
        CPU_ARCH=or32;
63
        ARCH_ISA=OR32;
64
        AC_DEFINE(OR32_TYPES, 1, "The compiler uses the OR32 ELF types");;
65
esac
66
 
67
# determine endianism from target CPU name. If it has "little" in the name,
68
# then its litte endian, otherwise its big endian (default for OR1K)
69
case "$target_cpu" in
70
*little*)  AC_DEFINE(OR32_LITTLE_ENDIAN, 1, "The OR32 is little endian");;
71
       *)  AC_DEFINE(OR32_BIG_ENDIAN,    1, "The OR32 is big endian");;
72
esac
73
 
74
AC_SUBST(CPU_ARCH)
75
 
76 82 jeremybenn
# Set the CFLAGS we want
77
CFLAGS="$CFLAGS -g -Wall -Werror -O2 -D$ARCH_ISA"
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 82 jeremybenn
AC_CHECK_HEADERS(unistd.h stdlib.h varargs.h stdarg.h string.h strings.h      \
95
                 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
                 limits.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
    [  --enable-execution Execution style to use (simple/complex/dynamic)],
220
    [
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
    dynamic)
233
      INCLUDES="-I\${top_srcdir}/cpu/$CPU_ARCH"
234
      execution="2"
235
      AC_MSG_RESULT(dynamic)
236
      ;;
237
    *)
238 124 jeremybenn
      AC_MSG_ERROR("execution must one of simple/complex/dynamic")
239 19 jeremybenn
      ;;
240
    esac
241
    ],
242
    [
243
      AC_MSG_RESULT(complex)
244
    ])
245
 
246
eth_phy="0"
247
AC_MSG_CHECKING(whether to enable ethernet phy emulation)
248
AC_ARG_ENABLE(ethphy,
249
    [  --enable-ethphy    compiles sim with ethernet phy support], [
250
    case "$enableval" in
251
  no)  eth_phy="0" ;;
252
        yes) eth_phy="1" ;;
253
    esac
254
])
255
AC_MSG_RESULT(${enable_eth_phy-no})
256
 
257 127 jeremybenn
unsigned_xori="0"
258
AC_MSG_CHECKING(whether l.xori takes an unsigned immediate operand)
259
AC_ARG_ENABLE(unsigned-xori,
260
    [  --enable-unsigned-xori    l.xori immediate operand treated as unsigned], [
261
    case "$enableval" in
262
  no)  unsigned_xori="0" ;;
263
        yes) unsigned_xori="1" ;;
264
    esac
265
])
266
AC_MSG_RESULT(${enable_unsigned_xori-no})
267 19 jeremybenn
 
268
raw_range_stats="0"
269
AC_MSG_CHECKING(whether to use raw range stats)
270
AC_ARG_ENABLE(range_stats,
271
    [  --enable-range-stats      Specifies, whether we should do register accesses over time analysis.], [
272
    case "$enableval" in
273
  no)  raw_range_stats="0" ;;
274
        yes) raw_range_stats="1" simple_execution="1" ;;
275
    esac
276
])
277
AC_MSG_RESULT(${enable_range_stats-no})
278
 
279
# check for --enable-debug argument (for argtable2)
280
AC_ARG_ENABLE(
281
    [debug],
282
    AC_HELP_STRING([--enable-debug],[enable library debugging symbols]),
283
    [
284
       case $enableval in
285
          yes) echo "enabling argtable2 debugging symbols" & DEBUGFLAGS="-g -UNDEBUG";;
286
          no)  echo "disabling argtable2 debugging symbols" & DEBUGFLAGS="-DNDEBUG";;
287
          *)   echo "illegal argument to --enable-debug" & exit 1;;
288
       esac
289
    ],
290
    [DEBUGFLAGS="-DNDEBUG"]
291
    )
292
AC_SUBST(DEBUGFLAGS)
293
 
294
AC_DEFINE_UNQUOTED(RAW_RANGE_STATS, $raw_range_stats, [ Specifies, whether we should do register accesses over time analysis. Simple execution must be enabled!])
295
AC_DEFINE_UNQUOTED(HAVE_ETH_PHY, $eth_phy, [Whether we have ethernet PHY support])
296 127 jeremybenn
AC_DEFINE_UNQUOTED(HAVE_UNSIGNED_XORI, $unsigned_xori, [Whether l.xori takes an unsigned immediate operand])
297 19 jeremybenn
AC_DEFINE_UNQUOTED(SIMPLE_EXECUTION, $execution == 0, [Whether we are building with simple execution module])
298
AC_DEFINE_UNQUOTED(COMPLEX_EXECUTION, $execution == 1, [Whether we are building with complex execution module])
299
AC_DEFINE_UNQUOTED(DYNAMIC_EXECUTION, $execution == 2, [Whether we are building with dynamic execution module])
300
AM_CONDITIONAL(GENERATE_NEEDED, test x$execution = x1)
301
AM_CONDITIONAL(DYNAMIC_EXECUTION, test x$execution = x2)
302
 
303
 
304
test -n "$profile"  && CFLAGS="$CFLAGS $profile" LDFLAGS="$LDFLAGS $profile"
305
 
306 90 jeremybenn
# Check for a DejaGNU global config file. If not set, then set it
307
# ourselves. This stops runtest complaining
308
if test x"$DEJAGNU" = x
309
then
310 96 jeremybenn
  DEJAGNU="\$(top_srcdir)/testsuite/global-conf.exp"
311 90 jeremybenn
fi
312
 
313 96 jeremybenn
AC_SUBST(DEJAGNU)
314
 
315
# The following line will override the default definition of the srcdir, and
316
# ensure that short names are used for the test names.
317
RUNTESTDEFAULTFLAGS="--tool \$\$tool"
318
AC_SUBST(RUNTESTDEFAULTFLAGS)
319
 
320 19 jeremybenn
BUILD_DIR=`pwd`
321
AC_SUBST(BUILD_DIR)
322
 
323
AC_SUBST(CFLAGS)
324
AC_SUBST(LOCAL_CFLAGS)
325
AC_SUBST(LOCAL_LDFLAGS)
326
AC_SUBST(LOCAL_DEFS)
327
 
328
AC_SUBST(AR)
329
AC_SUBST(ARFLAGS)
330
 
331
AC_SUBST(host_cpu)
332
AC_SUBST(host_os)
333
AC_SUBST(host)
334
 
335
AC_SUBST(SUMVERSION)
336
AC_SUBST(TERMCAP_LIB)
337
 
338
AC_DEFINE(HAVE_EXECUTION, 1, [ Some shared files require to know, whether we have execution functions defined.])
339
 
340
# yuck
341
INCLUDES="$INCLUDES -I\${top_srcdir} -I\${top_srcdir}/cpu/common \
342
-I\${top_srcdir}/cpu/or1k -I\${top_srcdir}/cache -I\${top_srcdir}/mmu \
343
-I\${top_srcdir}/bpb -I\${top_srcdir}/peripheral -I\${top_srcdir}/tick \
344
-I\${top_srcdir}/peripheral/channels -I\${top_srcdir}/pm -I\${top_srcdir}/pic \
345
-I\${top_srcdir}/debug -I\${top_srcdir}/vapi -I\${top_srcdir}/support \
346 233 julius
-I\${top_srcdir}/cuc -I\${top_srcdir}/port -I\${top_srcdir}/argtable2 \
347
-I\${top_srcdir}/softfloat"
348 19 jeremybenn
AC_SUBST(INCLUDES)
349
 
350 93 jeremybenn
AC_CONFIG_FILES([Makefile                                 \
351
                 argtable2/Makefile                       \
352
                 bpb/Makefile                             \
353
                 cache/Makefile                           \
354
                 cpu/Makefile                             \
355
                 cpu/common/Makefile                      \
356
                 cpu/or1k/Makefile                        \
357
                 cuc/Makefile                             \
358 233 julius
                 softfloat/Makefile                       \
359 93 jeremybenn
                 debug/Makefile                           \
360
                 doc/Makefile                             \
361
                 mmu/Makefile                             \
362
                 peripheral/Makefile                      \
363
                 peripheral/channels/Makefile             \
364
                 pm/Makefile                              \
365
                 pic/Makefile                             \
366
                 port/Makefile                            \
367
                 support/Makefile                         \
368
                 testsuite/Makefile                       \
369
                 testsuite/config/Makefile                \
370
                 testsuite/lib/Makefile                   \
371
                 testsuite/libsim.tests/Makefile          \
372
                 testsuite/or1ksim.tests/Makefile         \
373
                 testsuite/test-code/Makefile             \
374
                 testsuite/test-code/lib-iftest/Makefile  \
375
                 testsuite/test-code/lib-inttest/Makefile \
376 97 jeremybenn
                 testsuite/test-code/lib-jtag/Makefile    \
377 93 jeremybenn
                 testsuite/test-code/lib-upcalls/Makefile \
378
                 tick/Makefile                            \
379 90 jeremybenn
                 vapi/Makefile])
380 19 jeremybenn
 
381
# yuck. I don't know why I cannot just substitute $CPU_ARCH in the above
382
case "$CPU_ARCH" in
383
dlx)    AC_CONFIG_FILES([cpu/dlx/Makefile]);;
384
*)      AC_CONFIG_FILES([cpu/or32/Makefile]);;
385
esac
386
 
387 82 jeremybenn
# Generate the output
388
AC_COPYRIGHT([Copyright (C) 1999-2008 OpenCores
389
Copyright (C) 2008, 2010 Embecosm Limited
390
 
391
Contributor Jeremy Bennett 
392
 
393
This file is part of OpenRISC 1000 Architectural Simulator.
394
 
395
This program is free software; you can redistribute it and/or modify it
396
under the terms of the GNU General Public License as published by the Free
397
Software Foundation; either version 3 of the License, or (at your option)
398
any later version.
399
 
400
This program is distributed in the hope that it will be useful, but WITHOUT
401
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
402
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
403
more details.
404
 
405
You should have received a copy of the GNU General Public License along
406
with this program.  If not, see .])
407
 
408 19 jeremybenn
AC_OUTPUT

powered by: WebSVN 2.1.0

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