sim: build: delete Make-common.in logic
[binutils-gdb.git] / sim / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 dnl NB: The version here is not used. If gdb ever changes from generating its
3 dnl version at build time to autoconf time (like bfd et al do), we can switch.
4 AC_INIT([sim], [0],
5 [https://sourceware.org/bugzilla/enter_bug.cgi?product=gdb&component=sim],
6 [], [https://sourceware.org/gdb/wiki/Sim/])
7
8 dnl Probably should unify PKGVERSION with PACKAGE_* settings from AC_INIT.
9 ACX_PKGVERSION([SIM])
10 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
11 dnl PACKAGE_BUGREPORT is provided by AC_INIT.
12 ACX_BUGURL([$PACKAGE_BUGREPORT])
13 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
14
15 AC_CONFIG_HEADERS([config.h])
16
17 SIM_AC_TOOLCHAIN
18 SIM_AC_PLATFORM
19
20 AM_MAINTAINER_MODE
21 AM_INIT_AUTOMAKE
22 AM_SILENT_RULES([yes])
23
24 # If a cpu ever has more than one simulator to choose from, use
25 # --enable-sim=... to choose.
26 AC_ARG_ENABLE(sim,
27 [AS_HELP_STRING([--enable-sim], [Enable the GNU simulator])],
28 [case "${enableval}" in
29 yes | no) ;;
30 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-sim option) ;;
31 esac])
32
33 AC_ARG_ENABLE([example-sims],
34 [AC_HELP_STRING([--enable-example-sims],
35 [enable example GNU simulators])])
36
37 AC_ARG_ENABLE(targets,
38 [ --enable-targets alternative target configurations],
39 [case "${enableval}" in
40 yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all')
41 ;;
42 no) enable_targets= ;;
43 *) enable_targets=$enableval ;;
44 esac])
45
46 dnl Used to keep track of which target (if any) is the default one. This is
47 dnl used when installing files to see if they need to be suffixed.
48 SIM_PRIMARY_TARGET=
49 AC_SUBST(SIM_PRIMARY_TARGET)
50
51 dnl List of enabled arch backends.
52 SIM_ENABLED_ARCHES=
53 AC_SUBST(SIM_ENABLED_ARCHES)
54
55 ENABLE_SIM=no
56 dnl Build a particular arch subdir.
57 dnl arg[1] is the arch subdir name.
58 dnl arg[2] is whether the arch has a dedicated configure script.
59 m4_define([SIM_BUILD_TARGET], [dnl
60 ENABLE_SIM=yes
61 AS_VAR_APPEND([SIM_ENABLED_ARCHES], [" $1"])
62 m4_if($2, [true], [dnl
63 AC_CONFIG_SUBDIRS($1)
64 ])
65 AC_CONFIG_FILES($1/.gdbinit:common/gdbinit.in)
66 dnl Create the depdirs for ports until we can convert them to automake.
67 AC_CONFIG_COMMANDS([depdir-$1],
68 [$SHELL $ac_aux_dir/mkinstalldirs $1/$DEPDIR],
69 [ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
70 ])
71 dnl Enable a particular arch subdir.
72 dnl arg[1] is the matching target triple.
73 dnl arg[2] is the arch subdir name.
74 dnl arg[3] is whether the arch has a dedicated configure script.
75 dnl arg[4] is any additional shell code to run for this arch.
76 m4_define([SIM_TARGET], [dnl
77 sim_enable_arch_$2=false
78 case "${targ}" in
79 all|$1)
80 if test "${targ}" = "${target}"; then
81 SIM_PRIMARY_TARGET=$2
82 fi
83 SIM_BUILD_TARGET($2, $3)
84 sim_enable_arch_$2=true
85 $4
86 ;;
87 esac
88 SIM_AC_TOOLCHAIN_FOR_TARGET($2)
89 AM_CONDITIONAL([SIM_ENABLE_ARCH_$2], [${sim_enable_arch_$2}])
90 ])
91
92 dnl WHEN ADDING ENTRIES TO THIS MATRIX:
93 dnl Make sure that the left side always has two dashes. Otherwise you can get
94 dnl spurious matches. Even for unambiguous cases, do this as a convention, else
95 dnl the table becomes a real mess to understand and maintain.
96 dnl
97 dnl NB: Target matching is aligned with gdb/configure.tgt. Changes must be kept
98 dnl in sync with that file.
99 if test "${enable_sim}" != no; then
100 sim_igen=no
101 for targ in `echo $target $enable_targets | sed 's/,/ /g'`
102 do
103 SIM_TARGET([aarch64*-*-*], [aarch64])
104 SIM_TARGET([arm*-*-*], [arm])
105 SIM_TARGET([avr*-*-*], [avr])
106 SIM_TARGET([bfin-*-*], [bfin])
107 SIM_TARGET([bpf-*-*], [bpf])
108 SIM_TARGET([cr16*-*-*], [cr16])
109 SIM_TARGET([cris-*-* | crisv32-*-*], [cris])
110 SIM_TARGET([d10v-*-*], [d10v])
111 SIM_TARGET([frv-*-*], [frv])
112 SIM_TARGET([ft32-*-*], [ft32])
113 SIM_TARGET([h8300*-*-*], [h8300])
114 SIM_TARGET([iq2000-*-*], [iq2000])
115 SIM_TARGET([lm32-*-*], [lm32])
116 SIM_TARGET([m32c-*-*], [m32c])
117 SIM_TARGET([m32r-*-*], [m32r])
118 SIM_TARGET([m68hc11-*-*|m6811-*-*], [m68hc11])
119 SIM_TARGET([mcore-*-*], [mcore])
120 SIM_TARGET([microblaze*-*-*], [microblaze])
121 SIM_TARGET([mips*-*-*], [mips], [], [sim_igen=yes])
122 SIM_TARGET([mn10300*-*-*], [mn10300], [], [sim_igen=yes])
123 SIM_TARGET([moxie-*-*], [moxie])
124 SIM_TARGET([msp430*-*-*], [msp430])
125 SIM_TARGET([or1k*-*-*], [or1k])
126 SIM_TARGET([powerpc*-*-*], [ppc], [true])
127 SIM_TARGET([pru*-*-*], [pru])
128 SIM_TARGET([riscv*-*-*], [riscv])
129 SIM_TARGET([rl78-*-*], [rl78])
130 SIM_TARGET([rx-*-*], [rx])
131 SIM_TARGET([sh*-*-*], [sh])
132 SIM_TARGET([sparc-*-*], [erc32])
133 SIM_TARGET([v850*-*-*], [v850], [], [sim_igen=yes])
134 done
135
136 if test "x${enable_example_sims}" = xyes; then
137 SIM_AC_TOOLCHAIN_FOR_TARGET(example-synacor)
138 SIM_BUILD_TARGET([example-synacor])
139 fi
140 AM_CONDITIONAL([SIM_ENABLE_ARCH_examples], [test "${enable_example_sims}" = "yes"])
141 fi
142 AM_CONDITIONAL([SIM_ENABLE_IGEN], [test "$sim_igen" = "yes"])
143 AM_CONDITIONAL([ENABLE_SIM], [test "$ENABLE_SIM" = "yes"])
144
145 dnl Standard (and optional) simulator options.
146 dnl Eventually all simulators will support these.
147 SIM_AC_OPTION_ALIGNMENT
148 SIM_AC_OPTION_ASSERT
149 SIM_AC_OPTION_CGEN_MAINT
150 SIM_AC_OPTION_DEBUG
151 SIM_AC_OPTION_ENDIAN
152 SIM_AC_OPTION_ENVIRONMENT
153 SIM_AC_OPTION_HARDWARE
154 SIM_AC_OPTION_INLINE
155 SIM_AC_OPTION_PROFILE
156 SIM_AC_OPTION_RESERVED_BITS
157 SIM_AC_OPTION_SCACHE
158 SIM_AC_OPTION_SMP
159 SIM_AC_OPTION_STDIO
160 SIM_AC_OPTION_TRACE
161 SIM_AC_OPTION_WARNINGS
162
163 dnl Some arches have unique configure flags.
164 m4_include([frv/acinclude.m4])
165 m4_include([mips/acinclude.m4])
166 m4_include([riscv/acinclude.m4])
167 m4_include([rx/acinclude.m4])
168
169 AC_CONFIG_FILES([arch-subdir.mk Makefile .gdbinit:gdbinit.in])
170 AC_OUTPUT