Add initial work towards a one-click build setup

We can use some of CMakes built-in systems to ease the required workflow for the whole toolchain. This may eventually allow us to do a single click system where a developer does not need to do anything to get started. If Google can do this (even if slightly scuffed), so can we.
This commit is contained in:
Xaymar
2025-04-17 11:26:57 +02:00
parent 15b8ed7690
commit dfe1aab2ea
6 changed files with 495 additions and 4 deletions
+4 -4
View File
@@ -168,11 +168,11 @@ project(
${PROJECT_NAME} ${PROJECT_NAME}
VERSION ${PROJECT_VERSION} VERSION ${PROJECT_VERSION}
) )
set(PROJECT_IDENTIFER "com.xaymar.BlitzLLVM") set(PROJECT_IDENTIFER "com.xaymar.blitzllvm")
set(PROJECT_TITLE "BlitzLLVM") set(PROJECT_TITLE "BlitzLLVM")
set(PROJECT_AUTHORS "See AUTHORS file") set(PROJECT_AUTHORS "Xaymar <info@xaymar.com>") # ToDo: Generate from AUTHORS
set(PROJECT_COPYRIGHT "All Rights Reserved. See LICENSE file for more information") set(PROJECT_COPYRIGHT "All Rights Reserved. See LICENSE file for more information") # ToDo: Generate from LICENSE
set(PROJECT_TRADEMARKS "") set(PROJECT_TRADEMARKS "")
function(init_project TARGET) function(init_project TARGET)
set_target_properties(${TARGET} PROPERTIES set_target_properties(${TARGET} PROPERTIES
+55
View File
@@ -0,0 +1,55 @@
{
"version": 6,
"cmakeMinimumRequired": {
"major": 4,
"minor": 0,
"patch": 0
},
"configurePresets": [
{
"name": "default",
"cacheVariables": {
"__CMAKE_VERBOSE_MAKEFILE": "ON",
"CMAKE_INTERPROCEDURAL_OPTIMIZATION": "ON"
},
"hidden": true
},
{
"inherits": "default",
"name": "windows-x64-llvm",
"description": "Windows, x86-64 (LLVM)",
"binaryDir": "build/windows-x64-llvm",
"installDir": "distrib/windows-x64-llvm",
"toolchainFile": "cmake/toolchains/llvm.cmake",
"generator": "Ninja Multi-Config",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/cmake/toolchains/llvm.cmake",
"CMAKE_MAKE_PROGRAM": "build/windows-x64-llvm/toolchains/ninja/ninja.exe"
}
},
{
"inherits": "default",
"name": "windows-x64-msvc",
"description": "Windows, x86-64 (MSVC 2022)",
"binaryDir": "build/windows-x64-msvc",
"installDir": "distrib/windows-x64-msvc",
"generator": "Visual Studio 17 2022",
"cacheVariables": {
}
}
],
"buildPresets": [
{
"configurePreset": "windows-x64-llvm",
"name": "windows-x64-llvm",
"description": "",
"displayName": "Windows, x64 (LLVM)"
},
{
"configurePreset": "windows-x64-msvc",
"name": "windows-x64-msvc",
"description": "",
"displayName": "Windows, x64 (MSVC 2022)"
}
]
}
+155
View File
@@ -0,0 +1,155 @@
# Copyright (C) 2024-2025 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/>.
# This is a script file that installs the necessary "Ninja" and "Ninja Multi-Config" generators.
# Run with `cmake -P cmake/generators/ninja.cmake` from the source directory.
cmake_minimum_required(VERSION 3.30...4.0)
include_guard(GLOBAL)
list(APPEND CMAKE_MESSAGE_INDENT "[Ninja] ")
# Try and figure out what processor we need to get binaries for.
if(CMAKE_HOST_SYSTEM_NAME MATCHES "[Ww]indows")
string(TOLOWER "$ENV{PROCESSOR_ARCHITECTURE}" _ARCH)
set(_OS "windows")
elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "[Dd]arwin")
set(_ARCH "multiarch")
set(_OS "macos")
elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "[Oo]pen[Bb][Ss][Dd]")
set(_OS "openbsd")
execute_process(
COMMAND "arch"
OUTPUT_VARIABLE _ARCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else()
set(_OS "linux")
execute_process(
COMMAND "uname -p"
OUTPUT_VARIABLE _ARCH
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE _RES
)
if(_RES EQUAL 0)
execute_process(
COMMAND "uname -m"
OUTPUT_VARIABLE _ARCH
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE _RES
)
endif()
endif()
set(NINJA_VERSION "1.12.1")
set(NINJA_DIR "${CMAKE_SOURCE_DIR}/extra/ninja-${NINJA_VERSION}-${_OS}-${_ARCH}")
# Check if Ninja is present and if it is up to date.
find_program(NINJA_BIN
NAMES
ninja
HINTS
"${NINJA_DIR}/"
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
)
if(IS_EXECUTABLE "${NINJA_BIN}")
execute_process(
COMMAND ${NINJA_BIN} --version
OUTPUT_VARIABLE NINJA_VERSION_INSTALLED
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REGEX REPLACE "[\r\n]+" "" NINJA_VERSION_INSTALLED "${NINJA_VERSION_INSTALLED}")
if((EXISTS NINJA_BIN) AND (NINJA_VERSION_INSTALLED VERSION_LESS NINJA_VERSION))
message(STATUS "Found outdated v${NINJA_VERSION_INSTALLED}.")
else()
message(STATUS "Found v${NINJA_VERSION_INSTALLED}.")
endif()
endif()
if((NOT IS_EXECUTABLE "${NINJA_BIN}") OR (NINJA_VERSION_INSTALLED VERSION_LESS NINJA_VERSION))
# It isn't up to date or doesn't exist, so try to download the latest version.
# First we'll have to figure out what we need to download, and from where.
if(_OS MATCHES "windows")
# Windows and Windows-like
SET (_FILE_EXT "zip")
if(_ARCH MATCHES "([xX]86)|([aA][mM][dD]64)")
# It's x86, x86-64 or amd64
SET (_FILE_NAME "ninja-win")
else()
# Assume ARM or ARM64
SET (_FILE_NAME "ninja-winarm64")
endif()
elseif(_OS MATCHES "macos")
# MacOS and MacOS-like
SET (_FILE_EXT "zip")
SET (_FILE_NAME "ninja-mac")
else()
# Assume this to be generic Unix-like.
SET (_FILE_EXT "tar.xz")
if(_ARCH MATCHES "([xX]86)|([aA][mM][dD]64)")
# It's x86, x86-64 or amd64
SET (_FILE_NAME "ninja-linux")
else()
# Assume ARM or ARM64
SET (_FILE_NAME "ninja-linux-aarch64")
endif()
endif()
# Download the ideal version.
message(STATUS "Downloading Ninja v${NINJA_VERSION}...")
file(DOWNLOAD
"https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/${_FILE_NAME}.${_FILE_EXT}"
"${NINJA_DIR}.${_FILE_EXT}"
)
# Extract it.
message(STATUS "Extracting...")
file(ARCHIVE_EXTRACT
INPUT "${NINJA_DIR}.${_FILE_EXT}"
DESTINATION "${NINJA_DIR}/"
)
# Delete the archive itself.
message(STATUS "Cleaning...")
file(REMOVE "${NINJA_DIR}.${_FILE_EXT}")
# Check if Ninja is present and if it is up to date.
message(STATUS "Testing...")
find_program(NINJA_BIN
NAMES
ninja
HINTS
"${NINJA_DIR}/"
NO_CACHE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_FIND_ROOT_PATH
)
if(IS_EXECUTABLE "${NINJA_BIN}")
execute_process(
COMMAND ${NINJA_BIN} --version
OUTPUT_VARIABLE NINJA_VERSION_INSTALLED
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REGEX REPLACE "[\r\n]+" "" NINJA_VERSION_INSTALLED "${NINJA_VERSION_INSTALLED}")
endif()
endif()
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.")
endif()
set(CMAKE_MAKE_PROGRAM "${NINJA_BIN}" CACHE STRING "" FORCE)
+220
View File
@@ -0,0 +1,220 @@
# 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)
+60
View File
@@ -0,0 +1,60 @@
# TinyAudioLink - Seamlessly transfer Audio between USB capable devices
# Copyright (C) 2019 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/>.
find_program(
CLANG_C_COMPILER
NAMES
clang
clang-cl
clang++
clang-cpp
NO_CACHE
)
find_program(
CLANG_CPP_COMPILER
NAMES
clang++
clang-cpp
clang
clang-cl
NO_CACHE
)
find_program(
CLANG_LLVM_AR
NAMES
llvm-ar
NO_CACHE
)
find_program(
CLANG_LLVM_LD_LDD
NAMES
ld.lld
NO_CACHE
)
mark_as_advanced(CLANG_C_COMPILER CLANG_CPP_COMPILER CLANG_LLVM_AR CLANG_LLVM_LD_LDD)
set(CMAKE_C_COMPILER "${CLANG_C_COMPILER}")
set(CMAKE_CXX_COMPILER "${CLANG_CPP_COMPILER}")
set(CMAKE_AR "${CLANG_LLVM_AR}")
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.29)
set(CMAKE_LINKER_TYPE "LLD")
else()
set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=\"${CLANG_LLVM_LD_LDD}\"")
set(CMAKE_STATIC_LINKER_FLAGS_INIT "-fuse-ld=\"${CLANG_LLVM_LD_LDD}\"")
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=\"${CLANG_LLVM_LD_LDD}\"")
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=\"${CLANG_LLVM_LD_LDD}\"")
endif()
+1
View File
@@ -0,0 +1 @@
This directory contains automatically downloaded toolchains and generators.