X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Makefile.rules;h=d198d683f2f49d21e43f41818a5d228584330b47;hb=d9aa7836e23e518388ed7426ce3d19111074e0bc;hp=7da6f5737ae67f71fca51a9b7038796efda8db76;hpb=6fdaf4a219cd8ae3ff51fd5b731f8fce1b97d336;p=oota-llvm.git diff --git a/Makefile.rules b/Makefile.rules index 7da6f5737ae..d198d683f2f 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -1,11 +1,11 @@ -#===-- Makefile.rules - 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. @@ -78,6 +78,7 @@ ifdef BYTECODE_LIBRARY # if BYTECODE_LIBRARY is specified, the default is to build the bytecode lib all:: bytecodelib install:: install-bytecode-library +install-bytecode:: install-bytecode-library endif # Default Rule: Make sure it's also a :: rule @@ -92,6 +93,9 @@ test:: # Default rule for building only bytecode. bytecode:: +# Default rule for installing only bytecode. +install-bytecode:: + # Print out the directories used for building prdirs:: @${ECHO} "Build Source Root: " $(BUILD_SRC_ROOT) @@ -240,10 +244,10 @@ endif #-------------------------------------------------------------------------- # Utilities used while building the LLVM tree, which live in the utils dir # -BURG := $(LLVMTOOLCURRENT)/burg +BURG := $(LLVMTOOLCURRENT)/burg$(EXEEXT) RunBurg := $(BURG) $(BURG_OPTS) -TBLGEN := $(LLVMTOOLCURRENT)/tblgen -LGCCLDPROG := $(LLVMTOOLCURRENT)/gccld +TBLGEN := $(LLVMTOOLCURRENT)/tblgen$(EXEEXT) +LGCCLDPROG := $(LLVMTOOLCURRENT)/gccld$(EXEEXT) #-------------------------------------------------------------------------- # The LLVM GCC front-end in C and C++ flavors @@ -255,7 +259,7 @@ LLVMGXX := PATH=$(LLVMTOOLCURRENT):$(PATH) $(LLVMGCCDIR)/bin/g++ # Some of the compiled LLVM tools which are used for compilation of runtime # libraries. # -LLVMAS := $(LLVMTOOLCURRENT)/llvm-as +LLVMAS := $(LLVMTOOLCURRENT)/llvm-as$(EXEEXT) ########################################################################### @@ -289,13 +293,16 @@ CPPFLAGS += -D_GNU_SOURCE # Pull in limit macros from stdint.h, even in C++: CPPFLAGS += -D__STDC_LIMIT_MACROS +### FIXME: this is GCC specific +CPPFLAGS += -DATTR_DEPRECATED='__attribute__ ((deprecated))' + CompileCommonOpts := -Wall -W -Wwrite-strings -Wno-unused CompileOptimizeOpts := -O3 -DNDEBUG -finline-functions # # Compile commands with libtool. # -Compile := $(LIBTOOL) --mode=compile $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(CompileCommonOpts) +Compile := $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(CompileCommonOpts) CompileC := $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(CompileCommonOpts) # Compile a cpp file, don't link... @@ -316,7 +323,7 @@ CompileCP := $(CompileC) $(CompileOptimizeOpts) $(PROFILE) # Link final executable # (Note that we always link with the C++ compiler). # -Link := $(LIBTOOL) --mode=link $(CXX) +Link := $(LIBTOOL) --tag=CXX --mode=link $(CXX) # link both projlib and llvmlib libraries LinkG := $(Link) -g -L$(PROJLIBDEBUGSOURCE) -L$(LLVMLIBDEBUGSOURCE) $(STRIP) @@ -334,7 +341,7 @@ LinkP := $(LinkP) $(TOOLLINKOPTSB) endif # Create one .o file from a bunch of .o files... -Relink := ${LIBTOOL} --mode=link $(CXX) +Relink := ${LIBTOOL} --tag=CXX --mode=link $(CXX) # # Configure where the item being compiled should go. @@ -352,7 +359,7 @@ Depend := $(CXX) -MM -I$(LEVEL)/include $(CPPFLAGS) DependC := $(CC) -MM -I$(LEVEL)/include $(CPPFLAGS) # Archive a bunch of .o files into a .a file... -AR = ${AR_PATH} cq +AR = $(AR_PATH) cr #---------------------------------------------------------- @@ -388,14 +395,14 @@ RObjectsG := $(addprefix $(BUILD_OBJ_DIR)/Debug/,$(RObjs)) #--------------------------------------------------------- ifdef DIRS -all install clean test bytecode stripped-bytecode:: +all install clean test bytecode stripped-bytecode install-bytecode:: $(VERB) for dir in ${DIRS}; do \ if [ ! -f $$dir/Makefile ]; \ then \ $(MKDIR) $$dir; \ cp $(SourceDir)/$$dir/Makefile $$dir/Makefile; \ fi; \ - ($(MAKE) -C $$dir $@) || exit 1; \ + ($(MAKE) -C $$dir $@ $(MFLAGS)) || exit 1; \ done endif @@ -407,19 +414,20 @@ clean :: $(addsuffix /.makeclean , $(PARALLEL_DIRS)) test :: $(addsuffix /.maketest , $(PARALLEL_DIRS)) bytecode :: $(addsuffix /.makebytecode, $(PARALLEL_DIRS)) stripped-bytecode :: $(addsuffix /.makestripped-bytecode, $(PARALLEL_DIRS)) +install-bytecode :: $(addsuffix /.makeinstall-bytecode, $(PARALLEL_DIRS)) -%/.makeall %/.makeinstall %/.makeclean %/.maketest %/.makebytecode %/.makestripped-bytecode: +%/.makeall %/.makeinstall %/.makeclean %/.maketest %/.makebytecode %/.makestripped-bytecode %/.makeinstall-bytecode: $(VERB) if [ ! -f $(@D)/Makefile ]; \ then \ $(MKDIR) $(@D); \ cp $(SourceDir)/$(@D)/Makefile $(@D)/Makefile; \ fi; \ - $(MAKE) -C $(@D) $(subst $(@D)/.make,,$@) + $(MAKE) -C $(@D) $(subst $(@D)/.make,,$@) $(MFLAGS) endif # Handle directories that may or may not exist ifdef OPTIONAL_DIRS -all install clean test bytecode stripped-bytecode:: +all install clean test bytecode stripped-bytecode install-bytecode:: $(VERB) for dir in ${OPTIONAL_DIRS}; do \ if [ -d $(SourceDir)/$$dir ]; \ then\ @@ -428,7 +436,7 @@ all install clean test bytecode stripped-bytecode:: $(MKDIR) $$dir; \ cp $(SourceDir)/$$dir/Makefile $$dir/Makefile; \ fi; \ - ($(MAKE) -C$$dir $@) || exit 1; \ + ($(MAKE) -C$$dir $@ $(MFLAGS)) || exit 1; \ fi \ done endif @@ -454,6 +462,11 @@ endif # of it. For this reason, sometimes it's useful to use libraries as .a files. ########################################################################### +# Install rule for making bytecode library directory if it does not exist. +# Trigger this by making libraries that need to be installed here depend on it. +$(DESTDIR)$(bytecode_libdir): + $(MKDIR) $@ + ifdef LIBRARYNAME # Make sure there isn't any extranous whitespace on the LIBRARYNAME option @@ -482,12 +495,8 @@ LIBNAME_BC := $(DESTLIBBYTECODE)/lib$(LIBRARYNAME).bc # dynamic target builds a shared object version of the library... dynamic:: $(LIBNAME_CUR) bytecodelib:: $(LIBNAME_BC) -bytecode_libdir = $(LLVMGCCDIR)/bytecode-libs install-bytecode-library:: $(DESTDIR)$(bytecode_libdir)/lib$(LIBRARYNAME).bc -$(DESTDIR)$(bytecode_libdir): - $(MKDIR) $@ - $(DESTDIR)$(bytecode_libdir)/lib$(LIBRARYNAME).bc: $(LIBNAME_BC) $(DESTDIR)$(bytecode_libdir) @${ECHO} ======= Installing $(LIBRARYNAME) bytecode library ======= cp $< $@ @@ -547,7 +556,7 @@ $(LIBNAME_G): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir @${ECHO} ======= Finished building $(LIBRARYNAME) dynamic debug library ======= install-dynamic-library: $(LIBNAME_CUR) - $(MKDIR) $(libdir) + $(MKDIR) $(DESTDIR)$(libdir) $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_CUR) $(DESTDIR)$(libdir)/lib$(LIBRARYNAME)$(SHLIBEXT) # @@ -572,7 +581,7 @@ $(LIBNAME_AG): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir @${ECHO} ======= Finished building $(LIBRARYNAME) archive debug library ======= install-archive-library: $(LIBNAME_ACUR) - $(MKDIR) $(libdir) + $(MKDIR) $(DESTDIR)$(libdir) $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_ACUR) $(DESTDIR)$(libdir)/lib$(LIBRARYNAME).a # @@ -602,7 +611,7 @@ $(LIBNAME_OBJG): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir $(VERB) $(Relink) -o $@ $(RObjectsG) $(LibSubDirs) install-single-object-library: $(LIBNAME_OBJCUR) - $(MKDIR) $(libdir) + $(MKDIR) $(DESTDIR)$(libdir) $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_OBJCUR) $(DESTDIR)$(libdir)/$(LIBRARYNAME).o endif @@ -685,7 +694,7 @@ $(TOOLEXENAME_P): $(ObjectsP) $(USED_LIB_PATHS_P) $(DESTTOOLPROFILE)/.dir @${ECHO} ======= Finished building $(TOOLNAME) profile executable ======= install:: $(TOOLEXENAMES) - $(MKDIR) $(bindir) + $(MKDIR) $(DESTDIR)$(bindir) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) -c -m 0755 $(TOOLEXENAMES) $(DESTDIR)$(bindir)/$(TOOLNAME) endif @@ -695,6 +704,7 @@ endif #--------------------------------------------------------- .PRECIOUS: $(BUILD_OBJ_DIR)/Depend/.dir $(BUILD_OBJ_DIR)/BytecodeObj/.dir .PRECIOUS: $(BUILD_OBJ_DIR)/Debug/.dir $(BUILD_OBJ_DIR)/Release/.dir +.PRECIOUS: $(BUILD_OBJ_DIR)/Profile/.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