# This file contains common code used by all simulators. # # SIM_AC_COMMON invokes AC macros used by all simulators and by the common # directory. It is intended to be invoked before any target specific stuff. # SIM_AC_OUTPUT is a cover function to AC_OUTPUT to generate the Makefile. # It is intended to be invoked last. # # The simulator's configure.in should look like: # # dnl Process this file with `autoconf -l ../common' to produce a configure script. # AC_PREREQ(2.5)dnl # AC_INIT(Makefile.in) # SIM_AC_COMMON # # ... target specific stuff ... # # SIM_AC_OUTPUT AC_DEFUN(SIM_AC_COMMON, [ # autoconf.info says this should be called right after AC_INIT. AC_CONFIG_HEADER(config.h:config.in) AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../..) AC_CANONICAL_SYSTEM AC_ARG_PROGRAM AC_PROG_CC AC_PROG_INSTALL AC_C_BIGENDIAN # Put a plausible default for CC_FOR_BUILD in Makefile. AC_C_CROSS if test "x$cross_compiling" = "xno"; then CC_FOR_BUILD='$(CC)' else CC_FOR_BUILD=gcc fi AC_SUBST(CC_FOR_BUILD) AC_SUBST(CFLAGS) AC_SUBST(HDEFINES) AR=${AR-ar} AC_SUBST(AR) AC_PROG_RANLIB . ${srcdir}/../../bfd/configure.host dnl Standard simulator options. dnl Eventually all simulators will support these. dnl Do not add any here that cannot be supported by all simulators. dnl Do not add similar but different options to a particular simulator, dnl all shall eventually behave the same way. AC_ARG_ENABLE(sim-cflags, [ --enable-sim-cflags=opts Extra CFLAGS for use in building simulator], [case "${enableval}" in yes) sim_cflags="-O2";; trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";; no) sim_cflags="";; *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;; esac if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then echo "Setting sim cflags = $sim_cflags" 6>&1 fi],[sim_cflags=""])dnl AC_SUBST(sim_cflags) dnl --enable-sim-debug is for developers of the simulator dnl the allowable values are work-in-progress AC_ARG_ENABLE(sim-debug, [ --enable-sim-debug=opts Enable debugging flags], [case "${enableval}" in yes) sim_debug="-DDEBUG=7";; no) sim_debug="-DDEBUG=0";; *) sim_debug="-DDEBUG='(${enableval})'";; esac if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then echo "Setting sim debug = $sim_debug" 6>&1 fi],[sim_debug=""])dnl AC_SUBST(sim_debug) dnl --enable-sim-trace is for users of the simulator dnl the allowable values are work-in-progress AC_ARG_ENABLE(sim-trace, [ --enable-sim-trace=opts Enable tracing flags], [case "${enableval}" in yes) sim_trace="-DTRACE=1";; no) sim_trace="-DTRACE=0";; *) sim_trace="-DTRACE='(${enableval})'";; esac if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then echo "Setting sim trace = $sim_trace" 6>&1 fi],[sim_trace=""])dnl AC_SUBST(sim_trace) dnl This is a generic option to enable special byte swapping dnl insns on *any* cpu. AC_ARG_ENABLE(sim-bswap, [ --enable-sim-bswap Use Host specific BSWAP instruction.], [case "${enableval}" in yes) sim_bswap="-DUSE_BSWAP";; no) sim_bswap="";; *) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";; esac if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then echo "Setting bswap flags = $sim_bswap" 6>&1 fi],[sim_bswap=""])dnl AC_SUBST(sim_bswap) dnl These are available to append to as desired. sim_link_files= sim_link_links= dnl Create tconfig.h either from simulator's tconfig.in or default one dnl in common. sim_link_links=tconfig.h if test -f ${srcdir}/tconfig.in then sim_link_files=tconfig.in else sim_link_files=../common/tconfig.in fi case "${target}" in *-*-*) sim_link_files="${sim_link_files} ../common/nltvals.def" sim_link_links="${sim_link_links} targ-vals.def" ;; esac ]) dnl End of SIM_AC_COMMON dnl Generate the Makefile in a target specific directory. dnl Substitutions aren't performed on the file in AC_SUBST_FILE, dnl so this is a cover macro to tuck the details away of how we cope. dnl It also inserts default definitions of the SIM_FOO variables. AC_DEFUN(SIM_AC_OUTPUT, [ dnl Stuff that gets inserted into the Makefile. dnl This is done now and not in SIM_AC_COMMON to catch updated values for dnl LIBS, etc. that may get changed by target specific checks. COMMON_MAKEFILE_FRAG=makefile-temp-$$ cat > $COMMON_MAKEFILE_FRAG <targ-vals.h targ-map.c: gentmap rm -f targ-map.c ./gentmap -c >targ-map.c install: install-common \$(SIM_EXTRA_INSTALL) install-common: \$(INSTALL_XFORM) run \$(bindir)/run check: info: clean-info: install-info: tags etags: TAGS TAGS: force etags *.c *.h clean: \$(SIM_EXTRA_CLEAN) rm -f *.[[oa]] *~ core gentmap targ-map.c targ-vals.h rm -f run libsim.a distclean mostlyclean maintainer-clean realclean: clean rm -f TAGS rm -f Makefile config.cache config.log config.status rm -f tconfig.h config.h stamp-h targ-vals.def .c.o: \$(CC) -c \$(ALL_CFLAGS) \$< # Dummy target to force execution of dependent targets. force: Makefile: Makefile.in config.status CONFIG_HEADERS= \$(SHELL) ./config.status config.status: configure \$(SHELL) ./config.status --recheck config.h: stamp-h ; @true stamp-h: config.in config.status CONFIG_FILES= CONFIG_HEADERS=config.h:config.in \$(SHELL) ./config.status # We can't add dependencies to configure because it causes too much trouble # to end users if configure's timestamp is out of sync. .PHONY: run-autoconf run-autoconf: cd \$(srcdir) && autoconf -l ../common EOF dnl end of COMMON_MAKEFILE_FRAG AC_SUBST_FILE(COMMON_MAKEFILE_FRAG) AC_LINK_FILES($sim_link_files, $sim_link_links) AC_OUTPUT(Makefile,[ case "x$CONFIG_HEADERS" in xconfig.h:config.in) echo > stamp-h ;; esac ]) rm $COMMON_MAKEFILE_FRAG ])dnl End of SIM_AC_OUTPUT