X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=Makefile.rules;h=393ce48d07b6ca60abf88b8e3500b869eebe37d6;hb=85c08351cec796d541c18435c6e6c0edec343e93;hp=c8a831161e473c6fbee979d6fd8c812c7625f7a6;hpb=f313ea7da4ddc083de89d1df1fe49ec6a06948e0;p=oota-llvm.git diff --git a/Makefile.rules b/Makefile.rules index c8a831161e4..393ce48d07b 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. @@ -244,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 @@ -256,10 +256,25 @@ LLVMGCC := PATH=$(LLVMTOOLCURRENT):$(PATH) $(LLVMGCCDIR)/bin/gcc 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 +# The compiled LLVM tools +# + +LLVMAS := $(LLVMTOOLCURRENT)/llvm-as$(EXEEXT) +# Find the location of the platform specific LLVM GCC libraries +LLVMGCCLIBDIR=$(dir $(shell $(LLVMGCC) -print-file-name=libgcc.a)) +# LLVM Tool Definitions (LLVMGCC, LLVMGXX, LLVMAS are provided by +# Makefile.rules) +LLI = $(LLVMTOOLCURRENT)/lli$(EXEEXT) +LLC = $(LLVMTOOLCURRENT)/llc$(EXEEXT) +LGCCAS = $(LLVMTOOLCURRENT)/gccas$(EXEEXT) +LGCCLD = $(LGCCLDPROG) -L$(LLVMGCCLIBDIR) -L$(LLVMGCCDIR)/lib +LDIS = $(LLVMTOOLCURRENT)/llvm-dis$(EXEEXT) +LOPT = $(LLVMTOOLCURRENT)/opt$(EXEEXT) +LLINK = $(LLVMTOOLCURRENT)/llvm-link$(EXEEXT) +LPROF = $(LLVMTOOLCURRENT)/llvm-prof$(EXEEXT) +LANALYZE = $(LLVMTOOLCURRENT)/analyze$(EXEEXT) +LBUGPOINT = $(LLVMTOOLCURRENT)/bugpoint$(EXEEXT) +LLVMC = $(LLVMTOOLCURRENT)/llvmc$(EXEEXT) ########################################################################### @@ -293,16 +308,13 @@ 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 += -DDEPRECATED='__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... @@ -323,7 +335,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) @@ -341,7 +353,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. @@ -402,7 +414,7 @@ all install clean test bytecode stripped-bytecode install-bytecode:: $(MKDIR) $$dir; \ cp $(SourceDir)/$$dir/Makefile $$dir/Makefile; \ fi; \ - ($(MAKE) -C $$dir $@) || exit 1; \ + ($(MAKE) -C $$dir $@ $(MFLAGS)) || exit 1; \ done endif @@ -422,7 +434,7 @@ install-bytecode :: $(addsuffix /.makeinstall-bytecode, $(PARALLEL_DIRS)) $(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 @@ -436,11 +448,27 @@ all install clean test bytecode stripped-bytecode install-bytecode:: $(MKDIR) $$dir; \ cp $(SourceDir)/$$dir/Makefile $$dir/Makefile; \ fi; \ - ($(MAKE) -C$$dir $@) || exit 1; \ + ($(MAKE) -C$$dir $@ $(MFLAGS)) || exit 1; \ fi \ done endif +#--------------------------------------------------------- +# Handle the CONFIG_FILES options +#--------------------------------------------------------- +ifdef CONFIG_FILES +install:: install-config-files + +$(sysconfdir): + $(MKDIR) $(sysconfdir) + +install-config-files: $(sysconfdir) $(CONFIG_FILES) + $(VERB)$(ECHO) Installing Configuration Files To $(sysconfdir) + $(VERB)for file in $(CONFIG_FILES); do \ + $(INSTALL) $(SourceDir)/$${file} $(sysconfdir) ; \ + done +endif + ########################################################################### # Library Build Rules: # @@ -472,10 +500,10 @@ ifdef LIBRARYNAME # Make sure there isn't any extranous whitespace on the LIBRARYNAME option LIBRARYNAME := $(strip $(LIBRARYNAME)) -LIBNAME_O := $(DESTLIBRELEASE)/lib$(LIBRARYNAME)$(SHLIBEXT) -LIBNAME_P := $(DESTLIBPROFILE)/lib$(LIBRARYNAME)$(SHLIBEXT) -LIBNAME_G := $(DESTLIBDEBUG)/lib$(LIBRARYNAME)$(SHLIBEXT) -LIBNAME_CUR := $(DESTLIBCURRENT)/lib$(LIBRARYNAME)$(SHLIBEXT) +LIBNAME_O := $(DESTLIBRELEASE)/lib$(LIBRARYNAME).la +LIBNAME_P := $(DESTLIBPROFILE)/lib$(LIBRARYNAME).la +LIBNAME_G := $(DESTLIBDEBUG)/lib$(LIBRARYNAME).la +LIBNAME_CUR := $(DESTLIBCURRENT)/lib$(LIBRARYNAME).la LIBNAME_AO := $(DESTLIBRELEASE)/lib$(LIBRARYNAME).a LIBNAME_AP := $(DESTLIBPROFILE)/lib$(LIBRARYNAME).a LIBNAME_AG := $(DESTLIBDEBUG)/lib$(LIBRARYNAME).a @@ -499,7 +527,7 @@ install-bytecode-library:: $(DESTDIR)$(bytecode_libdir)/lib$(LIBRARYNAME).bc $(DESTDIR)$(bytecode_libdir)/lib$(LIBRARYNAME).bc: $(LIBNAME_BC) $(DESTDIR)$(bytecode_libdir) @${ECHO} ======= Installing $(LIBRARYNAME) bytecode library ======= - cp $< $@ + $(VERB)cp $< $@ # Does the library want a .o version built? ifndef DONT_BUILD_RELINKED @@ -539,32 +567,33 @@ $(LIBNAME_BC): $(ObjectsBC) $(LibSubDirs) $(DESTLIBBYTECODE)/.dir # $(LIBNAME_O): $(ObjectsO) $(LibSubDirs) $(DESTLIBRELEASE)/.dir @${ECHO} Linking $(LIBRARYNAME) dynamic release library - $(VERB) $(Link) -o $*.la $(ObjectsO) $(LibSubDirs) $(LibLinkOpts) - $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $*.la $(DESTLIBCURRENT) + $(VERB) $(Link) -o $@ $(ObjectsO) $(LibSubDirs) $(LibLinkOpts) + $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $@ $(DESTLIBCURRENT) @${ECHO} ======= Finished building $(LIBRARYNAME) dynamic release library ======= $(LIBNAME_P): $(ObjectsP) $(LibSubDirs) $(DESTLIBPROFILE)/.dir @${ECHO} Linking $(LIBRARYNAME) dynamic profile library - $(VERB) $(Link) -o $*.la $(ObjectsP) $(LibSubDirs) $(LibLinkOpts) - $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $*.la $(DESTLIBCURRENT) + $(VERB) $(Link) -o $@ $(ObjectsP) $(LibSubDirs) $(LibLinkOpts) + $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $@ $(DESTLIBCURRENT) @${ECHO} ======= Finished building $(LIBRARYNAME) dynamic profile library ======= $(LIBNAME_G): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir @${ECHO} Linking $(LIBRARYNAME) dynamic debug library - $(VERB) $(Link) -o $*.la $(ObjectsG) $(LibSubDirs) $(LibLinkOpts) - $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $*.la $(DESTLIBCURRENT) + $(VERB) $(Link) -o $@ $(ObjectsG) $(LibSubDirs) $(LibLinkOpts) + $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $@ $(DESTLIBCURRENT) @${ECHO} ======= Finished building $(LIBRARYNAME) dynamic debug library ======= install-dynamic-library: $(LIBNAME_CUR) $(MKDIR) $(DESTDIR)$(libdir) $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_CUR) $(DESTDIR)$(libdir)/lib$(LIBRARYNAME)$(SHLIBEXT) + $(VERB) $(LIBTOOL) --finish $(DESTDIR)$(libdir) # # Rules for building static archive libraries. # $(LIBNAME_AO): $(ObjectsO) $(LibSubDirs) $(DESTLIBRELEASE)/.dir @${ECHO} Linking $(LIBRARYNAME) archive release library - @$(RM) -f $@ + $(VERB)$(RM) -f $@ $(VERB) $(Link) -03 -o $@ $(ObjectsO) $(LibSubDirs) -static @${ECHO} Finished building $(LIBRARYNAME) archive release library ======= @@ -627,6 +656,13 @@ endif # ifdef TOOLNAME +# Handle compression libraries automatically +ifeq ($(HAVE_BZIP2),1) +TOOLLINKOPTS += -lbz2 +endif +ifeq ($(HAVE_ZLIB),1) +TOOLLINKOPTS += -lz +endif # TOOLEXENAME* - These compute the output filenames to generate... TOOLEXENAME_G := $(DESTTOOLDEBUG)/$(TOOLNAME) TOOLEXENAME_O := $(DESTTOOLRELEASE)/$(TOOLNAME) @@ -657,6 +693,11 @@ USED_LIB_PATHS_G := $(addprefix $(DESTLIBDEBUG)/, $(STATICUSEDLIBS)) USED_LIB_PATHS_O := $(addprefix $(DESTLIBRELEASE)/, $(STATICUSEDLIBS)) USED_LIB_PATHS_P := $(addprefix $(DESTLIBPROFILE)/, $(STATICUSEDLIBS)) +LLVMSTATICUSEDLIBS := $(patsubst %.a.o, lib%.a, $(addsuffix .o, $(LLVMLIBS))) +LLVM_LIB_PATHS_G := $(addprefix $(LLVMLIBDEBUGSOURCE)/, $(LLVMSTATICUSEDLIBS)) +LLVM_LIB_PATHS_O := $(addprefix $(LLVMLIBRELEASESOURCE)/, $(LLVMSTATICUSEDLIBS)) +LLVM_LIB_PATHS_P := $(addprefix $(LLVMLIBPROFILESOURCE)/, $(LLVMSTATICUSEDLIBS)) + # # Libtool link options: # Ensure that all binaries have their symbols exported so that they can @@ -678,24 +719,25 @@ all:: $(TOOLEXENAMES) clean:: $(VERB) $(RM) -f $(TOOLEXENAMES) -$(TOOLEXENAME_G): $(ObjectsG) $(USED_LIB_PATHS_G) $(DESTTOOLDEBUG)/.dir +$(TOOLEXENAME_G): $(ObjectsG) $(USED_LIB_PATHS_G) $(LLVM_LIB_PATHS_G) $(DESTTOOLDEBUG)/.dir @${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 +$(TOOLEXENAME_O): $(ObjectsO) $(USED_LIB_PATHS_O) $(LLVM_LIB_PATHS_O) $(DESTTOOLRELEASE)/.dir @${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 +$(TOOLEXENAME_P): $(ObjectsP) $(USED_LIB_PATHS_P) $(LLVM_LIB_PATHS_P) $(DESTTOOLPROFILE)/.dir @${ECHO} Linking $(TOOLNAME) profile executable $(VERB) $(LinkP) -o $@ $(ObjectsP) $(LIB_OPTS_P) $(LINK_OPTS) $(LIBS) @${ECHO} ======= Finished building $(TOOLNAME) profile executable ======= install:: $(TOOLEXENAMES) - $(MKDIR) $(DESTDIR)$(bindir) - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) -c -m 0755 $(TOOLEXENAMES) $(DESTDIR)$(bindir)/$(TOOLNAME) + @${ECHO} Installing $(TOOLEXENAMES) to $(DESTDIR)$(bindir) + $(VERB)$(MKDIR) $(DESTDIR)$(bindir) + $(VERB)$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) -c -m 0755 $(TOOLEXENAMES) $(DESTDIR)$(bindir)/$(TOOLNAME) endif @@ -704,6 +746,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