From c2cea628ef0dcd43c977cc089cc2cfc666c2cee0 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 17 Feb 2023 11:12:33 +0100 Subject: [PATCH 01/31] Test x86 mac --- Dockerfile.llvm | 14 ++++++ Jenkinsfile | 65 +++++++++++++++++++++++++ llvm/Apple-stage1.cmake | 60 +++++++++++++++++++++++ llvm/Apple-stage2-ThinLTO.cmake | 6 +++ llvm/Apple-stage2.cmake | 85 +++++++++++++++++++++++++++++++++ 5 files changed, 230 insertions(+) create mode 100644 Dockerfile.llvm create mode 100644 Jenkinsfile create mode 100644 llvm/Apple-stage1.cmake create mode 100644 llvm/Apple-stage2-ThinLTO.cmake create mode 100644 llvm/Apple-stage2.cmake diff --git a/Dockerfile.llvm b/Dockerfile.llvm new file mode 100644 index 00000000..15c5b3c4 --- /dev/null +++ b/Dockerfile.llvm @@ -0,0 +1,14 @@ +FROM ubuntu:jammy + +RUN apt-get update +RUN apt-get install -y \ + build-essential \ + clang-14 \ + clang++-14 \ + cmake \ + libc6-dev-i386 \ + python3-pip \ + python3-distutils \ + vim \ + ninja-build \ + git diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..6c8e5d52 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,65 @@ +#!groovy + +/** + * This Jenkinsfile will only work in a Swift Navigation build/CI environment, as it uses + * non-public docker images and pipeline libraries. + */ + +// Use 'ci-jenkins@somebranch' to pull shared lib from a different branch than the default. +// Default is configured in Jenkins and should be from "stable" tag. +@Library("ci-jenkins") import com.swiftnav.ci.* + +def context = new Context(context: this) +context.setRepo("swift-toolchains") + +/** + * - Mount the refrepo to keep git operations functional on a repo that uses ref-repo during clone + **/ +String dockerMountArgs = "-v /mnt/efs/refrepo:/mnt/efs/refrepo" + +pipeline { + // Override agent in each stage to make sure we don't share containers among stages. + agent any + options { + // Make sure job aborts after 2 hours if hanging. + timeout(time: 4, unit: 'HOURS') + timestamps() + // Keep builds for 7 days. + buildDiscarder(logRotator(daysToKeepStr: '7')) + } + + stages { + stage('Build') { + parallel { + stage('llvm x86_64 darwin') { + agent { + node('macos') + } + steps { + sh(''' + git clone https://github.com/llvm/llvm-project --branch=llvmorg-14.0.6 --single-branch + cd llvm-project + + mkdir build + cd build + + cmake -GNinja ../llvm \ + -DCMAKE_INSTALL_PREFIX=../out/ \ + -DCMAKE_OSX_ARCHITECTURES='x86_64' \ + -DCMAKE_C_COMPILER=`which clang` \ + -DCMAKE_CXX_COMPILER=`which clang++` \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=../out \ + -DLLVM_ENABLE_PROJECTS='clang' \ + -DLLVM_DISTRIBUTION_COMPONENTS='clang' \ + -C ../../llvm/Apple-stage1.cmake + ninja help + ninja stage2-install-distribution || true + ''') + sh('find llvm-project/out/') + } + } + } + } + } +} diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake new file mode 100644 index 00000000..8a4fe6df --- /dev/null +++ b/llvm/Apple-stage1.cmake @@ -0,0 +1,60 @@ +# This file sets up a CMakeCache for Apple-style bootstrap builds. It can be +# used on any Darwin system to approximate Apple Clang builds. + +if($ENV{DT_TOOLCHAIN_DIR}) + set(CMAKE_INSTALL_PREFIX $ENV{DT_TOOLCHAIN_DIR}/usr/) +else() + set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) +endif() + +set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") +set(CLANG_VENDOR Apple CACHE STRING "") +set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") +set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "") +set(LLVM_INCLUDE_UTILS OFF CACHE BOOL "") +set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "") +set(CLANG_INCLUDE_TESTS OFF CACHE BOOL "") +set(COMPILER_RT_INCLUDE_TESTS OFF CACHE BOOL "") +set(COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "") +set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") +set(LLVM_ENABLE_ZLIB OFF CACHE BOOL "") +set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "") +set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "") +set(CLANG_SPAWN_CC1 ON CACHE BOOL "") +set(CLANG_BOOTSTRAP_PASSTHROUGH + CMAKE_OSX_ARCHITECTURES + CACHE STRING "") + +# Disabling embedded darwin compiler-rt on stage1 builds is required because we +# don't build stage1 to support arm code generation. +set(COMPILER_RT_ENABLE_IOS OFF CACHE BOOL "") +set(COMPILER_RT_ENABLE_WATCHOS OFF CACHE BOOL "") +set(COMPILER_RT_ENABLE_TVOS OFF CACHE BOOL "") + +set(BOOTSTRAP_LLVM_ENABLE_LTO ON CACHE BOOL "") +set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") + +set(LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS OFF CACHE BOOL "") +set(LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "") + +set(CLANG_BOOTSTRAP_TARGETS + generate-order-file + check-all + check-llvm + check-clang + llvm-config + test-suite + test-depends + llvm-test-depends + clang-test-depends + distribution + install-distribution + install-xcode-toolchain + install-distribution-toolchain + clang CACHE STRING "") + +#bootstrap +set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "") +set(CLANG_BOOTSTRAP_CMAKE_ARGS + -C ${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake + CACHE STRING "") diff --git a/llvm/Apple-stage2-ThinLTO.cmake b/llvm/Apple-stage2-ThinLTO.cmake new file mode 100644 index 00000000..54e54e30 --- /dev/null +++ b/llvm/Apple-stage2-ThinLTO.cmake @@ -0,0 +1,6 @@ +# This file sets up a CMakeCache for Apple-style stage2 ThinLTO bootstrap. It is +# specified by the stage1 build. + + +set(LLVM_ENABLE_LTO THIN CACHE BOOL "") +include(${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake) diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake new file mode 100644 index 00000000..3f4e310d --- /dev/null +++ b/llvm/Apple-stage2.cmake @@ -0,0 +1,85 @@ +# This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is +# specified by the stage1 build. + +set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") +set(PACKAGE_VENDOR Apple CACHE STRING "") +set(CLANG_VENDOR_UTI com.apple.clang CACHE STRING "") +set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "") +set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "") +set(LLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD OFF CACHE BOOL "") +set(CLANG_TOOL_SCAN_BUILD_BUILD OFF CACHE BOOL "") +set(CLANG_TOOL_SCAN_VIEW_BUILD OFF CACHE BOOL "") +set(CLANG_LINKS_TO_CREATE clang++ cc c++ CACHE STRING "") +set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") +set(LLVM_ENABLE_ZLIB ON CACHE BOOL "") +set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "") +set(LLVM_ENABLE_MODULES ON CACHE BOOL "") +set(LLVM_EXTERNALIZE_DEBUGINFO ON CACHE BOOL "") +set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "") +set(CLANG_SPAWN_CC1 ON CACHE BOOL "") +set(BUG_REPORT_URL "http://developer.apple.com/bugreporter/" CACHE STRING "") + +set(LLVM_BUILD_EXTERNAL_COMPILER_RT ON CACHE BOOL "Build Compiler-RT with just-built clang") +set(COMPILER_RT_ENABLE_IOS ON CACHE BOOL "Build iOS Compiler-RT libraries") + +set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatible toolchain") + +# Make unit tests (if present) part of the ALL target +set(LLVM_BUILD_TESTS ON CACHE BOOL "") + +set(LLVM_ENABLE_LTO ON CACHE BOOL "") +set(CMAKE_C_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "") +set(CMAKE_CXX_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "") +if(LLVM_ENABLE_LTO AND NOT LLVM_ENABLE_LTO STREQUAL "THIN") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "") +endif() +set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") + +set(LIBCXX_INSTALL_LIBRARY OFF CACHE BOOL "") +set(LIBCXX_INSTALL_HEADERS ON CACHE BOOL "") +set(LIBCXX_INCLUDE_TESTS OFF CACHE BOOL "") +set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") +set(LLVM_LTO_VERSION_OFFSET 3000 CACHE STRING "") + +# Generating Xcode toolchains is useful for developers wanting to build and use +# clang without installing over existing tools. +set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "") + +# setup toolchain +set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") +set(LLVM_TOOLCHAIN_TOOLS + dsymutil + llvm-cov + llvm-dwarfdump + llvm-profdata + llvm-objdump + llvm-nm + llvm-size + llvm-cxxfilt + llvm-config + CACHE STRING "") + +set(LLVM_BUILD_UTILS ON CACHE BOOL "") +set(LLVM_INSTALL_UTILS ON CACHE BOOL "") +set(LLVM_TOOLCHAIN_UTILITIES + FileCheck + yaml2obj + not + count + CACHE STRING "") + +set(LLVM_DISTRIBUTION_COMPONENTS + clang + # LTO + # clang-format + # clang-resource-headers + # cxx-headers + # Remarks + # ${LLVM_TOOLCHAIN_TOOLS} + # ${LLVM_TOOLCHAIN_UTILITIES} + CACHE STRING "") + +# test args + +set(LLVM_LIT_ARGS "--xunit-xml-output=testresults.xunit.xml -v" CACHE STRING "") From f1353e210491ce2174d5c537a15fe0cf5eb27740 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 17 Feb 2023 11:30:20 +0100 Subject: [PATCH 02/31] Test --- llvm/Apple-stage2.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 3f4e310d..3e4ce5c8 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -22,7 +22,7 @@ set(BUG_REPORT_URL "http://developer.apple.com/bugreporter/" CACHE STRING "") set(LLVM_BUILD_EXTERNAL_COMPILER_RT ON CACHE BOOL "Build Compiler-RT with just-built clang") set(COMPILER_RT_ENABLE_IOS ON CACHE BOOL "Build iOS Compiler-RT libraries") -set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatible toolchain") +# set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatible toolchain") # Make unit tests (if present) part of the ALL target set(LLVM_BUILD_TESTS ON CACHE BOOL "") @@ -44,7 +44,7 @@ set(LLVM_LTO_VERSION_OFFSET 3000 CACHE STRING "") # Generating Xcode toolchains is useful for developers wanting to build and use # clang without installing over existing tools. -set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "") +# set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "") # setup toolchain set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") From f5543414573ad7f4cd92ba7d7a4c11e6c3dc9a0f Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 17 Feb 2023 12:30:37 +0100 Subject: [PATCH 03/31] Test --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 6c8e5d52..c009c037 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -52,6 +52,7 @@ pipeline { -DCMAKE_INSTALL_PREFIX=../out \ -DLLVM_ENABLE_PROJECTS='clang' \ -DLLVM_DISTRIBUTION_COMPONENTS='clang' \ + -DLLVM_ENABLE_LIBCXX=ON \ -C ../../llvm/Apple-stage1.cmake ninja help ninja stage2-install-distribution || true From 8e79762772c7592f687b321509da95391c823dad Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 17 Feb 2023 13:22:30 +0100 Subject: [PATCH 04/31] enable libcxx --- Jenkinsfile | 1 - llvm/Apple-stage2.cmake | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index c009c037..6c8e5d52 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -52,7 +52,6 @@ pipeline { -DCMAKE_INSTALL_PREFIX=../out \ -DLLVM_ENABLE_PROJECTS='clang' \ -DLLVM_DISTRIBUTION_COMPONENTS='clang' \ - -DLLVM_ENABLE_LIBCXX=ON \ -C ../../llvm/Apple-stage1.cmake ninja help ninja stage2-install-distribution || true diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 3e4ce5c8..20efbb0c 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -40,6 +40,9 @@ set(LIBCXX_INSTALL_LIBRARY OFF CACHE BOOL "") set(LIBCXX_INSTALL_HEADERS ON CACHE BOOL "") set(LIBCXX_INCLUDE_TESTS OFF CACHE BOOL "") set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") + +set(LLVM_ENABLE_LIBCXX ON CACHE BOOL "") + set(LLVM_LTO_VERSION_OFFSET 3000 CACHE STRING "") # Generating Xcode toolchains is useful for developers wanting to build and use From 52f0398ae982dc448d8f0d938438261068c15ef6 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 17 Feb 2023 14:17:39 +0100 Subject: [PATCH 05/31] Try 15.0.0 --- Jenkinsfile | 2 +- llvm/Apple-stage2.cmake | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6c8e5d52..dc0ca1e5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -37,7 +37,7 @@ pipeline { } steps { sh(''' - git clone https://github.com/llvm/llvm-project --branch=llvmorg-14.0.6 --single-branch + git clone https://github.com/llvm/llvm-project --branch=llvmorg-15.0.0-rc1 --single-branch cd llvm-project mkdir build diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 20efbb0c..c4cb7830 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -41,8 +41,6 @@ set(LIBCXX_INSTALL_HEADERS ON CACHE BOOL "") set(LIBCXX_INCLUDE_TESTS OFF CACHE BOOL "") set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") -set(LLVM_ENABLE_LIBCXX ON CACHE BOOL "") - set(LLVM_LTO_VERSION_OFFSET 3000 CACHE STRING "") # Generating Xcode toolchains is useful for developers wanting to build and use From a152445812345c85265204ece181030506824fdc Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 17 Feb 2023 15:16:00 +0100 Subject: [PATCH 06/31] Test --- llvm/Apple-stage1.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 8a4fe6df..8dcff57a 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -7,6 +7,9 @@ else() set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) endif() +set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") +set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") + set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(CLANG_VENDOR Apple CACHE STRING "") set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") From 23a2cd0b9950f9c1c41db4864d0e88fb0928924e Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 17 Feb 2023 16:58:44 +0100 Subject: [PATCH 07/31] Build all needed components --- llvm/Apple-stage2.cmake | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index c4cb7830..7f77a968 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,6 +1,8 @@ # This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is # specified by the stage1 build. +set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") + set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(PACKAGE_VENDOR Apple CACHE STRING "") set(CLANG_VENDOR_UTI com.apple.clang CACHE STRING "") @@ -50,35 +52,20 @@ set(LLVM_LTO_VERSION_OFFSET 3000 CACHE STRING "") # setup toolchain set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") set(LLVM_TOOLCHAIN_TOOLS - dsymutil + llvm-ar llvm-cov - llvm-dwarfdump - llvm-profdata - llvm-objdump + llvm-dwp llvm-nm - llvm-size - llvm-cxxfilt - llvm-config - CACHE STRING "") - -set(LLVM_BUILD_UTILS ON CACHE BOOL "") -set(LLVM_INSTALL_UTILS ON CACHE BOOL "") -set(LLVM_TOOLCHAIN_UTILITIES - FileCheck - yaml2obj - not - count + llvm-objcopy + llvm-objdump + llvm-profdata + llvm-strip CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS clang - # LTO - # clang-format - # clang-resource-headers - # cxx-headers - # Remarks - # ${LLVM_TOOLCHAIN_TOOLS} - # ${LLVM_TOOLCHAIN_UTILITIES} + lld + ${LLVM_TOOLCHAIN_TOOLS} CACHE STRING "") # test args From 4e511e9117739f18afbdb8e17993c72d735b94b4 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 17 Feb 2023 17:02:55 +0100 Subject: [PATCH 08/31] Tar --- Jenkinsfile | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index dc0ca1e5..031237b5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -37,7 +37,7 @@ pipeline { } steps { sh(''' - git clone https://github.com/llvm/llvm-project --branch=llvmorg-15.0.0-rc1 --single-branch + git clone https://github.com/llvm/llvm-project --branch=llvmorg-14.0.6 --single-branch cd llvm-project mkdir build @@ -57,6 +57,27 @@ pipeline { ninja stage2-install-distribution || true ''') sh('find llvm-project/out/') + sh(''' + mkdir -p tar/clang+llvm-14.0.6-x86_64-apple/bin + cp llvm-project/out/bin/llvm-ar \ + llvm-project/out/bin/llvm-cov \ + llvm-project/out/bin/llvm-dwp \ + llvm-project/out/bin/llvm-nm \ + llvm-project/out/bin/llvm-objcopy \ + llvm-project/out/bin/llvm-objdump \ + llvm-project/out/bin/llvm-profdata \ + llvm-project/out/bin/llvm-strip \ + llvm-project/out/bin/clang-cpp \ + llvm-project/out/bin/ld.lld \ + tar/clang+llvm-14.0.6-x86_64-apple/bin + ''') + tar(file: 'clang+llvm-14.0.6-x86_64-apple.tar.gz', dir: 'tar', archive: false) + script{ + context.archivePatterns( + patterns: ['clang+llvm-14.0.6-x86_64-apple.tar.gz'], + path: "swift-toolchains/${context.gitDescribe()}/clang+llvm-14.0.6-x86_64-apple.tar.gz", + jenkins: true + ) } } } From 1555116c72ce9d807b22a087486e74babf6a2862 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 17 Feb 2023 17:26:19 +0100 Subject: [PATCH 09/31] Fix --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 031237b5..b42dd94a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -78,6 +78,7 @@ pipeline { path: "swift-toolchains/${context.gitDescribe()}/clang+llvm-14.0.6-x86_64-apple.tar.gz", jenkins: true ) + } } } } From ec025da698b60bf7c9cdb8fc9bf62f56d80b33cd Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 20 Feb 2023 08:25:34 +0100 Subject: [PATCH 10/31] Try only lld --- Jenkinsfile | 46 ++++++++++++++++++++--------------------- llvm/Apple-stage1.cmake | 2 +- llvm/Apple-stage2.cmake | 6 +++--- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b42dd94a..39557daa 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -56,29 +56,29 @@ pipeline { ninja help ninja stage2-install-distribution || true ''') - sh('find llvm-project/out/') - sh(''' - mkdir -p tar/clang+llvm-14.0.6-x86_64-apple/bin - cp llvm-project/out/bin/llvm-ar \ - llvm-project/out/bin/llvm-cov \ - llvm-project/out/bin/llvm-dwp \ - llvm-project/out/bin/llvm-nm \ - llvm-project/out/bin/llvm-objcopy \ - llvm-project/out/bin/llvm-objdump \ - llvm-project/out/bin/llvm-profdata \ - llvm-project/out/bin/llvm-strip \ - llvm-project/out/bin/clang-cpp \ - llvm-project/out/bin/ld.lld \ - tar/clang+llvm-14.0.6-x86_64-apple/bin - ''') - tar(file: 'clang+llvm-14.0.6-x86_64-apple.tar.gz', dir: 'tar', archive: false) - script{ - context.archivePatterns( - patterns: ['clang+llvm-14.0.6-x86_64-apple.tar.gz'], - path: "swift-toolchains/${context.gitDescribe()}/clang+llvm-14.0.6-x86_64-apple.tar.gz", - jenkins: true - ) - } + // sh('find llvm-project/out/') + // sh(''' + // mkdir -p tar/clang+llvm-14.0.6-x86_64-apple/bin + // cp llvm-project/out/bin/llvm-ar \ + // llvm-project/out/bin/llvm-cov \ + // llvm-project/out/bin/llvm-dwp \ + // llvm-project/out/bin/llvm-nm \ + // llvm-project/out/bin/llvm-objcopy \ + // llvm-project/out/bin/llvm-objdump \ + // llvm-project/out/bin/llvm-profdata \ + // llvm-project/out/bin/llvm-strip \ + // llvm-project/out/bin/clang-cpp \ + // llvm-project/out/bin/ld.lld \ + // tar/clang+llvm-14.0.6-x86_64-apple/bin + // ''') + // tar(file: 'clang+llvm-14.0.6-x86_64-apple.tar.gz', dir: 'tar', archive: false) + // script{ + // context.archivePatterns( + // patterns: ['clang+llvm-14.0.6-x86_64-apple.tar.gz'], + // path: "swift-toolchains/${context.gitDescribe()}/clang+llvm-14.0.6-x86_64-apple.tar.gz", + // jenkins: true + // ) + // } } } } diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 8dcff57a..a5f02cdc 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -7,7 +7,7 @@ else() set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) endif() -set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 7f77a968..cff7b084 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,7 +1,7 @@ # This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is # specified by the stage1 build. -set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(PACKAGE_VENDOR Apple CACHE STRING "") @@ -63,9 +63,9 @@ set(LLVM_TOOLCHAIN_TOOLS CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS - clang + # clang lld - ${LLVM_TOOLCHAIN_TOOLS} + # ${LLVM_TOOLCHAIN_TOOLS} CACHE STRING "") # test args From c54f9207ec2e2b4a474aec9cc3eaf12a4c201471 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 20 Feb 2023 09:15:49 +0100 Subject: [PATCH 11/31] Fix --- llvm/Apple-stage2.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index cff7b084..55eae7f5 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,8 +1,6 @@ # This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is # specified by the stage1 build. -set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") - set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(PACKAGE_VENDOR Apple CACHE STRING "") set(CLANG_VENDOR_UTI com.apple.clang CACHE STRING "") From 7caa220c2906c342bc57c73571d710af0ac4ba81 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 20 Feb 2023 09:33:38 +0100 Subject: [PATCH 12/31] Try fix --- llvm/Apple-stage1.cmake | 2 +- llvm/Apple-stage2.cmake | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index a5f02cdc..3d103f13 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -7,7 +7,7 @@ else() set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) endif() -set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 55eae7f5..cff7b084 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,6 +1,8 @@ # This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is # specified by the stage1 build. +set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") + set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(PACKAGE_VENDOR Apple CACHE STRING "") set(CLANG_VENDOR_UTI com.apple.clang CACHE STRING "") From 499d9ca3f2e6f3bd1393bee94c20bfd06d9f3610 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 20 Feb 2023 15:11:18 +0100 Subject: [PATCH 13/31] Fix --- Jenkinsfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 39557daa..71df7b3f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -50,8 +50,6 @@ pipeline { -DCMAKE_CXX_COMPILER=`which clang++` \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=../out \ - -DLLVM_ENABLE_PROJECTS='clang' \ - -DLLVM_DISTRIBUTION_COMPONENTS='clang' \ -C ../../llvm/Apple-stage1.cmake ninja help ninja stage2-install-distribution || true From d75e1b1d3e9c4b35a3df237ab5f4845d4109b815 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 20 Feb 2023 16:55:43 +0100 Subject: [PATCH 14/31] Try fix --- Jenkinsfile | 2 +- llvm/Apple-stage1.cmake | 4 ++-- llvm/Apple-stage2.cmake | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 71df7b3f..f66636f3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -49,8 +49,8 @@ pipeline { -DCMAKE_C_COMPILER=`which clang` \ -DCMAKE_CXX_COMPILER=`which clang++` \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=../out \ -C ../../llvm/Apple-stage1.cmake + ninja help ninja stage2-install-distribution || true ''') diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 3d103f13..66152172 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -7,7 +7,7 @@ else() set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) endif() -set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") @@ -60,4 +60,4 @@ set(CLANG_BOOTSTRAP_TARGETS set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "") set(CLANG_BOOTSTRAP_CMAKE_ARGS -C ${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake - CACHE STRING "") + CACHE STRING "") \ No newline at end of file diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index cff7b084..0a0e92f9 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,7 +1,7 @@ # This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is # specified by the stage1 build. -set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(PACKAGE_VENDOR Apple CACHE STRING "") @@ -63,11 +63,11 @@ set(LLVM_TOOLCHAIN_TOOLS CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS - # clang + clang lld - # ${LLVM_TOOLCHAIN_TOOLS} + ${LLVM_TOOLCHAIN_TOOLS} CACHE STRING "") # test args -set(LLVM_LIT_ARGS "--xunit-xml-output=testresults.xunit.xml -v" CACHE STRING "") +set(LLVM_LIT_ARGS "--xunit-xml-output=testresults.xunit.xml -v" CACHE STRING "") \ No newline at end of file From 040f5b3529f5d05f2ca0fe9c73016ef110b1bc5b Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 20 Feb 2023 17:55:49 +0100 Subject: [PATCH 15/31] Try fix --- llvm/Apple-stage1.cmake | 4 ++-- llvm/Apple-stage2.cmake | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 66152172..884ad3a3 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -7,8 +7,8 @@ else() set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) endif() -set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") -set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") +# set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") +# set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(CLANG_VENDOR Apple CACHE STRING "") diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 0a0e92f9..59bd6746 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,7 +1,7 @@ # This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is # specified by the stage1 build. -set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(PACKAGE_VENDOR Apple CACHE STRING "") @@ -63,9 +63,9 @@ set(LLVM_TOOLCHAIN_TOOLS CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS - clang + # clang lld - ${LLVM_TOOLCHAIN_TOOLS} + # ${LLVM_TOOLCHAIN_TOOLS} CACHE STRING "") # test args From de8057b08ab572127babfa9057a4444474e59e93 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 20 Feb 2023 18:09:24 +0100 Subject: [PATCH 16/31] Enable lld in stage 1 --- llvm/Apple-stage1.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 884ad3a3..1893c79e 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -7,6 +7,7 @@ else() set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) endif() +set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") # set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") # set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") From 6e43f6587577cc2596af61b0980b2d4043240350 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 20 Feb 2023 18:24:19 +0100 Subject: [PATCH 17/31] Test --- llvm/Apple-stage1.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 1893c79e..351c454f 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -7,7 +7,7 @@ else() set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) endif() -set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") # set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") # set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") From d3a7b936b14d3d831a327d264e5d8ab4ff2b412a Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 20 Feb 2023 18:52:56 +0100 Subject: [PATCH 18/31] Try fix --- llvm/Apple-stage1.cmake | 6 +++--- llvm/Apple-stage2.cmake | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 351c454f..f649d354 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -7,9 +7,9 @@ else() set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) endif() -set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") -# set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") -# set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") +# set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") +set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(CLANG_VENDOR Apple CACHE STRING "") diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 59bd6746..b57c27dd 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,7 +1,7 @@ # This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is # specified by the stage1 build. -set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") +# set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(PACKAGE_VENDOR Apple CACHE STRING "") @@ -63,7 +63,7 @@ set(LLVM_TOOLCHAIN_TOOLS CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS - # clang + clang lld # ${LLVM_TOOLCHAIN_TOOLS} CACHE STRING "") From 92927939e41041bb3bca63bc087714eacab7be48 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Tue, 21 Feb 2023 07:17:53 +0100 Subject: [PATCH 19/31] Try shorter stage2 --- Jenkinsfile | 1 - llvm/Apple-stage2.cmake | 60 ++++++----------------------------------- 2 files changed, 8 insertions(+), 53 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f66636f3..a23bf9ce 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -45,7 +45,6 @@ pipeline { cmake -GNinja ../llvm \ -DCMAKE_INSTALL_PREFIX=../out/ \ - -DCMAKE_OSX_ARCHITECTURES='x86_64' \ -DCMAKE_C_COMPILER=`which clang` \ -DCMAKE_CXX_COMPILER=`which clang++` \ -DCMAKE_BUILD_TYPE=Release \ diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index b57c27dd..2b0449ce 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,53 +1,13 @@ -# This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is -# specified by the stage1 build. +# This file sets up a CMakeCache for the second stage of a simple distribution +# bootstrap build. -# set(LLVM_ENABLE_PROJECTS "lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") -set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") -set(PACKAGE_VENDOR Apple CACHE STRING "") -set(CLANG_VENDOR_UTI com.apple.clang CACHE STRING "") -set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "") -set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "") -set(LLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD OFF CACHE BOOL "") -set(CLANG_TOOL_SCAN_BUILD_BUILD OFF CACHE BOOL "") -set(CLANG_TOOL_SCAN_VIEW_BUILD OFF CACHE BOOL "") -set(CLANG_LINKS_TO_CREATE clang++ cc c++ CACHE STRING "") -set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") -set(LLVM_ENABLE_ZLIB ON CACHE BOOL "") -set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "") -set(LLVM_ENABLE_MODULES ON CACHE BOOL "") -set(LLVM_EXTERNALIZE_DEBUGINFO ON CACHE BOOL "") -set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "") -set(CLANG_SPAWN_CC1 ON CACHE BOOL "") -set(BUG_REPORT_URL "http://developer.apple.com/bugreporter/" CACHE STRING "") +set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") -set(LLVM_BUILD_EXTERNAL_COMPILER_RT ON CACHE BOOL "Build Compiler-RT with just-built clang") -set(COMPILER_RT_ENABLE_IOS ON CACHE BOOL "Build iOS Compiler-RT libraries") - -# set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatible toolchain") - -# Make unit tests (if present) part of the ALL target -set(LLVM_BUILD_TESTS ON CACHE BOOL "") - -set(LLVM_ENABLE_LTO ON CACHE BOOL "") -set(CMAKE_C_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "") -set(CMAKE_CXX_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "") -if(LLVM_ENABLE_LTO AND NOT LLVM_ENABLE_LTO STREQUAL "THIN") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "") -endif() set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") - -set(LIBCXX_INSTALL_LIBRARY OFF CACHE BOOL "") -set(LIBCXX_INSTALL_HEADERS ON CACHE BOOL "") -set(LIBCXX_INCLUDE_TESTS OFF CACHE BOOL "") -set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") - -set(LLVM_LTO_VERSION_OFFSET 3000 CACHE STRING "") - -# Generating Xcode toolchains is useful for developers wanting to build and use -# clang without installing over existing tools. -# set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -gline-tables-only -DNDEBUG" CACHE STRING "") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -gline-tables-only -DNDEBUG" CACHE STRING "") # setup toolchain set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") @@ -65,9 +25,5 @@ set(LLVM_TOOLCHAIN_TOOLS set(LLVM_DISTRIBUTION_COMPONENTS clang lld - # ${LLVM_TOOLCHAIN_TOOLS} - CACHE STRING "") - -# test args - -set(LLVM_LIT_ARGS "--xunit-xml-output=testresults.xunit.xml -v" CACHE STRING "") \ No newline at end of file + ${LLVM_TOOLCHAIN_TOOLS} + CACHE STRING "") \ No newline at end of file From 8b2ecc804c2e3efd611154b7cfcb87bde6784c3d Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Tue, 21 Feb 2023 10:15:56 +0100 Subject: [PATCH 20/31] Try shorter stage1 --- llvm/Apple-stage1.cmake | 69 ++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index f649d354..a2add12a 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -1,48 +1,28 @@ -# This file sets up a CMakeCache for Apple-style bootstrap builds. It can be -# used on any Darwin system to approximate Apple Clang builds. +# This file sets up a CMakeCache for a simple distribution bootstrap build. -if($ENV{DT_TOOLCHAIN_DIR}) - set(CMAKE_INSTALL_PREFIX $ENV{DT_TOOLCHAIN_DIR}/usr/) -else() - set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) -endif() +#Enable LLVM projects and runtimes +set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") -# set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") -set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") -set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") +# Only build the native target in stage1 since it is a throwaway build. +set(LLVM_TARGETS_TO_BUILD Native CACHE STRING "") -set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") -set(CLANG_VENDOR Apple CACHE STRING "") -set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") -set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "") -set(LLVM_INCLUDE_UTILS OFF CACHE BOOL "") -set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "") -set(CLANG_INCLUDE_TESTS OFF CACHE BOOL "") -set(COMPILER_RT_INCLUDE_TESTS OFF CACHE BOOL "") -set(COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "") -set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") -set(LLVM_ENABLE_ZLIB OFF CACHE BOOL "") -set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "") -set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "") -set(CLANG_SPAWN_CC1 ON CACHE BOOL "") -set(CLANG_BOOTSTRAP_PASSTHROUGH - CMAKE_OSX_ARCHITECTURES - CACHE STRING "") +# Optimize the stage1 compiler, but don't LTO it because that wastes time. +set(CMAKE_BUILD_TYPE Release CACHE STRING "") -# Disabling embedded darwin compiler-rt on stage1 builds is required because we -# don't build stage1 to support arm code generation. -set(COMPILER_RT_ENABLE_IOS OFF CACHE BOOL "") -set(COMPILER_RT_ENABLE_WATCHOS OFF CACHE BOOL "") -set(COMPILER_RT_ENABLE_TVOS OFF CACHE BOOL "") +# Setup vendor-specific settings. +set(PACKAGE_VENDOR LLVM.org CACHE STRING "") +# Setting up the stage2 LTO option needs to be done on the stage1 build so that +# the proper LTO library dependencies can be connected. set(BOOTSTRAP_LLVM_ENABLE_LTO ON CACHE BOOL "") -set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") -set(LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS OFF CACHE BOOL "") -set(LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "") +if (NOT APPLE) + # Since LLVM_ENABLE_LTO is ON we need a LTO capable linker + set(BOOTSTRAP_LLVM_ENABLE_LLD ON CACHE BOOL "") +endif() +# Expose stage2 targets through the stage1 build configuration. set(CLANG_BOOTSTRAP_TARGETS - generate-order-file check-all check-llvm check-clang @@ -53,12 +33,17 @@ set(CLANG_BOOTSTRAP_TARGETS clang-test-depends distribution install-distribution - install-xcode-toolchain - install-distribution-toolchain clang CACHE STRING "") -#bootstrap +# Setup the bootstrap build. set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "") -set(CLANG_BOOTSTRAP_CMAKE_ARGS - -C ${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake - CACHE STRING "") \ No newline at end of file + +if(STAGE2_CACHE_FILE) + set(CLANG_BOOTSTRAP_CMAKE_ARGS + -C ${STAGE2_CACHE_FILE} + CACHE STRING "") +else() + set(CLANG_BOOTSTRAP_CMAKE_ARGS + -C ${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake + CACHE STRING "") +endif() \ No newline at end of file From 81b5bacaae9d6b43903f6f37101b65fcd4512308 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Tue, 21 Feb 2023 11:05:21 +0100 Subject: [PATCH 21/31] Add runtimes to stage1 --- Jenkinsfile | 47 ++++++++++++++++++++--------------------- llvm/Apple-stage1.cmake | 9 +------- llvm/Apple-stage2.cmake | 2 +- 3 files changed, 25 insertions(+), 33 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index a23bf9ce..6be44e86 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -51,31 +51,30 @@ pipeline { -C ../../llvm/Apple-stage1.cmake ninja help - ninja stage2-install-distribution || true + ninja stage2-install-distribution ''') - // sh('find llvm-project/out/') - // sh(''' - // mkdir -p tar/clang+llvm-14.0.6-x86_64-apple/bin - // cp llvm-project/out/bin/llvm-ar \ - // llvm-project/out/bin/llvm-cov \ - // llvm-project/out/bin/llvm-dwp \ - // llvm-project/out/bin/llvm-nm \ - // llvm-project/out/bin/llvm-objcopy \ - // llvm-project/out/bin/llvm-objdump \ - // llvm-project/out/bin/llvm-profdata \ - // llvm-project/out/bin/llvm-strip \ - // llvm-project/out/bin/clang-cpp \ - // llvm-project/out/bin/ld.lld \ - // tar/clang+llvm-14.0.6-x86_64-apple/bin - // ''') - // tar(file: 'clang+llvm-14.0.6-x86_64-apple.tar.gz', dir: 'tar', archive: false) - // script{ - // context.archivePatterns( - // patterns: ['clang+llvm-14.0.6-x86_64-apple.tar.gz'], - // path: "swift-toolchains/${context.gitDescribe()}/clang+llvm-14.0.6-x86_64-apple.tar.gz", - // jenkins: true - // ) - // } + sh(''' + mkdir -p tar/clang+llvm-14.0.6-x86_64-apple/bin + cp llvm-project/out/bin/llvm-ar \ + llvm-project/out/bin/llvm-cov \ + llvm-project/out/bin/llvm-dwp \ + llvm-project/out/bin/llvm-nm \ + llvm-project/out/bin/llvm-objcopy \ + llvm-project/out/bin/llvm-objdump \ + llvm-project/out/bin/llvm-profdata \ + llvm-project/out/bin/llvm-strip \ + llvm-project/out/bin/clang-cpp \ + llvm-project/out/bin/ld.lld \ + tar/clang+llvm-14.0.6-x86_64-apple/bin + ''') + tar(file: 'clang+llvm-14.0.6-x86_64-apple.tar.gz', dir: 'tar', archive: false) + script{ + context.archivePatterns( + patterns: ['clang+llvm-14.0.6-x86_64-apple.tar.gz'], + path: "swift-toolchains/${context.gitDescribe()}/clang+llvm-14.0.6-x86_64-apple.tar.gz", + jenkins: true + ) + } } } } diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index a2add12a..7907c32b 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -2,6 +2,7 @@ #Enable LLVM projects and runtimes set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") +set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") # Only build the native target in stage1 since it is a throwaway build. set(LLVM_TARGETS_TO_BUILD Native CACHE STRING "") @@ -23,14 +24,6 @@ endif() # Expose stage2 targets through the stage1 build configuration. set(CLANG_BOOTSTRAP_TARGETS - check-all - check-llvm - check-clang - llvm-config - test-suite - test-depends - llvm-test-depends - clang-test-depends distribution install-distribution clang CACHE STRING "") diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 2b0449ce..87564632 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -3,7 +3,7 @@ set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") -set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") +set(LLVM_TARGETS_TO_BUILD Native CACHE STRING "") set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -gline-tables-only -DNDEBUG" CACHE STRING "") From a3c609eabe90c33c14932d4ff75b7fcc08006d90 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 24 Feb 2023 11:18:39 +0100 Subject: [PATCH 22/31] Enable more components --- Jenkinsfile | 27 +++++---------------------- llvm/Apple-stage1.cmake | 2 +- llvm/Apple-stage2.cmake | 10 +++++++++- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6be44e86..ae68665b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -53,28 +53,11 @@ pipeline { ninja help ninja stage2-install-distribution ''') - sh(''' - mkdir -p tar/clang+llvm-14.0.6-x86_64-apple/bin - cp llvm-project/out/bin/llvm-ar \ - llvm-project/out/bin/llvm-cov \ - llvm-project/out/bin/llvm-dwp \ - llvm-project/out/bin/llvm-nm \ - llvm-project/out/bin/llvm-objcopy \ - llvm-project/out/bin/llvm-objdump \ - llvm-project/out/bin/llvm-profdata \ - llvm-project/out/bin/llvm-strip \ - llvm-project/out/bin/clang-cpp \ - llvm-project/out/bin/ld.lld \ - tar/clang+llvm-14.0.6-x86_64-apple/bin - ''') - tar(file: 'clang+llvm-14.0.6-x86_64-apple.tar.gz', dir: 'tar', archive: false) - script{ - context.archivePatterns( - patterns: ['clang+llvm-14.0.6-x86_64-apple.tar.gz'], - path: "swift-toolchains/${context.gitDescribe()}/clang+llvm-14.0.6-x86_64-apple.tar.gz", - jenkins: true - ) - } + sh(""" + mkdir -p tar/clang+llvm-14.0.6-x86_64-apple/ + cp -rH llvm-project/out/* tar/clang+llvm-14.0.6-x86_64-apple/ + """) + tar(file: "clang+llvm-14.0.6-x86_64-apple.tar.gz", dir: 'tar', archive: true) } } } diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 7907c32b..3a32ec45 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -1,7 +1,7 @@ # This file sets up a CMakeCache for a simple distribution bootstrap build. #Enable LLVM projects and runtimes -set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") # Only build the native target in stage1 since it is a throwaway build. diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 87564632..e2396ab1 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,7 +1,10 @@ # This file sets up a CMakeCache for the second stage of a simple distribution # bootstrap build. -set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") +set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "") + +set(COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "") set(LLVM_TARGETS_TO_BUILD Native CACHE STRING "") @@ -20,10 +23,15 @@ set(LLVM_TOOLCHAIN_TOOLS llvm-objdump llvm-profdata llvm-strip + llvm-symbolizer CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS clang lld + builtins + runtimes + clang-resource-headers + clang-tidy ${LLVM_TOOLCHAIN_TOOLS} CACHE STRING "") \ No newline at end of file From c8bc236f0e21a0155234d9d9ceb0ae43dd2f55fa Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 24 Feb 2023 12:24:22 +0100 Subject: [PATCH 23/31] Remove some components --- llvm/Apple-stage2.cmake | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index e2396ab1..446c23c6 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -4,7 +4,7 @@ set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "") -set(COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "") +# set(COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "") set(LLVM_TARGETS_TO_BUILD Native CACHE STRING "") @@ -23,15 +23,15 @@ set(LLVM_TOOLCHAIN_TOOLS llvm-objdump llvm-profdata llvm-strip - llvm-symbolizer + # llvm-symbolizer CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS clang lld - builtins - runtimes - clang-resource-headers - clang-tidy + # builtins + # runtimes + # clang-resource-headers + # clang-tidy ${LLVM_TOOLCHAIN_TOOLS} CACHE STRING "") \ No newline at end of file From d0ac64f75c0b7a998b613de32ad573ba118adfc7 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Fri, 24 Feb 2023 13:16:51 +0100 Subject: [PATCH 24/31] Fix --- llvm/Apple-stage1.cmake | 4 ++-- llvm/Apple-stage2.cmake | 12 ++---------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 3a32ec45..3e3a7784 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -1,7 +1,7 @@ # This file sets up a CMakeCache for a simple distribution bootstrap build. #Enable LLVM projects and runtimes -set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") +set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") # Only build the native target in stage1 since it is a throwaway build. @@ -39,4 +39,4 @@ else() set(CLANG_BOOTSTRAP_CMAKE_ARGS -C ${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake CACHE STRING "") -endif() \ No newline at end of file +endif() diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 446c23c6..fc9fe4dc 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,10 +1,7 @@ # This file sets up a CMakeCache for the second stage of a simple distribution # bootstrap build. -set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") -set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "") - -# set(COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "") +set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD Native CACHE STRING "") @@ -23,15 +20,10 @@ set(LLVM_TOOLCHAIN_TOOLS llvm-objdump llvm-profdata llvm-strip - # llvm-symbolizer CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS clang lld - # builtins - # runtimes - # clang-resource-headers - # clang-tidy ${LLVM_TOOLCHAIN_TOOLS} - CACHE STRING "") \ No newline at end of file + CACHE STRING "") From e33ccc4f0da6a58b2795a9a4ec2ec117059a8782 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Mon, 27 Feb 2023 10:20:03 +0100 Subject: [PATCH 25/31] Try default --- llvm/Apple-stage1.cmake | 78 ++++++++++++++++++++++++--------------- llvm/Apple-stage2.cmake | 82 ++++++++++++++++++++++++++++++++++------- 2 files changed, 117 insertions(+), 43 deletions(-) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 3e3a7784..8a4fe6df 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -1,42 +1,60 @@ -# This file sets up a CMakeCache for a simple distribution bootstrap build. +# This file sets up a CMakeCache for Apple-style bootstrap builds. It can be +# used on any Darwin system to approximate Apple Clang builds. -#Enable LLVM projects and runtimes -set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") -set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") - -# Only build the native target in stage1 since it is a throwaway build. -set(LLVM_TARGETS_TO_BUILD Native CACHE STRING "") - -# Optimize the stage1 compiler, but don't LTO it because that wastes time. -set(CMAKE_BUILD_TYPE Release CACHE STRING "") +if($ENV{DT_TOOLCHAIN_DIR}) + set(CMAKE_INSTALL_PREFIX $ENV{DT_TOOLCHAIN_DIR}/usr/) +else() + set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) +endif() -# Setup vendor-specific settings. -set(PACKAGE_VENDOR LLVM.org CACHE STRING "") +set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") +set(CLANG_VENDOR Apple CACHE STRING "") +set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") +set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "") +set(LLVM_INCLUDE_UTILS OFF CACHE BOOL "") +set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "") +set(CLANG_INCLUDE_TESTS OFF CACHE BOOL "") +set(COMPILER_RT_INCLUDE_TESTS OFF CACHE BOOL "") +set(COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "") +set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") +set(LLVM_ENABLE_ZLIB OFF CACHE BOOL "") +set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "") +set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "") +set(CLANG_SPAWN_CC1 ON CACHE BOOL "") +set(CLANG_BOOTSTRAP_PASSTHROUGH + CMAKE_OSX_ARCHITECTURES + CACHE STRING "") + +# Disabling embedded darwin compiler-rt on stage1 builds is required because we +# don't build stage1 to support arm code generation. +set(COMPILER_RT_ENABLE_IOS OFF CACHE BOOL "") +set(COMPILER_RT_ENABLE_WATCHOS OFF CACHE BOOL "") +set(COMPILER_RT_ENABLE_TVOS OFF CACHE BOOL "") -# Setting up the stage2 LTO option needs to be done on the stage1 build so that -# the proper LTO library dependencies can be connected. set(BOOTSTRAP_LLVM_ENABLE_LTO ON CACHE BOOL "") +set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") -if (NOT APPLE) - # Since LLVM_ENABLE_LTO is ON we need a LTO capable linker - set(BOOTSTRAP_LLVM_ENABLE_LLD ON CACHE BOOL "") -endif() +set(LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS OFF CACHE BOOL "") +set(LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "") -# Expose stage2 targets through the stage1 build configuration. set(CLANG_BOOTSTRAP_TARGETS + generate-order-file + check-all + check-llvm + check-clang + llvm-config + test-suite + test-depends + llvm-test-depends + clang-test-depends distribution install-distribution + install-xcode-toolchain + install-distribution-toolchain clang CACHE STRING "") -# Setup the bootstrap build. +#bootstrap set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "") - -if(STAGE2_CACHE_FILE) - set(CLANG_BOOTSTRAP_CMAKE_ARGS - -C ${STAGE2_CACHE_FILE} - CACHE STRING "") -else() - set(CLANG_BOOTSTRAP_CMAKE_ARGS - -C ${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake - CACHE STRING "") -endif() +set(CLANG_BOOTSTRAP_CMAKE_ARGS + -C ${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake + CACHE STRING "") diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index fc9fe4dc..d1216e69 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,29 +1,85 @@ -# This file sets up a CMakeCache for the second stage of a simple distribution -# bootstrap build. +# This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is +# specified by the stage1 build. -set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "") +set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") +set(PACKAGE_VENDOR Apple CACHE STRING "") +set(CLANG_VENDOR_UTI com.apple.clang CACHE STRING "") +set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "") +set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "") +set(LLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD OFF CACHE BOOL "") +set(CLANG_TOOL_SCAN_BUILD_BUILD OFF CACHE BOOL "") +set(CLANG_TOOL_SCAN_VIEW_BUILD OFF CACHE BOOL "") +set(CLANG_LINKS_TO_CREATE clang++ cc c++ CACHE STRING "") +set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") +set(LLVM_ENABLE_ZLIB ON CACHE BOOL "") +set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "") +set(LLVM_ENABLE_MODULES ON CACHE BOOL "") +set(LLVM_EXTERNALIZE_DEBUGINFO ON CACHE BOOL "") +set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "") +set(CLANG_SPAWN_CC1 ON CACHE BOOL "") +set(BUG_REPORT_URL "http://developer.apple.com/bugreporter/" CACHE STRING "") -set(LLVM_TARGETS_TO_BUILD Native CACHE STRING "") +set(LLVM_BUILD_EXTERNAL_COMPILER_RT ON CACHE BOOL "Build Compiler-RT with just-built clang") +set(COMPILER_RT_ENABLE_IOS ON CACHE BOOL "Build iOS Compiler-RT libraries") +set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatible toolchain") + +# Make unit tests (if present) part of the ALL target +set(LLVM_BUILD_TESTS ON CACHE BOOL "") + +set(LLVM_ENABLE_LTO ON CACHE BOOL "") +set(CMAKE_C_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "") +set(CMAKE_CXX_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "") +if(LLVM_ENABLE_LTO AND NOT LLVM_ENABLE_LTO STREQUAL "THIN") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "") +endif() set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") -set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -gline-tables-only -DNDEBUG" CACHE STRING "") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -gline-tables-only -DNDEBUG" CACHE STRING "") + +set(LIBCXX_INSTALL_LIBRARY OFF CACHE BOOL "") +set(LIBCXX_INSTALL_HEADERS ON CACHE BOOL "") +set(LIBCXX_INCLUDE_TESTS OFF CACHE BOOL "") +set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") +set(LLVM_LTO_VERSION_OFFSET 3000 CACHE STRING "") + +# Generating Xcode toolchains is useful for developers wanting to build and use +# clang without installing over existing tools. +set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "") # setup toolchain set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") set(LLVM_TOOLCHAIN_TOOLS - llvm-ar + dsymutil llvm-cov - llvm-dwp - llvm-nm - llvm-objcopy - llvm-objdump + llvm-dwarfdump llvm-profdata - llvm-strip + llvm-objdump + llvm-nm + llvm-size + llvm-cxxfilt + llvm-config + CACHE STRING "") + +set(LLVM_BUILD_UTILS ON CACHE BOOL "") +set(LLVM_INSTALL_UTILS ON CACHE BOOL "") +set(LLVM_TOOLCHAIN_UTILITIES + FileCheck + yaml2obj + not + count CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS clang - lld + LTO + clang-format + clang-resource-headers + cxx-headers + Remarks ${LLVM_TOOLCHAIN_TOOLS} + ${LLVM_TOOLCHAIN_UTILITIES} CACHE STRING "") + +# test args + +set(LLVM_LIT_ARGS "--xunit-xml-output=testresults.xunit.xml -v" CACHE STRING "") From 5045da1900d4322eb26170b3b9ef8a0c59abfc25 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Tue, 28 Feb 2023 13:29:01 +0100 Subject: [PATCH 26/31] Try --- Jenkinsfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index ae68665b..837af217 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -45,6 +45,8 @@ pipeline { cmake -GNinja ../llvm \ -DCMAKE_INSTALL_PREFIX=../out/ \ + -DCMAKE_OSX_ARCHITECTURES='x86_64' \ + -DLLVM_ENABLE_RUNTIMES='compiler-rt;libcxx;libcxxabi' \ -DCMAKE_C_COMPILER=`which clang` \ -DCMAKE_CXX_COMPILER=`which clang++` \ -DCMAKE_BUILD_TYPE=Release \ From b88a543e66c90cc0215f381fb6acfc5a9cb7e9f7 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Tue, 28 Feb 2023 15:35:07 +0100 Subject: [PATCH 27/31] Fix --- Jenkinsfile | 1 - llvm/Apple-stage1.cmake | 2 ++ llvm/Apple-stage2.cmake | 35 ++++++++++++++--------------------- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 837af217..7e421ea3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -46,7 +46,6 @@ pipeline { cmake -GNinja ../llvm \ -DCMAKE_INSTALL_PREFIX=../out/ \ -DCMAKE_OSX_ARCHITECTURES='x86_64' \ - -DLLVM_ENABLE_RUNTIMES='compiler-rt;libcxx;libcxxabi' \ -DCMAKE_C_COMPILER=`which clang` \ -DCMAKE_CXX_COMPILER=`which clang++` \ -DCMAKE_BUILD_TYPE=Release \ diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 8a4fe6df..0e681ec7 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -7,6 +7,8 @@ else() set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) endif() +set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") + set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(CLANG_VENDOR Apple CACHE STRING "") set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index d1216e69..492dbcf6 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -1,6 +1,9 @@ # This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is # specified by the stage1 build. +set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") +set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "") + set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(PACKAGE_VENDOR Apple CACHE STRING "") set(CLANG_VENDOR_UTI com.apple.clang CACHE STRING "") @@ -49,35 +52,25 @@ set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "") # setup toolchain set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") set(LLVM_TOOLCHAIN_TOOLS - dsymutil + llvm-ar llvm-cov - llvm-dwarfdump - llvm-profdata - llvm-objdump + llvm-dwp llvm-nm - llvm-size - llvm-cxxfilt - llvm-config - CACHE STRING "") - -set(LLVM_BUILD_UTILS ON CACHE BOOL "") -set(LLVM_INSTALL_UTILS ON CACHE BOOL "") -set(LLVM_TOOLCHAIN_UTILITIES - FileCheck - yaml2obj - not - count + llvm-objcopy + llvm-objdump + llvm-profdata + llvm-strip + llvm-symbolizer CACHE STRING "") set(LLVM_DISTRIBUTION_COMPONENTS clang - LTO - clang-format + # lld + builtins + runtimes clang-resource-headers - cxx-headers - Remarks + clang-tidy ${LLVM_TOOLCHAIN_TOOLS} - ${LLVM_TOOLCHAIN_UTILITIES} CACHE STRING "") # test args From f2cba9fa9a9325d93a0cafb74ce149ac61860564 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Tue, 28 Feb 2023 18:39:00 +0100 Subject: [PATCH 28/31] Enable runtimes --- llvm/Apple-stage1.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 0e681ec7..8dcff57a 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -8,6 +8,7 @@ else() endif() set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") +set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") set(CLANG_VENDOR Apple CACHE STRING "") From 1cc979fec3e925cf3f80f01fde4ea7e746ecb778 Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Wed, 1 Mar 2023 11:59:15 +0100 Subject: [PATCH 29/31] Disable xcode toolchain --- llvm/Apple-stage1.cmake | 2 +- llvm/Apple-stage2.cmake | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake index 8dcff57a..f18b0b0a 100644 --- a/llvm/Apple-stage1.cmake +++ b/llvm/Apple-stage1.cmake @@ -52,7 +52,7 @@ set(CLANG_BOOTSTRAP_TARGETS clang-test-depends distribution install-distribution - install-xcode-toolchain + # install-xcode-toolchain install-distribution-toolchain clang CACHE STRING "") diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake index 492dbcf6..522168fd 100644 --- a/llvm/Apple-stage2.cmake +++ b/llvm/Apple-stage2.cmake @@ -25,7 +25,7 @@ set(BUG_REPORT_URL "http://developer.apple.com/bugreporter/" CACHE STRING "") set(LLVM_BUILD_EXTERNAL_COMPILER_RT ON CACHE BOOL "Build Compiler-RT with just-built clang") set(COMPILER_RT_ENABLE_IOS ON CACHE BOOL "Build iOS Compiler-RT libraries") -set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatible toolchain") +# set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatible toolchain") # Make unit tests (if present) part of the ALL target set(LLVM_BUILD_TESTS ON CACHE BOOL "") @@ -47,7 +47,7 @@ set(LLVM_LTO_VERSION_OFFSET 3000 CACHE STRING "") # Generating Xcode toolchains is useful for developers wanting to build and use # clang without installing over existing tools. -set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "") +# set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "") # setup toolchain set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") From 7eba5df9b8cf6b8f41b825e4209278a4fbac0ada Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Thu, 2 Mar 2023 08:30:46 +0100 Subject: [PATCH 30/31] Try official --- Dockerfile.llvm | 15 ++------------ Jenkinsfile | 53 ++++++++++++++++++++++++++++++------------------- 2 files changed, 35 insertions(+), 33 deletions(-) diff --git a/Dockerfile.llvm b/Dockerfile.llvm index 15c5b3c4..646e848c 100644 --- a/Dockerfile.llvm +++ b/Dockerfile.llvm @@ -1,14 +1,3 @@ -FROM ubuntu:jammy +FROM ubuntu:18.04 -RUN apt-get update -RUN apt-get install -y \ - build-essential \ - clang-14 \ - clang++-14 \ - cmake \ - libc6-dev-i386 \ - python3-pip \ - python3-distutils \ - vim \ - ninja-build \ - git +RUN apt-get update && apt-get install -y xz-utils wget git diff --git a/Jenkinsfile b/Jenkinsfile index 7e421ea3..9da47ede 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -33,35 +33,48 @@ pipeline { parallel { stage('llvm x86_64 darwin') { agent { - node('macos') + dockerfile { + filename "Dockerfile.llvm" + } } steps { sh(''' - git clone https://github.com/llvm/llvm-project --branch=llvmorg-14.0.6 --single-branch - cd llvm-project + wget -qO- https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-apple-darwin.tar.xz | tar xfJ - - mkdir build - cd build + find clang+llvm-14.0.0-x86_64-apple-darwin/bin/* \ + ! -name 'clang' ! -name 'clang++' ! -name 'clang-14' ! -name 'clang-cl' ! -name 'clang-cpp' \ + ! -name 'ld64.lld' ! -name 'ld.lld' ! -name 'lld' ! -name 'lld-link' \ + ! -name 'llvm-ar' ! -name 'llvm-as' ! -name 'llvm-nm' ! -name 'llvm-objdump' ! -name 'llvm-objcopy' \ + ! -name 'llvm-profdata' ! -name 'llvm-dwp' ! -name 'llvm-ranlib' ! -name 'llvm-readelf' ! -name 'llvm-readobj' \ + ! -name 'llvm-strip' ! -name 'llvm-symbolizer' ! -name 'llvm-cov' \ + ! -name 'clang-tidy' ! -name 'clang-format' \ + -exec rm {} + - cmake -GNinja ../llvm \ - -DCMAKE_INSTALL_PREFIX=../out/ \ - -DCMAKE_OSX_ARCHITECTURES='x86_64' \ - -DCMAKE_C_COMPILER=`which clang` \ - -DCMAKE_CXX_COMPILER=`which clang++` \ - -DCMAKE_BUILD_TYPE=Release \ - -C ../../llvm/Apple-stage1.cmake - - ninja help - ninja stage2-install-distribution + find clang+llvm-14.0.0-x86_64-apple-darwin/lib/ -maxdepth 1 -type f,l -exec rm {} + ''') - sh(""" - mkdir -p tar/clang+llvm-14.0.6-x86_64-apple/ - cp -rH llvm-project/out/* tar/clang+llvm-14.0.6-x86_64-apple/ - """) - tar(file: "clang+llvm-14.0.6-x86_64-apple.tar.gz", dir: 'tar', archive: true) + uploadDistribution("clang+llvm-14.0.0-x86_64-apple-darwin", context) } } } } } } + +def uploadDistribution(name, context) { + sh("tar -czf ${name}.tar.gz ${name}/") + sh("sha256sum '${name}.tar.gz' > ${name}.tar.gz.sha256") + archiveArtifacts artifacts: '*.tar.gz*' + + script{ + context.archivePatterns( + patterns: ["${name}.tar.gz"], + path: "swift-toolchains/${context.gitDescribe()}/${name}.tar.gz", + jenkins: false + ) + context.archivePatterns( + patterns: ["${name}.tar.gz.sha256"], + path: "swift-toolchains/${context.gitDescribe()}/${name}.tar.gz.sha256", + jenkins: false + ) + } +} From 2a4cbf83c2ae345e286a7831958f92ff6cfc66ae Mon Sep 17 00:00:00 2001 From: Krzysztof Naglik Date: Thu, 2 Mar 2023 09:58:51 +0100 Subject: [PATCH 31/31] Remove cmake caches --- llvm/Apple-stage1.cmake | 63 -------------------------- llvm/Apple-stage2-ThinLTO.cmake | 6 --- llvm/Apple-stage2.cmake | 78 --------------------------------- 3 files changed, 147 deletions(-) delete mode 100644 llvm/Apple-stage1.cmake delete mode 100644 llvm/Apple-stage2-ThinLTO.cmake delete mode 100644 llvm/Apple-stage2.cmake diff --git a/llvm/Apple-stage1.cmake b/llvm/Apple-stage1.cmake deleted file mode 100644 index f18b0b0a..00000000 --- a/llvm/Apple-stage1.cmake +++ /dev/null @@ -1,63 +0,0 @@ -# This file sets up a CMakeCache for Apple-style bootstrap builds. It can be -# used on any Darwin system to approximate Apple Clang builds. - -if($ENV{DT_TOOLCHAIN_DIR}) - set(CMAKE_INSTALL_PREFIX $ENV{DT_TOOLCHAIN_DIR}/usr/) -else() - set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.toolchain/usr/) -endif() - -set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") -set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi" CACHE STRING "") - -set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") -set(CLANG_VENDOR Apple CACHE STRING "") -set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") -set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "") -set(LLVM_INCLUDE_UTILS OFF CACHE BOOL "") -set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "") -set(CLANG_INCLUDE_TESTS OFF CACHE BOOL "") -set(COMPILER_RT_INCLUDE_TESTS OFF CACHE BOOL "") -set(COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "") -set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") -set(LLVM_ENABLE_ZLIB OFF CACHE BOOL "") -set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "") -set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "") -set(CLANG_SPAWN_CC1 ON CACHE BOOL "") -set(CLANG_BOOTSTRAP_PASSTHROUGH - CMAKE_OSX_ARCHITECTURES - CACHE STRING "") - -# Disabling embedded darwin compiler-rt on stage1 builds is required because we -# don't build stage1 to support arm code generation. -set(COMPILER_RT_ENABLE_IOS OFF CACHE BOOL "") -set(COMPILER_RT_ENABLE_WATCHOS OFF CACHE BOOL "") -set(COMPILER_RT_ENABLE_TVOS OFF CACHE BOOL "") - -set(BOOTSTRAP_LLVM_ENABLE_LTO ON CACHE BOOL "") -set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") - -set(LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS OFF CACHE BOOL "") -set(LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "") - -set(CLANG_BOOTSTRAP_TARGETS - generate-order-file - check-all - check-llvm - check-clang - llvm-config - test-suite - test-depends - llvm-test-depends - clang-test-depends - distribution - install-distribution - # install-xcode-toolchain - install-distribution-toolchain - clang CACHE STRING "") - -#bootstrap -set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "") -set(CLANG_BOOTSTRAP_CMAKE_ARGS - -C ${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake - CACHE STRING "") diff --git a/llvm/Apple-stage2-ThinLTO.cmake b/llvm/Apple-stage2-ThinLTO.cmake deleted file mode 100644 index 54e54e30..00000000 --- a/llvm/Apple-stage2-ThinLTO.cmake +++ /dev/null @@ -1,6 +0,0 @@ -# This file sets up a CMakeCache for Apple-style stage2 ThinLTO bootstrap. It is -# specified by the stage1 build. - - -set(LLVM_ENABLE_LTO THIN CACHE BOOL "") -include(${CMAKE_CURRENT_LIST_DIR}/Apple-stage2.cmake) diff --git a/llvm/Apple-stage2.cmake b/llvm/Apple-stage2.cmake deleted file mode 100644 index 522168fd..00000000 --- a/llvm/Apple-stage2.cmake +++ /dev/null @@ -1,78 +0,0 @@ -# This file sets up a CMakeCache for Apple-style stage2 bootstrap. It is -# specified by the stage1 build. - -set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") -set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "") - -set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "") -set(PACKAGE_VENDOR Apple CACHE STRING "") -set(CLANG_VENDOR_UTI com.apple.clang CACHE STRING "") -set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "") -set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "") -set(LLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD OFF CACHE BOOL "") -set(CLANG_TOOL_SCAN_BUILD_BUILD OFF CACHE BOOL "") -set(CLANG_TOOL_SCAN_VIEW_BUILD OFF CACHE BOOL "") -set(CLANG_LINKS_TO_CREATE clang++ cc c++ CACHE STRING "") -set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") -set(LLVM_ENABLE_ZLIB ON CACHE BOOL "") -set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "") -set(LLVM_ENABLE_MODULES ON CACHE BOOL "") -set(LLVM_EXTERNALIZE_DEBUGINFO ON CACHE BOOL "") -set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "") -set(CLANG_SPAWN_CC1 ON CACHE BOOL "") -set(BUG_REPORT_URL "http://developer.apple.com/bugreporter/" CACHE STRING "") - -set(LLVM_BUILD_EXTERNAL_COMPILER_RT ON CACHE BOOL "Build Compiler-RT with just-built clang") -set(COMPILER_RT_ENABLE_IOS ON CACHE BOOL "Build iOS Compiler-RT libraries") - -# set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatible toolchain") - -# Make unit tests (if present) part of the ALL target -set(LLVM_BUILD_TESTS ON CACHE BOOL "") - -set(LLVM_ENABLE_LTO ON CACHE BOOL "") -set(CMAKE_C_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "") -set(CMAKE_CXX_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "") -if(LLVM_ENABLE_LTO AND NOT LLVM_ENABLE_LTO STREQUAL "THIN") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "") -endif() -set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") - -set(LIBCXX_INSTALL_LIBRARY OFF CACHE BOOL "") -set(LIBCXX_INSTALL_HEADERS ON CACHE BOOL "") -set(LIBCXX_INCLUDE_TESTS OFF CACHE BOOL "") -set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") -set(LLVM_LTO_VERSION_OFFSET 3000 CACHE STRING "") - -# Generating Xcode toolchains is useful for developers wanting to build and use -# clang without installing over existing tools. -# set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "") - -# setup toolchain -set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") -set(LLVM_TOOLCHAIN_TOOLS - llvm-ar - llvm-cov - llvm-dwp - llvm-nm - llvm-objcopy - llvm-objdump - llvm-profdata - llvm-strip - llvm-symbolizer - CACHE STRING "") - -set(LLVM_DISTRIBUTION_COMPONENTS - clang - # lld - builtins - runtimes - clang-resource-headers - clang-tidy - ${LLVM_TOOLCHAIN_TOOLS} - CACHE STRING "") - -# test args - -set(LLVM_LIT_ARGS "--xunit-xml-output=testresults.xunit.xml -v" CACHE STRING "")