1# This file contains common code used by all simulators. 2# 3# SIM_AC_COMMON invokes AC macros used by all simulators and by the common 4# directory. It is intended to be invoked before any target specific stuff. 5# SIM_AC_OUTPUT is a cover function to AC_OUTPUT to generate the Makefile. 6# It is intended to be invoked last. 7# 8# The simulator's configure.in should look like: 9# 10# dnl Process this file with autoconf to produce a configure script. 11# AC_PREREQ(2.64)dnl 12# AC_INIT(Makefile.in) 13# sinclude(../common/aclocal.m4) 14# 15# SIM_AC_COMMON 16# 17# ... target specific stuff ... 18# 19# SIM_AC_OUTPUT 20 21# Include global overrides and fixes for Autoconf. 22m4_include(../../config/override.m4) 23sinclude([../../config/zlib.m4]) 24m4_include([../../config/plugins.m4]) 25m4_include([../../libtool.m4]) 26m4_include([../../ltoptions.m4]) 27m4_include([../../ltsugar.m4]) 28m4_include([../../ltversion.m4]) 29m4_include([../../lt~obsolete.m4]) 30sinclude([../../config/depstand.m4]) 31 32AC_DEFUN([SIM_AC_COMMON], 33[ 34AC_REQUIRE([AC_PROG_CC]) 35# autoconf.info says this should be called right after AC_INIT. 36AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in) 37AC_CANONICAL_SYSTEM 38AC_USE_SYSTEM_EXTENSIONS 39AC_ARG_PROGRAM 40AC_PROG_INSTALL 41 42# Put a plausible default for CC_FOR_BUILD in Makefile. 43if test "x$cross_compiling" = "xno"; then 44 CC_FOR_BUILD='$(CC)' 45else 46 CC_FOR_BUILD=gcc 47fi 48AC_SUBST(CC_FOR_BUILD) 49 50AC_SUBST(CFLAGS) 51AC_SUBST(HDEFINES) 52AR=${AR-ar} 53AC_SUBST(AR) 54AC_PROG_RANLIB 55 56# Some of the common include files depend on bfd.h, and bfd.h checks 57# that config.h is included first by testing that the PACKAGE macro 58# is defined. 59PACKAGE=sim 60AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ]) 61AC_SUBST(PACKAGE) 62 63# Dependency checking. 64ZW_CREATE_DEPDIR 65ZW_PROG_COMPILER_DEPENDENCIES([CC]) 66 67# Check for the 'make' the user wants to use. 68AC_CHECK_PROGS(MAKE, make) 69MAKE_IS_GNU= 70case "`$MAKE --version 2>&1 | sed 1q`" in 71 *GNU*) 72 MAKE_IS_GNU=yes 73 ;; 74esac 75AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes) 76 77dnl We don't use gettext, but bfd does. So we do the appropriate checks 78dnl to see if there are intl libraries we should link against. 79ALL_LINGUAS= 80ZW_GNU_GETTEXT_SISTER_DIR(../../intl) 81 82# Check for common headers. 83# FIXME: Seems to me this can cause problems for i386-windows hosts. 84# At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*. 85AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h) 86AC_CHECK_HEADERS(sys/time.h sys/resource.h) 87AC_CHECK_HEADERS(fcntl.h fpu_control.h) 88AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h) 89AC_CHECK_FUNCS(getrusage time sigaction __setfpucw) 90 91# Check for socket libraries 92AC_CHECK_LIB(socket, bind) 93AC_CHECK_LIB(nsl, gethostbyname) 94 95# BFD conditionally uses zlib, so we must link it in if libbfd does, by 96# using the same condition. 97AM_ZLIB 98 99# BFD uses libdl when when plugins enabled. 100AC_PLUGINS 101AM_CONDITIONAL(PLUGINS, test "$plugins" = yes) 102LT_INIT([dlopen]) 103AC_SUBST(lt_cv_dlopen_libs) 104 105. ${srcdir}/../../bfd/configure.host 106 107dnl Standard (and optional) simulator options. 108dnl Eventually all simulators will support these. 109dnl Do not add any here that cannot be supported by all simulators. 110dnl Do not add similar but different options to a particular simulator, 111dnl all shall eventually behave the same way. 112 113 114dnl We don't use automake, but we still want to support 115dnl --enable-maintainer-mode. 116USE_MAINTAINER_MODE=no 117AC_ARG_ENABLE(maintainer-mode, 118[ --enable-maintainer-mode Enable developer functionality.], 119[case "${enableval}" in 120 yes) MAINT="" USE_MAINTAINER_MODE=yes ;; 121 no) MAINT="#" ;; 122 *) AC_MSG_ERROR("--enable-maintainer-mode does not take a value"); MAINT="#" ;; 123esac 124if test x"$silent" != x"yes" && test x"$MAINT" = x""; then 125 echo "Setting maintainer mode" 6>&1 126fi],[MAINT="#"])dnl 127AC_SUBST(MAINT) 128 129 130dnl This is a generic option to enable special byte swapping 131dnl insns on *any* cpu. 132AC_ARG_ENABLE(sim-bswap, 133[ --enable-sim-bswap Use Host specific BSWAP instruction.], 134[case "${enableval}" in 135 yes) sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";; 136 no) sim_bswap="-DWITH_BSWAP=0";; 137 *) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";; 138esac 139if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then 140 echo "Setting bswap flags = $sim_bswap" 6>&1 141fi],[sim_bswap=""])dnl 142AC_SUBST(sim_bswap) 143 144 145AC_ARG_ENABLE(sim-cflags, 146[ --enable-sim-cflags=opts Extra CFLAGS for use in building simulator], 147[case "${enableval}" in 148 yes) sim_cflags="-O2 -fomit-frame-pointer";; 149 trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";; 150 no) sim_cflags="";; 151 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;; 152esac 153if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then 154 echo "Setting sim cflags = $sim_cflags" 6>&1 155fi],[sim_cflags=""])dnl 156AC_SUBST(sim_cflags) 157 158 159dnl --enable-sim-debug is for developers of the simulator 160dnl the allowable values are work-in-progress 161AC_ARG_ENABLE(sim-debug, 162[ --enable-sim-debug=opts Enable debugging flags], 163[case "${enableval}" in 164 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";; 165 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";; 166 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";; 167esac 168if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then 169 echo "Setting sim debug = $sim_debug" 6>&1 170fi],[sim_debug=""])dnl 171AC_SUBST(sim_debug) 172 173 174dnl --enable-sim-stdio is for users of the simulator 175dnl It determines if IO from the program is routed through STDIO (buffered) 176AC_ARG_ENABLE(sim-stdio, 177[ --enable-sim-stdio Specify whether to use stdio for console input/output.], 178[case "${enableval}" in 179 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";; 180 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";; 181 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";; 182esac 183if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then 184 echo "Setting stdio flags = $sim_stdio" 6>&1 185fi],[sim_stdio=""])dnl 186AC_SUBST(sim_stdio) 187 188 189dnl --enable-sim-trace is for users of the simulator 190dnl The argument is either a bitmask of things to enable [exactly what is 191dnl up to the simulator], or is a comma separated list of names of tracing 192dnl elements to enable. The latter is only supported on simulators that 193dnl use WITH_TRACE. 194AC_ARG_ENABLE(sim-trace, 195[ --enable-sim-trace=opts Enable tracing flags], 196[case "${enableval}" in 197 yes) sim_trace="-DTRACE=1 -DWITH_TRACE=-1";; 198 no) sim_trace="-DTRACE=0 -DWITH_TRACE=0";; 199 [[-0-9]]*) 200 sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";; 201 [[[:lower:]]]*) 202 sim_trace="" 203 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do 204 if test x"$sim_trace" = x; then 205 sim_trace="-DWITH_TRACE='(TRACE_$x" 206 else 207 sim_trace="${sim_trace}|TRACE_$x" 208 fi 209 done 210 sim_trace="$sim_trace)'" ;; 211esac 212if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then 213 echo "Setting sim trace = $sim_trace" 6>&1 214fi],[sim_trace=""])dnl 215AC_SUBST(sim_trace) 216 217 218dnl --enable-sim-profile 219dnl The argument is either a bitmask of things to enable [exactly what is 220dnl up to the simulator], or is a comma separated list of names of profiling 221dnl elements to enable. The latter is only supported on simulators that 222dnl use WITH_PROFILE. 223AC_ARG_ENABLE(sim-profile, 224[ --enable-sim-profile=opts Enable profiling flags], 225[case "${enableval}" in 226 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";; 227 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";; 228 [[-0-9]]*) 229 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";; 230 [[a-z]]*) 231 sim_profile="" 232 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do 233 if test x"$sim_profile" = x; then 234 sim_profile="-DWITH_PROFILE='(PROFILE_$x" 235 else 236 sim_profile="${sim_profile}|PROFILE_$x" 237 fi 238 done 239 sim_profile="$sim_profile)'" ;; 240esac 241if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then 242 echo "Setting sim profile = $sim_profile" 6>&1 243fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl 244AC_SUBST(sim_profile) 245 246ACX_PKGVERSION([GDB]) 247ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/]) 248AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description]) 249AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address]) 250 251dnl Types used by common code 252AC_TYPE_SIGNAL 253 254dnl Detect exe extension 255AC_EXEEXT 256 257dnl These are available to append to as desired. 258sim_link_files= 259sim_link_links= 260 261dnl Create tconfig.h either from simulator's tconfig.in or default one 262dnl in common. 263sim_link_links=tconfig.h 264if test -f ${srcdir}/tconfig.in 265then 266 sim_link_files=tconfig.in 267else 268 sim_link_files=../common/tconfig.in 269fi 270 271# targ-vals.def points to the libc macro description file. 272case "${target}" in 273*-*-*) TARG_VALS_DEF=../common/nltvals.def ;; 274esac 275sim_link_files="${sim_link_files} ${TARG_VALS_DEF}" 276sim_link_links="${sim_link_links} targ-vals.def" 277 278]) dnl End of SIM_AC_COMMON 279 280 281dnl Additional SIM options that can (optionally) be configured 282dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined. 283dnl Simulators that wish to use the relevant option specify the macro 284dnl in the simulator specific configure.in file between the SIM_AC_COMMON 285dnl and SIM_AC_OUTPUT lines. 286 287 288dnl Specify the running environment. 289dnl If the simulator invokes this in its configure.in then without this option 290dnl the default is the user environment and all are runtime selectable. 291dnl If the simulator doesn't invoke this, only the user environment is 292dnl supported. 293dnl ??? Until there is demonstrable value in doing something more complicated, 294dnl let's not. 295AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT], 296[ 297AC_ARG_ENABLE(sim-environment, 298[ --enable-sim-environment=environment Specify mixed, user, virtual or operating environment.], 299[case "${enableval}" in 300 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";; 301 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";; 302 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";; 303 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";; 304 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment"); 305 sim_environment="";; 306esac 307if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then 308 echo "Setting sim environment = $sim_environment" 6>&1 309fi], 310[sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl 311]) 312AC_SUBST(sim_environment) 313 314 315dnl Specify the alignment restrictions of the target architecture. 316dnl Without this option all possible alignment restrictions are accommodated. 317dnl arg[1] is hardwired target alignment 318dnl arg[2] is default target alignment 319AC_DEFUN([SIM_AC_OPTION_ALIGNMENT], 320wire_alignment="[$1]" 321default_alignment="[$2]" 322[ 323AC_ARG_ENABLE(sim-alignment, 324[ --enable-sim-alignment=align Specify strict, nonstrict or forced alignment of memory accesses.], 325[case "${enableval}" in 326 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";; 327 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";; 328 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";; 329 yes) if test x"$wire_alignment" != x; then 330 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}" 331 else 332 if test x"$default_alignment" != x; then 333 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}" 334 else 335 echo "No hard-wired alignment for target $target" 1>&6 336 sim_alignment="-DWITH_ALIGNMENT=0" 337 fi 338 fi;; 339 no) if test x"$default_alignment" != x; then 340 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}" 341 else 342 if test x"$wire_alignment" != x; then 343 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}" 344 else 345 echo "No default alignment for target $target" 1>&6 346 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0" 347 fi 348 fi;; 349 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";; 350esac 351if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then 352 echo "Setting alignment flags = $sim_alignment" 6>&1 353fi], 354[if test x"$default_alignment" != x; then 355 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}" 356else 357 if test x"$wire_alignment" != x; then 358 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}" 359 else 360 sim_alignment= 361 fi 362fi])dnl 363])dnl 364AC_SUBST(sim_alignment) 365 366 367dnl Conditionally compile in assertion statements. 368AC_DEFUN([SIM_AC_OPTION_ASSERT], 369[ 370AC_ARG_ENABLE(sim-assert, 371[ --enable-sim-assert Specify whether to perform random assertions.], 372[case "${enableval}" in 373 yes) sim_assert="-DWITH_ASSERT=1";; 374 no) sim_assert="-DWITH_ASSERT=0";; 375 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";; 376esac 377if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then 378 echo "Setting assert flags = $sim_assert" 6>&1 379fi],[sim_assert=""])dnl 380]) 381AC_SUBST(sim_assert) 382 383 384 385dnl --enable-sim-bitsize is for developers of the simulator 386dnl It specifies the number of BITS in the target. 387dnl arg[1] is the number of bits in a word 388dnl arg[2] is the number assigned to the most significant bit 389dnl arg[3] is the number of bits in an address 390dnl arg[4] is the number of bits in an OpenFirmware cell. 391dnl FIXME: this information should be obtained from bfd/archure 392AC_DEFUN([SIM_AC_OPTION_BITSIZE], 393wire_word_bitsize="[$1]" 394wire_word_msb="[$2]" 395wire_address_bitsize="[$3]" 396wire_cell_bitsize="[$4]" 397[AC_ARG_ENABLE(sim-bitsize, 398[ --enable-sim-bitsize=N Specify target bitsize (32 or 64).], 399[sim_bitsize= 400case "${enableval}" in 401 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";; 402 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";; 403 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";; 404 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";; 405 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then 406 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31" 407 else 408 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0" 409 fi ;; 410 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then 411 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63" 412 else 413 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0" 414 fi ;; 415 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;; 416esac 417# address bitsize 418tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"` 419case x"${tmp}" in 420 x ) ;; 421 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;; 422 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;; 423 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;; 424esac 425# cell bitsize 426tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"` 427case x"${tmp}" in 428 x ) ;; 429 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;; 430 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;; 431 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;; 432esac 433if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then 434 echo "Setting bitsize flags = $sim_bitsize" 6>&1 435fi], 436[sim_bitsize="" 437if test x"$wire_word_bitsize" != x; then 438 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize" 439fi 440if test x"$wire_word_msb" != x; then 441 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb" 442fi 443if test x"$wire_address_bitsize" != x; then 444 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize" 445fi 446if test x"$wire_cell_bitsize" != x; then 447 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize" 448fi])dnl 449]) 450AC_SUBST(sim_bitsize) 451 452 453 454dnl --enable-sim-endian={yes,no,big,little} is for simulators 455dnl that support both big and little endian targets. 456dnl arg[1] is hardwired target endianness. 457dnl arg[2] is default target endianness. 458AC_DEFUN([SIM_AC_OPTION_ENDIAN], 459[ 460wire_endian="[$1]" 461default_endian="[$2]" 462AC_ARG_ENABLE(sim-endian, 463[ --enable-sim-endian=endian Specify target byte endian orientation.], 464[case "${enableval}" in 465 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";; 466 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";; 467 yes) if test x"$wire_endian" != x; then 468 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}" 469 else 470 if test x"$default_endian" != x; then 471 sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}" 472 else 473 echo "No hard-wired endian for target $target" 1>&6 474 sim_endian="-DWITH_TARGET_BYTE_ORDER=0" 475 fi 476 fi;; 477 no) if test x"$default_endian" != x; then 478 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}" 479 else 480 if test x"$wire_endian" != x; then 481 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}" 482 else 483 echo "No default endian for target $target" 1>&6 484 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0" 485 fi 486 fi;; 487 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";; 488esac 489if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then 490 echo "Setting endian flags = $sim_endian" 6>&1 491fi], 492[if test x"$default_endian" != x; then 493 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}" 494else 495 if test x"$wire_endian" != x; then 496 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}" 497 else 498 sim_endian= 499 fi 500fi])dnl 501]) 502AC_SUBST(sim_endian) 503 504 505dnl --enable-sim-hostendian is for users of the simulator when 506dnl they find that AC_C_BIGENDIAN does not function correctly 507dnl (for instance in a canadian cross) 508AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN], 509[ 510AC_ARG_ENABLE(sim-hostendian, 511[ --enable-sim-hostendian=end Specify host byte endian orientation.], 512[case "${enableval}" in 513 no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";; 514 b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";; 515 l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";; 516 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";; 517esac 518if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then 519 echo "Setting hostendian flags = $sim_hostendian" 6>&1 520fi],[ 521if test "x$cross_compiling" = "xno"; then 522 AC_C_BIGENDIAN 523 if test $ac_cv_c_bigendian = yes; then 524 sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN" 525 else 526 sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN" 527 fi 528else 529 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0" 530fi])dnl 531]) 532AC_SUBST(sim_hostendian) 533 534 535dnl --enable-sim-float is for developers of the simulator 536dnl It specifies the presence of hardware floating point 537dnl And optionally the bitsize of the floating point register. 538dnl arg[1] specifies the presence (or absence) of floating point hardware 539dnl arg[2] specifies the number of bits in a floating point register 540AC_DEFUN([SIM_AC_OPTION_FLOAT], 541[ 542default_sim_float="[$1]" 543default_sim_float_bitsize="[$2]" 544AC_ARG_ENABLE(sim-float, 545[ --enable-sim-float Specify that the target processor has floating point hardware.], 546[case "${enableval}" in 547 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";; 548 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";; 549 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";; 550 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";; 551 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";; 552esac 553if test x"$silent" != x"yes" && test x"$sim_float" != x""; then 554 echo "Setting float flags = $sim_float" 6>&1 555fi],[ 556sim_float= 557if test x"${default_sim_float}" != x""; then 558 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}" 559fi 560if test x"${default_sim_float_bitsize}" != x""; then 561 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}" 562fi 563])dnl 564]) 565AC_SUBST(sim_float) 566 567 568dnl The argument is the default cache size if none is specified. 569AC_DEFUN([SIM_AC_OPTION_SCACHE], 570[ 571default_sim_scache="ifelse([$1],,0,[$1])" 572AC_ARG_ENABLE(sim-scache, 573[ --enable-sim-scache=size Specify simulator execution cache size.], 574[case "${enableval}" in 575 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";; 576 no) sim_scache="-DWITH_SCACHE=0" ;; 577 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";; 578 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache"); 579 sim_scache="";; 580esac 581if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then 582 echo "Setting scache size = $sim_scache" 6>&1 583fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"]) 584]) 585AC_SUBST(sim_scache) 586 587 588dnl The argument is the default model if none is specified. 589AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL], 590[ 591default_sim_default_model="ifelse([$1],,0,[$1])" 592AC_ARG_ENABLE(sim-default-model, 593[ --enable-sim-default-model=model Specify default model to simulate.], 594[case "${enableval}" in 595 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");; 596 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";; 597esac 598if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then 599 echo "Setting default model = $sim_default_model" 6>&1 600fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"]) 601]) 602AC_SUBST(sim_default_model) 603 604 605dnl --enable-sim-hardware is for users of the simulator 606dnl arg[1] Enable sim-hw by default? ("yes", "no", or "always") 607dnl arg[2] is a space separated list of devices that override the defaults 608dnl arg[3] is a space separated list of extra target specific devices. 609AC_DEFUN([SIM_AC_OPTION_HARDWARE], 610[ 611if test x"[$1]" != x"no"; then 612 enable_sim_hardware=yes 613else 614 enable_sim_hardware=no 615fi 616 617if test "[$2]"; then 618 hardware="[$2]" 619else 620 hardware="cfi core pal glue" 621fi 622hardware="$hardware [$3]" 623 624sim_hw_cflags="-DWITH_HW=1" 625sim_hw="$hardware" 626sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`" 627 628AC_ARG_ENABLE(sim-hardware, 629 [AS_HELP_STRING([--enable-sim-hardware=LIST], 630 [Specify the hardware to be included in the build.])]) 631case ${enable_sim_hardware} in 632 yes) sim_hw_p=yes;; 633 no) sim_hw_p=no;; 634 ,*) sim_hw_p=yes; hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";; 635 *,) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";; 636 *) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';; 637esac 638 639if test "$sim_hw_p" != yes; then 640 if test "[$1]" = "always"; then 641 AC_MSG_ERROR([Sorry, but this simulator requires that hardware support 642be enabled. Please configure without --disable-hw-support.]) 643 fi 644 sim_hw_objs= 645 sim_hw_cflags="-DWITH_HW=0" 646 sim_hw= 647else 648 sim_hw_cflags="-DWITH_HW=1" 649 # remove duplicates 650 sim_hw="" 651 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)" 652 for i in $hardware ; do 653 case " $sim_hw " in 654 *" $i "*) ;; 655 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";; 656 esac 657 done 658 # mingw does not support sockser 659 SIM_DV_SOCKSER_O="" 660 case ${host} in 661 *mingw*) ;; 662 *) SIM_DV_SOCKSER_O="dv-sockser.o" 663 AC_DEFINE_UNQUOTED( 664 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.]) 665 ;; 666 esac 667 AC_SUBST(SIM_DV_SOCKSER_O) 668 if test x"$silent" != x"yes"; then 669 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs" 670 fi 671 dnl Some devices require extra libraries. 672 case " $hardware " in 673 *" cfi "*) AC_CHECK_LIB(m, log2);; 674 esac 675fi 676]) 677AC_SUBST(sim_hw_cflags) 678AC_SUBST(sim_hw_objs) 679AC_SUBST(sim_hw) 680 681 682dnl --enable-sim-inline is for users that wish to ramp up the simulator's 683dnl performance by inlining functions. 684dnl Guarantee that unconfigured simulators do not do any inlining 685sim_inline="-DDEFAULT_INLINE=0" 686AC_DEFUN([SIM_AC_OPTION_INLINE], 687[ 688default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])" 689AC_ARG_ENABLE(sim-inline, 690[ --enable-sim-inline=inlines Specify which functions should be inlined.], 691[sim_inline="" 692case "$enableval" in 693 no) sim_inline="-DDEFAULT_INLINE=0";; 694 0) sim_inline="-DDEFAULT_INLINE=0";; 695 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";; 696 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";; 697 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do 698 new_flag="" 699 case "$x" in 700 *_INLINE=*) new_flag="-D$x";; 701 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;; 702 *_INLINE) new_flag="-D$x=ALL_C_INLINE";; 703 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";; 704 esac 705 if test x"$sim_inline" = x""; then 706 sim_inline="$new_flag" 707 else 708 sim_inline="$sim_inline $new_flag" 709 fi 710 done;; 711esac 712if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then 713 echo "Setting inline flags = $sim_inline" 6>&1 714fi],[ 715if test "x$cross_compiling" = "xno"; then 716 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then 717 sim_inline="${default_sim_inline}" 718 if test x"$silent" != x"yes"; then 719 echo "Setting inline flags = $sim_inline" 6>&1 720 fi 721 else 722 sim_inline="" 723 fi 724else 725 sim_inline="-DDEFAULT_INLINE=0" 726fi])dnl 727]) 728AC_SUBST(sim_inline) 729 730 731AC_DEFUN([SIM_AC_OPTION_PACKAGES], 732[ 733AC_ARG_ENABLE(sim-packages, 734[ --enable-sim-packages=list Specify the packages to be included in the build.], 735[packages=disklabel 736case "${enableval}" in 737 yes) ;; 738 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";; 739 ,*) packages="${packages}${enableval}";; 740 *,) packages="${enableval}${packages}";; 741 *) packages="${enableval}"'';; 742esac 743sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'` 744sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'` 745if test x"$silent" != x"yes" && test x"$packages" != x""; then 746 echo "Setting packages to $sim_pk_src, $sim_pk_obj" 747fi],[packages=disklabel 748sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'` 749sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'` 750if test x"$silent" != x"yes"; then 751 echo "Setting packages to $sim_pk_src, $sim_pk_obj" 752fi])dnl 753]) 754AC_SUBST(sim_packages) 755 756 757AC_DEFUN([SIM_AC_OPTION_REGPARM], 758[ 759AC_ARG_ENABLE(sim-regparm, 760[ --enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific.], 761[case "${enableval}" in 762 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";; 763 no) sim_regparm="" ;; 764 yes) sim_regparm="-DWITH_REGPARM=3";; 765 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";; 766esac 767if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then 768 echo "Setting regparm flags = $sim_regparm" 6>&1 769fi],[sim_regparm=""])dnl 770]) 771AC_SUBST(sim_regparm) 772 773 774AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS], 775[ 776default_sim_reserved_bits="ifelse([$1],,1,[$1])" 777AC_ARG_ENABLE(sim-reserved-bits, 778[ --enable-sim-reserved-bits Specify whether to check reserved bits in instruction.], 779[case "${enableval}" in 780 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";; 781 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";; 782 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";; 783esac 784if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then 785 echo "Setting reserved flags = $sim_reserved_bits" 6>&1 786fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl 787]) 788AC_SUBST(sim_reserved_bits) 789 790 791AC_DEFUN([SIM_AC_OPTION_SMP], 792[ 793default_sim_smp="ifelse([$1],,5,[$1])" 794AC_ARG_ENABLE(sim-smp, 795[ --enable-sim-smp=n Specify number of processors to configure for (default ${default_sim_smp}).], 796[case "${enableval}" in 797 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";; 798 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";; 799 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";; 800esac 801if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then 802 echo "Setting smp flags = $sim_smp" 6>&1 803fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}" 804if test x"$silent" != x"yes"; then 805 echo "Setting smp flags = $sim_smp" 6>&1 806fi])dnl 807]) 808AC_SUBST(sim_smp) 809 810 811AC_DEFUN([SIM_AC_OPTION_STDCALL], 812[ 813AC_ARG_ENABLE(sim-stdcall, 814[ --enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific.], 815[case "${enableval}" in 816 no) sim_stdcall="" ;; 817 std*) sim_stdcall="-DWITH_STDCALL=1";; 818 yes) sim_stdcall="-DWITH_STDCALL=1";; 819 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";; 820esac 821if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then 822 echo "Setting function call flags = $sim_stdcall" 6>&1 823fi],[sim_stdcall=""])dnl 824]) 825AC_SUBST(sim_stdcall) 826 827 828AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN], 829[ 830default_sim_xor_endian="ifelse([$1],,8,[$1])" 831AC_ARG_ENABLE(sim-xor-endian, 832[ --enable-sim-xor-endian=n Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian}).], 833[case "${enableval}" in 834 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";; 835 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";; 836 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";; 837esac 838if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then 839 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1 840fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl 841]) 842AC_SUBST(sim_xor_endian) 843 844 845dnl --enable-build-warnings is for developers of the simulator. 846dnl it enables extra GCC specific warnings. 847AC_DEFUN([SIM_AC_OPTION_WARNINGS], 848[ 849AC_ARG_ENABLE(werror, 850 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]), 851 [case "${enableval}" in 852 yes | y) ERROR_ON_WARNING="yes" ;; 853 no | n) ERROR_ON_WARNING="no" ;; 854 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;; 855 esac]) 856 857# Enable -Werror by default when using gcc 858if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then 859 ERROR_ON_WARNING=yes 860fi 861 862WERROR_CFLAGS="" 863if test "${ERROR_ON_WARNING}" = yes ; then 864# NOTE: Disabled in the sim dir due to most sims generating warnings. 865# WERROR_CFLAGS="-Werror" 866 true 867fi 868 869# The entries after -Wno-pointer-sign are disabled warnings which may 870# be enabled in the future, which can not currently be used to build 871# GDB. 872# NOTE: If you change this list, remember to update 873# gdb/doc/gdbint.texinfo. 874build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \ 875-Wformat-nonliteral -Wno-pointer-sign \ 876-Wno-unused -Wunused-value -Wunused-function \ 877-Wno-switch -Wno-char-subscripts -Wmissing-prototypes" 878 879# Enable -Wno-format by default when using gcc on mingw since many 880# GCC versions complain about %I64. 881case "${host}" in 882 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;; 883esac 884 885AC_ARG_ENABLE(build-warnings, 886AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]), 887[case "${enableval}" in 888 yes) ;; 889 no) build_warnings="-w";; 890 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` 891 build_warnings="${build_warnings} ${t}";; 892 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` 893 build_warnings="${t} ${build_warnings}";; 894 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; 895esac 896if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then 897 echo "Setting compiler warning flags = $build_warnings" 6>&1 898fi])dnl 899AC_ARG_ENABLE(sim-build-warnings, 900AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]), 901[case "${enableval}" in 902 yes) ;; 903 no) build_warnings="-w";; 904 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` 905 build_warnings="${build_warnings} ${t}";; 906 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` 907 build_warnings="${t} ${build_warnings}";; 908 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; 909esac 910if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then 911 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1 912fi])dnl 913WARN_CFLAGS="" 914if test "x${build_warnings}" != x -a "x$GCC" = xyes 915then 916 AC_MSG_CHECKING(compiler warning flags) 917 # Separate out the -Werror flag as some files just cannot be 918 # compiled with it enabled. 919 for w in ${build_warnings}; do 920 case $w in 921 -Werr*) WERROR_CFLAGS=-Werror ;; 922 *) # Check that GCC accepts it 923 saved_CFLAGS="$CFLAGS" 924 CFLAGS="$CFLAGS $w" 925 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",) 926 CFLAGS="$saved_CFLAGS" 927 esac 928 done 929 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS}) 930fi 931]) 932AC_SUBST(WARN_CFLAGS) 933AC_SUBST(WERROR_CFLAGS) 934 935 936dnl Generate the Makefile in a target specific directory. 937dnl Substitutions aren't performed on the file in AC_SUBST_FILE, 938dnl so this is a cover macro to tuck the details away of how we cope. 939dnl We cope by having autoconf generate two files and then merge them into 940dnl one afterwards. The two pieces of the common fragment are inserted into 941dnl the target's fragment at the appropriate points. 942 943AC_DEFUN([SIM_AC_OUTPUT], 944[ 945AC_LINK_FILES($sim_link_files, $sim_link_links) 946dnl Make @cgen_breaks@ non-null only if the sim uses CGEN. 947cgen_breaks="" 948if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then 949cgen_breaks="break cgen_rtx_error"; 950fi 951AC_SUBST(cgen_breaks) 952AC_CONFIG_FILES(Makefile.sim:Makefile.in) 953AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in) 954AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in) 955AC_CONFIG_COMMANDS([Makefile], 956[echo "Merging Makefile.sim+Make-common.sim into Makefile ..." 957 rm -f Makesim1.tmp Makesim2.tmp Makefile 958 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp 959 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp 960 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \ 961 -e '/^## COMMON_POST_/ r Makesim2.tmp' \ 962 <Makefile.sim >Makefile 963 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp 964]) 965AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h]) 966AC_OUTPUT 967]) 968 969sinclude(../../config/gettext-sister.m4) 970sinclude(../../config/acx.m4) 971 972dnl --enable-cgen-maint support 973AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT], 974[ 975cgen_maint=no 976dnl Default is to use one in build tree. 977cgen=guile 978cgendir='$(srcdir)/../../cgen' 979dnl Having --enable-maintainer-mode take arguments is another way to go. 980dnl ??? One can argue --with is more appropriate if one wants to specify 981dnl a directory name, but what we're doing here is an enable/disable kind 982dnl of thing and specifying both --enable and --with is klunky. 983dnl If you reeely want this to be --with, go ahead and change it. 984AC_ARG_ENABLE(cgen-maint, 985[ --enable-cgen-maint[=DIR] build cgen generated files], 986[case "${enableval}" in 987 yes) cgen_maint=yes ;; 988 no) cgen_maint=no ;; 989 *) 990 # argument is cgen install directory (not implemented yet). 991 # Having a `share' directory might be more appropriate for the .scm, 992 # .cpu, etc. files. 993 cgendir=${cgen_maint}/lib/cgen 994 cgen=guile 995 ;; 996esac])dnl 997dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno) 998if test x${cgen_maint} != xno ; then 999 CGEN_MAINT='' 1000else 1001 CGEN_MAINT='#' 1002fi 1003AC_SUBST(CGEN_MAINT) 1004AC_SUBST(cgendir) 1005AC_SUBST(cgen) 1006]) 1007