aboutsummaryrefslogtreecommitdiff
path: root/sim/configure.ac
blob: a3f02a78e9a7fdc01a906088cc78b3088bd3c7b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
dnl Process this file with autoconf to produce a configure script.
dnl NB: The version here is not used.  If gdb ever changes from generating its
dnl version at build time to autoconf time (like bfd et al do), we can switch.
AC_INIT([sim], [0],
  [https://sourceware.org/bugzilla/enter_bug.cgi?product=gdb&component=sim],
  [], [https://sourceware.org/gdb/wiki/Sim/])

dnl Probably should unify PKGVERSION with PACKAGE_* settings from AC_INIT.
ACX_PKGVERSION([SIM])
AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
dnl PACKAGE_BUGREPORT is provided by AC_INIT.
ACX_BUGURL([$PACKAGE_BUGREPORT])
AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])

AC_CONFIG_HEADERS([config.h])

SIM_AC_TOOLCHAIN
SIM_AC_PLATFORM

AM_MAINTAINER_MODE
AM_INIT_AUTOMAKE
AM_SILENT_RULES([yes])

# If a cpu ever has more than one simulator to choose from, use
# --enable-sim=... to choose.
AC_ARG_ENABLE(sim,
[AS_HELP_STRING([--enable-sim], [Enable the GNU simulator])],
[case "${enableval}" in
yes | no) ;;
*)	AC_MSG_ERROR(bad value ${enableval} given for --enable-sim option) ;;
esac])

AC_ARG_ENABLE([example-sims],
	      [AC_HELP_STRING([--enable-example-sims],
			      [enable example GNU simulators])])

AC_ARG_ENABLE(targets,
[  --enable-targets        alternative target configurations],
[case "${enableval}" in
  yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all')
	    ;;
  no)       enable_targets= ;;
  *)        enable_targets=$enableval ;;
esac])

dnl Used to keep track of which target (if any) is the default one.  This is
dnl used when installing files to see if they need to be suffixed.
SIM_PRIMARY_TARGET=
AC_SUBST(SIM_PRIMARY_TARGET)

m4_define([SIM_BUILD_TARGET], [dnl
  AC_CONFIG_SUBDIRS($1)
  dnl Create the depdirs for ports until we can convert them to automake.
  AC_CONFIG_COMMANDS([depdir-$1],
		     [$SHELL $ac_aux_dir/mkinstalldirs $1/$DEPDIR],
		     [ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
])
m4_define([SIM_TARGET], [dnl
  case "${targ}" in
    all|$1)
      if test "${targ}" = "${target}"; then
        SIM_PRIMARY_TARGET=$2
      fi
      SIM_BUILD_TARGET($2)
      $3
      ;;
  esac
])

dnl WHEN ADDING ENTRIES TO THIS MATRIX:
dnl Make sure that the left side always has two dashes.  Otherwise you can get
dnl spurious matches.  Even for unambiguous cases, do this as a convention, else
dnl the table becomes a real mess to understand and maintain.
if test "${enable_sim}" != no; then
  sim_igen=no
  for targ in `echo $target $enable_targets | sed 's/,/ /g'`
  do
    SIM_TARGET([aarch64*-*-*], [aarch64])
    SIM_TARGET([arm*-*-*], [arm])
    SIM_TARGET([avr*-*-*], [avr])
    SIM_TARGET([bfin-*-*], [bfin])
    SIM_TARGET([bpf-*-*], [bpf])
    SIM_TARGET([cr16*-*-*], [cr16])
    SIM_TARGET([cris-*-* | crisv32-*-*], [cris])
    SIM_TARGET([d10v-*-*], [d10v])
    SIM_TARGET([frv-*-*], [frv])
    SIM_TARGET([h8300*-*-*], [h8300])
    SIM_TARGET([iq2000-*-*], [iq2000])
    SIM_TARGET([lm32-*-*], [lm32])
    SIM_TARGET([m32c-*-*], [m32c])
    SIM_TARGET([m32r-*-*], [m32r])
    SIM_TARGET([m68hc11-*-*|m6811-*-*], [m68hc11])
    SIM_TARGET([mcore-*-*], [mcore])
    SIM_TARGET([microblaze-*-*], [microblaze])
    SIM_TARGET([mips*-*-*], [mips], [sim_igen=yes])
    SIM_TARGET([mn10300*-*-*], [mn10300], [sim_igen=yes])
    SIM_TARGET([moxie-*-*], [moxie])
    SIM_TARGET([msp430*-*-*], [msp430])
    SIM_TARGET([or1k-*-* | or1knd-*-*], [or1k])
    SIM_TARGET([pru*-*-*], [pru])
    SIM_TARGET([riscv*-*-*], [riscv])
    SIM_TARGET([rl78-*-*], [rl78])
    SIM_TARGET([rx-*-*], [rx])
    SIM_TARGET([sh*-*-*], [sh])
    SIM_TARGET([sparc-*-rtems*|sparc-*-elf*], [erc32])
    SIM_TARGET([powerpc*-*-*], [ppc])
    SIM_TARGET([ft32-*-*], [ft32])
    SIM_TARGET([v850*-*-*], [v850], [sim_igen=yes])
  done

  if test "x${enable_example_sims}" = xyes; then
    SIM_BUILD_TARGET([example-synacor])
  fi
fi
AM_CONDITIONAL([SIM_ENABLE_IGEN], [test "$sim_igen" = "yes"])

dnl Standard (and optional) simulator options.
dnl Eventually all simulators will support these.
SIM_AC_OPTION_ALIGNMENT
SIM_AC_OPTION_ASSERT
SIM_AC_OPTION_DEBUG
SIM_AC_OPTION_ENDIAN
SIM_AC_OPTION_ENVIRONMENT
SIM_AC_OPTION_INLINE
SIM_AC_OPTION_PROFILE
SIM_AC_OPTION_STDIO
SIM_AC_OPTION_TRACE
SIM_AC_OPTION_WARNINGS

AC_CONFIG_FILES([arch-subdir.mk Makefile])
AC_OUTPUT