X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=Makefile.common;h=47c5f7b5dea610ebc64e205b164e8b1f245390a5;hp=0ba5aadd828bb0f74dd9192d1341e87a8053ab58;hb=9534acbf774cd7918c1f412ec2aac1834eea24d5;hpb=b7dc2b92514454e0f428493d266dda2993f74b4b diff --git a/Makefile.common b/Makefile.common index 0ba5aadd828..47c5f7b5dea 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1,9 +1,9 @@ #===-- Makefile.common - Common make rules for LLVM -------*- makefile -*--==== # # This file is included by all of the LLVM makefiles. This file defines common -# rules to do things like compile a .cpp file or generate dependancy info. -# These are platform dependant, so this is the file used to specify these -# system dependant operations. +# rules to do things like compile a .cpp file or generate dependency info. +# These are platform dependent, so this is the file used to specify these +# system dependent operations. # # The following functionality can be set by setting incoming variables. # The variable $(LEVEL) *must* be set: @@ -32,9 +32,6 @@ # # 6. LLVM_SRC_ROOT - If specified, points to the top of the LLVM source tree. # -# 7. LLVM_OBJ_ROOT - If specified, points to the top directory where LLVM -# object files are placed. -# # 8. BUILD_SRC_DIR - The directory which contains the current set of Makefiles # and usually the source code too (unless SourceDir is set). # @@ -46,15 +43,18 @@ # placed. # # For building, -# LLVM, LLVM_SRC_ROOT = BUILD_SRC_ROOT, and -# LLVM_OBJ_ROOT = BUILD_OBJ_ROOT. +# LLVM, LLVM_SRC_ROOT = BUILD_SRC_ROOT # #===-----------------------------------------------------------------------==== # # Configuration file to set paths specific to local installation of LLVM # +ifdef LLVM_SRC_ROOT +include $(LLVM_SRC_ROOT)/Makefile.config +else include $(LEVEL)/Makefile.config +endif ########################################################################### # Directory Configuration @@ -127,7 +127,7 @@ endif # Set the LLVM object directory. # ifndef LLVM_OBJ_ROOT -LLVM_OBJ_ROOT := $(BUILD_OBJ_ROOT) +LLVM_OBJ_ROOT := $(shell cd $(BUILD_OBJ_DIR); cd $(LLVM_SRC_ROOT); pwd) endif ########################################################################### @@ -161,13 +161,24 @@ bytecode:: # Print out the directories used for building prdirs:: - echo "Home Offset : " $(HOME_OBJ_ROOT) - echo "Build Source Root: " $(BUILD_SRC_ROOT) - echo "Build Source Dir : " $(BUILD_SRC_DIR) - echo "Build Object Root: " $(BUILD_OBJ_ROOT) - echo "Build Object Dir : " $(BUILD_OBJ_DIR) - echo "LLVM Source Root: " $(LLVM_SRC_ROOT) - echo "LLVM Object Root: " $(LLVM_OBJ_ROOT) + @echo "Home Offset : " $(HOME_OBJ_ROOT) + @echo "Build Source Root: " $(BUILD_SRC_ROOT) + @echo "Build Source Dir : " $(BUILD_SRC_DIR) + @echo "Build Object Root: " $(BUILD_OBJ_ROOT) + @echo "Build Object Dir : " $(BUILD_OBJ_DIR) + @echo "LLVM Source Root: " $(LLVM_SRC_ROOT) + @echo "LLVM Object Root: " $(LLVM_OBJ_ROOT) + +########################################################################### +# Suffixes and implicit rules: +# Empty out the list of suffixes, generate a list that is only +# used by this Makefile, and cancel useless implicit rules. This +# will hopefully speed up compilation a little bit. +########################################################################### +.SUFFIXES: +.SUFFIXES: .c .cpp .h .hpp .y .l +.SUFFIXES: .lo .o .a .so .bc +.SUFFIXES: .ps .dot .d # # Mark all of these targets as phony. This will hopefully speed up builds @@ -212,11 +223,6 @@ ifdef ENABLE_PROFILING PROFILE = -pg endif -# -# Suffixes for library compilation rules -# -.SUFFIXES: .so - ########################################################################### # Library Locations: # These variables describe various library locations: @@ -314,9 +320,9 @@ TBLGEN := $(LLVMTOOLCURRENT)/tblgen # The LLVM GCC front-end in C and C++ flavors # LLVMGCC := PATH=$(LLVMTOOLCURRENT):$(PATH) $(LLVMGCCDIR)/bin/gcc -LCC1 := $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1 +LCC1 := $(LLVMGCCDIR)/libexec/gcc/$(LLVMGCCARCH)/cc1 LLVMGXX := PATH=$(LLVMTOOLCURRENT):$(PATH) $(LLVMGCCDIR)/bin/g++ -LCC1XX := $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1plus +LCC1XX := $(LLVMGCCDIR)/libexec/gcc/$(LLVMGCCARCH)/cc1plus #-------------------------------------------------------------------------- # Some of the compiled LLVM tools which are used for compilation of runtime @@ -380,9 +386,6 @@ LinkP := $(Link) -O3 -L$(PROJLIBPROFILESOURCE) -L$(LLVMLIBPROFILESOURCE) $(PR # Create one .o file from a bunch of .o files... Relink := ${LIBTOOL} --mode=link $(CXX) -ifndef SHARED_LIBRARY -Relink += -only-static -endif # # Configure where the item being compiled should go. @@ -395,7 +398,7 @@ ifdef TOOLNAME Link += -rpath $(DESTTOOLCURRENT) endif -# Create dependancy file from CPP file, send to stdout. +# Create dependency file from CPP file, send to stdout. Depend := $(CXX) -MM -I$(LEVEL)/include $(CPPFLAGS) DependC := $(CC) -MM -I$(LEVEL)/include $(CPPFLAGS) @@ -612,8 +615,10 @@ endif ifdef ETAGS ifeq ($(LEVEL), .) +SRCDIRS := $(wildcard include lib tools) + tags: - $(ETAGS) -l c++ `find include lib tools -name '*.cpp' -o -name '*.h'` + $(ETAGS) -l c++ `find $(SRCDIRS) -name '*.cpp' -o -name '*.h'` all:: tags endif else @@ -736,7 +741,7 @@ $(BUILD_OBJ_DIR)/Bytecode/%.bc: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Bytecode/.dir $ @echo "Compiling $< to bytecode" $(VERB) $(LLVMGCC) $(CPPFLAGS) -c $< -o $@ -$(BUILD_OBJ_DIR)/Bytecode/%.bc: $(SourceDir)%.ll $(BUILD_OBJ_DIR)/Bytecode/.dir $(LCC1) +$(BUILD_OBJ_DIR)/Bytecode/%.bc: $(SourceDir)%.ll $(BUILD_OBJ_DIR)/Bytecode/.dir $(LLVMAS) @echo "Compiling $< to bytecode" $(VERB) $(LLVMAS) $< -f -o $@ @@ -810,20 +815,20 @@ clean:: ########################################################################### # If dependencies were generated for the file that included this file, -# include the dependancies now... +# include the dependencies now... # SourceBaseNames := $(basename $(notdir $(filter-out Debug/%, $(Source)))) SourceDepend := $(SourceBaseNames:%=$(BUILD_OBJ_DIR)/Depend/%.d) # Create dependencies for the *.cpp files... -#$(SourceDepend): \x $(BUILD_OBJ_DIR)/Depend/%.d: $(SourceDir)%.cpp $(BUILD_OBJ_DIR)/Depend/.dir $(VERB) $(Depend) $< | $(SED) 's|\.o|\.lo|' | $(SED) 's|$*\.lo *|$(BUILD_OBJ_DIR)/Release/& $(BUILD_OBJ_DIR)/Profile/& $(BUILD_OBJ_DIR)/Debug/& $(BUILD_OBJ_DIR)/Depend/$(@F)|g' > $@ + $(VERB) $(Depend) $< | $(SED) 's|$*.o: $*.cpp||' | $(SED) 's|[^\]$$|&::|' >> $@ # Create dependencies for the *.c files... -#$(SourceDepend): \x $(BUILD_OBJ_DIR)/Depend/%.d: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Depend/.dir $(VERB) $(DependC) -o $@ $< | $(SED) 's|\.o|\.lo|' | $(SED) 's|$*\.lo *|$(BUILD_OBJ_DIR)/Release/& $(BUILD_OBJ_DIR)/Profile/& $(BUILD_OBJ_DIR)/Debug/& $(BUILD_OBJ_DIR)/Depend/$(@F)|g' > $@ + $(VERB) $(Depend) $< | $(SED) 's|$*.o: $*.c||' | $(SED) 's|[^\]$$|&::|' >> $@ # # Include dependencies generated from C/C++ source files, but not if we @@ -836,3 +841,7 @@ ifneq ($(SourceDepend),) endif endif endif + +cleandeps:: + $(VERB) rm -f $(SourceDepend) +