X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=Makefile.rules;h=1fbcf43ac0439c1f14d71abac35c26112da18c03;hb=0898c78a52e04f94de5576d380d73517a9ea1b05;hp=7aed7dc67da268cc12438231e86344e968fe68b3;hpb=b2f76bf93e62eaf6956f423e68624e9318a91c07;p=oota-llvm.git diff --git a/Makefile.rules b/Makefile.rules index 7aed7dc67da..1fbcf43ac04 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. @@ -49,10 +56,8 @@ # # Set the VPATH so that we can find source files. -# Also set $SouceDir for backwards compatibility # -VPATH=$(BUILD_SRC_DIR) -SourceDir=$(BUILD_SRC_DIR) +VPATH=$(SourceDir) ########################################################################### # Default Targets: @@ -60,15 +65,19 @@ SourceDir=$(BUILD_SRC_DIR) # 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 +install:: install-dynamic endif ifdef BYTECODE_LIBRARY # if BYTECODE_LIBRARY is specified, the default is to build the bytecode lib all:: bytecodelib -install:: bytecodelib-install +install:: install-bytecode-library endif # Default Rule: Make sure it's also a :: rule @@ -85,12 +94,12 @@ bytecode:: # Print out the directories used for building prdirs:: - @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: @@ -108,7 +117,7 @@ prdirs:: # slightly since GNU Make will not try to find implicit rules for targets # which are marked as Phony. # -.PHONY: all dynamic bytecodelib bytecodelib-install +.PHONY: all dynamic bytecodelib install-bytecode-library .PHONY: clean distclean install test bytecode prdirs ########################################################################### @@ -121,10 +130,6 @@ prdirs:: # Variables derived from configuration options... #-------------------------------------------------------------------- -#BinInstDir=/usr/local/bin -#LibInstDir=/usr/local/lib/xxx -#DocInstDir=/usr/doc/xxx - BURG_OPTS = -I ifdef ENABLE_PROFILING @@ -235,9 +240,10 @@ endif #-------------------------------------------------------------------------- # Utilities used while building the LLVM tree, which live in the utils dir # -BURG := $(LLVMTOOLCURRENT)/burg -RunBurg := $(BURG) $(BURG_OPTS) -TBLGEN := $(LLVMTOOLCURRENT)/tblgen +BURG := $(LLVMTOOLCURRENT)/burg +RunBurg := $(BURG) $(BURG_OPTS) +TBLGEN := $(LLVMTOOLCURRENT)/tblgen +LGCCLDPROG := $(LLVMTOOLCURRENT)/gccld #-------------------------------------------------------------------------- # The LLVM GCC front-end in C and C++ flavors @@ -266,11 +272,13 @@ LLVMAS := $(LLVMTOOLCURRENT)/llvm-as # (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. -# LLVM_OBJ_ROOT/include : config.h files generated by autoconf # -CPPFLAGS += -I$(BUILD_OBJ_DIR) -I$(BUILD_SRC_DIR) -I$(BUILD_SRC_ROOT)/include -I$(LEVEL)/include -I$(LLVM_SRC_ROOT)/include -I$(LLVM_OBJ_ROOT)/include +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 @@ -278,11 +286,12 @@ STRIP = $(PLATFORMSTRIPOPTS) STRIP_WARN_MSG = "(without symbols)" endif -# Allow gnu extensions... +# Allow GNU extensions: CPPFLAGS += -D_GNU_SOURCE +# Pull in limit macros from stdint.h, even in C++: +CPPFLAGS += -D__STDC_LIMIT_MACROS -CompileWarnings := -Wall -W -Wwrite-strings -Wno-unused -CompileCommonOpts := $(CompileWarnings) -fshort-enums +CompileCommonOpts := -Wall -W -Wwrite-strings -Wno-unused CompileOptimizeOpts := -O3 -DNDEBUG -finline-functions # @@ -316,6 +325,16 @@ LinkG := $(Link) -g -L$(PROJLIBDEBUGSOURCE) -L$(LLVMLIBDEBUGSOURCE) $(STRIP) LinkO := $(Link) -O3 -L$(PROJLIBRELEASESOURCE) -L$(LLVMLIBRELEASESOURCE) LinkP := $(Link) -O3 -L$(PROJLIBPROFILESOURCE) -L$(LLVMLIBPROFILESOURCE) $(PROFILE) +# TOOLLINKOPTSB to pass options to the linker like library search path etc +# Note that this is different from TOOLLINKOPTS, these options +# are passed to the linker *before* the USEDLIBS options are passed. +# e.g. usage TOOLLINKOPTSB = -L/home/xxx/lib +ifdef TOOLLINKOPTSB +LinkG := $(LinkG) $(TOOLLINKOPTSB) +LinkO := $(LinkO) $(TOOLLINKOPTSB) +LinkP := $(LinkP) $(TOOLLINKOPTSB) +endif + # Create one .o file from a bunch of .o files... Relink := ${LIBTOOL} --mode=link $(CXX) @@ -344,18 +363,18 @@ AR = ${AR_PATH} cq # The local Makefile can list other Source files via ExtraSource = ... # ifndef Source -Source := $(notdir $(ExtraSource) $(wildcard $(SourceDir)/*.cpp $(SourceDir)/*.c $(SourceDir)/*.y $(SourceDir)/*.l)) +Source := $(notdir $(ExtraSource) $(wildcard $(SourceDir)/*.cpp \ + $(SourceDir)/*.c $(SourceDir)/*.y $(SourceDir)/*.l)) endif # # Libtool Objects # 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))) +ObjectsO := $(Srcs:%=$(BUILD_OBJ_DIR)/Release/%.lo) +ObjectsP := $(Srcs:%=$(BUILD_OBJ_DIR)/Profile/%.lo) +ObjectsG := $(Srcs:%=$(BUILD_OBJ_DIR)/Debug/%.lo) +ObjectsBC := $(Srcs:%=$(BUILD_OBJ_DIR)/BytecodeObj/%.bc) # # The real objects underlying the libtool objects @@ -370,9 +389,14 @@ RObjectsG := $(addprefix $(BUILD_OBJ_DIR)/Debug/,$(RObjs)) #--------------------------------------------------------- ifdef DIRS -all install clean test bytecode :: +all install clean test bytecode stripped-bytecode:: $(VERB) for dir in ${DIRS}; do \ - (cd $$dir; $(MAKE) $@) || exit 1; \ + if [ ! -f $$dir/Makefile ]; \ + then \ + $(MKDIR) $$dir; \ + cp $(SourceDir)/$$dir/Makefile $$dir/Makefile; \ + fi; \ + ($(MAKE) -C $$dir $@) || exit 1; \ done endif @@ -383,18 +407,29 @@ install :: $(addsuffix /.makeinstall , $(PARALLEL_DIRS)) clean :: $(addsuffix /.makeclean , $(PARALLEL_DIRS)) test :: $(addsuffix /.maketest , $(PARALLEL_DIRS)) bytecode :: $(addsuffix /.makebytecode, $(PARALLEL_DIRS)) - -%/.makeall %/.makeinstall %/.makeclean %/.maketest %/.makebytecode: - $(VERB) cd $(@D); $(MAKE) $(subst $(@D)/.make,,$@) +stripped-bytecode :: $(addsuffix /.makestripped-bytecode, $(PARALLEL_DIRS)) + +%/.makeall %/.makeinstall %/.makeclean %/.maketest %/.makebytecode %/.makestripped-bytecode: + $(VERB) if [ ! -f $(@D)/Makefile ]; \ + then \ + $(MKDIR) $(@D); \ + cp $(SourceDir)/$(@D)/Makefile $(@D)/Makefile; \ + fi; \ + $(MAKE) -C $(@D) $(subst $(@D)/.make,,$@) endif # Handle directories that may or may not exist ifdef OPTIONAL_DIRS -all install clean test bytecode :: +all install clean test bytecode stripped-bytecode:: $(VERB) for dir in ${OPTIONAL_DIRS}; do \ - if [ -d $$dir ]; \ + if [ -d $(SourceDir)/$$dir ]; \ then\ - (cd $$dir; $(MAKE) $@) || exit 1; \ + if [ ! -f $$dir/Makefile ]; \ + then \ + $(MKDIR) $$dir; \ + cp $(SourceDir)/$$dir/Makefile $$dir/Makefile; \ + fi; \ + ($(MAKE) -C$$dir $@) || exit 1; \ fi \ done endif @@ -428,90 +463,114 @@ LIBRARYNAME := $(strip $(LIBRARYNAME)) LIBNAME_O := $(DESTLIBRELEASE)/lib$(LIBRARYNAME).so LIBNAME_P := $(DESTLIBPROFILE)/lib$(LIBRARYNAME).so LIBNAME_G := $(DESTLIBDEBUG)/lib$(LIBRARYNAME).so +LIBNAME_CUR := $(DESTLIBCURRENT)/lib$(LIBRARYNAME).so LIBNAME_AO := $(DESTLIBRELEASE)/lib$(LIBRARYNAME).a LIBNAME_AP := $(DESTLIBPROFILE)/lib$(LIBRARYNAME).a LIBNAME_AG := $(DESTLIBDEBUG)/lib$(LIBRARYNAME).a +LIBNAME_ACUR := $(DESTLIBCURRENT)/lib$(LIBRARYNAME).a LIBNAME_OBJO := $(DESTLIBRELEASE)/$(LIBRARYNAME).o LIBNAME_OBJP := $(DESTLIBPROFILE)/$(LIBRARYNAME).o LIBNAME_OBJG := $(DESTLIBDEBUG)/$(LIBRARYNAME).o +LIBNAME_OBJCUR := $(DESTLIBCURRENT)/$(LIBRARYNAME).o LIBNAME_BC := $(DESTLIBBYTECODE)/lib$(LIBRARYNAME).bc + #-------------------------------------------------------------------- # Library Targets # Modify the top level targets to build the desired libraries. #-------------------------------------------------------------------- # dynamic target builds a shared object version of the library... -dynamic:: $(DESTLIBCURRENT)/lib$(LIBRARYNAME).so +dynamic:: $(LIBNAME_CUR) bytecodelib:: $(LIBNAME_BC) -bytecodelib-install:: $(LLVMGCCDIR)/bytecode-libs/lib$(LIBRARYNAME).bc +install-bytecode-library:: $(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? ifndef DONT_BUILD_RELINKED -all:: $(DESTLIBCURRENT)/$(LIBRARYNAME).o +all:: $(LIBNAME_OBJCUR) +install:: install-single-object-library endif # Does the library want an archive version built? ifdef BUILD_ARCHIVE -all:: $(DESTLIBCURRENT)/lib$(LIBRARYNAME).a +all:: $(LIBNAME_ACUR) +install:: install-archive-library 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) + @${ECHO} ======= Finished building $(LIBRARYNAME) bytecode library ======= # # 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) + @${ECHO} ======= Finished building $(LIBRARYNAME) dynamic release library ======= $(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) + @${ECHO} ======= Finished building $(LIBRARYNAME) dynamic profile library ======= $(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) + @${ECHO} ======= Finished building $(LIBRARYNAME) dynamic debug library ======= + +install-dynamic-library: $(LIBNAME_CUR) + $(MKDIR) $(libdir) + $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_CUR) $(libdir)/lib$(LIBRARYNAME).so # # 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 + @${ECHO} Finished building $(LIBRARYNAME) archive release library ======= $(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 + @${ECHO} ======= Finished building $(LIBRARYNAME) archive profile library ======= $(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 + @${ECHO} ======= Finished building $(LIBRARYNAME) archive debug library ======= +install-archive-library: $(LIBNAME_ACUR) + $(MKDIR) $(libdir) + $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_ACUR) $(libdir)/lib$(LIBRARYNAME).a # # Rules for building .o libraries. @@ -528,24 +587,28 @@ $(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) +install-single-object-library: $(LIBNAME_OBJCUR) + $(MKDIR) $(libdir) + $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_OBJCUR) $(libdir)/$(LIBRARYNAME).o + endif #------------------------------------------------------------------------ # Create a TAGS database for emacs #------------------------------------------------------------------------ -ifdef ETAGS +ifneq ($(ETAGS),false) ifeq ($(LEVEL), .) SRCDIRS := $(wildcard $(SourceDir)/include $(SourceDir)/lib $(SourceDir)/tools) @@ -621,60 +684,67 @@ 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) + @${ECHO} ======= Finished building $(TOOLNAME) debug executable $(STRIP_WARN_MSG) ======= $(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) + @${ECHO} ======= Finished building $(TOOLNAME) release executable ======= $(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) + @${ECHO} ======= Finished building $(TOOLNAME) profile executable ======= + +install:: $(TOOLEXENAMES) + $(MKDIR) $(bindir) + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) -c -m 0755 $(TOOLEXENAMES) $(bindir)/$(TOOLNAME) 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: %.cpp $(BUILD_OBJ_DIR)/Release/.dir - @echo "Compiling $<" + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileO) $< -o $@ $(BUILD_OBJ_DIR)/Release/%.lo: %.c $(BUILD_OBJ_DIR)/Release/.dir - @echo "Compiling $<" + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileCO) $< -o $@ $(BUILD_OBJ_DIR)/Profile/%.lo: %.cpp $(BUILD_OBJ_DIR)/Profile/.dir - @echo "Compiling $<" + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileP) $< -o $@ $(BUILD_OBJ_DIR)/Profile/%.lo: %.c $(BUILD_OBJ_DIR)/Profile/.dir - @echo "Compiling $<" + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileCP) $< -o $@ $(BUILD_OBJ_DIR)/Debug/%.lo: %.cpp $(BUILD_OBJ_DIR)/Debug/.dir - @echo "Compiling $<" + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileG) $< -o $@ $(BUILD_OBJ_DIR)/Debug/%.lo: %.c $(BUILD_OBJ_DIR)/Debug/.dir - @echo "Compiling $<" + @${ECHO} "Compiling `basename $<`" $(VERB) $(CompileCG) $< -o $@ -$(BUILD_OBJ_DIR)/Bytecode/%.bc: %.cpp $(BUILD_OBJ_DIR)/Bytecode/.dir $(LCC1XX) - @echo "Compiling $< to bytecode" - $(VERB) $(LLVMGXX) $(CompileWarnings) $(CPPFLAGS) -c $< -o $@ +$(BUILD_OBJ_DIR)/BytecodeObj/%.bc: %.cpp $(BUILD_OBJ_DIR)/BytecodeObj/.dir $(LCC1XX) + @${ECHO} "Compiling `basename $<` to bytecode" + $(VERB) $(LLVMGXX) $(CompileCommonOpts) $(CPPFLAGS) -c $< -o $@ -$(BUILD_OBJ_DIR)/Bytecode/%.bc: %.c $(BUILD_OBJ_DIR)/Bytecode/.dir $(LCC1) - @echo "Compiling $< to bytecode" - $(VERB) $(LLVMGCC) $(CompileWarnings) $(CPPFLAGS) -c $< -o $@ +$(BUILD_OBJ_DIR)/BytecodeObj/%.bc: %.c $(BUILD_OBJ_DIR)/BytecodeObj/.dir $(LCC1) + @${ECHO} "Compiling `basename $<` to bytecode" + $(VERB) $(LLVMGCC) $(CompileCommonOpts) $(CPPFLAGS) -c $< -o $@ -$(BUILD_OBJ_DIR)/Bytecode/%.bc: %.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 $@ @@ -696,7 +766,7 @@ YACC_OUTPUT = $(addprefix $(YACC_FILES:%.y=%), .h .cpp .output) # FIXME. (f.e. char Buffer[10000] ) # %.cpp: %.l - @echo Flexing $< + @${ECHO} Flexing $< $(VERB) $(FLEX) -t $< | \ $(SED) '/^find_rule/d' | \ $(SED) 's/void yyunput/inline void yyunput/' | \ @@ -711,7 +781,7 @@ 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 Bisoning $< + @${ECHO} "Bisoning `basename $<`" $(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 @@ -724,7 +794,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 @@ -737,13 +807,13 @@ endif # which they can be "generated." This allows make to ignore them and # reproduce the dependency lists. # -%.h:: +%.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) @@ -763,11 +833,28 @@ SourceDepend := $(SourceBaseNames:%=$(BUILD_OBJ_DIR)/Depend/%.d) # Create dependencies for the *.cpp files... $(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:|\.lo:|' | $(SED) 's|$*\.lo *|$(BUILD_OBJ_DIR)/Release/& $(BUILD_OBJ_DIR)/Profile/& $(BUILD_OBJ_DIR)/Debug/& $(BUILD_OBJ_DIR)/Depend/$(@F)|g' > $@ # Create dependencies for the *.c files... $(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) $(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' > $@ + +# +# 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 + +# If the Makefile in the source tree has been updated, copy it over into the +# build tree. +Makefile :: $(BUILD_SRC_DIR)/Makefile + @${ECHO} "===== Updating Makefile from source dir: `dirname $<` =====" + $(MKDIR) $(@D) + cp -f $< $@ # # Include dependencies generated from C/C++ source files, but not if we