Comment line of the makefile
[oota-llvm.git] / Makefile.common
index 2c5f9310c0b3437485e4312edc99b7ae53a00a18..cd21b40f4228951160a44488ee129aa3ded489cd 100644 (file)
@@ -5,7 +5,8 @@
 # These are platform dependant, so this is the file used to specify these
 # system dependant operations.
 #
-# The following functionality may be set by setting incoming variables:
+# 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 
 #
 #===-----------------------------------------------------------------------====
 
+# Configuration file to set paths specific to local installation of LLVM
+# 
+include $(LEVEL)/Makefile.config
+
 # These are options that can either be enabled here, or can be enabled on the
 # make command line (ie, make ENABLE_PROFILING=1)
 #
 #
 #ENABLE_OPTIMIZED = 1
 
-# If you do not want to build into /shared, uncomment this
+
+# Figure out how to do platform specific stuff on this platform.  This is really
+# gross and should be autoconfiscated (automake actually), but should hopefully
+# work on Linux and solaris (SunOS).
 #
-#BUILD_ROOT = .
+UNAME := $(shell uname)
+include $(LEVEL)/Makefile.$(UNAME)
 
 ifdef SHARED_LIBRARY
 # if SHARED_LIBRARY is specified, the default is to build the dynamic lib
@@ -61,13 +70,12 @@ install ::
 # /shared directory by default because it is guaranteed to be local to the
 # current machine.
 #
-ifdef BUILD_ROOT
-BUILD_ROOT_TOP := $(LEVEL)
+ifeq ($(LLVM_OBJ_DIR),.)
+BUILD_ROOT     = $(LLVM_OBJ_DIR)
+BUILD_ROOT_TOP = $(LEVEL)
 else
 
-LOGIN_NAME := $(shell whoami)
-CUR_DIRECTORY := $(shell pwd)
-BUILD_ROOT := /shared/$(LOGIN_NAME)$(patsubst $(HOME)%,%,$(CUR_DIRECTORY))
+BUILD_ROOT := $(LLVM_OBJ_DIR)$(patsubst $(HOME)%,%,$(shell pwd))
 
 # Calculate the BUILD_ROOT_TOP variable, which is the top of the llvm/ tree.
 # Note that although this is just equal to $(BUILD_ROOT)/$(LEVEL), we cannot use
@@ -76,22 +84,20 @@ BUILD_ROOT := /shared/$(LOGIN_NAME)$(patsubst $(HOME)%,%,$(CUR_DIRECTORY))
 # the directory to eliminate the ../'s
 #
 TOP_DIRECTORY := $(shell cd $(LEVEL); pwd)
-BUILD_ROOT_TOP := /shared/$(LOGIN_NAME)$(patsubst $(HOME)%,%,$(TOP_DIRECTORY))
+BUILD_ROOT_TOP := $(LLVM_OBJ_DIR)$(patsubst $(HOME)%,%,$(TOP_DIRECTORY))
 endif
 
 #--------------------------------------------------------------------
-# Installation configuration options... 
+# Variables derived from configuration options... 
 #--------------------------------------------------------------------
 
 #BinInstDir=/usr/local/bin
 #LibInstDir=/usrl/local/lib/xxx
 #DocInstDir=/usr/doc/xxx
 
-BURG = /home/vadve/vadve/Research/DynOpt/Burg/burg
 BURG_OPTS = -I
 
-
-PURIFY = /usr/dcs/applications/purify/bin/purify -cache-dir="$(HOME)/purifycache" -chain-length="30" -messages=all 
+PURIFY := $(PURIFY) -cache-dir="$(BUILD_ROOT_TOP)/../purifycache" -chain-length="30" -messages=all 
 
 # Shorthand for commonly accessed directories
 LIBDEBUG    := $(BUILD_ROOT_TOP)/lib/Debug
@@ -99,6 +105,13 @@ LIBRELEASE  := $(BUILD_ROOT_TOP)/lib/Release
 TOOLDEBUG   := $(BUILD_ROOT_TOP)/tools/Debug
 TOOLRELEASE := $(BUILD_ROOT_TOP)/tools/Release
 
+# Verbosity levels
+ifdef VERBOSE
+VERB := 
+else
+VERB := @
+endif
+
 #---------------------------------------------------------
 # Compilation options...
 #---------------------------------------------------------
@@ -113,6 +126,9 @@ else
 PROFILE =
 endif
 
+# Allow gnu extensions...
+CPPFLAGS += -D_GNU_SOURCE
+
 # -Wno-unused-parameter
 CompileCommonOpts := $(PROFILE) -Wall -W  -Wwrite-strings -Wno-unused -I$(LEVEL)/include
 
@@ -131,14 +147,13 @@ endif
 LinkG    := $(Link) -g  -L $(LIBDEBUG)
 LinkO    := $(Link) -O3 -L $(LIBRELEASE)
 
-# Create a .so file from a .o files...
-#MakeSO   := $(CXX) -shared $(PROFILE)
-MakeSO   := $(CXX) -G $(PROFILE)
-MakeSOO  := $(MakeSO) -O3
-
 # Create one .o file from a bunch of .o files...
 Relink = ld -r
 
+# MakeSO - Create a .so file from a .o files...
+MakeSO   := $(CXX) $(MakeSharedObjectOption) $(PROFILE)
+MakeSOO  := $(MakeSO) -O3
+
 # Create dependancy file from CPP file, send to stdout.
 Depend   := $(CXX) -MM -I$(LEVEL)/include $(CPPFLAGS) 
 
@@ -169,7 +184,7 @@ install :: $(addsuffix /.makeinstall, $(DIRS))
 clean   :: $(addsuffix /.makeclean  , $(DIRS))
 
 %/.makeall %/.makeclean %/.makeinstall:
-       cd $(@D); $(MAKE) $(subst $(@D)/.make,,$@)
+       $(VERB) cd $(@D); $(MAKE) $(subst $(@D)/.make,,$@)
 endif
 
 #---------------------------------------------------------
@@ -191,6 +206,9 @@ endif
 
 ifdef LIBRARYNAME
 
+# Make sure there isn't any extranous whitespace on the LIBRARYNAME option
+LIBRARYNAME := $(strip $(LIBRARYNAME))
+
 LIBNAME_O    := $(LIBRELEASE)/lib$(LIBRARYNAME).so
 LIBNAME_G    := $(LIBDEBUG)/lib$(LIBRARYNAME).so
 LIBNAME_AO   := $(LIBRELEASE)/lib$(LIBRARYNAME).a
@@ -226,27 +244,28 @@ dynamic:: $(BUILD_LIBNAME_G) $(BUILD_LIBNAME_O)      # .so files
 
 $(LIBNAME_O): $(ObjectsO) $(LibSubDirs) $(LIBRELEASE)/.dir
        @echo ======= Linking $(LIBRARYNAME) release library =======
-       $(MakeSOO) -o $@ $(ObjectsO) $(LibSubDirs) $(LibLinkOpts)
+       $(VERB) $(MakeSOO) -o $@ $(ObjectsO) $(LibSubDirs) $(LibLinkOpts)
 
 $(LIBNAME_G): $(ObjectsG) $(LibSubDirs) $(LIBDEBUG)/.dir
        @echo ======= Linking $(LIBRARYNAME) debug library =======
-       $(MakeSO) -g -o $@ $(ObjectsG) $(LibSubDirs) $(LibLinkOpts)
+       $(VERB) $(MakeSO) -g -o $@ $(ObjectsG) $(LibSubDirs) $(LibLinkOpts)
 
 $(LIBNAME_AO): $(ObjectsO) $(LibSubDirs) $(LIBRELEASE)/.dir
        @echo ======= Linking $(LIBRARYNAME) release library =======
        @rm -f $@
-       $(AR) $@ $(ObjectsO) $(LibSubDirs)
+       $(VERB) $(AR) $@ $(ObjectsO) $(LibSubDirs)
 
 $(LIBNAME_AG): $(ObjectsG) $(LibSubDirs) $(LIBDEBUG)/.dir
        @echo ======= Linking $(LIBRARYNAME) debug library =======
        @rm -f $@
-       $(AR) $@ $(ObjectsG) $(LibSubDirs)
+       $(VERB) $(AR) $@ $(ObjectsG) $(LibSubDirs)
 
 $(LIBNAME_OBJO): $(ObjectsO) $(LibSubDirs) $(LIBRELEASE)/.dir
-       $(Relink) -o $@ $(ObjectsO) $(LibSubDirs)
+       @echo "Linking $@"
+       $(VERB) $(Relink) -o $@ $(ObjectsO) $(LibSubDirs)
 
 $(LIBNAME_OBJG): $(ObjectsG) $(LibSubDirs) $(LIBDEBUG)/.dir
-       $(Relink) -o $@ $(ObjectsG) $(LibSubDirs)
+       $(VERB) $(Relink) -o $@ $(ObjectsG) $(LibSubDirs)
 
 endif
 
@@ -295,13 +314,15 @@ USED_LIB_PATHS_O := $(addprefix $(LIBRELEASE)/, $(STATICUSEDLIBS))
 
 all::   $(TOOLEXENAMES)
 clean::
-       rm -f $(TOOLEXENAMES)
+       $(VERB) rm -f $(TOOLEXENAMES)
 
 $(TOOLEXENAME_G): $(ObjectsG) $(USED_LIB_PATHS_G) $(BUILD_ROOT_TOP)/tools/Debug/.dir
-       $(LinkG) -o $@ $(ObjectsG) $(USED_LIBS_OPTIONS_G) $(TOOLLINKOPTS)
+       @echo ======= Linking $(TOOLNAME) debug executable =======
+       $(VERB) $(LinkG) -o $@ $(ObjectsG) $(USED_LIBS_OPTIONS_G) $(TOOLLINKOPTS)
 
 $(TOOLEXENAME_O): $(ObjectsO) $(USED_LIB_PATHS_O) $(BUILD_ROOT_TOP)/tools/Release/.dir
-       $(LinkO) -o $@ $(ObjectsG) $(USED_LIBS_OPTIONS_O) $(TOOLLINKOPTS)
+       @echo ======= Linking $(TOOLNAME) release executable =======
+       $(VERB) $(LinkO) -o $@ $(ObjectsG) $(USED_LIBS_OPTIONS_O) $(TOOLLINKOPTS)
 
 endif
 
@@ -313,21 +334,23 @@ endif
 
 # Create dependencies for the *.cpp files...
 $(BUILD_ROOT)/Depend/%.d: %.cpp $(BUILD_ROOT)/Depend/.dir
-       $(Depend) $< | sed 's|$*\.o *|$(BUILD_ROOT)/Release/& $(BUILD_ROOT)/Debug/& $(BUILD_ROOT)/Depend/$(@F)|g' > $@
+       $(VERB) $(Depend) $< | sed 's|$*\.o *|$(BUILD_ROOT)/Release/& $(BUILD_ROOT)/Debug/& $(BUILD_ROOT)/Depend/$(@F)|g' > $@
 
 # Create dependencies for the *.c files...
 $(BUILD_ROOT)/Depend/%.d: %.c $(BUILD_ROOT)/Depend/.dir
-       $(Depend) $< | sed 's|$*\.o *|Release/& Debug/& Depend/$(@F)|g' > $@
+       $(VERB) $(Depend) $< | sed 's|$*\.o *|Release/& Debug/& Depend/$(@F)|g' > $@
 
 # Create .o files in the ObjectFiles directory from the .cpp and .c files...
 $(BUILD_ROOT)/Release/%.o: %.cpp $(BUILD_ROOT)/Release/.dir
-       $(CompileO) $< -o $@
+       @echo "Compiling $<"
+       $(VERB) $(CompileO) $< -o $@
 
 #Release/%.o: %.c Release/.dir Depend/.dir
 #      $(CompileOC) $< -o $@
 
 $(BUILD_ROOT)/Debug/%.o: %.cpp $(BUILD_ROOT)/Debug/.dir
-       $(CompileG) $< -o $@
+       @echo "Compiling $<"
+       $(VERB) $(CompileG) $< -o $@
 
 #Debug/%.o: %.c Debug/.dir 
 #      $(CompileGC) $< -o $@
@@ -340,19 +363,19 @@ $(BUILD_ROOT)/Debug/%.o: %.cpp $(BUILD_ROOT)/Debug/.dir
 # Rule for building the bison parsers...
 
 %.cpp %.h : %.y
-       bison -v -d -p $(<:%Parser.y=%) $(basename $@).y
-       mv -f $(basename $@).tab.c $(basename $@).cpp
-       mv -f $(basename $@).tab.h $(basename $@).h
+       $(VERB) bison -v -d -p $(<:%Parser.y=%) $(basename $@).y
+       $(VERB) mv -f $(basename $@).tab.c $(basename $@).cpp
+       $(VERB) mv -f $(basename $@).tab.h $(basename $@).h
 
 # To create the directories...
 %/.dir:
-       mkdir -p $(@D)
+       $(VERB) mkdir -p $(@D)
        @date > $@
 
 # Clean nukes the tree
 clean::
-       rm -rf Debug Release Depend
-       rm -f core *.o *.d *.so *~ *.flc
+       $(VERB) rm -rf $(BUILD_ROOT)/Debug $(BUILD_ROOT)/Release $(BUILD_ROOT)/Depend
+       $(VERB) rm -f core *.o *.d *.so *~ *.flc
 
 # If dependancies were generated for the file that included this file,
 # include the dependancies now...