[vmkit-commits] [vmkit] r180413 - better handling of GEN
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:09:14 PDT 2013
Author: peter.senna
Date: Thu Apr 25 12:07:33 2013
New Revision: 180413
URL: http://llvm.org/viewvc/llvm-project?rev=180413&view=rev
Log:
better handling of GEN
(cherry picked from commit 20484bedafa78bf7ec72a6160007e2afa9d9412a)
Modified:
vmkit/trunk/Makefile.rules
vmkit/trunk/mmtk/java/Makefile
Modified: vmkit/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile.rules?rev=180413&r1=180412&r2=180413&view=diff
==============================================================================
--- vmkit/trunk/Makefile.rules (original)
+++ vmkit/trunk/Makefile.rules Thu Apr 25 12:07:33 2013
@@ -116,6 +116,7 @@ VMJC=$(BIN_DIR)/vmjc$(EXEEXT)
###############################################################################
ifdef TOOL
MODULE=$(TOOL)
+#GEN+=frametables.cc
all:: $(BIN_DIR)/$(TOOL)$(EXEEXT)
endif
@@ -140,20 +141,24 @@ MODULE_A=$(LIB_DIR)/lib$(MODULE).a
all:: $(MODULE_A)
-CLANG_FILES+=$(patsubst %.c,$(BUILD_DIR)/%,$(wildcard *.c)) \
- $(patsubst %.cc,$(BUILD_DIR)/%,$(wildcard *.cc)) \
- $(patsubst %.cpp,$(BUILD_DIR)/%,$(wildcard *.cpp))
+define all-suffixes
+ $(wildcard *$1) $(filter %$1, $(GEN))
+endef
+
+CLANG_FILES+=$(patsubst %.c,$(BUILD_DIR)/%,$(call all-suffixes,.c)) \
+ $(patsubst %.cc,$(BUILD_DIR)/%,$(call all-suffixes,.cc)) \
+ $(patsubst %.cpp,$(BUILD_DIR)/%,$(call all-suffixes,.cpp))
-BC_FILES+=$(addsuffix .bc,$(CLANG_FILES) $(patsubst %,$(BUILD_DIR)/%,$(GEN)))
+BC_FILES+=$(addsuffix .bc,$(CLANG_FILES)) $(addprefix $(BUILD_DIR)/,$(filter %.bc, $(GEN)))
ifdef NEED_GC
LLC_GC=-load=$(PREPARE_CODE)
OPT_GC=-load=$(PREPARE_CODE) -StaticGCPass
endif
-$(MODULE_A):: $(LIB_DIR)/.dir
-
ifdef NEED_BC
+# if we need bytecode, we link a module with all the bc in the build_dir directory, optimize this module
+# assemble this module and finally create the archive
all:: $(LIB_DIR)/$(MODULE).bc
$(LIB_DIR)/$(MODULE).bc: $(BUILD_DIR)/$(MODULE)-opt.bc $(LIB_DIR)/.dir
@@ -162,16 +167,19 @@ $(LIB_DIR)/$(MODULE).bc: $(BUILD_DIR)/$(
$(BUILD_DIR)/$(MODULE).bc: $(BC_FILES) $(patsubst %, $(LIB_DIR)/%.bc,$(MODULE_USE))
$(Echo) "Linking module '$(notdir $@)'"
$(Verb) $(LLVMLINK) $^ -o $@
-endif
-ifdef NEED_BC
-$(MODULE_A):: $(BUILD_DIR)/$(MODULE)-opt.o
+MODULE_A_DEP=$(BUILD_DIR)/$(MODULE)-opt.o
else
-$(MODULE_A):: $(patsubst %.bc,%-opt.o,$(BC_FILES)) $(patsubst %, $(LIB_DIR)/lib%.a,$(MODULE_USE))
+# for most of the module, we avoid a full module creation, mainly because I have bugs in llc
+# in this case, we build a set of .o files and archive them together
+# each .o is optimized and assembled
+MODULE_A_DEP=$(patsubst %.bc,%-opt.o,$(BC_FILES)) $(patsubst %, $(LIB_DIR)/lib%.a,$(MODULE_USE))
endif
+
+$(MODULE_A): $(MODULE_A_DEP) $(LIB_DIR)/.dir
$(Echo) "Building archive '$(notdir $@)'"
-$(Verb) $(RM) -f $@
- $(Verb) $(Archive) $@ $^
+ $(Verb) $(Archive) $@ $(MODULE_A_DEP)
$(Verb) $(Ranlib) $@
%.o: %.bc
@@ -184,6 +192,23 @@ endif
endif
+###############################################################################
+# Frametables
+###############################################################################
+DEP_FRAMETABLES=$(patsubst %,$(LIB_DIR)/lib%.a,$(LINK_USE))
+$(BUILD_DIR)/frametables.cc: $(DEP_FRAMETABLES) $(SELF) $(BUILD_DIR)/.dir
+ $(Echo) "Generating frametables in $@"
+ $(Verb) mkdir -p $(dir $@)
+ $(Verb) doit() { \
+ echo '#include "vmkit/MethodInfo.h"'; \
+ echo 'using namespace vmkit;'; \
+ $(NM) $^ | grep __frametable | sed 's/\([a-f0-9]*\) \([a-zA-Z]*\) _*\([a-zA-Z0-9_]*\)/extern "C" CompiledFrames \3;/'; \
+ echo 'CompiledFrames* vmkit::initialFrametables[] = {'; \
+ $(NM) $^ | grep __frametable | sed 's/\([a-f0-9]*\) \([a-zA-Z]*\) _*\([a-zA-Z0-9_]*\)/\&\3,/'; \
+ echo "0"; \
+ echo "};"; \
+ }; doit
+
ifdef BUILD_FRAMETABLE
## have to remove this symbol (used elsewere)
Modified: vmkit/trunk/mmtk/java/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/java/Makefile?rev=180413&r1=180412&r2=180413&view=diff
==============================================================================
--- vmkit/trunk/mmtk/java/Makefile (original)
+++ vmkit/trunk/mmtk/java/Makefile Thu Apr 25 12:07:33 2013
@@ -8,7 +8,7 @@
##===----------------------------------------------------------------------===##
LEVEL = ../..
-GEN=mmtk-vmkit
+GEN=mmtk-vmkit.bc
MODULE=FinalMMTk
MODULE_USE=MMTKAlloc MMTKRuntime
NEED_BC=1
More information about the vmkit-commits
mailing list