Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
numba
GitHub Repository: numba/llvmlite
Path: blob/main/conda-recipes/llvmdev_for_wheel/build.sh
1154 views
1
#!/bin/bash
2
# File is a copy of ../llvmdev/build.sh with changes to:
3
# - disable ZSTD
4
5
6
# based on https://github.com/AnacondaRecipes/llvmdev-feedstock/blob/master/recipe/build.sh
7
8
set -x
9
10
# Make osx work like linux.
11
sed -i.bak "s/NOT APPLE AND ARG_SONAME/ARG_SONAME/g" llvm/cmake/modules/AddLLVM.cmake
12
sed -i.bak "s/NOT APPLE AND NOT ARG_SONAME/NOT ARG_SONAME/g" llvm/cmake/modules/AddLLVM.cmake
13
14
mkdir build
15
cd build
16
17
export CPU_COUNT=4
18
19
CMAKE_ARGS="${CMAKE_ARGS} -DLLVM_ENABLE_PROJECTS=lld;compiler-rt"
20
21
if [[ "$target_platform" == "linux-64" ]]; then
22
CMAKE_ARGS="${CMAKE_ARGS} -DLLVM_USE_INTEL_JITEVENTS=ON"
23
fi
24
25
if [[ "$CC_FOR_BUILD" != "" && "$CC_FOR_BUILD" != "$CC" ]]; then
26
CMAKE_ARGS="${CMAKE_ARGS} -DCROSS_TOOLCHAIN_FLAGS_NATIVE=-DCMAKE_C_COMPILER=$CC_FOR_BUILD;-DCMAKE_CXX_COMPILER=$CXX_FOR_BUILD;-DCMAKE_C_FLAGS=-O2;-DCMAKE_CXX_FLAGS=-O2;-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath,${BUILD_PREFIX}/lib;-DCMAKE_MODULE_LINKER_FLAGS=;-DCMAKE_SHARED_LINKER_FLAGS=;-DCMAKE_STATIC_LINKER_FLAGS=;-DLLVM_INCLUDE_BENCHMARKS=OFF;"
27
CMAKE_ARGS="${CMAKE_ARGS} -DLLVM_HOST_TRIPLE=$(echo $HOST | sed s/conda/unknown/g) -DLLVM_DEFAULT_TARGET_TRIPLE=$(echo $HOST | sed s/conda/unknown/g)"
28
fi
29
30
# disable -fno-plt due to https://bugs.llvm.org/show_bug.cgi?id=51863 due to some GCC bug
31
if [[ "$target_platform" == "linux-ppc64le" ]]; then
32
CFLAGS="$(echo $CFLAGS | sed 's/-fno-plt //g')"
33
CXXFLAGS="$(echo $CXXFLAGS | sed 's/-fno-plt //g')"
34
CMAKE_ARGS="${CMAKE_ARGS} -DFFI_INCLUDE_DIR=$PREFIX/include"
35
CMAKE_ARGS="${CMAKE_ARGS} -DFFI_LIBRARY_DIR=$PREFIX/lib"
36
fi
37
38
if [[ $target_platform == osx-arm64 ]]; then
39
CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_ENABLE_WERROR=FALSE"
40
fi
41
42
cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" \
43
-DCMAKE_BUILD_TYPE=Release \
44
-DCMAKE_LIBRARY_PATH="${PREFIX}" \
45
-DLLVM_ENABLE_ZSTD=OFF \
46
-DLLVM_ENABLE_LIBEDIT=OFF \
47
-DLLVM_ENABLE_LIBXML2=OFF \
48
-DLLVM_ENABLE_RTTI=OFF \
49
-DLLVM_ENABLE_ASSERTIONS=ON \
50
-DLLVM_ENABLE_TERMINFO=OFF \
51
-DLLVM_INCLUDE_BENCHMARKS=OFF \
52
-DLLVM_INCLUDE_DOCS=OFF \
53
-DLLVM_INCLUDE_EXAMPLES=OFF \
54
-DLLVM_INCLUDE_GO_TESTS=OFF \
55
-DLLVM_INCLUDE_TESTS=ON \
56
-DLLVM_INCLUDE_UTILS=ON \
57
-DLLVM_INSTALL_UTILS=ON \
58
-DLLVM_UTILS_INSTALL_DIR=libexec/llvm \
59
-DLLVM_BUILD_LLVM_DYLIB=OFF \
60
-DLLVM_LINK_LLVM_DYLIB=OFF \
61
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly \
62
-DLLVM_ENABLE_FFI=ON \
63
-DLLVM_ENABLE_Z3_SOLVER=OFF \
64
-DLLVM_OPTIMIZED_TABLEGEN=ON \
65
-DCMAKE_POLICY_DEFAULT_CMP0111=NEW \
66
-DCOMPILER_RT_BUILD_BUILTINS=ON \
67
-DCOMPILER_RT_ENABLE_IOS=OFF \
68
-DCOMPILER_RT_BUILTINS_HIDE_SYMBOLS=OFF \
69
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF \
70
-DCOMPILER_RT_BUILD_CRT=OFF \
71
-DCOMPILER_RT_BUILD_MEMPROF=OFF \
72
-DCOMPILER_RT_BUILD_PROFILE=OFF \
73
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \
74
-DCOMPILER_RT_BUILD_XRAY=OFF \
75
-DCOMPILER_RT_BUILD_GWP_ASAN=OFF \
76
-DCOMPILER_RT_BUILD_ORC=OFF \
77
-DCOMPILER_RT_INCLUDE_TESTS=OFF \
78
${CMAKE_ARGS} \
79
-GNinja \
80
../llvm
81
82
83
ninja -j${CPU_COUNT}
84
85
ninja install
86
87
if [[ "${target_platform}" == "linux-64" ]]; then
88
export TEST_CPU_FLAG="-mcpu=haswell"
89
else
90
export TEST_CPU_FLAG=""
91
fi
92
93
if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
94
95
echo "Testing on ${target_platform}"
96
# bin/opt -S -vector-library=SVML $TEST_CPU_FLAG -O3 $RECIPE_DIR/numba-3016.ll | bin/FileCheck $RECIPE_DIR/numba-3016.ll || exit $?
97
98
if [[ "$target_platform" == linux* ]]; then
99
ln -s $(which $CC) $BUILD_PREFIX/bin/gcc
100
101
# These tests tests permission-based behaviour and probably fail because of some
102
# filesystem-related reason. They are sporadic failures and don't seem serious so they're excluded.
103
# Note that indents would introduce spaces into the environment variable
104
export LIT_FILTER_OUT='tools/llvm-ar/error-opening-permission.test|'\
105
'tools/llvm-dwarfdump/X86/output.s|'\
106
'tools/llvm-ifs/fail-file-write.test|'\
107
'tools/llvm-ranlib/error-opening-permission.test|'\
108
'ExecutionEngine/Interpreter/intrinsics.ll'
109
fi
110
111
if [[ "$target_platform" == osx-* ]]; then
112
# This failure seems like something to do with the output format of ls -lu
113
# and looks harmless
114
export LIT_FILTER_OUT='tools/llvm-objcopy/ELF/strip-preserve-atime.test|'\
115
'ExecutionEngine/Interpreter/intrinsics.ll'
116
fi
117
118
cd ../llvm/test
119
${PYTHON} ../../build/bin/llvm-lit -vv --ignore-fail Transforms ExecutionEngine Analysis CodeGen/X86
120
fi
121
122
123