# General rules that all rs6000/ targets must have.
#
# Copyright (C) 1995-2022 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/rs6000/rs6000-cpus.def
TM_H += $(srcdir)/config/rs6000/rs6000-modes.h
PASSES_EXTRA += $(srcdir)/config/rs6000/rs6000-passes.def
EXTRA_GTYPE_DEPS += rs6000-builtins.h

rs6000-pcrel-opt.o: $(srcdir)/config/rs6000/rs6000-pcrel-opt.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

rs6000-string.o: $(srcdir)/config/rs6000/rs6000-string.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

rs6000-p8swap.o: $(srcdir)/config/rs6000/rs6000-p8swap.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

rs6000-d.o: $(srcdir)/config/rs6000/rs6000-d.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

rs6000-logue.o: $(srcdir)/config/rs6000/rs6000-logue.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

rs6000-builtin.o: $(srcdir)/config/rs6000/rs6000-builtin.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

build/rs6000-gen-builtins.o: $(srcdir)/config/rs6000/rs6000-gen-builtins.cc
build/rbtree.o: $(srcdir)/config/rs6000/rbtree.cc

build/rs6000-gen-builtins$(build_exeext): build/rs6000-gen-builtins.o \
					  build/rbtree.o $(BUILD_LIBDEPS)
	$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) -o $@ \
	    $(filter-out $(BUILD_LIBDEPS), $^) $(BUILD_LIBS)

# TODO: Whenever GNU make 4.3 is the minimum required, we should use
# grouped targets on this:
#    rs6000-builtins.cc rs6000-builtins.h rs6000-vecdefines.h &: <deps>
#       <recipe>
# For now, the header files depend on rs6000-builtins.cc, which avoids
# races because the .c file is closed last in rs6000-gen-builtins.cc.
rs6000-builtins.cc: build/rs6000-gen-builtins$(build_exeext) \
		   $(srcdir)/config/rs6000/rs6000-builtins.def \
		   $(srcdir)/config/rs6000/rs6000-overload.def
	$(RUN_GEN) ./build/rs6000-gen-builtins$(build_exeext) \
		$(srcdir)/config/rs6000/rs6000-builtins.def \
		$(srcdir)/config/rs6000/rs6000-overload.def rs6000-builtins.h \
		rs6000-builtins.cc rs6000-vecdefines.h

rs6000-builtins.h: rs6000-builtins.cc

rs6000.o: rs6000-builtins.h

EXTRA_HEADERS += rs6000-vecdefines.h
rs6000-vecdefines.h: rs6000-builtins.cc

rs6000-builtins.o: rs6000-builtins.cc
	$(COMPILE) $<
	$(POSTCOMPILE)

rs6000-call.o: $(srcdir)/config/rs6000/rs6000-call.cc rs6000-builtins.h
	$(COMPILE) $<
	$(POSTCOMPILE)

rs6000-c.o: $(srcdir)/config/rs6000/rs6000-c.cc rs6000-builtins.h
	$(COMPILE) $<
	$(POSTCOMPILE)

#$(srcdir)/config/rs6000/fusion.md: $(srcdir)/config/rs6000/genfusion.pl
#	$(srcdir)/config/rs6000/genfusion.pl > $(srcdir)/config/rs6000/fusion.md

$(srcdir)/config/rs6000/rs6000-tables.opt: $(srcdir)/config/rs6000/genopt.sh \
  $(srcdir)/config/rs6000/rs6000-cpus.def
	$(SHELL) $(srcdir)/config/rs6000/genopt.sh $(srcdir)/config/rs6000 > \
		$(srcdir)/config/rs6000/rs6000-tables.opt

# The rs6000 backend doesn't cause warnings in these files.
insn-conditions.o-warn =

MD_INCLUDES = $(srcdir)/config/rs6000/rs64.md \
	$(srcdir)/config/rs6000/mpc.md \
	$(srcdir)/config/rs6000/40x.md \
	$(srcdir)/config/rs6000/440.md \
	$(srcdir)/config/rs6000/601.md \
	$(srcdir)/config/rs6000/603.md \
	$(srcdir)/config/rs6000/6xx.md \
	$(srcdir)/config/rs6000/7xx.md \
	$(srcdir)/config/rs6000/7450.md \
	$(srcdir)/config/rs6000/8540.md \
	$(srcdir)/config/rs6000/e300c2c3.md \
	$(srcdir)/config/rs6000/e500mc.md \
	$(srcdir)/config/rs6000/power4.md \
	$(srcdir)/config/rs6000/power5.md \
	$(srcdir)/config/rs6000/power6.md \
	$(srcdir)/config/rs6000/power7.md \
	$(srcdir)/config/rs6000/power8.md \
	$(srcdir)/config/rs6000/power9.md \
	$(srcdir)/config/rs6000/power10.md \
	$(srcdir)/config/rs6000/cell.md \
	$(srcdir)/config/rs6000/a2.md \
	$(srcdir)/config/rs6000/predicates.md \
	$(srcdir)/config/rs6000/constraints.md \
	$(srcdir)/config/rs6000/darwin.md \
	$(srcdir)/config/rs6000/sync.md \
	$(srcdir)/config/rs6000/vector.md \
	$(srcdir)/config/rs6000/vsx.md \
	$(srcdir)/config/rs6000/altivec.md \
	$(srcdir)/config/rs6000/mma.md \
	$(srcdir)/config/rs6000/crypto.md \
	$(srcdir)/config/rs6000/htm.md \
	$(srcdir)/config/rs6000/dfp.md \
	$(srcdir)/config/rs6000/fusion.md \
	$(srcdir)/config/rs6000/pcrel-opt.md
