Skip to content
Snippets Groups Projects
Unverified Commit 228a1188 authored by Pier Angelo Vendrame's avatar Pier Angelo Vendrame :jack_o_lantern: Committed by boklm
Browse files

Bug 40653: Do not build compiler-rt with Clang

Specifying compiler-rt as a project in LLVM is going to be deprecated.
It should be compiled with runtimes, instead, or alone, if it will be
still allowed.

The only platform in which we were compiling compiler-rt with LLVM was
Linux. But Firefox seems not to actually use it, and just use GCC's
runtime, instead.

However, we were also compiling compiler-rt for Android in the same
project, which prevents to share the artifact with Windows and macOS.
So, I have moved it to another project on its own.
parent 5d387c8f
No related branches found
No related tags found
No related merge requests found
......@@ -3,16 +3,12 @@
distdir=/var/tmp/dist/[% project %]
mkdir -p /var/tmp/dist
tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %]
export PATH="/var/tmp/dist/cmake/bin:$PATH"
tar -C /var/tmp/dist -xf [% c('input_files_by_name/ninja') %]
export PATH="/var/tmp/dist/ninja:/var/tmp/dist/cmake/bin:$PATH"
[% IF c("var/linux") %]
[% pc('gcc', 'var/setup', { compiler_tarfile => c('input_files_by_name/gcc'),
hardened_gcc => 0 }) %]
[% pc('python', 'var/setup', { python_tarfile => c('input_files_by_name/python') }) %]
[% END -%]
[% IF c("var/android") %]
[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
[% END -%]
[% IF c("var/linux") || c("var/android") -%]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
export PATH="/var/tmp/dist/binutils/bin:$PATH"
[% END -%]
......@@ -25,57 +21,15 @@ mkdir build
cd build
# LLVM_ENABLE_ZLIB solves the "contains a compressed section, but zlib is not available" on lld
# LLVM_INSTALL_UTILS allows this LLVM to be used to compile Rust
cmake ../llvm -G "Unix Makefiles" \
cmake ../llvm -GNinja \
-DCMAKE_INSTALL_PREFIX=$distdir \
-DCMAKE_BUILD_TYPE=Release \
[% IF c("var/android") || c("var/macos") -%]
-DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \
[% END -%]
[% IF c("var/rlbox") -%]-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly[% END %] \
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;lld" \
-DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64[% IF c("var/rlbox") -%];WebAssembly[% END %]" \
-DLLVM_ENABLE_PROJECTS="clang;lld" \
-DLLVM_ENABLE_ZLIB=ON \
-DLLVM_INSTALL_UTILS=ON \
make -j[% c("num_procs") %]
make install
cd ..
[% IF c("var/android") -%]
echo "Compiling compiler-rt (Android only)"
rtdistdir=/var/tmp/build/rtdist
mkdir $rtdistdir
make_compilerrt () {
mkdir "build-compilerrt-$1"
cd "build-compilerrt-$1"
cmake ../compiler-rt/ -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$rtdistdir \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=Android \
-DCMAKE_ANDROID_ARCH_ABI=$1 \
-DCMAKE_ANDROID_NDK="$ANDROID_NDK_HOME" \
-DCMAKE_C_FLAGS="$3 -fuse-ld=lld --rtlib=compiler-rt" \
-DCMAKE_CXX_FLAGS="$3 -fuse-ld=lld --rtlib=compiler-rt" \
-DCMAKE_EXE_LINKER_FLAGS="-L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/$2" \
-DCOMPILER_RT_BUILD_BUILTINS=ON \
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF \
-DCOMPILER_RT_BUILD_MEMPROF=OFF \
-DCOMPILER_RT_BUILD_ORC=OFF \
-DCOMPILER_RT_BUILD_PROFILE=OFF \
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \
-DCOMPILER_RT_BUILD_XRAY=OFF
make -j[% c("num_procs") %]
make install
cd ..
}
make_compilerrt "armeabi-v7a" "arm-linux-androideabi/lib" "-DARMEABI_V7A"
make_compilerrt "arm64-v8a" "aarch64-linux-android/lib64"
make_compilerrt "x86" "i686-linux-android/lib"
make_compilerrt "x86_64" "x86_64-linux-android/lib64"
mv $rtdistdir/lib/linux/libclang_rt.builtins-*-android.a $distdir/lib/clang/[% c("var/llvm_version") %]/lib/linux/
[% END -%]
ninja -j[% c("num_procs") %] -v install
cd /var/tmp/dist
[% c('tar', {
......
......@@ -11,14 +11,16 @@ input_files:
- project: container-image
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
enable: '[% c("var/linux") || c("var/android") %]'
enable: '[% c("var/linux") %]'
- name: binutils
project: binutils
enable: '[% c("var/linux") || c("var/android") %]'
enable: '[% c("var/linux") %]'
- project: cmake
name: cmake
- project: llvm-project
name: clang-source
- project: ninja
name: ninja
- project: python
name: python
enable: '[% c("var/linux") %]'
#!/bin/bash
[% c("var/set_default_env") -%]
distdir=/var/tmp/dist/[% project %]
mkdir -p /var/tmp/dist
tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/ninja') %]
export PATH="/var/tmp/dist/ninja:/var/tmp/dist/cmake/bin:$PATH"
[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
export PATH="/var/tmp/dist/binutils/bin:$PATH"
mkdir -p /var/tmp/build
cd /var/tmp/build
tar -xf $rootdir/[% c('input_files_by_name/clang-source') %]
cd clang-source
export LLVM_HOME=$(pwd)
mkdir build
cd build
installdir=/var/tmp/build/install
mkdir -p $installdir
cmake ../compiler-rt/ -GNinja \
-DCMAKE_INSTALL_PREFIX=$installdir \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=Android \
-DCMAKE_ANDROID_ARCH_ABI="[% c('var/abi') %]" \
-DCMAKE_ANDROID_NDK="$ANDROID_NDK_HOME" \
-DCMAKE_C_FLAGS="-fuse-ld=lld --rtlib=compiler-rt $defines" \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld --rtlib=compiler-rt $defines" \
-DCMAKE_EXE_LINKER_FLAGS="-L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/[% c('var/libdir') %]" \
-DCOMPILER_RT_BUILD_BUILTINS=ON \
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF \
-DCOMPILER_RT_BUILD_MEMPROF=OFF \
-DCOMPILER_RT_BUILD_ORC=OFF \
-DCOMPILER_RT_BUILD_PROFILE=OFF \
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \
-DCOMPILER_RT_BUILD_XRAY=OFF
ninja -j[% c("num_procs") %] -v install
mkdir -p $distdir/lib/clang/[% c("var/llvm_version") %]/lib/linux/
mv $installdir/lib/linux/libclang_rt.builtins-*-android.a $distdir/lib/clang/[% c("var/llvm_version") %]/lib/linux/
cd /var/tmp/dist
[% c('tar', {
tar_src => [ project ],
tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
}) %]
# vim: filetype=yaml sw=2
version: '[% c("var/llvm_version") %]'
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
container:
use_container: 1
var:
llvm_version: '[% pc("llvm-project", "version") %]'
targets:
android-armv7:
var:
libdir: 'arm-linux-androideabi/lib'
android-aarch64:
var:
libdir: 'aarch64-linux-android/lib64'
android-x86:
var:
libdir: 'i686-linux-android/lib'
android-x86_64:
var:
libdir: 'x86_64-linux-android/lib64'
input_files:
- project: container-image
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
- name: binutils
project: binutils
- project: cmake
name: cmake
- project: llvm-project
name: clang-source
- project: ninja
name: ninja
- project: python
name: python
enable: '[% c("var/linux") %]'
......@@ -21,6 +21,8 @@ tar -C /var/tmp/dist -xf [% c('input_files_by_name/nasm') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/node') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/clang') %]
export LLVM_CONFIG="/var/tmp/dist/clang/bin/llvm-config"
tar -C /var/tmp/dist -xf [% c('input_files_by_name/compiler-rt') %]
cp -r /var/tmp/dist/compiler-rt/* /var/tmp/dist/clang/
tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
export PATH="/var/tmp/dist/rust/bin:/var/tmp/dist/cbindgen:/var/tmp/dist/nasm/bin:/var/tmp/dist/node/bin:/var/tmp/dist/clang/bin:/var/tmp/dist/binutils/bin:$PATH"
......
......@@ -171,6 +171,8 @@ input_files:
name: nasm
- project: clang
name: clang
- project: 'compiler-rt'
name: 'compiler-rt'
- filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
name: gradle-dependencies
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment