diff --git a/conda-recipes/compiler-rt-macos-build.patch b/conda-recipes/compiler-rt-macos-build.patch new file mode 100644 index 000000000..acba23c36 --- /dev/null +++ b/conda-recipes/compiler-rt-macos-build.patch @@ -0,0 +1,15 @@ +diff --git a/cmake/Modules/CompilerRTDarwinUtils.cmake b/cmake/Modules/CompilerRTDarwinUtils.cmake +index 3209715..6df7318 100644 +--- a/compiler-rt-14.0.6.src/cmake/Modules/CompilerRTDarwinUtils.cmake ++++ b/compiler-rt-14.0.6.src/cmake/Modules/CompilerRTDarwinUtils.cmake +@@ -390,7 +390,9 @@ endfunction() + macro(darwin_add_builtin_libraries) + set(DARWIN_EXCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Darwin-excludes) + +- set(CFLAGS "-fPIC -O3 -fvisibility=hidden -DVISIBILITY_HIDDEN -Wall -fomit-frame-pointer") ++ set(CFLAGS "-fPIC -O3 -Wall -fomit-frame-pointer") ++ append_list_if(COMPILER_RT_BUILTINS_HIDE_SYMBOLS -fvisibility=hidden -DVISIBILITY_HIDDEN CFLAGS) ++ + set(CMAKE_C_FLAGS "") + set(CMAKE_CXX_FLAGS "") + set(CMAKE_ASM_FLAGS "") diff --git a/conda-recipes/compiler-rt-windows-build.patch b/conda-recipes/compiler-rt-windows-build.patch new file mode 100644 index 000000000..74a6ed3ff --- /dev/null +++ b/conda-recipes/compiler-rt-windows-build.patch @@ -0,0 +1,26 @@ +From be79c54f618affc9c4797a5331486fc891d2a4a4 Mon Sep 17 00:00:00 2001 +From: Graham Markall +Date: Fri, 11 Aug 2023 11:31:08 +0100 +Subject: [PATCH] Fix out-of-tree compiler-rt build on Windows + +From: + +https://stackoverflow.com/questions/46108390/building-llvm-with-cmake-and-visual-stuidio-fails-to-install +--- + compiler-rt/cmake/Modules/AddCompilerRT.cmake | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/compiler-rt-14.0.6.src/cmake/Modules/AddCompilerRT.cmake b/compiler-rt-14.0.6.src/cmake/Modules/AddCompilerRT.cmake +index 4a496fc18f65..2ace529a595d 100644 +--- a/compiler-rt-14.0.6.src/cmake/Modules/AddCompilerRT.cmake ++++ b/compiler-rt-14.0.6.src/cmake/Modules/AddCompilerRT.cmake +@@ -9,6 +9,7 @@ function(set_target_output_directories target output_dir) + # set 'RUNTIME_OUTPUT_DIRECTORY_${CONF}': + # RUNTIME_OUTPUT_DIRECTORY_DEBUG, RUNTIME_OUTPUT_DIRECTORY_RELEASE, ... + if(CMAKE_CONFIGURATION_TYPES) ++ string(REGEX REPLACE "\\$\\(Configuration\\)" "$" output_dir "${output_dir}") + foreach(build_mode ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER "${build_mode}" CONFIG_SUFFIX) + set_target_properties("${target}" PROPERTIES +-- +2.40.0 diff --git a/conda-recipes/llvmdev/bld.bat b/conda-recipes/llvmdev/bld.bat index 4d16d84b1..f4035ab84 100644 --- a/conda-recipes/llvmdev/bld.bat +++ b/conda-recipes/llvmdev/bld.bat @@ -3,6 +3,8 @@ FOR /D %%d IN (llvm-*.src) DO (MKLINK /J llvm %%d if !errorlevel! neq 0 exit /b %errorlevel%) FOR /D %%d IN (lld-*.src) DO (MKLINK /J lld %%d if !errorlevel! neq 0 exit /b %errorlevel%) +FOR /D %%d IN (rt\compiler-rt-*.src) DO (MKLINK /J compiler-rt %%d +if !errorlevel! neq 0 exit /b %errorlevel%) FOR /D %%d IN (unwind\libunwind-*.src) DO (MKLINK /J libunwind %%d if !errorlevel! neq 0 exit /b %errorlevel%) @@ -33,18 +35,14 @@ REM the 64bit linker anyway. This must be passed in to certain generators as REM '-Thost x64'. set PreferredToolArchitecture=x64 -set MAX_INDEX_CMAKE_GENERATOR=0 - -set "CMAKE_GENERATOR[0]=Visual Studio 16 2019" - -set "CMAKE_GENERATOR_ARCHITECTURE[0]=%GEN_ARCH%" - -set "CMAKE_GENERATOR_TOOLSET[0]=v142" +set "CMAKE_GENERATOR=Visual Studio 16 2019" +set "CMAKE_GENERATOR_ARCHITECTURE=%GEN_ARCH%" +set "CMAKE_GENERATOR_TOOLSET=v142" REM Reduce build times and package size by removing unused stuff REM BENCHMARKS (new for llvm8) don't build under Visual Studio 14 2015 set CMAKE_CUSTOM=-DLLVM_TARGETS_TO_BUILD="%LLVM_TARGETS_TO_BUILD%" ^ - -DLLVM_ENABLE_PROJECTS:STRING=lld ^ + -DLLVM_ENABLE_PROJECTS:STRING=lld;compiler-rt ^ -DLLVM_ENABLE_ZLIB=OFF ^ -DLLVM_INCLUDE_UTILS=ON ^ -DLLVM_INCLUDE_DOCS=OFF ^ @@ -53,28 +51,28 @@ set CMAKE_CUSTOM=-DLLVM_TARGETS_TO_BUILD="%LLVM_TARGETS_TO_BUILD%" ^ -DLLVM_USE_INTEL_JITEVENTS=ON ^ -DLLVM_INCLUDE_BENCHMARKS=OFF ^ -DLLVM_ENABLE_DIA_SDK=OFF ^ - -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly - -REM try all compatible visual studio toolsets to find one that is installed -setlocal enabledelayedexpansion -for /l %%n in (0,1,%MAX_INDEX_CMAKE_GENERATOR%) do ( - cmake -G "!CMAKE_GENERATOR[%%n]!" ^ - -A "!CMAKE_GENERATOR_ARCHITECTURE[%%n]!" ^ - -T "!CMAKE_GENERATOR_TOOLSET[%%n]!" ^ - -DCMAKE_BUILD_TYPE="%BUILD_CONFIG%" ^ - -DCMAKE_PREFIX_PATH="%LIBRARY_PREFIX%" ^ - -DCMAKE_INSTALL_PREFIX:PATH="%LIBRARY_PREFIX%" ^ - %CMAKE_CUSTOM% "%SRC_DIR%\llvm" - if not errorlevel 1 goto configuration_successful - del CMakeCache.txt -) + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly ^ + -DCOMPILER_RT_BUILD_LIBFUZZER:BOOL=OFF ^ + -DCOMPILER_RT_BUILD_CRT:BOOL=OFF ^ + -DCOMPILER_RT_BUILD_MEMPROF:BOOL=OFF ^ + -DCOMPILER_RT_BUILD_PROFILE:BOOL=OFF ^ + -DCOMPILER_RT_BUILD_SANITIZERS:BOOL=OFF ^ + -DCOMPILER_RT_BUILD_XRAY:BOOL=OFF ^ + -DCOMPILER_RT_BUILD_GWP_ASAN:BOOL=OFF ^ + -DCOMPILER_RT_BUILD_ORC:BOOL=OFF ^ + -DCOMPILER_RT_INCLUDE_TESTS:BOOL=OFF + +cmake -G "%CMAKE_GENERATOR%" ^ + -A "%CMAKE_GENERATOR_ARCHITECTURE%" ^ + -T "%CMAKE_GENERATOR_TOOLSET%" ^ + -DCMAKE_BUILD_TYPE="%BUILD_CONFIG%" ^ + -DCMAKE_PREFIX_PATH="%LIBRARY_PREFIX%" ^ + -DCMAKE_INSTALL_PREFIX:PATH="%LIBRARY_PREFIX%" ^ + %CMAKE_CUSTOM% "%SRC_DIR%\llvm" REM no compatible visual studio toolset was found if errorlevel 1 exit 1 -:configuration_successful -endlocal - REM === Build step === cmake --build . --config "%BUILD_CONFIG%" if errorlevel 1 exit 1 diff --git a/conda-recipes/llvmdev/build.sh b/conda-recipes/llvmdev/build.sh index caccfe127..2a14ba391 100644 --- a/conda-recipes/llvmdev/build.sh +++ b/conda-recipes/llvmdev/build.sh @@ -10,18 +10,21 @@ LLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD:-"all"} # This is the clang compiler prefix if [[ $build_platform == osx-arm64 ]]; then DARWIN_TARGET=arm64-apple-darwin20.0.0 + DARWIN_ARCH=arm64 else DARWIN_TARGET=x86_64-apple-darwin13.4.0 + DARWIN_ARCH=x86_64 fi mv llvm-*.src llvm mv lld-*.src lld +mv rt/compiler-rt-*.src compiler-rt mv unwind/libunwind-*.src libunwind declare -a _cmake_config _cmake_config+=(-DCMAKE_INSTALL_PREFIX:PATH=${PREFIX}) _cmake_config+=(-DCMAKE_BUILD_TYPE:STRING=Release) -_cmake_config+=(-DLLVM_ENABLE_PROJECTS:STRING="lld") +_cmake_config+=(-DLLVM_ENABLE_PROJECTS:STRING="lld;compiler-rt") # The bootstrap clang I use was built with a static libLLVMObject.a and I trying to get the same here # _cmake_config+=(-DBUILD_SHARED_LIBS:BOOL=ON) _cmake_config+=(-DLLVM_ENABLE_ASSERTIONS:BOOL=ON) @@ -44,6 +47,17 @@ _cmake_config+=(-DLLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD}) _cmake_config+=(-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly) _cmake_config+=(-DLLVM_INCLUDE_UTILS=ON) # for llvm-lit _cmake_config+=(-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF) # doesn't build without the rest of LLVM project +_cmake_config+=(-DCOMPILER_RT_BUILD_BUILTINS:BOOL=ON) +_cmake_config+=(-DCOMPILER_RT_BUILTINS_HIDE_SYMBOLS=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_LIBFUZZER:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_CRT:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_MEMPROF:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_PROFILE:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_SANITIZERS:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_XRAY:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_GWP_ASAN:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_ORC:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_INCLUDE_TESTS:BOOL=OFF) # Requires clang to be built # TODO :: It would be nice if we had a cross-ecosystem 'BUILD_TIME_LIMITED' env var we could use to # disable these unnecessary but useful things. if [[ ${CONDA_FORGE} == yes ]]; then @@ -63,7 +77,7 @@ if [[ $(uname) == Darwin ]]; then # Once we are using our libc++ (not until llvm_build_final), it will be single-arch only and not setting # this causes link failures building the santizers since they respect DARWIN_osx_ARCHS. We may as well # save some compilation time by setting this for all of our llvm builds. - _cmake_config+=(-DDARWIN_osx_ARCHS=x86_64) + _cmake_config+=(-DDARWIN_osx_ARCHS=${DARWIN_ARCH}) elif [[ $(uname) == Linux ]]; then _cmake_config+=(-DLLVM_USE_INTEL_JITEVENTS=ON) # _cmake_config+=(-DLLVM_BINUTILS_INCDIR=${PREFIX}/lib/gcc/${cpu_arch}-${vendor}-linux-gnu/${compiler_ver}/plugin/include) diff --git a/conda-recipes/llvmdev/meta.yaml b/conda-recipes/llvmdev/meta.yaml index 7676d234e..6520312bc 100644 --- a/conda-recipes/llvmdev/meta.yaml +++ b/conda-recipes/llvmdev/meta.yaml @@ -3,7 +3,8 @@ {% set sha256_llvm = "050922ecaaca5781fdf6631ea92bc715183f202f9d2f15147226f023414f619a" %} {% set sha256_lld = "0c28ce0496934d37d20fec96591032dd66af8d10178a45762e0e75e85cf95ad3" %} {% set sha256_libunwind = "3bbe9c23c73259fe39c045dc87d0b283236ba6e00750a226b2c2aeac4a51d86b" %} -{% set build_number = "3" %} +{% set sha256_compiler_rt = "88df303840ca8fbff944e15e61c141226fe79f5d2b8e89fb024264d77841a02e" %} +{% set build_number = "4" %} package: name: llvmdev @@ -17,6 +18,7 @@ source: - ../llvm14-clear-gotoffsetmap.patch - ../llvm14-remove-use-of-clonefile.patch - ../llvm14-svml.patch + - url: https://github.com/llvm/llvm-project/releases/download/llvmorg-{{ version }}/lld-{{ version }}.src.tar.xz fn: lld-{{ version }}.src.tar.xz sha256: {{ sha256_lld }} @@ -26,6 +28,14 @@ source: sha256: {{ sha256_libunwind }} folder: unwind + - url: https://github.com/llvm/llvm-project/releases/download/llvmorg-{{ version }}/compiler-rt-{{ version }}.src.tar.xz + fn: compiler-rt-{{ version }}.src.tar.xz + sha256: {{ sha256_compiler_rt }} + folder: rt + patches: + - ../compiler-rt-windows-build.patch + - ../compiler-rt-macos-build.patch + build: number: {{ build_number }} script_env: diff --git a/conda-recipes/llvmdev_manylinux2014/build.sh b/conda-recipes/llvmdev_manylinux2014/build.sh index 3955c1e5b..8af2f04da 100644 --- a/conda-recipes/llvmdev_manylinux2014/build.sh +++ b/conda-recipes/llvmdev_manylinux2014/build.sh @@ -16,12 +16,13 @@ fi mv llvm-*.src llvm mv lld-*.src lld +mv rt/compiler-rt-*.src compiler-rt mv unwind/libunwind-*.src libunwind declare -a _cmake_config _cmake_config+=(-DCMAKE_INSTALL_PREFIX:PATH=${PREFIX}) _cmake_config+=(-DCMAKE_BUILD_TYPE:STRING=Release) -_cmake_config+=(-DLLVM_ENABLE_PROJECTS:STRING="lld") +_cmake_config+=(-DLLVM_ENABLE_PROJECTS:STRING="lld;compiler-rt") # The bootstrap clang I use was built with a static libLLVMObject.a and I trying to get the same here # _cmake_config+=(-DBUILD_SHARED_LIBS:BOOL=ON) _cmake_config+=(-DLLVM_ENABLE_ASSERTIONS:BOOL=ON) @@ -44,6 +45,16 @@ _cmake_config+=(-DLLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD}) _cmake_config+=(-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly) _cmake_config+=(-DLLVM_INCLUDE_UTILS=ON) # for llvm-lit _cmake_config+=(-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF) # doesn't build without the rest of LLVM project +_cmake_config+=(-DCOMPILER_RT_BUILD_BUILTINS:BOOL=ON) +_cmake_config+=(-DCOMPILER_RT_BUILD_LIBFUZZER:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_CRT:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_MEMPROF:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_PROFILE:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_SANITIZERS:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_XRAY:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_GWP_ASAN:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_BUILD_ORC:BOOL=OFF) +_cmake_config+=(-DCOMPILER_RT_INCLUDE_TESTS:BOOL=OFF) # TODO :: It would be nice if we had a cross-ecosystem 'BUILD_TIME_LIMITED' env var we could use to # disable these unnecessary but useful things. if [[ ${CONDA_FORGE} == yes ]]; then @@ -92,4 +103,4 @@ fi make check-llvm-unit || exit $? # From: https://github.com/conda-forge/llvmdev-feedstock/pull/53 -make install || exit $? +make install || exit $? \ No newline at end of file diff --git a/conda-recipes/llvmdev_manylinux2014/meta.yaml b/conda-recipes/llvmdev_manylinux2014/meta.yaml index bcc1ca39a..c153dec59 100644 --- a/conda-recipes/llvmdev_manylinux2014/meta.yaml +++ b/conda-recipes/llvmdev_manylinux2014/meta.yaml @@ -3,7 +3,8 @@ {% set sha256_llvm = "050922ecaaca5781fdf6631ea92bc715183f202f9d2f15147226f023414f619a" %} {% set sha256_lld = "0c28ce0496934d37d20fec96591032dd66af8d10178a45762e0e75e85cf95ad3" %} {% set sha256_libunwind = "3bbe9c23c73259fe39c045dc87d0b283236ba6e00750a226b2c2aeac4a51d86b" %} -{% set build_number = "1" %} +{% set sha256_compiler_rt = "88df303840ca8fbff944e15e61c141226fe79f5d2b8e89fb024264d77841a02e" %} +{% set build_number = "2" %} package: name: llvmdev @@ -17,6 +18,7 @@ source: - ../llvm14-clear-gotoffsetmap.patch - ../llvm14-remove-use-of-clonefile.patch - ../llvm14-svml.patch + - url: https://github.com/llvm/llvm-project/releases/download/llvmorg-{{ version }}/lld-{{ version }}.src.tar.xz fn: lld-{{ version }}.src.tar.xz sha256: {{ sha256_lld }} @@ -26,6 +28,11 @@ source: sha256: {{ sha256_libunwind }} folder: unwind + - url: https://github.com/llvm/llvm-project/releases/download/llvmorg-{{ version }}/compiler-rt-{{ version }}.src.tar.xz + fn: compiler-rt-{{ version }}.src.tar.xz + sha256: {{ sha256_compiler_rt }} + folder: rt + build: number: {{ build_number }} string: "manylinux2014h{{ PKG_HASH }}"