[vmkit-commits] [vmkit] r180396 - generate c and cxx dependencies
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:14:48 PDT 2013
Author: peter.senna
Date: Thu Apr 25 12:05:41 2013
New Revision: 180396
URL: http://llvm.org/viewvc/llvm-project?rev=180396&view=rev
Log:
generate c and cxx dependencies
(cherry picked from commit aaedf260bd05890592e27b3b2fa3c434acd9378f)
Modified:
vmkit/trunk/Makefile.rules
Modified: vmkit/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile.rules?rev=180396&r1=180395&r2=180396&view=diff
==============================================================================
--- vmkit/trunk/Makefile.rules (original)
+++ vmkit/trunk/Makefile.rules Thu Apr 25 12:05:41 2013
@@ -88,7 +88,7 @@ MODULE=$(TOOL)
all:: $(BIN_DIR)/$(TOOL)$(EXEEXT)
$(BIN_DIR)/$(TOOL)$(EXEEXT): $(DEP_LIBS) $(SELF) $(BIN_DIR)/.dir
- $(Echo) 'Linking executable $(notdir $@)'
+ $(Echo) 'Linking executable: $(notdir $@)'
$(Verb) $(CLANGXX) -o $@ $(DEP_LIBS) $(MY_LIBS) $(MY_LDFLAGS)
endif
@@ -99,7 +99,7 @@ MODULE=$(LIBRARY)
all:: $(LIB_DIR)/$(LIBRARY)$(SHLIBEXT)
$(LIB_DIR)/$(LIBRARY)$(SHLIBEXT): $(DEP_LIBS) $(SELF) $(LIB_DIR)/.dir
- $(Echo) "Linking shared library $(notdir $@)"
+ $(Echo) "Linking shared library: $(notdir $@)"
$(Verb) $(CLANGXX) -O0 -o $@ $(SHOPT) -Wl,-R -Wl,'$ORIGIN' -shared $(ObjectsO)
endif
@@ -131,6 +131,7 @@ endif
ifdef BUILD_FRAMETABLE
+## have to remove this symbol (used elsewere)
FRAMETABLES=FrametablesExterns.inc FrametablesSymbols.inc
DEP_FRAMETABLES=$(patsubst %,$(LIB_DIR)/lib%.a,$(USE))
@@ -146,13 +147,13 @@ clean-local::
endif
$(MODULE_A): $(OBJ_FILES) $(SELF) $(LIB_DIR)/.dir
- $(Echo) "Building archive $(notdir $@)"
+ $(Echo) "Building archive: $(notdir $@)"
-$(Verb) $(RM) -f $@
$(Verb) $(Archive) $@ $(OBJ_FILES)
$(Verb) $(Ranlib) $@
$(MODULE_BC): $(BC_FILES) $(SELF) $(LIB_DIR)/.dir
- $(Echo) "Building module $(notdir $@)"
+ $(Echo) "Building module: $(notdir $@)"
$(Verb) $(LLVMLINK) $(BC_FILES) -o $(MODULE_BC)
endif
@@ -226,19 +227,12 @@ clean-local::
endif
###############################################################################
-# MODULE_WITH_GC: Provide rules for building .cpp files into an archive with
-# GC symbol information.
-###############################################################################
-
-###############################################################################
-# BUILD_FRAMETABLE: Generate files for easy access of frametables at runtime.
-###############################################################################
-
-###############################################################################
# COMPILE_OPENJDK_ZIP: Build the specified java sources and zip them up
###############################################################################
ifeq ($(COMPILE_OPENJDK_ZIP), 1)
+$(error must verify the open jdk building process)
+
# Some variables
VMKIT_OPENJDK_ZIP=$(PROJ_OBJ_DIR)/vmkit-openjdk.zip
CLASSES_DIR=$(PROJ_OBJ_DIR)/classes
@@ -247,7 +241,6 @@ all-local:: $(VMKIT_OPENJDK_ZIP)
clean-local::
-$(Verb) $(RM) -f $(CLASSES_DIR) $(VMKIT_OPENJDK_ZIP)
-
$(VMKIT_OPENJDK_ZIP): $(addprefix $(PROJ_SRC_DIR)/,$(OPENJDK_JAVA_SOURCES))
$(Echo) "**[13] Building OpenJDK java sources into zip"
-$(Verb) $(RM) -rf $@ $(CLASSES_DIR)
@@ -278,28 +271,49 @@ INCLUDES+=-I. -I$(PROJ_SRC_ROOT)/include
WARN_CFLAGS= -Wall -Wno-long-long -Wno-variadic-macros -Wno-unused-private-field -Wno-unused-variable
COMMON_CFLAGS+= -O0 $(INCLUDES) -fno-strict-aliasing -fno-omit-frame-pointer -ansi -pedantic $(WARN_CFLAGS) -fPIC
-CFLAGS+=$(COMMON_CFLAGS) $(shell $(LLVM_CONFIG) --cflgas)
+CFLAGS+=$(COMMON_CFLAGS) $(shell $(LLVM_CONFIG) --cflags)
CXXFLAGS+=$(COMMON_CFLAGS) $(shell $(LLVM_CONFIG) --cxxflags)
MY_LDFLAGS+=$(shell $(LLVM_CONFIG) --ldflags) $(LDOPT)
MY_LIBS+=$(shell $(LLVM_CONFIG) --libs) -lz
+DEPEND_OPTIONS=-MMD -MP -MF "$(BUILD_DIR)/$$*.d.tmp" -MT "$(BUILD_DIR)/$$*.bc" -MT "$(BUILD_DIR)/$$*.d"
+DOM=then mv -f "$(BUILD_DIR)/$$*.d.tmp" "$(BUILD_DIR)/$$*.d"; else rm -f "$(BUILD_DIR)/$$*.d.tmp"; exit 1; fi
+
$(LibName.BCA): $(ObjectsBC) $(LibDir)/.dir $(LLVMToolDir)/llvm-ar
$(Echo) "**[22] Building $(BuildMode) Bytecode Archive $(notdir $@)"
$(Verb) $(RM) -f $@
$(Verb) $(LArchive) $@ $(ObjectsBC)
$(BUILD_DIR)/%-gc.o: $(BUILD_DIR)/%-gc.bc $(LLC) $(SELF)
- $(Echo) "Assembling: $(notdir $<)"
+ $(Echo) "Assembling: $(notdir $<)"
$(Verb) $(LLC) -relocation-model=pic -filetype=obj -disable-cfi -disable-fp-elim -load=$(PREPARE_CODE) $< -o $@
$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.bc $(LLC) $(SELF)
- $(Echo) "Assembling: $(notdir $<)"
+ $(Echo) "Assembling: $(notdir $<)"
$(Verb) $(LLC) -relocation-model=pic -filetype=obj -disable-cfi -disable-fp-elim $< -o $@
$(BUILD_DIR)/%-gc.bc: $(BUILD_DIR)/%.bc $(LOPT) $(PREPARE_CODE) $(SELF)
- $(Echo) "Preparing for gc: $(notdir $<)"
+ $(Echo) "Preparing for gc: $(notdir $<)"
$(Verb) $(LOPT) $< -load=$(PREPARE_CODE) -StaticGCPass -o $@
-$(BUILD_DIR)/%.bc: %.cpp $(FRAMETABLES) $(SELF) $(BUILD_DIR)/.dir
- $(Echo) "Compiling: $(notdir $<)"
- $(Verb) $(CLANGXX) -S $(CXXFLAGS) -emit-llvm -c "$<" -o $@
+define define_compile_rule
+$(BUILD_DIR)/%.bc: %$1 $(SELF) $(FRAMETABLES) $(BUILD_DIR)/.dir
+ $(Echo) "Compiling: $(notdir $$<)"
+ $(Verb) if $2 $3 $(DEPEND_OPTIONS) -emit-llvm -c "$$<" -o $$@; $(DOM)
+
+$(BUILD_DIR)/%.bc: $(BUILD_DIR)/%$1 $(FRAMETABLES) $(SELF) $(BUILD_DIR)/.dir
+ $(Echo) "Compiling: $(notdir $$<)"
+ $(Verb) if $2 $3 $(DEPEND_OPTIONS) -emit-llvm -c "$$<" -o $$@; $(DOM)
+endef
+
+$(eval $(call define_compile_rule,.cpp,$(CLANGXX),$(CXXFLAGS)))
+$(eval $(call define_compile_rule,.cc,$(CLANGXX),$(CXXFLAGS)))
+$(eval $(call define_compile_rule,.c,$(CLANG),$(CFLAGS)))
+
+ifneq ($(MAKECMDGOALS),tidy)
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),distclean)
+-include $(patsubst %.o, %.d, $(OBJ_FILES))
+endif
+endif
+endif
More information about the vmkit-commits
mailing list