308 lines
8.2 KiB
Plaintext
308 lines
8.2 KiB
Plaintext
|
# This file contains common code used by all simulators.
|
||
|
# SIM_AC_COMMON invokes AC macros used by all simulators and by the
|
||
|
# common directory.
|
||
|
# SIM_AC_OUTPUT is a cover function to AC_OUTPUT to use generate the
|
||
|
# Makefile in a target specific directory.
|
||
|
|
||
|
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 Stuff that gets inserted into the Makefile
|
||
|
|
||
|
COMMON_MAKEFILE_FRAG=makefile-temp-$$
|
||
|
cat > $COMMON_MAKEFILE_FRAG <<EOF
|
||
|
VPATH = ${srcdir}
|
||
|
srcdir = ${srcdir}
|
||
|
srcroot = \$(srcdir)/../..
|
||
|
|
||
|
prefix = ${prefix}
|
||
|
exec_prefix = ${exec_prefix}
|
||
|
|
||
|
host_alias = ${host_alias}
|
||
|
target_alias = ${target_alias}
|
||
|
program_transform_name = ${program_transform_name}
|
||
|
bindir = ${bindir}
|
||
|
|
||
|
libdir = ${libdir}
|
||
|
tooldir = \$(libdir)/\$(target_alias)
|
||
|
|
||
|
datadir = ${datadir}
|
||
|
mandir = ${mandir}
|
||
|
man1dir = \$(mandir)/man1
|
||
|
infodir = ${infodir}
|
||
|
includedir = ${includedir}
|
||
|
|
||
|
SHELL = /bin/sh
|
||
|
|
||
|
INSTALL = \$(srcroot)/install.sh -c
|
||
|
INSTALL_PROGRAM = ${INSTALL_PROGRAM}
|
||
|
INSTALL_DATA = ${INSTALL_DATA}
|
||
|
INSTALL_XFORM = \$(INSTALL) -t='$(program_transform_name)'
|
||
|
INSTALL_XFORM1= \$(INSTALL_XFORM) -b=.1
|
||
|
|
||
|
CC = ${CC}
|
||
|
CC_FOR_BUILD = ${CC_FOR_BUILD}
|
||
|
CFLAGS = ${CFLAGS}
|
||
|
SIM_CFLAGS = ${sim_cflags}
|
||
|
SIM_DEBUG = ${sim_debug}
|
||
|
SIM_TRACE = ${sim_trace}
|
||
|
SIM_BSWAP = ${sim_bswap}
|
||
|
|
||
|
HDEFINES = ${HDEFINES}
|
||
|
TDEFINES =
|
||
|
|
||
|
AR = ${AR}
|
||
|
AR_FLAGS = rc
|
||
|
RANLIB = ${RANLIB}
|
||
|
MAKEINFO = makeinfo
|
||
|
|
||
|
# Each simulator's Makefile.in defines one or more of these variables
|
||
|
# as necessary. The SIM_AC_OUTPUT macro then inserts those values
|
||
|
# at '## Config'.
|
||
|
|
||
|
# List of object files, less common parts.
|
||
|
#SIM_OBJS =
|
||
|
# List of flags to always pass to $(CC).
|
||
|
#SIM_EXTRA_CFLAGS =
|
||
|
# List of extra libraries to link with.
|
||
|
#SIM_EXTRA_LIBS =
|
||
|
# List of extra program dependencies.
|
||
|
#SIM_EXTRA_LIBDEPS =
|
||
|
# Dependency of 'all' to build any extra files.
|
||
|
#SIM_EXTRA_ALL =
|
||
|
# Dependency of 'install' to install any extra files.
|
||
|
#SIM_EXTRA_INSTALL =
|
||
|
# Dependency of 'clean' to clean any extra files.
|
||
|
#SIM_EXTRA_CLEAN =
|
||
|
|
||
|
CONFIG_CFLAGS = ${DEFS} \$(SIM_CFLAGS) \$(SIM_DEBUG) \$(SIM_TRACE) \$(SIM_BSWAP) \
|
||
|
\$(SIM_EXTRA_CFLAGS) \$(HDEFINES) \$(TDEFINES)
|
||
|
CSEARCH = -I. -I\$(srcdir) -I../common -I\$(srcdir)/../common \
|
||
|
-I../../include -I\$(srcroot)/include \
|
||
|
-I../../bfd -I\$(srcroot)/bfd -I\$(srcroot)/gdb \
|
||
|
-I../../opcodes -I\$(srcroot)/opcodes
|
||
|
ALL_CFLAGS = \$(CONFIG_CFLAGS) \$(CSEARCH) \$(CFLAGS)
|
||
|
BUILD_CFLAGS = -g -O \$(CSEARCH)
|
||
|
|
||
|
.NOEXPORT:
|
||
|
MAKEOVERRIDES=
|
||
|
|
||
|
LIBIBERTY_LIB = ../../libiberty/libiberty.a
|
||
|
BFD_LIB = ../../bfd/libbfd.a
|
||
|
OPCODES_LIB = ../../opcodes/libopcodes.a
|
||
|
CONFIG_LIBS = ${LIBS}
|
||
|
LIBDEPS = \$(BFD_LIB) \$(OPCODES_LIB) \$(LIBIBERTY_LIB) \
|
||
|
\$(SIM_EXTRA_LIBDEPS)
|
||
|
EXTRA_LIBS = \$(BFD_LIB) \$(OPCODES_LIB) \$(LIBIBERTY_LIB) \
|
||
|
\$(CONFIG_LIBS) \$(SIM_EXTRA_LIBS)
|
||
|
|
||
|
LIB_OBJS = callback.o targ-map.o \$(SIM_OBJS)
|
||
|
|
||
|
all: run libsim.a \$(SIM_EXTRA_ALL)
|
||
|
|
||
|
libsim.a: \$(LIB_OBJS)
|
||
|
rm -f libsim.a
|
||
|
\$(AR) \$(ARFLAGS) libsim.a \$(LIB_OBJS)
|
||
|
\$(RANLIB) libsim.a
|
||
|
|
||
|
run: run.o libsim.a \$(LIBDEPS)
|
||
|
\$(CC) \$(ALL_CFLAGS) -o run \
|
||
|
run.o libsim.a \$(EXTRA_LIBS)
|
||
|
|
||
|
run.o: \$(srcdir)/../common/run.c config.h tconfig.h \
|
||
|
\$(srcroot)/include/callback.h
|
||
|
\$(CC) -c \$(srcdir)/../common/run.c \$(ALL_CFLAGS)
|
||
|
|
||
|
callback.o: \$(srcdir)/../common/callback.c config.h tconfig.h \
|
||
|
\$(srcroot)/include/callback.h targ-vals.h
|
||
|
\$(CC) -c \$(srcdir)/../common/callback.c \$(ALL_CFLAGS)
|
||
|
|
||
|
gentmap: \$(srcdir)/../common/gentmap.c targ-vals.def
|
||
|
\$(CC_FOR_BUILD) \$(srcdir)/../common/gentmap.c -o gentmap \$(BUILD_CFLAGS) -I\$(srcdir)/../common
|
||
|
|
||
|
targ-vals.h: gentmap
|
||
|
rm -f targ-vals.h
|
||
|
./gentmap -h >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
|
||
|
|
||
|
.c.o:
|
||
|
\$(CC) -c \$(ALL_CFLAGS) \$<
|
||
|
|
||
|
# Dummy target to force execution of dependent targets.
|
||
|
force:
|
||
|
|
||
|
Makefile: Makefile.in \$(srcdir)/../common/Make-common.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)
|
||
|
|
||
|
]) 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,
|
||
|
[
|
||
|
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
|