Use precompiled headers to speed up compilation
authorAndrew Waterman <waterman@eecs.berkeley.edu>
Mon, 7 Jul 2014 22:17:16 +0000 (15:17 -0700)
committerAndrew Waterman <waterman@eecs.berkeley.edu>
Mon, 7 Jul 2014 22:17:16 +0000 (15:17 -0700)
.gitignore
Makefile.in
hwacha/decode_hwacha.h
hwacha/hwacha.mk.in
hwacha/insn_template_hwacha.cc
hwacha/insn_template_hwacha.h [new file with mode: 0644]
hwacha/insn_template_hwacha_ut.cc
hwacha/insn_template_hwacha_ut.h [new file with mode: 0644]
riscv/insn_template.cc
riscv/insn_template.h [new file with mode: 0644]
riscv/riscv.mk.in

index 031e691660dec0b202e2ad42470a27462f0fa292..7503c9af11bafd1bdb1a2d8722699e5e47c31cc9 100644 (file)
@@ -1,3 +1,4 @@
 build/
+*.gch
 autom4te.cache/
 .*.swp
index 1f3074d6bbc7d4691ffa7f2f264a4153fd487d73..45d22a4682e9a9a197be94d708539e0040db071c 100644 (file)
@@ -184,16 +184,20 @@ _$(1).cc :
 
 # Build the object files for this subproject
 
+$(2)_pch := $$(patsubst %.h, %.h.gch, $$($(2)_precompiled_hdrs))
 $(2)_objs := $$(patsubst %.cc, %.o, $$($(2)_srcs))
 $(2)_c_objs := $$(patsubst %.c, %.o, $$($(2)_c_srcs))
 $(2)_deps := $$(patsubst %.o, %.d, $$($(2)_objs))
 $(2)_c_deps := $$(patsubst %.o, %.d, $$($(2)_c_objs))
-$$($(2)_objs) : %.o : %.cc $$($(2)_gen_hdrs)
+$$($(2)_pch) : %.h.gch : %.h
+       $(COMPILE) $$<
+$$($(2)_objs) : %.o : %.cc $$($(2)_gen_hdrs) $$($(2)_pch)
        $(COMPILE) -c $$<
 $$($(2)_c_objs) : %.o : %.c $$($(2)_gen_hdrs)
        $(COMPILE_C) -c $$<
 
-$(2)_junk += $$($(2)_objs) $$($(2)_c_objs) $$($(2)_deps) $$($(2)_c_deps) $$($(2)_gen_hdrs)
+$(2)_junk += $$(addprefix $(src_dir)/$(1)/, $$($(2)_pch)) \
+  $$($(2)_objs) $$($(2)_c_objs) $$($(2)_deps) $$($(2)_c_deps) $$($(2)_gen_hdrs)
 
 # Reverse the dependency list so that a given subproject only depends on
 # subprojects listed to its right. This is the correct order for linking
index 74e132679df5c4f6018aa21f9b38288273b559e3..7a6c8ee05e3c724cfc96a31e2b4287df7003afb1 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "hwacha.h"
 #include "hwacha_xcpt.h"
+#include "mmu.h"
 
 #define XS1 (xs1)
 #define XS2 (xs2)
index 1be27740c97369c0f138e2b029e950f38abd8fe6..b4f375ebbcc7c412aaf017671f300ba64f87890f 100644 (file)
@@ -11,6 +11,12 @@ hwacha_hdrs = \
        decode_hwacha_ut.h \
        opcodes_hwacha.h \
        opcodes_hwacha_ut.h \
+       insn_template_hwacha.h \
+       insn_template_hwacha_ut.h \
+
+hwacha_precompiled_hdrs = \
+       insn_template_hwacha.h \
+       insn_template_hwacha_ut.h \
 
 hwacha_srcs = \
        hwacha.cc \
index e6f94d4cc4b36ffc0531df6d2a3bd9e2cdcb2e5b..cb44cac94e75044a13d36a767cbad8712a316c1d 100644 (file)
@@ -1,13 +1,5 @@
 // See LICENSE for license details.
-
-#include "config.h"
-#include "processor.h"
-#include "mmu.h"
-#include "hwacha.h"
-#include "decode_hwacha.h"
-#include "encodings_hwacha.h"
-#include "rocc.h"
-#include <assert.h>
+#include "insn_template_hwacha.h"
 
 reg_t hwacha_NAME(processor_t* p, insn_t insn, reg_t pc)
 {
diff --git a/hwacha/insn_template_hwacha.h b/hwacha/insn_template_hwacha.h
new file mode 100644 (file)
index 0000000..b4704da
--- /dev/null
@@ -0,0 +1,5 @@
+#include "hwacha.h"
+#include "decode_hwacha.h"
+#include "encodings_hwacha.h"
+#include "rocc.h"
+#include <assert.h>
index 79e7c2f0846741130a4428d644df531b63cb4f45..d312e93c8000cfd16b6cf289ae88e72473a4cdf5 100644 (file)
@@ -1,14 +1,5 @@
 // See LICENSE for license details.
-
-#include "config.h"
-#include "processor.h"
-#include "mmu.h"
-#include "softfloat.h"
-#include "platform.h" // softfloat isNaNF32UI, etc.
-#include "internals.h" // ditto
-#include "hwacha.h"
-#include "decode_hwacha_ut.h"
-#include <assert.h>
+#include "insn_template_hwacha_ut.h"
 
 reg_t hwacha_NAME(processor_t* p, insn_t insn, reg_t pc)
 {
diff --git a/hwacha/insn_template_hwacha_ut.h b/hwacha/insn_template_hwacha_ut.h
new file mode 100644 (file)
index 0000000..a26e528
--- /dev/null
@@ -0,0 +1,6 @@
+#include "hwacha.h"
+#include "decode_hwacha_ut.h"
+#include "softfloat.h"
+#include "platform.h" // softfloat isNaNF32UI, etc.
+#include "internals.h" // ditto
+#include <assert.h>
index a901077fab798250a16285ad0ce2d49fecf7ad5d..d2c0fce4322a1f1dbd1ad7d4d3416c369da153bb 100644 (file)
@@ -1,12 +1,6 @@
 // See LICENSE for license details.
 
-#include "processor.h"
-#include "config.h"
-#include "mmu.h"
-#include "softfloat.h"
-#include "platform.h" // softfloat isNaNF32UI, etc.
-#include "internals.h" // ditto
-#include <assert.h>
+#include "insn_template.h"
 
 reg_t rv32_NAME(processor_t* p, insn_t insn, reg_t pc)
 {
diff --git a/riscv/insn_template.h b/riscv/insn_template.h
new file mode 100644 (file)
index 0000000..109b4c4
--- /dev/null
@@ -0,0 +1,5 @@
+#include "mmu.h"
+#include "softfloat.h"
+#include "platform.h" // softfloat isNaNF32UI, etc.
+#include "internals.h" // ditto
+#include <assert.h>
index 84723bd1cd6dcc5daf558015a76ba579ac76c19e..0fd5eafeb04ceaaac13f1d839cd515d87e1eb289 100644 (file)
@@ -20,6 +20,10 @@ riscv_hdrs = \
        extension.h \
        rocc.h \
        dummy-rocc.h \
+       insn_template.h \
+
+riscv_precompiled_hdrs = \
+       insn_template.h \
 
 riscv_srcs = \
        htif.cc \