PROJECT_NAME = @PACKAGE_NAME@
PROJ_VERSION = @PACKAGE_VERSION@
#
# Set this variable to the top of the LLVM source tree.
#
LLVM_SRC_ROOT = @LLVM_SRC@

#
# Set this variable to the top level directory where LLVM was built
# (this is *not* the same as OBJ_ROOT as defined in LLVM's Makefile.config).
#
LLVM_OBJ_ROOT = @LLVM_OBJ@

# Set the directory root of this project's source files
PROJ_SRC_ROOT := $(subst //,/,@abs_top_srcdir@)

# Set the root directory of this project's object files
PROJ_OBJ_ROOT := $(subst //,/,@abs_top_builddir@)

# Set the root directory of this project's install prefix
PROJ_INSTALL_ROOT := @prefix@

# Include LLVM's configuration Makefile.
include $(LLVM_OBJ_ROOT)/Makefile.config

# Ignore the LIBS set by $(LLVM_OBJ_ROOT)/Makefile.config
LIBS :=

# Set SourceDir for backwards compatibility.
ifndef SourceDir
SourceDir=$(PROJ_SRC_DIR)
endif

ifdef TARGET_ARCH
ARCH := $(TARGET_ARCH)
endif

ifdef TARGET_CC
CC := $(TARGET_CC)
endif

ifdef TARGET_CXX
CXX := $(TARGET_CXX)
endif

ifdef TARGET_LLVMGCC
LLVMGCC := $(TARGET_LLVMGCC)
LLVMCC := $(TARGET_LLVMGCC)
LLVMCC_OPTION := llvm-gcc
endif

ifdef TARGET_LLVMGXX
LLVMGXX := $(TARGET_LLVMGXX)
LLVMCXX := $(TARGET_LLVMGXX)
LLVMCC_OPTION := llvm-gcc
endif

ifdef TARGET_LLVMGCCARCH
LLVMGCCARCH := $(TARGET_LLVMGCCARCH)
endif

ifeq ($(ARCH),THUMB)
TARGET_FLAGS += -mthumb
endif

#
# Provide variables specific to llvm-test
#

# SPEC benchmarks:
#     If these are set then run the SPEC benchmarks.
#     You must provide the SPEC benchmarks on your own.
@USE_SPEC2006@
@USE_SPEC2000@
@USE_SPEC95@

# Path to the SPEC benchmarks.
SPEC2006_ROOT := @SPEC2006_ROOT@
SPEC2000_ROOT := @SPEC2000_ROOT@
SPEC95_ROOT := @SPEC95_ROOT@

# F2C: Enable LLVM to run Fortran benchmarks without a Fortran front-end
@USE_F2C@
F2C_DIR := @F2C_DIR@
F2C     := @F2C@
F2C_INC := @F2C_INC@
F2C_LIB := @F2C_LIB@

# F95: Enable LLVM to run Fortran benchmarks without a Fortran front-end
@USE_F95@
F95_DIR := @F95_DIR@
F95     := @F95@
F95_INC := @F95_INC@
F95_LIB := @F95_LIB@

# Path to the Povray source code.
@USE_POVRAY@
POVRAY_ROOT := @POVRAY_ROOT@

# Path to the Namd source code
@USE_NAMD@
NAMD_ROOT := @NAMD_ROOT@

# Path to the Sweep3d source code
@USE_SWEEP3D@
SWEEP3D_ROOT := @SWEEP3D_ROOT@

# Path to the fpgrowth source code
@USE_FPGROWTH@
FPGROWTH_ROOT := @FPGROWTH_ROOT@

# Path to the ALP source code
@USE_ALP@
ALP_ROOT := @ALP_ROOT@

# Path to the NURBS source code
@USE_NURBS@
NURBS_ROOT := @NURBS_ROOT@

# Path to the HMMER source code
@USE_HMMER@
HMMER_ROOT := @HMMER_ROOT@

# Disable LLC diffs for testing.
@DISABLE_LLC_DIFFS@

# Define HAVE_RE_COMP to 1 if re_comp is found, don't define it otherwise
@HAVE_RE_COMP@

# Get the shared library (dll) extension
SHLIBEXT = @SHLIBEXT@
