Further progress towards building with one click
We've mostly got things to work, but CMake gets stuck trying to figure out the ABI. I'm not entirely sure what its doing.
This commit is contained in:
@@ -74,7 +74,7 @@ if(IS_EXECUTABLE "${NINJA_BIN}")
|
|||||||
message(STATUS "Found outdated v${NINJA_VERSION_INSTALLED}.")
|
message(STATUS "Found outdated v${NINJA_VERSION_INSTALLED}.")
|
||||||
unset(NINJA_BIN)
|
unset(NINJA_BIN)
|
||||||
else()
|
else()
|
||||||
message(STATUS "Found v${NINJA_VERSION_INSTALLED}.")
|
#message(STATUS "Found v${NINJA_VERSION_INSTALLED}.")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -109,12 +109,16 @@ if((NOT IS_EXECUTABLE "${NINJA_BIN}") OR (NINJA_VERSION_INSTALLED VERSION_LESS N
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Download the ideal version.
|
# Download the ideal version.
|
||||||
message(STATUS "Downloading Ninja v${NINJA_VERSION}...")
|
if(NOT EXISTS "${NINJA_DIR}.${_FILE_EXT}")
|
||||||
file(DOWNLOAD
|
message(STATUS "Downloading Ninja v${NINJA_VERSION}...")
|
||||||
"https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/${_FILE_NAME}.${_FILE_EXT}"
|
file(DOWNLOAD
|
||||||
"${NINJA_DIR}.${_FILE_EXT}"
|
"https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/${_FILE_NAME}.${_FILE_EXT}"
|
||||||
SHOW_PROGRESS
|
"${NINJA_DIR}.${_FILE_EXT}"
|
||||||
)
|
SHOW_PROGRESS
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
message(STATUS "Skipping download as file already exists.")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Extract it.
|
# Extract it.
|
||||||
message(STATUS "Extracting...")
|
message(STATUS "Extracting...")
|
||||||
@@ -147,11 +151,10 @@ if((NOT IS_EXECUTABLE "${NINJA_BIN}") OR (NINJA_VERSION_INSTALLED VERSION_LESS N
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if((NOT IS_EXECUTABLE "${NINJA_BIN}") OR (NINJA_VERSION_INSTALLED VERSION_LESS NINJA_VERSION))
|
if((NOT IS_EXECUTABLE "${NINJA_BIN}") OR (NINJA_VERSION_INSTALLED VERSION_LESS NINJA_VERSION))
|
||||||
message(STATUS "NINJA_DIR=${NINJA_DIR}")
|
|
||||||
message(STATUS "NINJA_BIN=${NINJA_BIN}")
|
|
||||||
message(STATUS "NINJA_VERSION=${NINJA_VERSION}")
|
|
||||||
message(STATUS "NINJA_VERSION_INSTALLED=${NINJA_VERSION_INSTALLED}")
|
|
||||||
message(FATAL_ERROR "Failed to install newer version of Ninja.")
|
message(FATAL_ERROR "Failed to install newer version of Ninja.")
|
||||||
|
elseif(IS_EXECUTABLE "${NINJA_BIN}")
|
||||||
|
message(STATUS "Found v${NINJA_VERSION_INSTALLED}.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_MAKE_PROGRAM "${NINJA_BIN}" CACHE STRING "" FORCE)
|
set(CMAKE_MAKE_PROGRAM "${NINJA_BIN}" CACHE STRING "" FORCE)
|
||||||
|
list(POP_BACK CMAKE_MESSAGE_INDENT)
|
||||||
@@ -1,220 +0,0 @@
|
|||||||
# Copyright (C) 2023-2024 Michael Fabian 'Xaymar' Dirks
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.30...4.0)
|
|
||||||
include_guard(GLOBAL)
|
|
||||||
|
|
||||||
if((CMAKE_GENERATOR STREQUAL "Ninja") OR (CMAKE_GENERATOR STREQUAL "Ninja Multi-Config"))
|
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/../generators/ninja.cmake")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND CMAKE_MESSAGE_INDENT "[LLVM-ARM] ")
|
|
||||||
set(_VERSION "18.1.3")
|
|
||||||
set(_FILE "llvm-arm-${CMAKE_HOST_SYSTEM_NAME}-${CMAKE_HOST_SYSTEM_PROCESSOR}")
|
|
||||||
if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") # Windows
|
|
||||||
set(_FILENAME "LLVM-ET-Arm-${_VERSION}-Windows-x86_64")
|
|
||||||
set(_FILEEXT "zip")
|
|
||||||
elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin") # Darwin
|
|
||||||
set(_FILENAME "LLVM-ET-Arm-${_VERSION}-Darwin")
|
|
||||||
set(_FILEEXT "dmg")
|
|
||||||
else() # Generic Unix-like
|
|
||||||
set(_FILEEXT "tar.xz")
|
|
||||||
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)")
|
|
||||||
set(_FILENAME "LLVM-ET-Arm-${_VERSION}-Linux-x86_64")
|
|
||||||
else()
|
|
||||||
set(_FILENAME "LLVM-ET-Arm-${_VERSION}-Linux-AArch64")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Very hacky way to get CMake to behave like a normal makefile generator, instead of a mentally challenged makefile generator.
|
|
||||||
if(TRUE) # Check if we've already installed one of these,
|
|
||||||
if(WIN32)
|
|
||||||
set(TEMP "$ENV{TEMP}")
|
|
||||||
else()
|
|
||||||
set(TEMP "$ENV{TMPDIR}")
|
|
||||||
endif()
|
|
||||||
set(_PATH "${TEMP}/cmake/llvm-arm/${_VERSION}")
|
|
||||||
if(EXISTS "${_PATH}")
|
|
||||||
file(READ "${_PATH}" _DIR)
|
|
||||||
if (NOT EXISTS "${_DIR}")
|
|
||||||
file(REMOVE "${_PATH}")
|
|
||||||
unset(_DIR)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if((NOT _DIR) OR (EXISTS "${PROJECT_BINARY_DIR}/toolchain/${_FILE}.version"))
|
|
||||||
# Check if the version is what we expect.
|
|
||||||
if(EXISTS "${PROJECT_BINARY_DIR}/toolchain/${_FILE}.version")
|
|
||||||
file(READ "${PROJECT_BINARY_DIR}/toolchain/${_FILE}.version" _VERSION_STORED)
|
|
||||||
endif()
|
|
||||||
if((NOT _VERSION_STORED) OR (_VERSION_STORED VERSION_LESS _VERSION))
|
|
||||||
message(STATUS "Updating... (${_VERSION_STORED} < ${_VERSION})")
|
|
||||||
|
|
||||||
|
|
||||||
# Download the appropriate package from https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm
|
|
||||||
#- Grab the latest hash from the remote.
|
|
||||||
set(_HASH_FILE "${PROJECT_BINARY_DIR}/toolchain/${_FILE}.sha256")
|
|
||||||
file(DOWNLOAD
|
|
||||||
"https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-${_VERSION}/${_FILENAME}.${_FILEEXT}.sha256"
|
|
||||||
"${_HASH_FILE}"
|
|
||||||
)
|
|
||||||
file(READ "${_HASH_FILE}" _DOWNLOAD_SHA256)
|
|
||||||
string(REGEX MATCH "[0-9a-fA-F]+" _DOWNLOAD_SHA256 "${_DOWNLOAD_SHA256}")
|
|
||||||
file(REMOVE "${_HASH_FILE}")
|
|
||||||
|
|
||||||
#- Download the latest toolchain
|
|
||||||
set(_PACKAGE_FILE "${PROJECT_BINARY_DIR}/toolchain/${_FILE}.${_FILEEXT}")
|
|
||||||
file(DOWNLOAD
|
|
||||||
"https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-${_VERSION}/${_FILENAME}.${_FILEEXT}"
|
|
||||||
"${_PACKAGE_FILE}"
|
|
||||||
EXPECTED_HASH SHA256=${_DOWNLOAD_SHA256}
|
|
||||||
)
|
|
||||||
|
|
||||||
#- Extract the contents
|
|
||||||
file(ARCHIVE_EXTRACT
|
|
||||||
INPUT "${_PACKAGE_FILE}"
|
|
||||||
DESTINATION "${PROJECT_BINARY_DIR}/toolchain/"
|
|
||||||
)
|
|
||||||
#file(REMOVE "${_PACKAGE_FILE}")
|
|
||||||
|
|
||||||
file(WRITE "${PROJECT_BINARY_DIR}/toolchain/${_FILE}.version" "${_VERSION}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Update the virtual link
|
|
||||||
file(WRITE "${_PATH}" "${PROJECT_BINARY_DIR}/toolchain/${_FILENAME}/")
|
|
||||||
|
|
||||||
set(_LLVM_TOOLCHAIN "${PROJECT_BINARY_DIR}/toolchain/${_FILENAME}/")
|
|
||||||
else()
|
|
||||||
set(_LLVM_TOOLCHAIN "${_DIR}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND CMAKE_PREFIX_PATH
|
|
||||||
"${_LLVM_TOOLCHAIN}/bin"
|
|
||||||
"${_LLVM_TOOLCHAIN}"
|
|
||||||
)
|
|
||||||
# Find necessary programs.
|
|
||||||
# - AR
|
|
||||||
find_program(
|
|
||||||
CMAKE_AR
|
|
||||||
NAMES
|
|
||||||
llvm-ar
|
|
||||||
PATHS
|
|
||||||
"${_LLVM_TOOLCHAIN}/bin"
|
|
||||||
NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
|
||||||
# - Library Randomizer
|
|
||||||
find_program(
|
|
||||||
CMAKE_RANLIB
|
|
||||||
NAMES
|
|
||||||
llvm-ranlib
|
|
||||||
PATHS
|
|
||||||
"${_LLVM_TOOLCHAIN}/bin"
|
|
||||||
NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
|
||||||
# - Linker
|
|
||||||
find_program(
|
|
||||||
CMAKE_LINKER
|
|
||||||
NAMES
|
|
||||||
ld.lld
|
|
||||||
PATHS
|
|
||||||
"${_LLVM_TOOLCHAIN}/bin"
|
|
||||||
NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
|
||||||
# - Object Copy
|
|
||||||
find_program(
|
|
||||||
CMAKE_OBJCOPY
|
|
||||||
NAMES
|
|
||||||
llvm-objcopy
|
|
||||||
PATHS
|
|
||||||
"${_LLVM_TOOLCHAIN}/bin"
|
|
||||||
NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
|
||||||
# - Object Dump
|
|
||||||
find_program(
|
|
||||||
CMAKE_OBJDUMP
|
|
||||||
NAMES
|
|
||||||
llvm-objdump
|
|
||||||
PATHS
|
|
||||||
"${_LLVM_TOOLCHAIN}/bin"
|
|
||||||
NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
|
||||||
# - Strip Debug Info
|
|
||||||
find_program(
|
|
||||||
CMAKE_STRIP
|
|
||||||
NAMES
|
|
||||||
llvm-strip
|
|
||||||
PATHS
|
|
||||||
"${_LLVM_TOOLCHAIN}/bin"
|
|
||||||
NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
|
||||||
# - C Compiler
|
|
||||||
find_program(
|
|
||||||
CMAKE_C_COMPILER
|
|
||||||
NAMES
|
|
||||||
clang
|
|
||||||
clang++
|
|
||||||
clang-cpp
|
|
||||||
PATHS
|
|
||||||
"${_LLVM_TOOLCHAIN}/bin"
|
|
||||||
NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
|
||||||
set(CMAKE_C_COMPILER_AR "${CMAKE_AR}" CACHE STRING "" FORCE)
|
|
||||||
#set(CMAKE_C_COMPILER_CLANG_SCAN_DEPS "NOT-FOUND" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_C_COMPILER_RANLIB "${CMAKE_RANLIB}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_C_LINKER "${CMAKE_LINKER}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_C_LINKER_ID "LDD" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_C_LINKER_FRONTEND_VARIANT "LLD" CACHE STRING "" FORCE)
|
|
||||||
# - C++ Compiler
|
|
||||||
find_program(
|
|
||||||
CMAKE_CXX_COMPILER
|
|
||||||
NAMES
|
|
||||||
clang++
|
|
||||||
clang-cpp
|
|
||||||
clang
|
|
||||||
PATHS
|
|
||||||
"${_LLVM_TOOLCHAIN}/bin"
|
|
||||||
NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
|
||||||
set(CMAKE_CXX_COMPILER_AR "${CMAKE_AR}" CACHE STRING "" FORCE)
|
|
||||||
#set(CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS "NOT-FOUND" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_CXX_SCAN_FOR_MODULES OFF CACHE BOOL "" FORCE)
|
|
||||||
set(CMAKE_CXX_COMPILER_RANLIB "${CMAKE_RANLIB}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_CXX_LINKER "${CMAKE_C_LINKER}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_CXX_LINKER_ID "LLD" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_CXX_LINKER_FRONTEND_VARIANT "LLD" CACHE STRING "" FORCE)
|
|
||||||
# - Assembly Compiler
|
|
||||||
set(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_ASM_COMPILER_AR "${CMAKE_AR}" CACHE STRING "" FORCE)
|
|
||||||
#set(CMAKE_ASM_COMPILER_CLANG_SCAN_DEPS "NOT-FOUND" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_ASM_COMPILER_RANLIB "${CMAKE_RANLIB}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_ASM_LINKER "${CMAKE_C_LINKER}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_ASM_LINKER_ID "LLD" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_ASM_LINKER_FRONTEND_VARIANT "LLD" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
#mark_as_advanced(CLANG_C_COMPILER CLANG_CPP_COMPILER CLANG__AR CLANG__LD_LDD)
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=\"${CMAKE_C_LINKER}\"")
|
|
||||||
set(CMAKE_STATIC_LINKER_FLAGS_INIT "-fuse-ld=\"${CMAKE_C_LINKER}\"")
|
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=\"${CMAKE_C_LINKER}\"")
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=\"${CMAKE_C_LINKER}\"")
|
|
||||||
|
|
||||||
execute_process(
|
|
||||||
COMMAND "${CMAKE_C_COMPILER}" "--version"
|
|
||||||
OUTPUT_VARIABLE _VERSION_INSTALLED
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
)
|
|
||||||
string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" _VERSION_INSTALLED "${_VERSION_INSTALLED}")
|
|
||||||
message(STATUS "v${_VERSION_INSTALLED}")
|
|
||||||
list(POP_BACK CMAKE_MESSAGE_INDENT)
|
|
||||||
+168
-133
@@ -13,7 +13,8 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
# This is a self-contained toolchain file that sets up everything necessary to compile with LLVM/Clang.
|
# This is a (mostly) self-contained toolchain file that sets up everything necessary to compile with LLVM/Clang.
|
||||||
|
# cmake --fresh -C cmake/generators/ninja.cmake --preset windows-x64-llvm
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.30...4.0)
|
cmake_minimum_required(VERSION 3.30...4.0)
|
||||||
include_guard(GLOBAL)
|
include_guard(GLOBAL)
|
||||||
@@ -36,6 +37,22 @@ if(CMAKE_HOST_SYSTEM_NAME MATCHES "[Ww]indows")
|
|||||||
set(_FILE_NAME "LLVM-${LLVM_VERSION}-woa64")
|
set(_FILE_NAME "LLVM-${LLVM_VERSION}-woa64")
|
||||||
endif()
|
endif()
|
||||||
set(_FILE_EXT "exe")
|
set(_FILE_EXT "exe")
|
||||||
|
|
||||||
|
#Computer\HKEY_CURRENT_USER\SOFTWARE\7-Zip\Path64
|
||||||
|
cmake_host_system_information(
|
||||||
|
RESULT 7ZIP_DIR
|
||||||
|
QUERY WINDOWS_REGISTRY "HKCU/SOFTWARE/7-Zip" VALUE "Path64"
|
||||||
|
VIEW HOST
|
||||||
|
)
|
||||||
|
find_program(7ZIP_BIN
|
||||||
|
NAMES
|
||||||
|
7z
|
||||||
|
7za
|
||||||
|
HINTS
|
||||||
|
"${7ZIP_DIR}"
|
||||||
|
"C:/Program Files/7-Zip"
|
||||||
|
"C:/Program Files (x86)/7-Zip"
|
||||||
|
)
|
||||||
elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "[Dd]arwin")
|
elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "[Dd]arwin")
|
||||||
set(_OS "macos")
|
set(_OS "macos")
|
||||||
execute_process(
|
execute_process(
|
||||||
@@ -88,116 +105,99 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
set(LLVM_DIR "${CMAKE_SOURCE_DIR}/extra/llvm-${LLVM_VERSION}-${_OS}-${_ARCH}")
|
set(LLVM_DIR "${CMAKE_SOURCE_DIR}/extra/llvm-${LLVM_VERSION}-${_OS}-${_ARCH}")
|
||||||
|
|
||||||
foreach(_T IN ITEMS LLVM_VERSION LLVM_VERSION_INSTALLED LLVM_DIR LLVM_AR LLVM_LD LLVM_RANLIB LLVM_OBJCOPY LLVM_OBJDUMP LLVM_STRIP LLVM_CLANG LLVM_CLANGPP)
|
|
||||||
message(STATUS "${_T}=${${_T}}")
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
function(validator_llvm_bin _var _item)
|
|
||||||
message(STATUS "${_var} ${_item}")
|
|
||||||
if(NOT IS_EXECUTABLE "${_item}")
|
|
||||||
set("${_var}" FALSE PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
execute_process(
|
|
||||||
COMMAND "${_item}" --version
|
|
||||||
OUTPUT_VARIABLE _OUT
|
|
||||||
RESULT_VARIABLE _RES
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
)
|
|
||||||
message(STATUS "${_OUT} ${_RES}")
|
|
||||||
if(NOT _RES EQUAL 0)
|
|
||||||
set("${_var}" FALSE PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
if(_OUT VERSION_LESS LLVM_VERSION)
|
|
||||||
set("${_var}" FALSE PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
set("${_var}" TRUE PARENT_SCOPE)
|
|
||||||
set(LLVM_VERSION_INSTALLED "${_OUT}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
macro(find_llvm)
|
macro(find_llvm)
|
||||||
set(LLVM_FOUND "NOT-FOUND")
|
set(LLVM_FOUND "FALSE")
|
||||||
|
|
||||||
# - AR
|
# - AR
|
||||||
find_program(
|
find_program(
|
||||||
LLVM_AR
|
LLVM_AR
|
||||||
NAMES
|
NAMES
|
||||||
llvm-ar
|
llvm-ar
|
||||||
HINTS
|
PATHS
|
||||||
"${LLVM_DIR}/bin"
|
"${LLVM_DIR}/bin/"
|
||||||
#VALIDATOR validator_llvm_bin
|
NO_CACHE
|
||||||
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# - Library Randomizer
|
# - Library Randomizer
|
||||||
find_program(
|
find_program(
|
||||||
LLVM_RANLIB
|
LLVM_RANLIB
|
||||||
NAMES
|
NAMES
|
||||||
llvm-ranlib
|
llvm-ranlib
|
||||||
HINTS
|
PATHS
|
||||||
"${LLVM_DIR}/bin"
|
"${LLVM_DIR}/bin/"
|
||||||
#VALIDATOR validator_llvm_bin
|
NO_CACHE
|
||||||
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# - Linker
|
# - Linker
|
||||||
find_program(
|
if(_ARCH MATCHES "[xX]64")
|
||||||
LLVM_LD
|
find_program(
|
||||||
NAMES
|
LLVM_LD
|
||||||
ld.lld
|
NAMES
|
||||||
HINTS
|
ld64.lld
|
||||||
"${LLVM_DIR}/bin"
|
ld.lld
|
||||||
#VALIDATOR validator_llvm_bin
|
PATHS
|
||||||
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
"${LLVM_DIR}/bin/"
|
||||||
)
|
NO_CACHE
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
find_program(
|
||||||
|
LLVM_LD
|
||||||
|
NAMES
|
||||||
|
ld.lld
|
||||||
|
PATHS
|
||||||
|
"${LLVM_DIR}/bin/"
|
||||||
|
NO_CACHE
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# - Object Copy
|
# - Object Copy
|
||||||
find_program(
|
find_program(
|
||||||
LLVM_OBJCOPY
|
LLVM_OBJCOPY
|
||||||
NAMES
|
NAMES
|
||||||
llvm-objcopy
|
llvm-objcopy
|
||||||
HINTS
|
PATHS
|
||||||
"${LLVM_DIR}/bin"
|
"${LLVM_DIR}/bin/"
|
||||||
#VALIDATOR validator_llvm_bin
|
NO_CACHE
|
||||||
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# - Object Dump
|
# - Object Dump
|
||||||
find_program(
|
find_program(
|
||||||
LLVM_OBJDUMP
|
LLVM_OBJDUMP
|
||||||
NAMES
|
NAMES
|
||||||
llvm-objdump
|
llvm-objdump
|
||||||
HINTS
|
PATHS
|
||||||
"${LLVM_DIR}/bin"
|
"${LLVM_DIR}/bin/"
|
||||||
#VALIDATOR validator_llvm_bin
|
NO_CACHE
|
||||||
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# - Strip Debug Info
|
# - Strip Debug Info
|
||||||
find_program(
|
find_program(
|
||||||
LLVM_STRIP
|
LLVM_STRIP
|
||||||
NAMES
|
NAMES
|
||||||
llvm-strip
|
llvm-strip
|
||||||
HINTS
|
PATHS
|
||||||
"${LLVM_DIR}/bin"
|
"${LLVM_DIR}/bin/"
|
||||||
#VALIDATOR validator_llvm_bin
|
NO_CACHE
|
||||||
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# - C Compiler
|
# - C Compiler
|
||||||
find_program(
|
find_program(
|
||||||
LLVM_CLANG
|
LLVM_CLANG
|
||||||
NAMES
|
NAMES
|
||||||
clang
|
clang
|
||||||
HINTS
|
PATHS
|
||||||
"${LLVM_DIR}/bin"
|
"${LLVM_DIR}/bin/"
|
||||||
#VALIDATOR validator_llvm_bin
|
NO_CACHE
|
||||||
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# - C++ Compiler
|
# - C++ Compiler
|
||||||
find_program(
|
find_program(
|
||||||
LLVM_CLANGPP
|
LLVM_CLANGPP
|
||||||
NAMES
|
NAMES
|
||||||
clang++
|
clang++
|
||||||
HINTS
|
PATHS
|
||||||
"${LLVM_DIR}/bin"
|
"${LLVM_DIR}/bin/"
|
||||||
#VALIDATOR validator_llvm_bin
|
NO_CACHE
|
||||||
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(LLVM_FOUND TRUE)
|
set(LLVM_FOUND TRUE)
|
||||||
@@ -210,91 +210,126 @@ macro(find_llvm)
|
|||||||
"LLVM_STRIP"
|
"LLVM_STRIP"
|
||||||
"LLVM_CLANG"
|
"LLVM_CLANG"
|
||||||
"LLVM_CLANGPP")
|
"LLVM_CLANGPP")
|
||||||
message(STATUS "${_TEST}=${${_TEST}}")
|
|
||||||
if(NOT IS_EXECUTABLE ${${_TEST}})
|
if(NOT IS_EXECUTABLE ${${_TEST}})
|
||||||
set(LLVM_FOUND FALSE)
|
set(LLVM_FOUND FALSE)
|
||||||
foreach(_TEST IN ITEMS
|
break()
|
||||||
"LLVM_AR"
|
else()
|
||||||
"LLVM_LD"
|
execute_process(
|
||||||
"LLVM_RANLIB"
|
COMMAND "${${_TEST}}" --version
|
||||||
"LLVM_OBJCOPY"
|
OUTPUT_VARIABLE ${_TEST}_VERSION
|
||||||
"LLVM_OBJDUMP"
|
RESULT_VARIABLE _RES
|
||||||
"LLVM_STRIP"
|
)
|
||||||
"LLVM_CLANG"
|
if(NOT _RES EQUAL 0)
|
||||||
"LLVM_CLANGPP")
|
set(LLVM_FOUND FALSE)
|
||||||
unset(${_TEST})
|
break()
|
||||||
endforeach()
|
endif()
|
||||||
|
|
||||||
|
string(REGEX MATCH "[1-9+]?[0-9+]\.[1-9+]?[0-9+]\.[1-9+]?[0-9+]\." "${_TEST}_VERSION" "${${_TEST}_VERSION}")
|
||||||
|
string(REGEX REPLACE "[\r\n]+" "" "${_TEST}_VERSION" "${${_TEST}_VERSION}")
|
||||||
|
if(${_TEST}_VERSION VERSION_LESS LLVM_VERSION)
|
||||||
|
set(LLVM_FOUND FALSE)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
# foreach(_T IN ITEMS LLVM_VERSION LLVM_DIR LLVM_AR LLVM_LD LLVM_RANLIB LLVM_OBJCOPY LLVM_OBJDUMP LLVM_STRIP LLVM_CLANG LLVM_CLANGPP LLVM_AR_VERSION LLVM_LD_VERSION LLVM_RANLIB_VERSION LLVM_OBJCOPY_VERSION LLVM_OBJDUMP_VERSION LLVM_STRIP_VERSION LLVM_CLANG_VERSION LLVM_CLANGPP)
|
||||||
|
# message(STATUS "${_T}=${${_T}}")
|
||||||
|
# endforeach()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
# Try and find an existing LLVM installation.
|
# Try and find an existing LLVM installation.
|
||||||
find_llvm()
|
find_llvm()
|
||||||
foreach(_T IN ITEMS LLVM_VERSION LLVM_VERSION_INSTALLED LLVM_DIR LLVM_AR LLVM_LD LLVM_RANLIB LLVM_OBJCOPY LLVM_OBJDUMP LLVM_STRIP LLVM_CLANG LLVM_CLANGPP)
|
if(LLVM_CLANG_VERSION AND LLVM_CLANG_VERSION VERSION_LESS LLVM_VERSION)
|
||||||
message(STATUS "${_T}=${${_T}}")
|
message(STATUS "Found outdated v${LLVM_CLANG_VERSION}.")
|
||||||
endforeach()
|
elseif(NOT LLVM_FOUND)
|
||||||
if(LLVM_FOUND)
|
|
||||||
message(STATUS "Found v${LLVM_VERSION_INSTALLED}.")
|
|
||||||
elseif(LLVM_VERSION_INSTALLED AND LLVM_VERSION_INSTALLED VERSION_LESS LLVM_VERSION)
|
|
||||||
message(STATUS "Found outdated v${LLVM_VERSION_INSTALLED}.")
|
|
||||||
elseif(NOT LLVM_FOUND AND NOT LLVM_VERSION_INSTALLED)
|
|
||||||
message(STATUS "No installed LLVM found.")
|
message(STATUS "No installed LLVM found.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT LLVM_FOUND)
|
if(NOT LLVM_FOUND OR (LLVM_CLANG_VERSION VERSION_LESS LLVM_VERSION))
|
||||||
# It isn't up to date or doesn't exist, so try to download the latest version.
|
# It isn't up to date or doesn't exist, so try to download the latest version.
|
||||||
|
if((_FILE_EXT MATCHES "exe") AND NOT 7ZIP_BIN)
|
||||||
|
message(FATAL_ERROR "7-Zip is required to continue setting up LLVM. Please provide '7z.exe' in PATH or by installing the latest version from https://www.7-zip.org/.")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Download the ideal version.
|
# Download the ideal version.
|
||||||
message(STATUS "Downloading LLVM v${LLVM_VERSION}...")
|
if(NOT EXISTS "${LLVM_DIR}.${_FILE_EXT}")
|
||||||
file(DOWNLOAD
|
message(STATUS "Downloading LLVM v${LLVM_VERSION}...")
|
||||||
"https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/${_FILE_NAME}.${_FILE_EXT}"
|
file(DOWNLOAD
|
||||||
"${LLVM_DIR}.${_FILE_EXT}"
|
"https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/${_FILE_NAME}.${_FILE_EXT}"
|
||||||
SHOW_PROGRESS
|
"${LLVM_DIR}.${_FILE_EXT}"
|
||||||
)
|
SHOW_PROGRESS
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
message(STATUS "Skipping download as file already exists.")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Extract it.
|
# Extract it.
|
||||||
message(STATUS "Extracting...")
|
message(STATUS "Extracting...")
|
||||||
file(ARCHIVE_EXTRACT
|
if(_FILE_EXT MATCHES "exe")
|
||||||
INPUT "${LLVM_DIR}.${_FILE_EXT}"
|
execute_process(
|
||||||
DESTINATION "${LLVM_DIR}/"
|
COMMAND ${7ZIP_BIN} x -y -aoa "-o${LLVM_DIR}/" "${LLVM_DIR}.${_FILE_EXT}"
|
||||||
)
|
COMMAND_ERROR_IS_FATAL ANY
|
||||||
|
OUTPUT_QUIET
|
||||||
|
ERROR_QUIET
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
file(ARCHIVE_EXTRACT
|
||||||
|
INPUT "${LLVM_DIR}.${_FILE_EXT}"
|
||||||
|
DESTINATION "${LLVM_DIR}/"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Delete the archive itself.
|
||||||
|
message(STATUS "Cleaning...")
|
||||||
|
file(REMOVE "${LLVM_DIR}.${_FILE_EXT}")
|
||||||
|
|
||||||
|
# Final stuff
|
||||||
|
#message(STATUS "Testing...")
|
||||||
|
find_llvm()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(LLVM_FOUND AND (LLVM_CLANG_VERSION VERSION_GREATER_EQUAL LLVM_VERSION))
|
||||||
|
message(STATUS "Found v${LLVM_CLANG_VERSION}.")
|
||||||
|
|
||||||
|
set(CMAKE_AR "${LLVM_AR}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_LINKER "${LLVM_LD}" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
# set(CMAKE_C_COMPILER_AR "${CMAKE_AR}" CACHE STRING "" FORCE)
|
set(CMAKE_C_COMPILER "${LLVM_CLANG}" CACHE STRING "" FORCE)
|
||||||
# #set(CMAKE_C_COMPILER_CLANG_SCAN_DEPS "NOT-FOUND" CACHE STRING "" FORCE)
|
set(CMAKE_C_COMPILER_AR "${LLVM_AR}" CACHE STRING "" FORCE)
|
||||||
# set(CMAKE_C_COMPILER_RANLIB "${CMAKE_RANLIB}" CACHE STRING "" FORCE)
|
set(CMAKE_C_COMPILER_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE)
|
||||||
# set(CMAKE_C_LINKER "${CMAKE_LINKER}" CACHE STRING "" FORCE)
|
set(CMAKE_C_COMPILER_LINKER "${LLVM_LD}" CACHE STRING "" FORCE)
|
||||||
# set(CMAKE_C_LINKER_ID "LDD" CACHE STRING "" FORCE)
|
set(CMAKE_C_COMPILER_LINKER_ID "LLD" CACHE STRING "" FORCE)
|
||||||
# set(CMAKE_C_LINKER_FRONTEND_VARIANT "LLD" CACHE STRING "" FORCE)
|
set(CMAKE_C_COMPILER_LINKER_VERSION "${LLVM_LD_VERSION}" CACHE STRING "" FORCE)
|
||||||
# set(CMAKE_CXX_COMPILER_AR "${CMAKE_AR}" CACHE STRING "" FORCE)
|
|
||||||
# #set(CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS "NOT-FOUND" CACHE STRING "" FORCE)
|
|
||||||
# set(CMAKE_CXX_SCAN_FOR_MODULES OFF CACHE BOOL "" FORCE)
|
|
||||||
# set(CMAKE_CXX_COMPILER_RANLIB "${CMAKE_RANLIB}" CACHE STRING "" FORCE)
|
|
||||||
# set(CMAKE_CXX_LINKER "${CMAKE_C_LINKER}" CACHE STRING "" FORCE)
|
|
||||||
# set(CMAKE_CXX_LINKER_ID "LLD" CACHE STRING "" FORCE)
|
|
||||||
# set(CMAKE_CXX_LINKER_FRONTEND_VARIANT "LLD" CACHE STRING "" FORCE)
|
|
||||||
# # - Assembly Compiler
|
|
||||||
# set(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}" CACHE STRING "" FORCE)
|
|
||||||
# set(CMAKE_ASM_COMPILER_AR "${CMAKE_AR}" CACHE STRING "" FORCE)
|
|
||||||
# #set(CMAKE_ASM_COMPILER_CLANG_SCAN_DEPS "NOT-FOUND" CACHE STRING "" FORCE)
|
|
||||||
# set(CMAKE_ASM_COMPILER_RANLIB "${CMAKE_RANLIB}" CACHE STRING "" FORCE)
|
|
||||||
# set(CMAKE_ASM_LINKER "${CMAKE_C_LINKER}" CACHE STRING "" FORCE)
|
|
||||||
# set(CMAKE_ASM_LINKER_ID "LLD" CACHE STRING "" FORCE)
|
|
||||||
# set(CMAKE_ASM_LINKER_FRONTEND_VARIANT "LLD" CACHE STRING "" FORCE)
|
|
||||||
# #mark_as_advanced(CLANG_C_COMPILER CLANG_CPP_COMPILER CLANG__AR CLANG__LD_LDD)
|
|
||||||
# set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=\"${CMAKE_C_LINKER}\"")
|
|
||||||
# set(CMAKE_STATIC_LINKER_FLAGS_INIT "-fuse-ld=\"${CMAKE_C_LINKER}\"")
|
|
||||||
# set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=\"${CMAKE_C_LINKER}\"")
|
|
||||||
# set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=\"${CMAKE_C_LINKER}\"")
|
|
||||||
|
|
||||||
# execute_process(
|
set(CMAKE_CXX_COMPILER "${LLVM_CLANGPP}" CACHE STRING "" FORCE)
|
||||||
# COMMAND "${CMAKE_C_COMPILER}" "--version"
|
set(CMAKE_CXX_COMPILER_AR "${LLVM_AR}" CACHE STRING "" FORCE)
|
||||||
# OUTPUT_VARIABLE _VERSION_INSTALLED
|
set(CMAKE_CXX_COMPILER_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE)
|
||||||
# OUTPUT_STRIP_TRAILING_WHITESPACE
|
set(CMAKE_CXX_COMPILER_LINKER "${LLVM_LD}" CACHE STRING "" FORCE)
|
||||||
# )
|
set(CMAKE_CXX_COMPILER_LINKER_ID "LLD" CACHE STRING "" FORCE)
|
||||||
# string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" _VERSION_INSTALLED "${LLVM_VERSION_INSTALLED}")
|
set(CMAKE_CXX_COMPILER_LINKER_VERSION "${LLVM_LD_VERSION}" CACHE STRING "" FORCE)
|
||||||
# message(STATUS "v${LLVM_VERSION_INSTALLED}")
|
|
||||||
# list(POP_BACK CMAKE_MESSAGE_INDENT)
|
set(CMAKE_ASM_COMPILER "${LLVM_CLANG}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_ASM_COMPILER_AR "${LLVM_AR}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_ASM_COMPILER_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_ASM_COMPILER_LINKER "${LLVM_LD}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_ASM_COMPILER_LINKER_ID "LLD" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_ASM_COMPILER_LINKER_VERSION "${LLVM_LD_VERSION}" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
|
set(CMAKE_RC_COMPILER "${LLVM_CLANG}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_RC_COMPILER_AR "${LLVM_AR}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_RC_COMPILER_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_RC_COMPILER_LINKER "${LLVM_LD}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_RC_COMPILER_LINKER_ID "LLD" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_RC_COMPILER_LINKER_VERSION "${LLVM_LD_VERSION}" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
|
# Needed otherwise CMake will attempt to use GNU ld, MSVC link.exe, or AppleClangs lld
|
||||||
|
# set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
|
||||||
|
# set(CMAKE_STATIC_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
|
||||||
|
# set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
|
||||||
|
# set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Failed to find or provide a compatible LLVM installation.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(POP_BACK CMAKE_MESSAGE_INDENT)
|
||||||
Reference in New Issue
Block a user