# GCC Makefile fragment for Synopsys DesignWare ARC.
#
# Copyright (C) 2016-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# GCC 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, or (at your option) any later version.
#
# GCC 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 GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

TM_H += $(srcdir)/config/arc/arc-c.def

driver-arc.o: $(srcdir)/config/arc/driver-arc.c \
  $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<

arc-c.o: $(srcdir)/config/arc/arc-c.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_H) $(TM_P_H) coretypes.h
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
		$(srcdir)/config/arc/arc-c.c

#Run `arc-cpus` if you changed something in arc-cpus.def

.PHONY: arc-cpus

arc-cpus: $(srcdir)/config/arc/t-multilib \
	$(srcdir)/config/arc/arc-tables.opt

$(srcdir)/config/arc/t-multilib: $(srcdir)/config/arc/genmultilib.awk 	\
				 $(srcdir)/config/arc/arc-cpus.def
	$(AWK) -f $< -v FORMAT=Makefile $< $(srcdir)/config/arc/arc-cpus.def > $@

$(srcdir)/config/arc/arc-tables.opt: $(srcdir)/config/arc/genoptions.awk \
				 $(srcdir)/config/arc/arc-cpus.def
	$(AWK) -f $< -v FORMAT=Makefile $< $(srcdir)/config/arc/arc-cpus.def > $@

PASSES_EXTRA += $(srcdir)/config/arc/arc-passes.def

# Local Variables:
# mode: Makefile
# End:
