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