| # 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 |