#
OS=@OS@
+#
+# Target hardware architecture
+#
+ARCH=@ARCH@
+
# Path to the C++ compiler to use. This is an optional setting, which defaults
# to whatever your gmake defaults to.
#
#
# Compilation flags for the C and C++ compilers.
#
-CPPFLAGS+=@DEFS@
-CCFLAGS+=@DEFS@
+
+#
+# Removing the compiler flags for now. They interfere with the test suite
+# (which has its own autoconf stuff), and we don't use -DHAVE_CONFIG_H anyway.
+#
+#CPPFLAGS+=@DEFS@
+#CCFLAGS+=@DEFS@
LDFLAGS+=@LDFLAGS@
#
#
# Paths to miscellaneous programs.
#
+RPWD = @RPWD@
SED = @SED@
RM = @RM@
ECHO = @ECHO@
-MKDIR = @abs_top_srcdir@/mkinstalldirs
+MKDIR = @abs_top_srcdir@/autoconf/mkinstalldirs
DATE = @DATE@
MV = @MV@
INSTALL = @INSTALL@
# object files.
#
#OBJ_ROOT = .
-OBJ_ROOT := @OBJROOT@
+OBJ_ROOT := .
# Path to location for LLVM front-end this should only be specified here if you
# want to override the value set in Makefile.$(uname)
# information to allow gprof to be used to get execution frequencies.
#
#ENABLE_PROFILING = 1
-@ENABLE_PROFILING@
#
-# This open tells the Makefiles to produce verbose output.
+# This option tells the Makefiles to produce verbose output.
# It essentially prints the commands that make is executing
#
#VERBOSE = 1
#
@DISABLE_LLC_DIFFS@
+###########################################################################
+# Directory Configuration
+# This section of the Makefile determines what is where. To be
+# specific, there are several locations that need to be defined:
+#
+# o LLVM_SRC_ROOT : The root directory of the LLVM source code.
+# o LLVM_OBJ_ROOT : The root directory containing the built LLVM code.
+#
+# o BUILD_SRC_DIR : The directory containing the code to build.
+# o BUILD_SRC_ROOT : The root directory of the code to build.
+#
+# o BUILD_OBJ_DIR : The directory in which compiled code will be placed.
+# o BUILD_OBJ_ROOT : The root directory in which compiled code is placed.
+#
+###########################################################################
+
+#
+# Set the object build directory. By default, it is the current directory.
+#
+ifndef BUILD_OBJ_DIR
+BUILD_OBJ_DIR := $(subst //,/,$(shell $(RPWD)))
+endif
+
+#
+# Set the root of the object directory.
+#
+ifndef BUILD_OBJ_ROOT
+BUILD_OBJ_ROOT := $(subst //,/,$(shell cd $(BUILD_OBJ_DIR)/$(LEVEL); $(RPWD)))
+endif
+
+#
+# Set the source build directory. That is almost always the current directory.
+#
+ifndef BUILD_SRC_DIR
+BUILD_SRC_DIR := $(subst //,/,@abs_top_srcdir@/$(patsubst $(BUILD_OBJ_ROOT)%,%,$(BUILD_OBJ_DIR)))
+endif
+
+#
+# Set the source root directory.
+#
+ifndef BUILD_SRC_ROOT
+BUILD_SRC_ROOT := $(subst //,/,@abs_top_srcdir@)
+endif
+
+#
+# Set the LLVM object directory.
+#
+ifndef LLVM_OBJ_ROOT
+ifdef LLVM_SRC_ROOT
+LLVM_OBJ_ROOT := $(shell cd $(LLVM_SRC_ROOT); $(RPWD))
+else
+LLVM_OBJ_ROOT := $(BUILD_OBJ_ROOT)
+endif
+endif
+
+#
+# Set the LLVM source directory.
+# It is typically the root directory of what we're compiling now.
+#
+ifndef LLVM_SRC_ROOT
+LLVM_SRC_ROOT := $(BUILD_SRC_ROOT)
+endif
+
+#
+# Set SourceDir for backwards compatbility.
+#
+ifndef SourceDir
+SourceDir=$(BUILD_SRC_DIR)
+endif
+