[llvm-commits] CVS: llvm-test/Makefile.rules Makefile.common Makefile.config.in

Reid Spencer reid at x10sys.com
Fri Oct 22 08:58:24 PDT 2004



Changes in directory llvm-test:

Makefile.rules added (r1.1)
Makefile.common updated: 1.1 -> 1.2
Makefile.config.in updated: 1.6 -> 1.7
---
Log message:

Dissociate llvm-test from the LLVM Makefile.rules. The *only* remaining
dependency for llvm-test is on the Makefile.config. That dependency should
probably remain. With this change, llvm-test's makefile rules, tests, and
targets can be simplified in isolation from LLVM and all other LLVM 
projects. There are many opportunities for simplification. The other 
benefit of this change is that the LLVM Makefile.rules file can be 
significantly simplified because it no longer has to support llvm-test.


---
Diffs of the changes:  (+917 -1)

Index: llvm-test/Makefile.rules
diff -c /dev/null llvm-test/Makefile.rules:1.1
*** /dev/null	Fri Oct 22 10:58:23 2004
--- llvm-test/Makefile.rules	Fri Oct 22 10:58:13 2004
***************
*** 0 ****
--- 1,910 ----
+ #===-- 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.
+ # 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:
+ #
+ # 1. LEVEL - The level of the current subdirectory from the top of the 
+ #    MagicStats view.  This level should be expressed as a path, for 
+ #    example, ../.. for two levels deep.
+ #
+ # 2. DIRS - A list of subdirectories to be built.  Fake targets are set up
+ #    so that each of the targets "all", "install", and "clean" each build
+ #    the subdirectories before the local target.  DIRS are guaranteed to be
+ #    built in order.
+ #
+ # 3. PARALLEL_DIRS - A list of subdirectories to be built, but that may be
+ #    built in any order.  All DIRS are built in order before PARALLEL_DIRS are
+ #    built, which are then built in any order.
+ #
+ # 4. Source - If specified, this sets the source code filenames.  If this
+ #    is not set, it defaults to be all of the .cpp, .c, .y, and .l files 
+ #    in the current directory.  Also, if you want to build files in addition
+ #    to the local files, you can use the ExtraSource variable
+ #
+ # 5. SourceDir - If specified, this specifies a directory that the source files
+ #    are in, if they are not in the current directory.  This should include a
+ #    trailing / character.
+ #
+ # 6. LLVM_SRC_ROOT - If specified, points to the top of the LLVM source tree.
+ #
+ # 8. BUILD_SRC_DIR - The directory which contains the current set of Makefiles
+ #    and usually the source code too (unless SourceDir is set).
+ #
+ # 9. BUILD_SRC_ROOT - The root directory of the source code being compiled.
+ #
+ # 10. BUILD_OBJ_DIR - The directory where object code should be placed.
+ #
+ # 11. BUILD_OBJ_ROOT - The root directory for where object code should be
+ #     placed.
+ #
+ # For building,
+ # 	LLVM, LLVM_SRC_ROOT = BUILD_SRC_ROOT
+ #
+ #===-----------------------------------------------------------------------====
+ 
+ #
+ # Set the VPATH so that we can find source files.
+ #
+ VPATH=$(SourceDir)
+ 
+ ###########################################################################
+ # Default Targets:
+ #	The following targets are the standard top level targets for
+ #	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-library
+ endif
+ 
+ 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
+ all ::
+ 
+ # Default for install is to at least build everything...
+ install ::
+ 
+ # Default rule for test.  It ensures everything has a test rule
+ 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)
+ 	@${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 $(SHLIBEXT) .bc .td
+ .SUFFIXES: .ps .dot .d
+ 
+ #
+ # Mark all of these targets as phony.  This will hopefully speed up builds
+ # slightly since GNU Make will not try to find implicit rules for targets
+ # which are marked as Phony.
+ #
+ .PHONY: all dynamic bytecodelib install-bytecode-library
+ .PHONY: clean distclean install test bytecode prdirs
+ 
+ ###########################################################################
+ # Miscellaneous paths and commands:
+ #	This section defines various configuration macros, such as where
+ #	to find burg, tblgen, and libtool.
+ ###########################################################################
+ 
+ #--------------------------------------------------------------------
+ # Variables derived from configuration options... 
+ #--------------------------------------------------------------------
+ 
+ BURG_OPTS = -I
+ 
+ ifdef ENABLE_PROFILING
+   ENABLE_OPTIMIZED = 1
+   CONFIGURATION := Profile
+ else
+   ifdef ENABLE_OPTIMIZED
+     CONFIGURATION := Release
+   else
+     CONFIGURATION := Debug
+   endif
+ endif
+ 
+ #
+ # Enable this for profiling support with 'gprof'
+ # This automatically enables optimized builds.
+ #
+ ifdef ENABLE_PROFILING
+   PROFILE = -pg
+ endif
+ 
+ ###########################################################################
+ # Library Locations:
+ #	These variables describe various library locations:
+ #
+ #	DEST* = Location of where libraries that are built will be placed.
+ #	LLVM* = Location of LLVM libraries used for linking.
+ #	PROJ* = Location of previously built libraries used for linking.
+ ###########################################################################
+ 
+ # Libraries that are being built
+ DESTLIBDEBUG    := $(BUILD_OBJ_ROOT)/lib/Debug
+ DESTLIBRELEASE  := $(BUILD_OBJ_ROOT)/lib/Release
+ DESTLIBPROFILE  := $(BUILD_OBJ_ROOT)/lib/Profile
+ DESTLIBBYTECODE := $(BUILD_OBJ_ROOT)/lib/BytecodeLibs
+ DESTLIBCURRENT  := $(BUILD_OBJ_ROOT)/lib/$(CONFIGURATION)
+ 
+ # LLVM libraries used for linking
+ LLVMLIBDEBUGSOURCE    := $(LLVM_OBJ_ROOT)/lib/Debug
+ LLVMLIBRELEASESOURCE  := $(LLVM_OBJ_ROOT)/lib/Release
+ LLVMLIBPROFILESOURCE  := $(LLVM_OBJ_ROOT)/lib/Profile
+ LLVMLIBCURRENTSOURCE  := $(LLVM_OBJ_ROOT)/lib/$(CONFIGURATION)
+ 
+ # Libraries that were built that will now be used for linking
+ PROJLIBDEBUGSOURCE    := $(BUILD_OBJ_ROOT)/lib/Debug
+ PROJLIBRELEASESOURCE  := $(BUILD_OBJ_ROOT)/lib/Release
+ PROJLIBPROFILESOURCE  := $(BUILD_OBJ_ROOT)/lib/Profile
+ PROJLIBCURRENTSOURCE  := $(BUILD_OBJ_ROOT)/lib/$(CONFIGURATION)
+ 
+ ###########################################################################
+ # Tool Locations
+ #	These variables describe various tool locations:
+ #
+ #	DEST* = Location of where tools that are built will be placed.
+ #	LLVM* = Location of LLVM tools used for building.
+ #	PROJ* = Location of previously built tools used for linking.
+ ###########################################################################
+ 
+ DESTTOOLDEBUG   := $(BUILD_OBJ_ROOT)/tools/Debug
+ DESTTOOLRELEASE := $(BUILD_OBJ_ROOT)/tools/Release
+ DESTTOOLPROFILE := $(BUILD_OBJ_ROOT)/tools/Profile
+ DESTTOOLCURRENT := $(BUILD_OBJ_ROOT)/tools/$(CONFIGURATION)
+ 
+ LLVMTOOLDEBUG   := $(LLVM_OBJ_ROOT)/tools/Debug
+ LLVMTOOLRELEASE := $(LLVM_OBJ_ROOT)/tools/Release
+ LLVMTOOLPROFILE := $(LLVM_OBJ_ROOT)/tools/Profile
+ LLVMTOOLCURRENT := $(LLVM_OBJ_ROOT)/tools/$(CONFIGURATION)
+ 
+ PROJTOOLDEBUG   := $(BUILD_OBJ_ROOT)/tools/Debug
+ PROJTOOLRELEASE := $(BUILD_OBJ_ROOT)/tools/Release
+ PROJTOOLPROFILE := $(BUILD_OBJ_ROOT)/tools/Profile
+ PROJTOOLCURRENT := $(BUILD_OBJ_ROOT)/tools/$(CONFIGURATION)
+ 
+ #
+ # Libtool is found in the current directory.
+ #
+ LIBTOOL := $(LLVM_OBJ_ROOT)/mklib
+ 
+ #
+ # If we're not building a shared library, use the disable-shared tag with
+ # libtool.  This will disable the building of objects for shared libraries and
+ # only generate static library objects.
+ #
+ # For dynamic libraries, we'll take the performance hit for now, since we
+ # almost never build them.
+ #
+ # This should speed up compilation and require no modifications to future
+ # versions of libtool.
+ #
+ ifndef SHARED_LIBRARY
+ LIBTOOL += --tag=disable-shared
+ endif
+ 
+ #
+ # Verbosity levels
+ #
+ ifndef VERBOSE
+ VERB := @
+ LIBTOOL += --silent
+ endif
+ 
+ ###########################################################################
+ # Miscellaneous paths and commands (part deux):
+ #	This section defines various configuration macros, such as where
+ #	to find burg, tblgen, and libtool.
+ ###########################################################################
+ 
+ #--------------------------------------------------------------------------
+ # Utilities used while building the LLVM tree, which live in the utils dir
+ #
+ BURG       := $(LLVMTOOLCURRENT)/burg$(EXEEXT)
+ RunBurg    := $(BURG) $(BURG_OPTS)
+ TBLGEN     := $(LLVMTOOLCURRENT)/tblgen$(EXEEXT)
+ LGCCLDPROG := $(LLVMTOOLCURRENT)/gccld$(EXEEXT)
+ 
+ #--------------------------------------------------------------------------
+ # The LLVM GCC front-end in C and C++ flavors
+ #
+ LLVMGCC := PATH=$(LLVMTOOLCURRENT):$(PATH) $(LLVMGCCDIR)/bin/gcc
+ LLVMGXX := PATH=$(LLVMTOOLCURRENT):$(PATH) $(LLVMGCCDIR)/bin/g++
+ 
+ #--------------------------------------------------------------------------
+ # 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)
+ 
+ 
+ ###########################################################################
+ # Compile Time Flags
+ ###########################################################################
+ 
+ #
+ # Include both the project headers and the LLVM headers for compilation and
+ # dependency computation.
+ #
+ # 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
+ STRIP = $(PLATFORMSTRIPOPTS)
+ STRIP_WARN_MSG = "(without symbols)"
+ endif
+ 
+ # Allow GNU extensions:
+ CPPFLAGS += -D_GNU_SOURCE
+ # Pull in limit macros from stdint.h, even in C++:
+ CPPFLAGS += -D__STDC_LIMIT_MACROS
+ 
+ CompileCommonOpts := -Wall -W -Wwrite-strings -Wno-unused
+ CompileOptimizeOpts := -O3 -DNDEBUG -finline-functions
+ 
+ #
+ # Compile commands with libtool.
+ #
+ 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...
+ CompileG := $(Compile) -g  -D_DEBUG
+ CompileO := $(Compile) $(CompileOptimizeOpts) -felide-constructors -fomit-frame-pointer
+ CompileP := $(Compile) $(CompileOptimizeOpts) -felide-constructors $(PROFILE)
+ 
+ # Compile a c file, don't link...
+ CompileCG := $(CompileC) -g  -D_DEBUG
+ CompileCO := $(CompileC) $(CompileOptimizeOpts) -fomit-frame-pointer
+ CompileCP := $(CompileC) $(CompileOptimizeOpts) $(PROFILE)
+ 
+ ###########################################################################
+ # Link Time Options
+ ###########################################################################
+ 
+ #
+ # Link final executable
+ #	(Note that we always link with the C++ compiler).
+ #
+ Link     := $(LIBTOOL) --tag=CXX --mode=link $(CXX)
+ 
+ # link both projlib and llvmlib libraries
+ 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} --tag=CXX --mode=link $(CXX)
+ 
+ #
+ # Configure where the item being compiled should go.
+ #
+ ifdef SHARED_LIBRARY
+ Link += -rpath $(DESTLIBCURRENT)
+ endif
+ 
+ ifdef TOOLNAME
+ Link += -rpath $(DESTTOOLCURRENT)
+ endif
+ 
+ # Create dependency file from CPP file, send to stdout.
+ 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) cr
+ 
+ #----------------------------------------------------------
+ 
+ # Source includes all of the cpp files, and objects are derived from the
+ # source files...
+ # The local Makefile can list other Source files via ExtraSource = ...
+ # 
+ ifndef Source
+ Source  := $(notdir $(ExtraSource) $(wildcard $(SourceDir)/*.cpp \
+                     $(SourceDir)/*.cc $(SourceDir)/*.c $(SourceDir)/*.y \
+                     $(SourceDir)/*.l))
+ endif
+ 
+ #
+ # Libtool Objects
+ #
+ Srcs := $(sort $(basename $(Source)))
+ 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
+ #
+ 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))
+ 
+ #---------------------------------------------------------
+ # Handle the DIRS and PARALLEL_DIRS options
+ #---------------------------------------------------------
+ 
+ ifdef DIRS
+ 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 $@ $(MFLAGS)) || exit 1; \
+ 	done
+ endif
+ 
+ # Handle PARALLEL_DIRS
+ ifdef PARALLEL_DIRS
+ all      :: $(addsuffix /.makeall     , $(PARALLEL_DIRS))
+ install  :: $(addsuffix /.makeinstall , $(PARALLEL_DIRS))
+ 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 %/.makeinstall-bytecode:
+ 	$(VERB) if [ ! -f $(@D)/Makefile ]; \
+ 	then \
+ 		$(MKDIR) $(@D); \
+ 		cp $(SourceDir)/$(@D)/Makefile $(@D)/Makefile; \
+ 	fi; \
+ 	$(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 install-bytecode::
+ 	$(VERB) for dir in ${OPTIONAL_DIRS}; do \
+ 		if [ -d $(SourceDir)/$$dir ]; \
+ 		then\
+ 			if [ ! -f $$dir/Makefile ]; \
+ 			then \
+ 				$(MKDIR) $$dir; \
+ 				cp $(SourceDir)/$$dir/Makefile $$dir/Makefile; \
+ 			fi; \
+ 			($(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:
+ #
+ #---------------------------------------------------------
+ # Handle the LIBRARYNAME option - used when building libs...
+ #---------------------------------------------------------
+ #
+ #  When libraries are built, they are allowed to optionally define the
+ #  DONT_BUILD_RELINKED make variable, which, when defined, prevents a .o file
+ #  from being built for the library. This .o files may then be linked to by a
+ #  tool if the tool does not need (or want) the semantics a .a file provides
+ #  (linking in only object files that are "needed").  If a library is never to
+ #  be used in this way, it is better to define DONT_BUILD_RELINKED, and define
+ #  BUILD_ARCHIVE instead.
+ #
+ #  Some libraries must be built as .a files (libscalar for example) because if
+ #  it's built as a .o file, then all of the constituent .o files in it will be
+ #  linked into tools (for example gccas) even if they only use one of the parts
+ #  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
+ LIBRARYNAME := $(strip $(LIBRARYNAME))
+ 
+ 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
+ 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:: $(LIBNAME_CUR)
+ bytecodelib:: $(LIBNAME_BC)
+ 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 =======
+ 	$(VERB)cp $< $@
+ 
+ # Does the library want a .o version built?
+ ifndef DONT_BUILD_RELINKED
+ all:: $(LIBNAME_OBJCUR)
+ install:: install-single-object-library
+ endif
+ 
+ # Does the library want an archive version built?
+ ifdef BUILD_ARCHIVE
+ all:: $(LIBNAME_ACUR)
+ install:: install-archive-library
+ endif
+ 
+ #--------------------------------------------------------------------
+ # Rules for building libraries
+ #--------------------------------------------------------------------
+ 
+ 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
+ 	$(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
+ 	$(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 $@ $(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 $@ $(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
+ 	$(VERB)$(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
+ 	@$(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
+ 	@$(RM) -f $@
+ 	$(VERB) $(Link) -g $(STRIP) -o $@ $(ObjectsG) $(LibSubDirs) -static
+ 	@${ECHO} ======= Finished building $(LIBRARYNAME) archive debug library =======
+ 
+ install-archive-library: $(LIBNAME_ACUR)
+ 	$(MKDIR) $(DESTDIR)$(libdir)
+ 	$(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_ACUR) $(DESTDIR)$(libdir)/lib$(LIBRARYNAME).a
+ 
+ #
+ # Rules for building .o libraries.
+ #
+ #	JTC:
+ #	Note that for this special case, we specify the actual object files
+ #	instead of their libtool counterparts.  This is because libtool
+ #	doesn't want to generate a reloadable object file unless it is given
+ #	.o files explicitly.
+ #
+ #	Note that we're making an assumption here: If we build a .lo file,
+ #	its corresponding .o file will be placed in the same directory.
+ #
+ #	I think that is safe.
+ #
+ $(LIBNAME_OBJO): $(ObjectsO) $(LibSubDirs) $(DESTLIBRELEASE)/.dir
+ 	@${ECHO} "Linking `basename $@`"
+ 	$(VERB) $(Relink) -o $@ $(RObjectsO) $(LibSubDirs)
+ 
+ $(LIBNAME_OBJP): $(ObjectsP) $(LibSubDirs) $(DESTLIBPROFILE)/.dir
+ 	@${ECHO} "Linking `basename $@`"
+ 	$(VERB) $(Relink) -o $@ $(RObjectsP) $(LibSubDirs)
+ 
+ $(LIBNAME_OBJG): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir
+ 	@${ECHO} "Linking `basename $@`"
+ 	$(VERB) $(Relink) -o $@ $(RObjectsG) $(LibSubDirs)
+ 
+ install-single-object-library: $(LIBNAME_OBJCUR)
+ 	$(MKDIR) $(DESTDIR)$(libdir)
+ 	$(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_OBJCUR) $(DESTDIR)$(libdir)/$(LIBRARYNAME).o
+ 
+ endif
+ 
+ #------------------------------------------------------------------------
+ # Handle the TOOLNAME option - used when building tool executables...
+ #------------------------------------------------------------------------
+ #
+ # The TOOLNAME option should be used with a USEDLIBS variable that tells the
+ # libraries (and the order of the libs) that should be linked to the
+ # tool. USEDLIBS should contain a list of library names (some with .a extension)
+ # that are automatically linked in as .o files unless the .a suffix is added.
+ #
+ 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)
+ TOOLEXENAME_P := $(DESTTOOLPROFILE)/$(TOOLNAME)
+ TOOLEXENAMES  := $(DESTTOOLCURRENT)/$(TOOLNAME)
+ 
+ # USED_LIBS_OPTIONS - Compute the options line that add -llib1 -llib2, etc.
+ PROJ_LIBS_OPTIONS   := $(patsubst %.a.o, -l%, $(addsuffix .o, $(USEDLIBS)))
+ PROJ_LIBS_OPTIONS_G := $(patsubst %.o, $(PROJLIBDEBUGSOURCE)/%.o,  $(PROJ_LIBS_OPTIONS))
+ PROJ_LIBS_OPTIONS_O := $(patsubst %.o, $(PROJLIBRELEASESOURCE)/%.o,$(PROJ_LIBS_OPTIONS))
+ PROJ_LIBS_OPTIONS_P := $(patsubst %.o, $(PROJLIBPROFILESOURCE)/%.o,$(PROJ_LIBS_OPTIONS))
+ 
+ LLVM_LIBS_OPTIONS   := $(patsubst %.a.o, -l%, $(addsuffix .o, $(LLVMLIBS)))
+ LLVM_LIBS_OPTIONS_G := $(patsubst %.o, $(LLVMLIBDEBUGSOURCE)/%.o,  $(LLVM_LIBS_OPTIONS))
+ LLVM_LIBS_OPTIONS_O := $(patsubst %.o, $(LLVMLIBRELEASESOURCE)/%.o,$(LLVM_LIBS_OPTIONS))
+ LLVM_LIBS_OPTIONS_P := $(patsubst %.o, $(LLVMLIBPROFILESOURCE)/%.o,$(LLVM_LIBS_OPTIONS))
+ 
+ LIB_OPTS_G :=  $(LLVM_LIBS_OPTIONS_G) $(PROJ_LIBS_OPTIONS_G)
+ LIB_OPTS_O :=  $(LLVM_LIBS_OPTIONS_O) $(PROJ_LIBS_OPTIONS_O)
+ LIB_OPTS_P :=  $(LLVM_LIBS_OPTIONS_P) $(PROJ_LIBS_OPTIONS_P)
+ 
+ # USED_LIB_PATHS - Compute the path of the libraries used so that tools are
+ # rebuilt if libraries change.  This has to make sure to handle .a/.so and .o
+ # files separately.
+ #
+ STATICUSEDLIBS   := $(patsubst %.a.o, lib%.a, $(addsuffix .o, $(USEDLIBS)))
+ 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
+ #	by dlsym'ed.
+ #
+ LINK_OPTS := -export-dynamic $(TOOLLINKOPTS)
+ 
+ 
+ 
+ 
+ 
+ # Tell make that we need to rebuild subdirectories before we can link the tool.
+ # This affects things like LLI which has library subdirectories.
+ $(USED_LIB_PATHS_G) $(USED_LIB_PATHS_O) $(USED_LIB_PATHS_P): \
+         $(addsuffix /.makeall, $(PARALLEL_DIRS))
+ 
+ all::   $(TOOLEXENAMES)
+ 
+ clean::
+ 	$(VERB) $(RM) -f $(TOOLEXENAMES)
+ 
+ $(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) $(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) $(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)
+ 	@${ECHO} Installing $(TOOLEXENAMES) to $(DESTDIR)$(bindir)
+ 	$(VERB)$(MKDIR) $(DESTDIR)$(bindir)
+ 	$(VERB)$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) -c -m 0755 $(TOOLEXENAMES) $(DESTDIR)$(bindir)/$(TOOLNAME)
+ 
+ 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
+ 	@${ECHO} "Compiling `basename $<`"
+ 	$(VERB) $(CompileO) $< -o $@
+ 
+ $(BUILD_OBJ_DIR)/Release/%.lo: %.c $(BUILD_OBJ_DIR)/Release/.dir
+ 	@${ECHO} "Compiling `basename $<`"
+ 	$(VERB) $(CompileCO) $< -o $@
+ 
+ $(BUILD_OBJ_DIR)/Profile/%.lo: %.cpp $(BUILD_OBJ_DIR)/Profile/.dir
+ 	@${ECHO} "Compiling `basename $<`"
+ 	$(VERB) $(CompileP) $< -o $@
+ 
+ $(BUILD_OBJ_DIR)/Profile/%.lo: %.c $(BUILD_OBJ_DIR)/Profile/.dir
+ 	@${ECHO} "Compiling `basename $<`"
+ 	$(VERB) $(CompileCP) $< -o $@
+ 
+ $(BUILD_OBJ_DIR)/Debug/%.lo: %.cpp $(BUILD_OBJ_DIR)/Debug/.dir
+ 	@${ECHO} "Compiling `basename $<`"
+ 	$(VERB) $(CompileG) $< -o $@
+ 
+ $(BUILD_OBJ_DIR)/Debug/%.lo: %.c $(BUILD_OBJ_DIR)/Debug/.dir 
+ 	@${ECHO} "Compiling `basename $<`"
+ 	$(VERB) $(CompileCG) $< -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)/BytecodeObj/%.bc: %.c $(BUILD_OBJ_DIR)/BytecodeObj/.dir $(LCC1)
+ 	@${ECHO} "Compiling `basename $<` to bytecode"
+ 	$(VERB) $(LLVMGCC) $(CompileCommonOpts) $(CPPFLAGS) -c $< -o $@
+ 
+ $(BUILD_OBJ_DIR)/BytecodeObj/%.bc: %.ll $(BUILD_OBJ_DIR)/BytecodeObj/.dir $(LLVMAS)
+ 	@${ECHO} "Compiling `basename $<` to bytecode"
+ 	$(VERB) $(LLVMAS) $< -f -o $@
+ 
+ 
+ #
+ # Rules for building lex/yacc files
+ #
+ LEX_FILES   = $(filter %.l, $(Source))
+ LEX_OUTPUT  = $(LEX_FILES:%.l=%.cpp)
+ YACC_FILES  = $(filter %.y, $(Source))
+ YACC_OUTPUT = $(addprefix $(YACC_FILES:%.y=%), .h .cpp .output)
+ .PRECIOUS: $(LEX_OUTPUT) $(YACC_OUTPUT)
+ 
+ # Create a .cpp source file from a flex input file... this uses sed to cut down
+ # on the warnings emited by GCC...
+ #
+ # The last line is a gross hack to work around flex aparently not being able to
+ # resize the buffer on a large token input.  Currently, for uninitialized string
+ # buffers in LLVM we can generate very long tokens, so this is a hack around it.
+ # FIXME.  (f.e. char Buffer[10000] )
+ #
+ %.cpp: %.l
+ 	@${ECHO} Flexing $<
+ 	$(VERB) $(FLEX) -t $< | \
+           $(SED) '/^find_rule/d' | \
+           $(SED) 's/void yyunput/inline void yyunput/' | \
+           $(SED) 's/void \*yy_flex_realloc/inline void *yy_flex_realloc/' | \
+           $(SED) 's/#define YY_BUF_SIZE 16384/#define YY_BUF_SIZE (16384*64)/' \
+               > $@.tmp
+ 	$(VERB) cmp -s $@ $@.tmp > /dev/null || ${MV} -f $@.tmp $@
+ 	@# remove the output of flex if it didn't get moved over...
+ 	@rm -f $@.tmp
+ 
+ # Rule for building the bison parsers...
+ %.c: %.y     # Cancel built-in rules for yacc
+ %.h: %.y     # Cancel built-in rules for yacc
+ %.cpp %.h : %.y
+ 	@${ECHO} "Bisoning `basename $<`"
+ 	$(VERB) $(BISON) -v -d -p $(<F:%Parser.y=%) -o $*.tab.c  $<
+ 	$(VERB) cmp -s $*.tab.c $*.cpp > /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...
+ 	@rm -f $*.tab.c $*.tab.h
+ 
+ # To create the directories...
+ %/.dir:
+ 	$(VERB) ${MKDIR} $* > /dev/null
+ 	@$(DATE) > $@
+ 
+ # To create postscript files from dot files...
+ ifneq ($(DOT),false)
+ %.ps: %.dot
+ 	${DOT} -Tps < $< > $@
+ else
+ %.ps: %.dot
+ 	${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)/BytecodeObj
+ 	$(VERB) $(RM) -f core core.[0-9][0-9]* *.o *.d *~ *.flc
+ ifneq ($(strip $(SHLIBEXT)),) # Extra paranoia - make real sure SHLIBEXT is set
+ 	$(VERB)	$(RM) -f *$(SHLIBEXT)
+ endif
+ 	$(VERB) $(RM) -f $(LEX_OUTPUT) $(YACC_OUTPUT)
+ 
+ ###########################################################################
+ # C/C++ Dependencies
+ #	Define variables and rules that generate header file dependencies
+ #	from C/C++ source files.
+ ###########################################################################
+ 
+ ifndef DISABLE_AUTO_DEPENDENCIES
+ 
+ # If dependencies were generated for the file that included this file,
+ # include the dependencies now...
+ #
+ SourceBaseNames := $(basename $(Source))
+ 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' > $@
+ 
+ # 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' > $@
+ 
+ #
+ # 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
+ # are cleaning (this example taken from the GNU Make Manual).
+ #
+ ifneq ($(MAKECMDGOALS),clean)
+ ifneq ($(MAKECMDGOALS),distclean)
+ -include /dev/null $(SourceDepend)
+ endif
+ endif
+ 
+ endif  # ifndef DISABLE_AUTO_DEPENDENCIES


Index: llvm-test/Makefile.common
diff -u llvm-test/Makefile.common:1.1 llvm-test/Makefile.common:1.2
--- llvm-test/Makefile.common:1.1	Mon Sep  6 22:27:12 2004
+++ llvm-test/Makefile.common	Fri Oct 22 10:58:13 2004
@@ -12,7 +12,8 @@
 #
 include $(LEVEL)/Makefile.config
 
+
 #
 # Include LLVM's Master Makefile.
 #
-include $(LLVM_SRC_ROOT)/Makefile.rules
+include $(LEVEL)/Makefile.rules


Index: llvm-test/Makefile.config.in
diff -u llvm-test/Makefile.config.in:1.6 llvm-test/Makefile.config.in:1.7
--- llvm-test/Makefile.config.in:1.6	Thu Oct 21 10:29:45 2004
+++ llvm-test/Makefile.config.in	Fri Oct 22 10:58:13 2004
@@ -21,6 +21,11 @@
 
 BUILD_SRC_ROOT := $(subst //,/, at abs_top_srcdir@)
 
+#Set SourceDir for backwards compatbility.
+ifndef SourceDir
+SourceDir=$(BUILD_SRC_DIR)
+endif
+
 #
 # Provide variables specific to llvm-test
 #






More information about the llvm-commits mailing list