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 this variable based on whether or not we have access to LLVM source and # object trees. ifeq ($(LLVM_SRC_ROOT),no) HAS_LLVM := 0 else ifeq ($(LLVM_OBJ_ROOT),no) HAS_LLVM := 0 else HAS_LLVM := 1 endif endif # 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@ program_prefix := @program_prefix@ # Include LLVM's configuration Makefile, if available. ifeq ($(HAS_LLVM),1) include $(LLVM_OBJ_ROOT)/Makefile.config else # Otherwise, define specific things we know we need. realpath = $(shell cd $(1); $(PWD)) PROJ_OBJ_DIR := $(call realpath, .) PROJ_OBJ_ROOT := $(call realpath, $(PROJ_OBJ_DIR)/$(LEVEL)) PROJ_SRC_DIR := $(call realpath, $(PROJ_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR))) CP := cp DATE := date DOT := dot ECHO := echo INSTALL := install LIBS := MKDIR := mkdir MV := mv PWD := pwd RM := rm SED := sed # Configure parameters. TARGET_OS := @TARGET_OS@ ARCH := @ARCH@ ENDIAN := @ENDIAN@ endif # Include the target config specific flags. -include $(PROJ_OBJ_ROOT)/tools/TargetConfig.mk # Define TCLSH here if LLVM's configuration Makefile is unavailable # or it does not define TCLSH. ifndef TCLSH TCLSH := tclsh endif # Ignore the LIBS set by $(LLVM_OBJ_ROOT)/Makefile.config LIBS := # Set SourceDir for backwards compatibility. ifndef SourceDir SourceDir=$(PROJ_SRC_DIR) endif ORIGINAL_CC := "$(CC)" ORIGINAL_CXX := "$(CC)" ifdef TARGET_ARCH ARCH := $(TARGET_ARCH) endif ifdef TARGET_CC CC := $(TARGET_CC) endif ifdef TARGET_CXX CXX := $(TARGET_CXX) endif # Path to location for LLVM C/C++ front-end. You can modify this if you # want to override the value set by configure. LLVMGCCDIR := @LLVMGCCDIR@ # Full pathnames of LLVM C/C++ front-end 'cc1' and 'cc1plus' binaries: LLVMGCC := @LLVMGCC@ LLVMGXX := @LLVMGXX@ LLVMCC1 := @LLVMCC1@ LLVMCC1PLUS := @LLVMCC1PLUS@ LLVMGCC_LANGS := @LLVMGCC_LANGS@ LLVMGCC_DRAGONEGG := @LLVMGCC_DRAGONEGG@ # Information on Clang, if configured. CLANGPATH := @CLANGPATH@ CLANGXXPATH := @CLANGXXPATH@ ENABLE_BUILT_CLANG := @ENABLE_BUILT_CLANG@ # The LLVM capable compiler to use. LLVMCC_OPTION := @LLVMCC_OPTION@ # The flag used to emit LLVM IR. LLVMCC_EMITIR_FLAG = @LLVMCC_EMITIR_FLAG@ LLVMCC_DISABLEOPT_FLAGS := @LLVMCC_DISABLEOPT_FLAGS@ 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) TEST_TARGET_FLAGS += -mthumb endif ifeq ($(ARCH),XCore) ifndef XCORE_TARGET_NEEDS_MEMORY # The default memory for all tests is 32MB (rather than the usual default of 64K). # (32MB target memory requires ~300MB of host memory) XCORE_TARGET_NEEDS_MEMORY := 32 endif XCORE_TARGET_FLAGS := --target=xcore -fcommon -fexceptions -mcmodel=large XCORE_TARGET_FLAGS += -Wl,-target=XS1-L1,-Xmapper,--defsymbol,-Xmapper,CmdLineWords=400 XCORE_TARGET_FLAGS += -Wl,-Xmapper,--image-size,-Xmapper,$$(($(XCORE_TARGET_NEEDS_MEMORY) * 0x100000)),-Xmapper,--image-base,-Xmapper,$$(($(XCORE_TARGET_NEEDS_MEMORY) * 0x100000)) endif # PowerPC/Linux needs -ffp-contract=off so that: # The outputs can be compared to gcc. # The outputs match the reference outputs. ifeq ($(ARCH),PowerPC) ifeq ($(TARGET_OS),Linux) TEST_TARGET_FLAGS += -ffp-contract=off endif 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@ # Path to the Skidmarks source code @USE_SKIDMARKS10@ SKIDMARKS10_ROOT := @SKIDMARKS10_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@ # Get CPU features HAVE_X86_AVX2_INSTRUCTIONS := @HAVE_X86_AVX2_INSTRUCTIONS@ HAVE_X86_AVX512F_INSTRUCTIONS := @HAVE_X86_AVX512F_INSTRUCTIONS@ HAVE_X86_AVX512VL_INSTRUCTIONS := @HAVE_X86_AVX512VL_INSTRUCTIONS@ HAVE_X86_AVX512BW_INSTRUCTIONS := @HAVE_X86_AVX512BW_INSTRUCTIONS@ HAVE_X86_AVX512DQ_INSTRUCTIONS := @HAVE_X86_AVX512DQ_INSTRUCTIONS@ HAVE_X86_AVX_INSTRUCTIONS := @HAVE_X86_AVX_INSTRUCTIONS@ HAVE_X86_BMI2_INSTRUCTIONS := @HAVE_X86_BMI2_INSTRUCTIONS@ HAVE_X86_BMI_INSTRUCTIONS := @HAVE_X86_BMI_INSTRUCTIONS@ HAVE_X86_FMA4_INSTRUCTIONS := @HAVE_X86_FMA4_INSTRUCTIONS@ HAVE_X86_FMA_INSTRUCTIONS := @HAVE_X86_FMA_INSTRUCTIONS@ HAVE_X86_MMX_INSTRUCTIONS := @HAVE_X86_MMX_INSTRUCTIONS@ HAVE_X86_POPCNT_INSTRUCTIONS := @HAVE_X86_POPCNT_INSTRUCTIONS@ HAVE_X86_SSE2_INSTRUCTIONS := @HAVE_X86_SSE2_INSTRUCTIONS@ HAVE_X86_SSE3_INSTRUCTIONS := @HAVE_X86_SSE3_INSTRUCTIONS@ HAVE_X86_SSE4_1_INSTRUCTIONS := @HAVE_X86_SSE4_1_INSTRUCTIONS@ HAVE_X86_SSE4_2_INSTRUCTIONS := @HAVE_X86_SSE4_2_INSTRUCTIONS@ HAVE_X86_SSE_INSTRUCTIONS := @HAVE_X86_SSE_INSTRUCTIONS@