104 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF)
 | 
						|
 | 
						|
find_package(LLVM REQUIRED CONFIG HINTS ${LLVM_DIR} NO_CMAKE_FIND_ROOT_PATH)
 | 
						|
find_package(Clang REQUIRED CONFIG HINTS ${Clang_DIR} ${LLVM_DIR}/../clang NO_CMAKE_FIND_ROOT_PATH)
 | 
						|
 | 
						|
# We set LLVM_CMAKE_PATH so that GetSVN.cmake is found correctly when building SVNVersion.inc
 | 
						|
set(LLVM_CMAKE_PATH ${LLVM_CMAKE_DIR} CACHE PATH "Path to LLVM CMake modules")
 | 
						|
 | 
						|
set(LLVM_MAIN_SRC_DIR ${LLVM_BUILD_MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree")
 | 
						|
set(LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_INCLUDE_DIR} CACHE PATH "Path to llvm/include")
 | 
						|
set(LLVM_BINARY_DIR ${LLVM_BINARY_DIR} CACHE PATH "Path to LLVM build tree")
 | 
						|
 | 
						|
set(lit_file_name "llvm-lit")
 | 
						|
if(CMAKE_HOST_WIN32 AND NOT CYGWIN)
 | 
						|
  set(lit_file_name "${lit_file_name}.py")
 | 
						|
endif()
 | 
						|
 | 
						|
function(append_configuration_directories input_dir output_dirs)
 | 
						|
  set(dirs_list ${input_dir})
 | 
						|
  foreach(config_type ${LLVM_CONFIGURATION_TYPES})
 | 
						|
    string(REPLACE ${CMAKE_CFG_INTDIR} ${config_type} dir ${input_dir})
 | 
						|
    list(APPEND dirs_list ${dir})
 | 
						|
  endforeach()
 | 
						|
  set(${output_dirs} ${dirs_list} PARENT_SCOPE)
 | 
						|
endfunction()
 | 
						|
 | 
						|
 | 
						|
append_configuration_directories(${LLVM_TOOLS_BINARY_DIR} config_dirs)
 | 
						|
find_program(lit_full_path ${lit_file_name} ${config_dirs} NO_DEFAULT_PATH)
 | 
						|
set(LLVM_DEFAULT_EXTERNAL_LIT ${lit_full_path} CACHE PATH "Path to llvm-lit")
 | 
						|
 | 
						|
if(LLVM_TABLEGEN)
 | 
						|
  set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN})
 | 
						|
else()
 | 
						|
  if(CMAKE_CROSSCOMPILING)
 | 
						|
    set(LLVM_NATIVE_BUILD "${LLVM_BINARY_DIR}/NATIVE")
 | 
						|
    if (NOT EXISTS "${LLVM_NATIVE_BUILD}")
 | 
						|
      message(FATAL_ERROR
 | 
						|
        "Attempting to cross-compile LLDB standalone but no native LLVM build
 | 
						|
        found. Please cross-compile LLVM as well.")
 | 
						|
    endif()
 | 
						|
 | 
						|
    if (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
 | 
						|
      set(HOST_EXECUTABLE_SUFFIX ".exe")
 | 
						|
    endif()
 | 
						|
 | 
						|
    if (NOT CMAKE_CONFIGURATION_TYPES)
 | 
						|
      set(LLVM_TABLEGEN_EXE
 | 
						|
        "${LLVM_NATIVE_BUILD}/bin/llvm-tblgen${HOST_EXECUTABLE_SUFFIX}")
 | 
						|
    else()
 | 
						|
      # NOTE: LLVM NATIVE build is always built Release, as is specified in
 | 
						|
      # CrossCompile.cmake
 | 
						|
      set(LLVM_TABLEGEN_EXE
 | 
						|
        "${LLVM_NATIVE_BUILD}/Release/bin/llvm-tblgen${HOST_EXECUTABLE_SUFFIX}")
 | 
						|
    endif()
 | 
						|
  else()
 | 
						|
    set(tblgen_file_name "llvm-tblgen${CMAKE_EXECUTABLE_SUFFIX}")
 | 
						|
    append_configuration_directories(${LLVM_TOOLS_BINARY_DIR} config_dirs)
 | 
						|
    find_program(LLVM_TABLEGEN_EXE ${tblgen_file_name} ${config_dirs} NO_DEFAULT_PATH)
 | 
						|
  endif()
 | 
						|
endif()
 | 
						|
 | 
						|
# They are used as destination of target generators.
 | 
						|
set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
 | 
						|
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
 | 
						|
if(WIN32 OR CYGWIN)
 | 
						|
  # DLL platform -- put DLLs into bin.
 | 
						|
  set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
 | 
						|
else()
 | 
						|
  set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
 | 
						|
endif()
 | 
						|
 | 
						|
# We append the directory in which LLVMConfig.cmake lives. We expect LLVM's
 | 
						|
# CMake modules to be in that directory as well.
 | 
						|
list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")
 | 
						|
include(AddLLVM)
 | 
						|
include(TableGen)
 | 
						|
include(HandleLLVMOptions)
 | 
						|
include(CheckAtomic)
 | 
						|
include(LLVMDistributionSupport)
 | 
						|
 | 
						|
set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}")
 | 
						|
set(LLVM_INCLUDE_TESTS ON CACHE INTERNAL "")
 | 
						|
 | 
						|
option(LLVM_USE_FOLDERS "Enable solution folders in Visual Studio. Disable for Express versions." ON)
 | 
						|
if(LLVM_USE_FOLDERS)
 | 
						|
  set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 | 
						|
endif()
 | 
						|
 | 
						|
set_target_properties(clang-tablegen-targets PROPERTIES FOLDER "lldb misc")
 | 
						|
set_target_properties(intrinsics_gen PROPERTIES FOLDER "lldb misc")
 | 
						|
 | 
						|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
 | 
						|
include_directories(
 | 
						|
  "${CMAKE_BINARY_DIR}/include"
 | 
						|
  "${LLVM_INCLUDE_DIRS}"
 | 
						|
  "${CLANG_INCLUDE_DIRS}")
 | 
						|
 | 
						|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
 | 
						|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
 | 
						|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
 | 
						|
 | 
						|
set(LLDB_BUILT_STANDALONE 1)
 |