2021-03-04  Bill Schmidt  <wschm...@linux.ibm.com>

gcc/
        * config.gcc (extra_objs): Include rs6000-builtins.o and
        rs6000-c.o.
        * config/rs6000/t-rs6000 (OUT_FILE_DEPS): Add rs6000-builtins.h.
        (rs6000-gen-builtins.o): New target.
        (rbtree.o): Likewise.
        (rs6000-gen-builtins): Likewise.
        (rs6000-builtins.c): Likewise.
        (rs6000-builtins.h): Likewise.
        (EXTRA_HEADERS): Add rs6000-vecdefines.h.
        (rs6000-vecdefines.h): New target.
        (rs6000-builtins.o): Likewise.
        (rs6000-call.o): Add rs6000-builtins.h as a dependency.
        (rs6000-c.o): Likewise.
---
 gcc/config.gcc             |  1 +
 gcc/config/rs6000/t-rs6000 | 43 +++++++++++++++++++++++++++++++++-----
 2 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/gcc/config.gcc b/gcc/config.gcc
index e49e40fbfa1..5b923354ebb 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -513,6 +513,7 @@ powerpc*-*-*)
        cpu_type=rs6000
        extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
        extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
+       extra_objs="${extra_objs} rs6000-builtins.o rs6000-c.o"
        extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
        extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
        extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
diff --git a/gcc/config/rs6000/t-rs6000 b/gcc/config/rs6000/t-rs6000
index 44f7ffb35fe..ed97dc3303f 100644
--- a/gcc/config/rs6000/t-rs6000
+++ b/gcc/config/rs6000/t-rs6000
@@ -22,15 +22,12 @@ TM_H += $(srcdir)/config/rs6000/rs6000-builtin.def
 TM_H += $(srcdir)/config/rs6000/rs6000-cpus.def
 TM_H += $(srcdir)/config/rs6000/rs6000-modes.h
 PASSES_EXTRA += $(srcdir)/config/rs6000/rs6000-passes.def
+OUT_FILE_DEPS += rs6000-builtins.h
 
 rs6000-pcrel-opt.o: $(srcdir)/config/rs6000/rs6000-pcrel-opt.c
        $(COMPILE) $<
        $(POSTCOMPILE)
 
-rs6000-c.o: $(srcdir)/config/rs6000/rs6000-c.c
-       $(COMPILE) $<
-       $(POSTCOMPILE)
-
 rs6000-string.o: $(srcdir)/config/rs6000/rs6000-string.c
        $(COMPILE) $<
        $(POSTCOMPILE)
@@ -47,7 +44,43 @@ rs6000-logue.o: $(srcdir)/config/rs6000/rs6000-logue.c
        $(COMPILE) $<
        $(POSTCOMPILE)
 
-rs6000-call.o: $(srcdir)/config/rs6000/rs6000-call.c
+rs6000-gen-builtins.o: $(srcdir)/config/rs6000/rs6000-gen-builtins.c
+       $(COMPILE) $(CXXFLAGS) $<
+       $(POSTCOMPILE)
+
+rbtree.o: $(srcdir)/config/rs6000/rbtree.c
+       $(COMPILE) $<
+       $(POSTCOMPILE)
+
+rs6000-gen-builtins: rs6000-gen-builtins.o rbtree.o
+       $(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.c rs6000-builtins.h rs6000-vecdefines.h &: <deps>
+#       <recipe>
+rs6000-builtins.c: rs6000-gen-builtins \
+                  $(srcdir)/config/rs6000/rs6000-builtin-new.def \
+                  $(srcdir)/config/rs6000/rs6000-overload.def
+       ./rs6000-gen-builtins $(srcdir)/config/rs6000/rs6000-builtin-new.def \
+               $(srcdir)/config/rs6000/rs6000-overload.def rs6000-builtins.h \
+               rs6000-builtins.c rs6000-vecdefines.h
+
+rs6000-builtins.h: rs6000-builtins.c
+
+EXTRA_HEADERS += rs6000-vecdefines.h
+rs6000-vecdefines.h : rs6000-builtins.c
+
+rs6000-builtins.o: rs6000-builtins.c
+       $(COMPILE) $<
+       $(POSTCOMPILE)
+
+rs6000-call.o: $(srcdir)/config/rs6000/rs6000-call.c rs6000-builtins.h
+       $(COMPILE) $<
+       $(POSTCOMPILE)
+
+rs6000-c.o: $(srcdir)/config/rs6000/rs6000-c.c rs6000-builtins.h
        $(COMPILE) $<
        $(POSTCOMPILE)
 
-- 
2.27.0

Reply via email to