X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=Makefile.rules;h=ae697354af4a1723225428f030bc23c838ac8540;hp=f002d0af06587c08827085001af5e8beda9a6a16;hb=e04c2630f24df62c8fd2f61de07496c647822f48;hpb=a86b04246a1abbb42d1b7863c44ebac73bafa5bd diff --git a/Makefile.rules b/Makefile.rules index f002d0af065..ae697354af4 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -1,4 +1,11 @@ -#===-- Makefile.common - Common make rules for LLVM -------*- makefile -*--==== +#===-- Makefile.rules - Common make rules for LLVM -------*- makefile -*--==== +# +# The LLVM Compiler Infrastructure +# +# This file was developed by the LLVM research group and is distributed under +# the University of Illinois Open Source License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## # # 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 dependency info. @@ -48,91 +55,9 @@ #===-----------------------------------------------------------------------==== # -# 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 -# This section of the Makefile determines what is where. To be -# specific, there are several locations that need to be defined: -# -# o LLVM_SRC_ROOT : The root directory of the LLVM source code. -# o LLVM_OBJ_ROOT : The root directory containing the built LLVM code. -# -# o BUILD_SRC_DIR : The directory containing the code to build. -# o BUILD_SRC_ROOT : The root directory of the code to build. -# -# o BUILD_OBJ_DIR : The directory in which compiled code will be placed. -# o BUILD_OBJ_ROOT : The root directory in which compiled code is placed. -# -########################################################################### - -# -# Set the source build directory. That is almost always the current directory. -# -ifndef BUILD_SRC_DIR -BUILD_SRC_DIR = $(shell pwd) -endif - -# -# Set the source root directory. -# -ifndef BUILD_SRC_ROOT -BUILD_SRC_ROOT = $(shell cd $(BUILD_SRC_DIR)/$(LEVEL); pwd) -endif - -# -# Determine the path of the source tree relative from $HOME (the mythical -# home directory). -# -HOME_OBJ_ROOT := $(OBJ_ROOT)$(patsubst $(HOME)%,%,$(BUILD_SRC_ROOT)) - -# -# Set the object build directory. Its location depends upon the source path -# and where object files should go. -# -ifndef BUILD_OBJ_DIR -ifeq ($(OBJ_ROOT),.) -BUILD_OBJ_DIR = $(BUILD_SRC_DIR) -else -BUILD_OBJ_DIR := $(HOME_OBJ_ROOT)$(patsubst $(BUILD_SRC_ROOT)%,%,$(BUILD_SRC_DIR)) -endif -endif - -# -# Set the root of the object directory. -# -ifndef BUILD_OBJ_ROOT -ifeq ($(OBJ_ROOT),.) -BUILD_OBJ_ROOT = $(BUILD_SRC_ROOT) -else -BUILD_OBJ_ROOT := $(HOME_OBJ_ROOT) -endif -endif - -# -# Set the LLVM object directory. -# -ifndef LLVM_OBJ_ROOT -ifdef LLVM_SRC_ROOT -LLVM_OBJ_ROOT := $(shell cd $(BUILD_OBJ_DIR); cd $(LLVM_SRC_ROOT); pwd) -else -LLVM_OBJ_ROOT := $(shell cd $(BUILD_OBJ_ROOT); pwd) -endif -endif - -# -# Set the LLVM source directory. -# It is typically the root directory of what we're compiling now. +# Set the VPATH so that we can find source files. # -ifndef LLVM_SRC_ROOT -LLVM_SRC_ROOT := $(BUILD_SRC_ROOT) -endif +VPATH=$(SourceDir) ########################################################################### # Default Targets: @@ -140,6 +65,9 @@ endif # building. ########################################################################### +# Ensure people re-run configure when it gets updated +all::$(LLVM_OBJ_ROOT)/config.status + ifdef SHARED_LIBRARY # if SHARED_LIBRARY is specified, the default is to build the dynamic lib all:: dynamic @@ -165,13 +93,12 @@ 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} "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: @@ -181,7 +108,7 @@ prdirs:: ########################################################################### .SUFFIXES: .SUFFIXES: .c .cpp .h .hpp .y .l -.SUFFIXES: .lo .o .a .so .bc +.SUFFIXES: .lo .o .a .so .bc .td .SUFFIXES: .ps .dot .d # @@ -240,7 +167,7 @@ endif DESTLIBDEBUG := $(BUILD_OBJ_ROOT)/lib/Debug DESTLIBRELEASE := $(BUILD_OBJ_ROOT)/lib/Release DESTLIBPROFILE := $(BUILD_OBJ_ROOT)/lib/Profile -DESTLIBBYTECODE := $(BUILD_OBJ_ROOT)/lib/Bytecode +DESTLIBBYTECODE := $(BUILD_OBJ_ROOT)/lib/BytecodeLibs DESTLIBCURRENT := $(BUILD_OBJ_ROOT)/lib/$(CONFIGURATION) # LLVM libraries used for linking @@ -282,7 +209,7 @@ PROJTOOLCURRENT := $(BUILD_OBJ_ROOT)/tools/$(CONFIGURATION) # # Libtool is found in the current directory. # -LIBTOOL := $(LLVM_SRC_ROOT)/mklib +LIBTOOL := $(LLVM_OBJ_ROOT)/mklib # # If we're not building a shared library, use the disable-shared tag with @@ -343,7 +270,17 @@ LLVMAS := $(LLVMTOOLCURRENT)/llvm-as # Include both the project headers and the LLVM headers for compilation and # dependency computation. # -CPPFLAGS += -I$(BUILD_SRC_ROOT)/include -I$(LLVM_SRC_ROOT)/include +# BUILD_OBJ_DIR : Files local to the particular object directory +# (locallly generated header files). +# BUILD_SRC_DIR : Files local to the particular source directory. +# BUILD_SRC_ROOT/include : Files global to the project. +# LLVM_OBJ_ROOT/include : config.h files generated by autoconf +# LEVEL/include : config.h files for the project +# LLVM_SRC_ROOT/include : Files global to LLVM. +# +CPPFLAGS += -I$(BUILD_OBJ_DIR) -I$(BUILD_SRC_DIR) -I$(LLVM_OBJ_ROOT)/include \ + -I$(BUILD_SRC_ROOT)/include -I$(LEVEL)/include \ + -I$(LLVM_SRC_ROOT)/include # By default, strip symbol information from executable ifndef KEEP_SYMBOLS @@ -355,7 +292,7 @@ endif CPPFLAGS += -D_GNU_SOURCE CompileWarnings := -Wall -W -Wwrite-strings -Wno-unused -CompileCommonOpts := $(CompileWarnings) -I$(LEVEL)/include -fshort-enums +CompileCommonOpts := $(CompileWarnings) -fshort-enums CompileOptimizeOpts := -O3 -DNDEBUG -finline-functions # @@ -417,23 +354,24 @@ AR = ${AR_PATH} cq # The local Makefile can list other Source files via ExtraSource = ... # ifndef Source -Source := $(ExtraSource) $(wildcard *.cpp *.c *.y *.l) +Source := $(notdir $(ExtraSource) $(wildcard $(SourceDir)/*.cpp \ + $(SourceDir)/*.c $(SourceDir)/*.y $(SourceDir)/*.l)) endif # # Libtool Objects # -Srcs := $(sort $(notdir $(basename $(Source)))) +Srcs := $(sort $(basename $(Source))) Objs := $(addsuffix .lo, $(Srcs)) ObjectsO := $(addprefix $(BUILD_OBJ_DIR)/Release/,$(Objs)) ObjectsP := $(addprefix $(BUILD_OBJ_DIR)/Profile/,$(Objs)) ObjectsG := $(addprefix $(BUILD_OBJ_DIR)/Debug/,$(Objs)) -ObjectsBC := $(addprefix $(BUILD_OBJ_DIR)/Bytecode/,$(addsuffix .bc, $(Srcs))) +ObjectsBC := $(addprefix $(BUILD_OBJ_DIR)/BytecodeObj/,$(addsuffix .bc, $(Srcs))) # # The real objects underlying the libtool objects # -RObjs := $(sort $(patsubst Debug/%.o, %.o, $(addsuffix .o,$(notdir $(basename $(Source)))))) +RObjs := $(sort $(patsubst Debug/%.o, %.o, $(addsuffix .o,$(basename $(Source))))) RObjectsO := $(addprefix $(BUILD_OBJ_DIR)/Release/,$(RObjs)) RObjectsP := $(addprefix $(BUILD_OBJ_DIR)/Profile/,$(RObjs)) RObjectsG := $(addprefix $(BUILD_OBJ_DIR)/Debug/,$(RObjs)) @@ -520,7 +458,7 @@ bytecodelib:: $(LIBNAME_BC) bytecodelib-install:: $(LLVMGCCDIR)/bytecode-libs/lib$(LIBRARYNAME).bc $(LLVMGCCDIR)/bytecode-libs/lib$(LIBRARYNAME).bc: $(LIBNAME_BC) - @echo ======= Installing $(LIBRARYNAME) bytecode library ======= + @${ECHO} ======= Installing $(LIBRARYNAME) bytecode library ======= cp $< $@ # Does the library want a .o version built? @@ -537,33 +475,37 @@ endif # Rules for building libraries #-------------------------------------------------------------------- -LinkBCLib := $(LLVMGCC) -shared +LinkBCLib := $(LLVMGCC) -shared -nostdlib ifdef EXPORTED_SYMBOL_LIST LinkBCLib += -Xlinker -internalize-public-api-list=$(EXPORTED_SYMBOL_LIST) else + ifdef EXPORTED_SYMBOL_FILE +LinkBCLib += -Xlinker -internalize-public-api-file=$(EXPORTED_SYMBOL_FILE) + else LinkBCLib += -Xlinker -disable-internalize + endif endif # Rule for building bytecode libraries. $(LIBNAME_BC): $(ObjectsBC) $(LibSubDirs) $(DESTLIBBYTECODE)/.dir - @echo ======= Linking $(LIBRARYNAME) bytecode library ======= + @${ECHO} ======= Linking $(LIBRARYNAME) bytecode library ======= $(VERB) $(LinkBCLib) -o $@ $(ObjectsBC) $(LibSubDirs) $(LibLinkOpts) # # Rules for building dynamically linked libraries. # $(LIBNAME_O): $(ObjectsO) $(LibSubDirs) $(DESTLIBRELEASE)/.dir - @echo ======= Linking $(LIBRARYNAME) dynamic release library ======= + @${ECHO} ======= Linking $(LIBRARYNAME) dynamic release library ======= $(VERB) $(Link) -o $*.la $(ObjectsO) $(LibSubDirs) $(LibLinkOpts) $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $*.la $(DESTLIBCURRENT) $(LIBNAME_P): $(ObjectsP) $(LibSubDirs) $(DESTLIBPROFILE)/.dir - @echo ======= Linking $(LIBRARYNAME) dynamic profile library ======= + @${ECHO} ======= Linking $(LIBRARYNAME) dynamic profile library ======= $(VERB) $(Link) -o $*.la $(ObjectsP) $(LibSubDirs) $(LibLinkOpts) $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $*.la $(DESTLIBCURRENT) $(LIBNAME_G): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir - @echo ======= Linking $(LIBRARYNAME) dynamic debug library ======= + @${ECHO} ======= Linking $(LIBRARYNAME) dynamic debug library ======= $(VERB) $(Link) -o $*.la $(ObjectsG) $(LibSubDirs) $(LibLinkOpts) $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $*.la $(DESTLIBCURRENT) @@ -571,17 +513,17 @@ $(LIBNAME_G): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir # Rules for building static archive libraries. # $(LIBNAME_AO): $(ObjectsO) $(LibSubDirs) $(DESTLIBRELEASE)/.dir - @echo ======= Linking $(LIBRARYNAME) archive release library ======= + @${ECHO} ======= Linking $(LIBRARYNAME) archive release library ======= @$(RM) -f $@ $(VERB) $(Link) -03 -o $@ $(ObjectsO) $(LibSubDirs) -static $(LIBNAME_AP): $(ObjectsP) $(LibSubDirs) $(DESTLIBPROFILE)/.dir - @echo ======= Linking $(LIBRARYNAME) archive profile library ======= + @${ECHO} ======= Linking $(LIBRARYNAME) archive profile library ======= @$(RM) -f $@ $(VERB) $(Link) -03 $(PROFILE) -o $@ $(ObjectsP) $(LibSubDirs) -static $(LIBNAME_AG): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir - @echo ======= Linking $(LIBRARYNAME) archive debug library ======= + @${ECHO} ======= Linking $(LIBRARYNAME) archive debug library ======= @$(RM) -f $@ $(VERB) $(Link) -g $(STRIP) -o $@ $(ObjectsG) $(LibSubDirs) -static @@ -601,15 +543,15 @@ $(LIBNAME_AG): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir # I think that is safe. # $(LIBNAME_OBJO): $(ObjectsO) $(LibSubDirs) $(DESTLIBRELEASE)/.dir - @echo "Linking $@" + @${ECHO} "Linking `basename $@`" $(VERB) $(Relink) -o $@ $(RObjectsO) $(LibSubDirs) $(LIBNAME_OBJP): $(ObjectsP) $(LibSubDirs) $(DESTLIBPROFILE)/.dir - @echo "Linking $@" + @${ECHO} "Linking `basename $@`" $(VERB) $(Relink) -o $@ $(RObjectsP) $(LibSubDirs) $(LIBNAME_OBJG): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir - @echo "Linking $@" + @${ECHO} "Linking `basename $@`" $(VERB) $(Relink) -o $@ $(RObjectsG) $(LibSubDirs) endif @@ -618,9 +560,9 @@ endif # Create a TAGS database for emacs #------------------------------------------------------------------------ -ifdef ETAGS +ifneq ($(ETAGS),false) ifeq ($(LEVEL), .) -SRCDIRS := $(wildcard include lib tools) +SRCDIRS := $(wildcard $(SourceDir)/include $(SourceDir)/lib $(SourceDir)/tools) tags: $(ETAGS) -l c++ `find $(SRCDIRS) -name '*.cpp' -o -name '*.h'` @@ -694,15 +636,15 @@ clean:: $(VERB) $(RM) -f $(TOOLEXENAMES) $(TOOLEXENAME_G): $(ObjectsG) $(USED_LIB_PATHS_G) $(DESTTOOLDEBUG)/.dir - @echo ======= Linking $(TOOLNAME) debug executable $(STRIP_WARN_MSG) ======= + @${ECHO} ======= Linking $(TOOLNAME) debug executable $(STRIP_WARN_MSG) ======= $(VERB) $(LinkG) -o $@ $(ObjectsG) $(LIB_OPTS_G) $(LINK_OPTS) $(LIBS) $(TOOLEXENAME_O): $(ObjectsO) $(USED_LIB_PATHS_O) $(DESTTOOLRELEASE)/.dir - @echo ======= Linking $(TOOLNAME) release executable ======= + @${ECHO} ======= Linking $(TOOLNAME) release executable ======= $(VERB) $(LinkO) -o $@ $(ObjectsO) $(LIB_OPTS_O) $(LINK_OPTS) $(LIBS) $(TOOLEXENAME_P): $(ObjectsP) $(USED_LIB_PATHS_P) $(DESTTOOLPROFILE)/.dir - @echo ======= Linking $(TOOLNAME) profile executable ======= + @${ECHO} ======= Linking $(TOOLNAME) profile executable ======= $(VERB) $(LinkP) -o $@ $(ObjectsP) $(LIB_OPTS_P) $(LINK_OPTS) $(LIBS) endif @@ -710,44 +652,44 @@ endif #--------------------------------------------------------- -.PRECIOUS: $(BUILD_OBJ_DIR)/Depend/.dir $(BUILD_OBJ_DIR)/Bytecode/.dir +.PRECIOUS: $(BUILD_OBJ_DIR)/Depend/.dir $(BUILD_OBJ_DIR)/BytecodeObj/.dir .PRECIOUS: $(BUILD_OBJ_DIR)/Debug/.dir $(BUILD_OBJ_DIR)/Release/.dir # Create .lo files in the ObjectFiles directory from the .cpp and .c files... -$(BUILD_OBJ_DIR)/Release/%.lo: $(SourceDir)%.cpp $(BUILD_OBJ_DIR)/Release/.dir - @echo "Compiling $<" +$(BUILD_OBJ_DIR)/Release/%.lo: %.cpp $(BUILD_OBJ_DIR)/Release/.dir + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileO) $< -o $@ -$(BUILD_OBJ_DIR)/Release/%.lo: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Release/.dir - @echo "Compiling $<" +$(BUILD_OBJ_DIR)/Release/%.lo: %.c $(BUILD_OBJ_DIR)/Release/.dir + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileCO) $< -o $@ -$(BUILD_OBJ_DIR)/Profile/%.lo: $(SourceDir)%.cpp $(BUILD_OBJ_DIR)/Profile/.dir - @echo "Compiling $<" +$(BUILD_OBJ_DIR)/Profile/%.lo: %.cpp $(BUILD_OBJ_DIR)/Profile/.dir + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileP) $< -o $@ -$(BUILD_OBJ_DIR)/Profile/%.lo: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Profile/.dir - @echo "Compiling $<" +$(BUILD_OBJ_DIR)/Profile/%.lo: %.c $(BUILD_OBJ_DIR)/Profile/.dir + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileCP) $< -o $@ -$(BUILD_OBJ_DIR)/Debug/%.lo: $(SourceDir)%.cpp $(BUILD_OBJ_DIR)/Debug/.dir - @echo "Compiling $<" +$(BUILD_OBJ_DIR)/Debug/%.lo: %.cpp $(BUILD_OBJ_DIR)/Debug/.dir + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileG) $< -o $@ -$(BUILD_OBJ_DIR)/Debug/%.lo: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Debug/.dir - @echo "Compiling $<" +$(BUILD_OBJ_DIR)/Debug/%.lo: %.c $(BUILD_OBJ_DIR)/Debug/.dir + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileCG) $< -o $@ -$(BUILD_OBJ_DIR)/Bytecode/%.bc: $(SourceDir)%.cpp $(BUILD_OBJ_DIR)/Bytecode/.dir $(LCC1XX) - @echo "Compiling $< to bytecode" +$(BUILD_OBJ_DIR)/BytecodeObj/%.bc: %.cpp $(BUILD_OBJ_DIR)/BytecodeObj/.dir $(LCC1XX) + @${ECHO} "Compiling `basename $<` to bytecode" $(VERB) $(LLVMGXX) $(CompileWarnings) $(CPPFLAGS) -c $< -o $@ -$(BUILD_OBJ_DIR)/Bytecode/%.bc: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Bytecode/.dir $(LCC1) - @echo "Compiling $< to bytecode" +$(BUILD_OBJ_DIR)/BytecodeObj/%.bc: %.c $(BUILD_OBJ_DIR)/BytecodeObj/.dir $(LCC1) + @${ECHO} "Compiling `basename $<` to bytecode" $(VERB) $(LLVMGCC) $(CompileWarnings) $(CPPFLAGS) -c $< -o $@ -$(BUILD_OBJ_DIR)/Bytecode/%.bc: $(SourceDir)%.ll $(BUILD_OBJ_DIR)/Bytecode/.dir $(LLVMAS) - @echo "Compiling $< to bytecode" +$(BUILD_OBJ_DIR)/BytecodeObj/%.bc: %.ll $(BUILD_OBJ_DIR)/BytecodeObj/.dir $(LLVMAS) + @${ECHO} "Compiling `basename $<` to bytecode" $(VERB) $(LLVMAS) $< -f -o $@ @@ -769,7 +711,7 @@ YACC_OUTPUT = $(addprefix $(YACC_FILES:%.y=%), .h .cpp .output) # FIXME. (f.e. char Buffer[10000] ) # %.cpp: %.l - @echo Flex\'ing $<... + @${ECHO} Flexing $< $(VERB) $(FLEX) -t $< | \ $(SED) '/^find_rule/d' | \ $(SED) 's/void yyunput/inline void yyunput/' | \ @@ -784,8 +726,8 @@ YACC_OUTPUT = $(addprefix $(YACC_FILES:%.y=%), .h .cpp .output) %.c: %.y # Cancel built-in rules for yacc %.h: %.y # Cancel built-in rules for yacc %.cpp %.h : %.y - @echo Bison\'ing $<... - $(VERB) $(BISON) -v -d -p $(<:%Parser.y=%) $*.y + @${ECHO} Bisoning $< + $(VERB) $(BISON) -v -d -p $( /dev/null || ${MV} -f $*.tab.c $*.cpp $(VERB) cmp -s $*.tab.h $*.h > /dev/null || ${MV} -f $*.tab.h $*.h @# If the files were not updated, don't leave them lying around... @@ -797,7 +739,7 @@ YACC_OUTPUT = $(addprefix $(YACC_FILES:%.y=%), .h .cpp .output) @$(DATE) > $@ # To create postscript files from dot files... -ifdef DOT +ifneq ($(DOT),false) %.ps: %.dot ${DOT} -Tps < $< > $@ else @@ -805,11 +747,18 @@ else ${ECHO} "Cannot build $@: The program dot is not installed" endif +# +# This rules ensures that header files that are removed still have a rule for +# which they can be "generated." This allows make to ignore them and +# reproduce the dependency lists. +# +%.h:: ; + # 'make clean' nukes the tree clean:: $(VERB) $(RM) -rf $(BUILD_OBJ_DIR)/Debug $(BUILD_OBJ_DIR)/Release $(VERB) $(RM) -rf $(BUILD_OBJ_DIR)/Profile $(BUILD_OBJ_DIR)/Depend - $(VERB) $(RM) -rf $(BUILD_OBJ_DIR)/Bytecode + $(VERB) $(RM) -rf $(BUILD_OBJ_DIR)/BytecodeObj $(VERB) $(RM) -f core core.[0-9][0-9]* *.o *.d *.so *~ *.flc $(VERB) $(RM) -f $(LEX_OUTPUT) $(YACC_OUTPUT) @@ -824,18 +773,26 @@ ifndef DISABLE_AUTO_DEPENDENCIES # If dependencies were generated for the file that included this file, # include the dependencies now... # -SourceBaseNames := $(basename $(notdir $(filter-out Debug/%, $(Source)))) +SourceBaseNames := $(basename $(Source)) SourceDepend := $(SourceBaseNames:%=$(BUILD_OBJ_DIR)/Depend/%.d) # Create dependencies for the *.cpp files... -$(BUILD_OBJ_DIR)/Depend/%.d: $(SourceDir)%.cpp $(BUILD_OBJ_DIR)/Depend/.dir +$(BUILD_OBJ_DIR)/Depend/%.d: %.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... -$(BUILD_OBJ_DIR)/Depend/%.d: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Depend/.dir +$(BUILD_OBJ_DIR)/Depend/%.d: %.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|[^\]$$|&::|' >> $@ + +# +# Autoconf Dependencies. +# +$(LLVM_OBJ_ROOT)/config.status:: $(LLVM_SRC_ROOT)/configure + @${ECHO} "****************************************************************" + @${ECHO} " You need to re-run $(LLVM_SRC_ROOT)/configure" + @${ECHO} " in directory $(LLVM_OBJ_ROOT)" + @${ECHO} "****************************************************************" + $(VERB) exit 1 # # Include dependencies generated from C/C++ source files, but not if we @@ -843,9 +800,7 @@ $(BUILD_OBJ_DIR)/Depend/%.d: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Depend/.dir # ifneq ($(MAKECMDGOALS),clean) ifneq ($(MAKECMDGOALS),distclean) -ifneq ($(SourceDepend),) --include $(SourceDepend) -endif +-include /dev/null $(SourceDepend) endif endif