This is an internal developer target that isn't normally compiled, but it can still be occasionally useful. Move it to the top-level build so we can kill off common/Make-common.in.
211 lines
5.9 KiB
Plaintext
211 lines
5.9 KiB
Plaintext
# Makefile fragment for common parts of all simulators.
|
|
# Copyright 1997-2023 Free Software Foundation, Inc.
|
|
# Contributed by Cygnus Support.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# This Makefile fragment consists of two separate parts.
|
|
# They are merged into the final Makefile at points denoted by
|
|
# "## COMMON_PRE_CONFIG_FRAG" and "## COMMON_POST_CONFIG_FRAG".
|
|
#
|
|
# The target Makefile should look like:
|
|
#
|
|
#># Copyright blah blah
|
|
#>
|
|
#>## COMMON_PRE_CONFIG_FRAG
|
|
#>
|
|
#># Any overrides necessary for the SIM_FOO config vars.
|
|
#>SIM_FOO = ...
|
|
#>
|
|
#>## COMMON_POST_CONFIG_FRAG
|
|
#>
|
|
#># Rules to build target specific .o's.
|
|
|
|
## COMMON_PRE_CONFIG_FRAG
|
|
|
|
srcdir = @abs_srcdir@
|
|
VPATH = $(srcdir):$(srccom)
|
|
srccom = $(srcdir)/../common
|
|
srcroot = $(srcdir)/../..
|
|
srcsim = $(srcdir)/..
|
|
|
|
@SIM_COMMON_BUILD_FALSE@config.status = config.status
|
|
@SIM_COMMON_BUILD_TRUE@config.status = ../config.status
|
|
|
|
# Settings from top-level configure.
|
|
include ../arch-subdir.mk
|
|
|
|
include $(srcroot)/gdb/silent-rules.mk
|
|
|
|
ifeq ($(V),0)
|
|
ECHO_STAMP = @echo " GEN "
|
|
else
|
|
ECHO_STAMP = @:
|
|
endif
|
|
|
|
# Helper code from gnulib.
|
|
GNULIB_PARENT_DIR = ../..
|
|
include $(GNULIB_PARENT_DIR)/gnulib/Makefile.gnulib.inc
|
|
|
|
# This can be referenced by the gettext configuration code.
|
|
top_builddir = ..
|
|
|
|
SHELL = @SHELL@
|
|
|
|
SIM_BITSIZE = @sim_bitsize@
|
|
SIM_FLOAT = @sim_float@
|
|
SIM_WARN_CFLAGS = $(WARN_CFLAGS)
|
|
SIM_WERROR_CFLAGS = $(WERROR_CFLAGS)
|
|
|
|
# Dependency tracking information.
|
|
depcomp = $(SHELL) $(srcroot)/depcomp
|
|
|
|
# Note that these are overridden by GNU make-specific code below if
|
|
# GNU make is used. The overrides implement dependency tracking.
|
|
COMPILE.pre = $(CC) $(C_DIALECT)
|
|
COMPILE.post = -c -o $@
|
|
COMPILE = $(ECHO_CC) $(COMPILE.pre) $(ALL_CFLAGS) $(COMPILE.post)
|
|
POSTCOMPILE = @true
|
|
|
|
# Each simulator's Makefile.in defines one or more of these variables
|
|
# to override our settings as necessary. There is no need to define these
|
|
# in the simulator's Makefile.in if one is using the default value. In fact
|
|
# it's preferable not to.
|
|
|
|
# List of flags to always pass to $(CC).
|
|
SIM_EXTRA_CFLAGS =
|
|
# Dependency of `clean' to clean any extra files.
|
|
SIM_EXTRA_CLEAN =
|
|
|
|
# Every time a new general purpose source file was added every target's
|
|
# Makefile.in needed to be updated to include the file.
|
|
# This doesn't scale.
|
|
# This variable specifies all the generic stuff common to the newer simulators.
|
|
# Things like sim-reason.o can't go here as the cpu may provide its own
|
|
# (though hopefully in time that won't be so). Things like sim-bits.o can go
|
|
# here. Some files are used by all simulators (e.g. callback.o).
|
|
|
|
## End COMMON_PRE_CONFIG_FRAG
|
|
|
|
## COMMON_POST_CONFIG_FRAG
|
|
|
|
CONFIG_CFLAGS = \
|
|
-DHAVE_CONFIG_H \
|
|
$(SIM_BITSIZE) \
|
|
$(SIM_FLOAT) \
|
|
$(SIM_HW_CFLAGS) \
|
|
$(SIM_INLINE) \
|
|
$(SIM_WARN_CFLAGS) \
|
|
$(SIM_WERROR_CFLAGS)
|
|
CSEARCH = -I. -I$(srcdir) -I$(srccom) \
|
|
-I$(srcroot)/include \
|
|
-I../../bfd \
|
|
-I$(srcroot) \
|
|
-I../..
|
|
ALL_CFLAGS = $(CONFIG_CFLAGS) $(CSEARCH) $(INCGNU) $(SIM_EXTRA_CFLAGS) $(CFLAGS)
|
|
BUILD_CFLAGS = $(CFLAGS_FOR_BUILD) $(CSEARCH)
|
|
|
|
COMMON_DEP_CFLAGS = $(CONFIG_CFLAGS) $(CSEARCH) $(SIM_EXTRA_CFLAGS)
|
|
|
|
LIBIBERTY_LIB = ../../libiberty/libiberty.a
|
|
BFD_LIB = ../../bfd/libbfd.la
|
|
OPCODES_LIB = ../../opcodes/libopcodes.la
|
|
LIBDEPS = $(BFD_LIB) $(OPCODES_LIB) $(LIBIBERTY_LIB)
|
|
EXTRA_LIBS = $(BFD_LIB) $(OPCODES_LIB) $(LIBIBERTY_LIB) \
|
|
$(COMMON_LIBS) $(LIBGNU) $(LIBGNU_EXTRA_LIBS)
|
|
|
|
COMPILE_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS)
|
|
LINK_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(LDFLAGS_FOR_BUILD) -o $@
|
|
|
|
RUNTESTFLAGS =
|
|
|
|
all:
|
|
|
|
#
|
|
# Dependency tracking. Most of this is conditional on GNU Make being
|
|
# found by configure; if GNU Make is not found, we fall back to a
|
|
# simpler scheme.
|
|
#
|
|
|
|
ifeq ($(DEPMODE),depmode=gcc3)
|
|
# Note that we put the dependencies into a .Tpo file, then move them
|
|
# into place if the compile succeeds. We need this because gcc does
|
|
# not atomically write the dependency output file.
|
|
override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
|
|
-MF $(DEPDIR)/$(basename $(@F)).Tpo
|
|
override POSTCOMPILE = @mv $(DEPDIR)/$(basename $(@F)).Tpo \
|
|
$(DEPDIR)/$(basename $(@F)).Po
|
|
else
|
|
override COMPILE.pre = source='$<' object='$@' libtool=no \
|
|
DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) $(CC)
|
|
# depcomp handles atomicity for us, so we don't need a postcompile
|
|
# step.
|
|
override POSTCOMPILE =
|
|
endif
|
|
|
|
# Support targets.
|
|
|
|
install:
|
|
installdirs:
|
|
uninstall:
|
|
|
|
check:
|
|
|
|
html:
|
|
clean-html:
|
|
install-html:
|
|
|
|
info:
|
|
clean-info:
|
|
install-info:
|
|
|
|
pdf:
|
|
clean-pdf:
|
|
install-pdf:
|
|
|
|
.NOEXPORT:
|
|
MAKEOVERRIDES=
|
|
|
|
tags etags: TAGS
|
|
|
|
# Macros like EXTERN_SIM_CORE confuse tags.
|
|
# And the sim-n-foo.h files create functions that can't be found either.
|
|
TAGS: force
|
|
cd $(srcdir) && \
|
|
etags --regex '/^\([[:lower:]_]+\) (/\1/' --regex '/^\/[*] TAGS: .*/' \
|
|
*.[ch] ../common/*.[ch]
|
|
|
|
mostlyclean clean: $(SIM_EXTRA_CLEAN)
|
|
rm -f *.[oa] *~ core
|
|
|
|
distclean maintainer-clean realclean: clean
|
|
rm -f TAGS Makefile
|
|
|
|
.c.o:
|
|
$(COMPILE) $<
|
|
$(POSTCOMPILE)
|
|
|
|
# Dummy target to force execution of dependent targets.
|
|
force:
|
|
|
|
Makefile: Makefile.in $(srccom)/Make-common.in $(config.status)
|
|
@SIM_COMMON_BUILD_FALSE@ $(ECHO_GEN) CONFIG_HEADERS= $(SHELL) ./config.status
|
|
@SIM_COMMON_BUILD_TRUE@ $(ECHO_GEN) pwd=`pwd` && subdir=`basename "$$pwd"` && cd .. && \
|
|
@SIM_COMMON_BUILD_TRUE@ $(SHELL) ./config.status Make-common.sim $$subdir/Makefile.sim $$subdir/Makefile
|
|
|
|
@SIM_COMMON_BUILD_FALSE@config.status: configure
|
|
@SIM_COMMON_BUILD_FALSE@ $(ECHO_GEN) $(SHELL) ./config.status --recheck
|
|
|
|
## End COMMON_POST_CONFIG_FRAG
|