]> gitweb.factorcode.org Git - factor.git/commitdiff
GNUmakefile: use PCH so compiler goes faster
authorJoe Groff <arcata@gmail.com>
Mon, 7 Nov 2011 21:50:52 +0000 (13:50 -0800)
committerJoe Groff <arcata@gmail.com>
Tue, 8 Nov 2011 16:42:46 +0000 (08:42 -0800)
Also add more accurate dependencies on headers so "make" works right when headers change

13 files changed:
.gitignore
GNUmakefile
vm/Config.arm
vm/Config.linux
vm/Config.linux.arm
vm/Config.macosx
vm/Config.unix
vm/Config.windows
vm/Config.windows.x86.32
vm/Config.windows.x86.64
vm/Config.x86.32
vm/Config.x86.64
vm/Config.x86.fat

index 7bd42557b782763654fd403d087d6f832171b03d..3f047a5765060894ff60f2f191cf6cbda0f79ef3 100644 (file)
@@ -1,5 +1,6 @@
 *~
 _darcs
+*.gch
 *.obj
 *.o
 *.s
index dc7b391949365e4e3561da3f83185e8cdcbd8c42..55906786cc70a7d9f704d09a21f0b67b96030a63 100755 (executable)
@@ -68,6 +68,75 @@ ifdef CONFIG
                vm/vm.o \
                vm/words.o
 
+       MASTER_HEADERS = $(PLAF_MASTER_HEADERS) \
+               vm/layouts.hpp \
+               vm/platform.hpp \
+               vm/primitives.hpp \
+               vm/segments.hpp \
+               vm/gc_info.hpp \
+               vm/contexts.hpp \
+               vm/run.hpp \
+               vm/objects.hpp \
+               vm/counting_profiler.hpp \
+               vm/sampling_profiler.hpp \
+               vm/errors.hpp \
+               vm/bignumint.hpp \
+               vm/bignum.hpp \
+               vm/booleans.hpp \
+               vm/instruction_operands.hpp \
+               vm/code_blocks.hpp \
+               vm/bump_allocator.hpp \
+               vm/bitwise_hacks.hpp \
+               vm/mark_bits.hpp \
+               vm/free_list.hpp \
+               vm/fixup.hpp \
+               vm/tuples.hpp \
+               vm/free_list_allocator.hpp \
+               vm/write_barrier.hpp \
+               vm/object_start_map.hpp \
+               vm/nursery_space.hpp \
+               vm/aging_space.hpp \
+               vm/tenured_space.hpp \
+               vm/data_heap.hpp \
+               vm/code_heap.hpp \
+               vm/gc.hpp \
+               vm/debug.hpp \
+               vm/strings.hpp \
+               vm/words.hpp \
+               vm/float_bits.hpp \
+               vm/io.hpp \
+               vm/image.hpp \
+               vm/alien.hpp \
+               vm/callbacks.hpp \
+               vm/dispatch.hpp \
+               vm/entry_points.hpp \
+               vm/safepoints.hpp \
+               vm/vm.hpp \
+               vm/allot.hpp \
+               vm/tagged.hpp \
+               vm/data_roots.hpp \
+               vm/code_roots.hpp \
+               vm/generic_arrays.hpp \
+               vm/callstack.hpp \
+               vm/slot_visitor.hpp \
+               vm/collector.hpp \
+               vm/copying_collector.hpp \
+               vm/nursery_collector.hpp \
+               vm/aging_collector.hpp \
+               vm/to_tenured_collector.hpp \
+               vm/code_block_visitor.hpp \
+               vm/compaction.hpp \
+               vm/full_collector.hpp \
+               vm/arrays.hpp \
+               vm/math.hpp \
+               vm/byte_arrays.hpp \
+               vm/jit.hpp \
+               vm/quotations.hpp \
+               vm/inline_cache.hpp \
+               vm/mvm.hpp \
+               vm/factor.hpp \
+               vm/utilities.hpp
+
        EXE_OBJS = $(PLAF_EXE_OBJS)
 
        FFI_TEST_LIBRARY = libfactor-ffi-test$(SHARED_DLL_EXTENSION)
@@ -165,13 +234,16 @@ vm/resources.o:
 vm/ffi_test.o: vm/ffi_test.c
        $(TOOLCHAIN_PREFIX)$(CC) -c $(CFLAGS) $(FFI_TEST_CFLAGS) -o $@ $<
 
-.cpp.o:
+vm/master.hpp.gch: vm/master.hpp $(MASTER_HEADERS)
+       $(TOOLCHAIN_PREFIX)$(CPP) -c -x c++-header $(CFLAGS) -o $@ $<
+
+%.o: %.cpp vm/master.hpp.gch
        $(TOOLCHAIN_PREFIX)$(CPP) -c $(CFLAGS) -o $@ $<
 
-.S.o:
+%.o: %.S
        $(TOOLCHAIN_PREFIX)$(CC) -c $(CFLAGS) -o $@ $<
 
-.mm.o:
+%.o: %.mm vm/master.hpp.gch
        $(TOOLCHAIN_PREFIX)$(CPP) -c $(CFLAGS) -o $@ $<
 
 .SUFFIXES: .mm
@@ -179,6 +251,7 @@ vm/ffi_test.o: vm/ffi_test.c
 endif
 
 clean:
+       rm -f vm/*.gch
        rm -f vm/*.o
        rm -f factor.dll
        rm -f factor.lib
index 8b137891791fe96927ad78e64b0aad7bded08bdc..958a9b7c6d7d51b91bf9cd2be71437031e3aea3a 100644 (file)
@@ -1 +1,2 @@
-
+PLAF_MASTER_HEADERS += \
+       cpu-arm.hpp
index 3a2539d930fa67ace7c40bc951e0d6638bb29d48..00ad5b4858619b85cba7546115fa5a78940ac8dc 100644 (file)
@@ -1,4 +1,5 @@
 include vm/Config.unix
 PLAF_DLL_OBJS += vm/os-genunix.o vm/os-linux.o vm/mvm-unix.o
+PLAF_MASTER_HEADERS += vm/os-genunix.hpp vm/os-linux.hpp
 LIBS = -ldl -lm -lrt -lpthread $(X11_UI_LIBS) -Wl,--export-dynamic
 SITE_CFLAGS += -Wl,--no-as-needed
index 26acde562d2dd2b25787fea6d18172392b635aa2..e6f24274eb4936bb3eea10d93dd510fd7d5a1303 100644 (file)
@@ -1,3 +1,4 @@
 include vm/Config.linux
 include vm/Config.arm
 PLAF_DLL_OBJS += vm/os-linux-arm.o
+PLAF_MASTER_HEADERS += vm/os-linux-arm.hpp
index 11a66f3acf197538956154ca0adeabe7ba44b66a..b617c54e6c6e354faf1d482466c665327df4e372 100644 (file)
@@ -2,6 +2,7 @@ include vm/Config.unix
 CFLAGS += -fPIC
 
 PLAF_DLL_OBJS += vm/os-macosx.o vm/mach_signal.o vm/mvm-unix.o
+PLAF_MASTER_HEADERS += vm/os-macosx.hpp vm/mach_signal.hpp
 
 DLL_EXTENSION = .dylib
 SHARED_DLL_EXTENSION = .dylib
index fac0d8b6d1819f806e41b4fe8327014cd239d1e0..8a365226191c4ecb39b0c5a6e42a38a43473229b 100644 (file)
@@ -10,6 +10,7 @@ SHARED_FLAG = -shared
 
 PLAF_DLL_OBJS = vm/os-unix.o
 PLAF_EXE_OBJS += vm/main-unix.o
+PLAF_MASTER_HEADERS += vm/os-unix.hpp
 
 ifdef NO_UI
        X11_UI_LIBS =
index 1ae91b15c2a36db7f5aa0c6f1a41852d70b14e85..15316932fa321643d389dd7b86bb944b3adac612 100755 (executable)
@@ -7,6 +7,7 @@ LIBS = -lm
 
 PLAF_DLL_OBJS += vm/os-windows.o vm/mvm-windows.o
 PLAF_EXE_OBJS += vm/resources.o vm/main-windows.o
+PLAF_MASTER_HEADERS += vm/os-windows.hpp vm/mvm-windows.hpp
 
 EXE_SUFFIX=
 EXE_EXTENSION=.exe
index 6ba2955d7918ee09d5c7529af915ce07625a3b7f..82cad23ef653cc946f505e360167092a30517d76 100644 (file)
@@ -1,4 +1,5 @@
 PLAF_DLL_OBJS += vm/os-windows-x86.32.o
+PLAF_MASTER_HEADERS += vm/os-windows.32.hpp
 DLL_PATH=http://factorcode.org/dlls
 WINDRES=windres
 include vm/Config.windows
index f3dc9b0b77ccd8847d1a1fcfbb3648c7d642ada2..26a1903f94c466cae2df48ac3c2bc6a9dea22577 100644 (file)
@@ -1,4 +1,5 @@
 PLAF_DLL_OBJS += vm/os-windows-x86.64.o
+PLAF_MASTER_HEADERS += vm/os-windows.64.hpp
 DLL_PATH=http://factorcode.org/dlls/64
 CC=$(WIN64_PATH)-gcc.exe
 WINDRES=$(WIN64_PATH)-windres.exe
index 695752a21017703c853f3154e93bc8d75b4e420f..7bc404084acce229bff266bd387bdde0dc5b8349 100644 (file)
@@ -1,2 +1,3 @@
 PLAF_DLL_OBJS += vm/cpu-x86.o
+PLAF_MASTER_HEADERS += vm/cpu-x86.hpp
 
index 695752a21017703c853f3154e93bc8d75b4e420f..7bc404084acce229bff266bd387bdde0dc5b8349 100644 (file)
@@ -1,2 +1,3 @@
 PLAF_DLL_OBJS += vm/cpu-x86.o
+PLAF_MASTER_HEADERS += vm/cpu-x86.hpp
 
index 695752a21017703c853f3154e93bc8d75b4e420f..7bc404084acce229bff266bd387bdde0dc5b8349 100644 (file)
@@ -1,2 +1,3 @@
 PLAF_DLL_OBJS += vm/cpu-x86.o
+PLAF_MASTER_HEADERS += vm/cpu-x86.hpp