]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/configure.ac
sim: Move getopt checking inside SIM_AC_PLATFORM
[thirdparty/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 Directories that we need to recurse into (i.e. add to $SUBDIRS).
52 SIM_SUBDIRS=
53 AC_SUBST(SIM_SUBDIRS)
54
55 dnl List of enabled arch backends.
56 SIM_ENABLED_ARCHES=
57 AC_SUBST(SIM_ENABLED_ARCHES)
58
59 dnl Used by common/Make-common.in to see which configure script created it.
60 SIM_COMMON_BUILD_TRUE=
61 SIM_COMMON_BUILD_FALSE='#'
62 AC_SUBST(SIM_COMMON_BUILD_TRUE)
63 AC_SUBST(SIM_COMMON_BUILD_FALSE)
64
65 AC_CONFIG_FILES(Make-common.sim:common/Make-common.in)
66 ENABLE_SIM=no
67 dnl Build a particular arch subdir.
68 dnl arg[1] is the arch subdir name.
69 dnl arg[2] is whether the arch has a dedicated configure script.
70 m4_define([SIM_BUILD_TARGET], [dnl
71 ENABLE_SIM=yes
72 AS_VAR_APPEND([SIM_ENABLED_ARCHES], [" $1"])
73 m4_if($2, [true], [dnl
74 AC_CONFIG_SUBDIRS($1)
75 ], [dnl
76 AC_CONFIG_FILES($1/Makefile.sim:$1/Makefile.in)
77 AC_CONFIG_COMMANDS([$1/Makefile],
78 [sed -n \
79 -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ {
80 /^srcdir = / s:$:/$1:
81 p
82 }' \
83 <Make-common.sim >$1/Makesim1.tmp
84 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >$1/Makesim2.tmp
85 sed -e '/^## COMMON_PRE_/ r $1/Makesim1.tmp' \
86 -e '/^## COMMON_POST_/ r $1/Makesim2.tmp' \
87 <$1/Makefile.sim >$1/Makefile
88 rm -f $1/Makesim1.tmp $1/Makesim2.tmp
89 ])
90 AS_VAR_APPEND([SIM_SUBDIRS], [" $1"])
91 ])
92 AC_CONFIG_FILES($1/.gdbinit:common/gdbinit.in)
93 dnl Create the depdirs for ports until we can convert them to automake.
94 AC_CONFIG_COMMANDS([depdir-$1],
95 [$SHELL $ac_aux_dir/mkinstalldirs $1/$DEPDIR],
96 [ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
97 ])
98 dnl Enable a particular arch subdir.
99 dnl arg[1] is the matching target triple.
100 dnl arg[2] is the arch subdir name.
101 dnl arg[3] is whether the arch has a dedicated configure script.
102 dnl arg[4] is any additional shell code to run for this arch.
103 m4_define([SIM_TARGET], [dnl
104 sim_enable_arch_$2=false
105 case "${targ}" in
106 all|$1)
107 if test "${targ}" = "${target}"; then
108 SIM_PRIMARY_TARGET=$2
109 fi
110 SIM_BUILD_TARGET($2, $3)
111 sim_enable_arch_$2=true
112 $4
113 ;;
114 esac
115 SIM_AC_TOOLCHAIN_FOR_TARGET($2)
116 AM_CONDITIONAL([SIM_ENABLE_ARCH_$2], [${sim_enable_arch_$2}])
117 ])
118
119 dnl WHEN ADDING ENTRIES TO THIS MATRIX:
120 dnl Make sure that the left side always has two dashes. Otherwise you can get
121 dnl spurious matches. Even for unambiguous cases, do this as a convention, else
122 dnl the table becomes a real mess to understand and maintain.
123 dnl
124 dnl NB: Target matching is aligned with gdb/configure.tgt. Changes must be kept
125 dnl in sync with that file.
126 if test "${enable_sim}" != no; then
127 sim_igen=no
128 for targ in `echo $target $enable_targets | sed 's/,/ /g'`
129 do
130 SIM_TARGET([aarch64*-*-*], [aarch64])
131 SIM_TARGET([arm*-*-*], [arm])
132 SIM_TARGET([avr*-*-*], [avr])
133 SIM_TARGET([bfin-*-*], [bfin])
134 SIM_TARGET([bpf-*-*], [bpf])
135 SIM_TARGET([cr16*-*-*], [cr16])
136 SIM_TARGET([cris-*-* | crisv32-*-*], [cris])
137 SIM_TARGET([d10v-*-*], [d10v])
138 SIM_TARGET([frv-*-*], [frv])
139 SIM_TARGET([ft32-*-*], [ft32])
140 SIM_TARGET([h8300*-*-*], [h8300])
141 SIM_TARGET([iq2000-*-*], [iq2000])
142 SIM_TARGET([lm32-*-*], [lm32])
143 SIM_TARGET([m32c-*-*], [m32c])
144 SIM_TARGET([m32r-*-*], [m32r])
145 SIM_TARGET([m68hc11-*-*|m6811-*-*], [m68hc11])
146 SIM_TARGET([mcore-*-*], [mcore])
147 SIM_TARGET([microblaze*-*-*], [microblaze])
148 SIM_TARGET([mips*-*-*], [mips], [], [sim_igen=yes])
149 SIM_TARGET([mn10300*-*-*], [mn10300], [], [sim_igen=yes])
150 SIM_TARGET([moxie-*-*], [moxie])
151 SIM_TARGET([msp430*-*-*], [msp430])
152 SIM_TARGET([or1k*-*-*], [or1k])
153 SIM_TARGET([powerpc*-*-*], [ppc], [true])
154 SIM_TARGET([pru*-*-*], [pru])
155 SIM_TARGET([riscv*-*-*], [riscv])
156 SIM_TARGET([rl78-*-*], [rl78])
157 SIM_TARGET([rx-*-*], [rx])
158 SIM_TARGET([sh*-*-*], [sh])
159 SIM_TARGET([sparc-*-*], [erc32])
160 SIM_TARGET([v850*-*-*], [v850], [], [sim_igen=yes])
161 done
162
163 if test "x${enable_example_sims}" = xyes; then
164 SIM_AC_TOOLCHAIN_FOR_TARGET(example-synacor)
165 SIM_BUILD_TARGET([example-synacor])
166 fi
167 AM_CONDITIONAL([SIM_ENABLE_ARCH_examples], [test "${enable_example_sims}" = "yes"])
168 fi
169 AM_CONDITIONAL([SIM_ENABLE_IGEN], [test "$sim_igen" = "yes"])
170 AM_CONDITIONAL([ENABLE_SIM], [test "$ENABLE_SIM" = "yes"])
171
172 dnl Standard (and optional) simulator options.
173 dnl Eventually all simulators will support these.
174 SIM_AC_OPTION_ALIGNMENT
175 SIM_AC_OPTION_ASSERT
176 SIM_AC_OPTION_CGEN_MAINT
177 SIM_AC_OPTION_DEBUG
178 SIM_AC_OPTION_ENDIAN
179 SIM_AC_OPTION_ENVIRONMENT
180 SIM_AC_OPTION_HARDWARE
181 SIM_AC_OPTION_INLINE
182 SIM_AC_OPTION_PROFILE
183 SIM_AC_OPTION_RESERVED_BITS
184 SIM_AC_OPTION_SCACHE
185 SIM_AC_OPTION_SMP
186 SIM_AC_OPTION_STDIO
187 SIM_AC_OPTION_TRACE
188 SIM_AC_OPTION_WARNINGS
189
190 dnl These are unfortunate. They are conditionally called by other sim macros
191 dnl but always used by common/Make-common.in. So we have to subst here even
192 dnl when the rest of the code is in the respective macros. Once we merge the
193 dnl respective SIM_AC_OPTION_xxx call above, we can drop these.
194 AC_SUBST(sim_bitsize)
195 AC_SUBST(sim_float)
196
197 dnl Some arches have unique configure flags.
198 m4_include([frv/acinclude.m4])
199 m4_include([mips/acinclude.m4])
200 m4_include([riscv/acinclude.m4])
201 m4_include([rx/acinclude.m4])
202
203 AC_CONFIG_FILES([arch-subdir.mk Makefile .gdbinit:gdbinit.in])
204 AC_OUTPUT