Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
025f103
fix: use different prefix
alexbatashev Jan 4, 2024
bae053e
use junky bash script to avoid stupid gnu conventions
alexbatashev Jan 4, 2024
2cc22fa
fix typo
alexbatashev Jan 4, 2024
06eebd9
change script permission
alexbatashev Jan 4, 2024
df3447b
fix prefix once again
alexbatashev Jan 4, 2024
d8fd2b2
fix prefix?
alexbatashev Jan 4, 2024
e13a35f
try a different prefix
alexbatashev Jan 4, 2024
46df49c
cross-compile please?
alexbatashev Jan 5, 2024
ced2ba5
linker
alexbatashev Jan 5, 2024
4d8fbfd
massage flags?
alexbatashev Jan 5, 2024
135fe60
massage args
alexbatashev Jan 5, 2024
22c7c51
update target flags
alexbatashev Jan 5, 2024
28d84bc
less mold
alexbatashev Jan 5, 2024
2712803
try more options
alexbatashev Jan 5, 2024
88e9fc2
fix for apple?
alexbatashev Jan 5, 2024
dcd650c
more apple stuff
alexbatashev Jan 5, 2024
f6ffac7
less apple flags
alexbatashev Jan 5, 2024
5d76d76
apple again
alexbatashev Jan 5, 2024
90d0e66
revert
alexbatashev Jan 5, 2024
427c6fb
macos again
alexbatashev Jan 5, 2024
c9b6f66
uplift xcode version
alexbatashev Jan 5, 2024
85665f4
disable riscv64
alexbatashev Jan 5, 2024
2fd1436
try other flags
alexbatashev Jan 5, 2024
1007cc8
more weird flags
alexbatashev Jan 5, 2024
44d3b9e
typo fixes
alexbatashev Jan 5, 2024
35c77e0
update prefix
alexbatashev Jan 5, 2024
fc3831a
more weird flags
alexbatashev Jan 5, 2024
595a8b9
test new flags
alexbatashev Jan 6, 2024
a5e3b68
new args
alexbatashev Jan 6, 2024
ddbaf8a
my compiler works!!!
alexbatashev Jan 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 26 additions & 2 deletions .github/workflows/llvm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ jobs:
run: sudo apt install -yqq gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
- name: Install RISC-V toolchain
run: sudo apt install -yqq gcc-riscv64-linux-gnu g++-riscv64-linux-gnu binutils-riscv64-linux-gnu
- name: Setup mold
uses: rui314/setup-mold@v1
with:
mold-version: 2.4.0
make-default: false
- name: Checkout LLVM
uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -51,9 +56,18 @@ jobs:
DESTDIR=$PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}-libcpp ninja install-stdlib-distribution-stripped
DESTDIR=$PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}} ninja install-toolchain-distribution-stripped

../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}-clang-tidy
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}-clang-doc
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}-clang-format
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}-clangd
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}-bolt
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}-lld
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}-libcpp
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}

ninja llvm-dwp
DESTDIR=$PWD/install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}} ninja install-pstl
cp ./bin/llvm-dwp ../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}/bin
cp ./bin/llvm-dwp ../install/${{inputs.llvm_tag}}-linux-${{matrix.cpu}}/bin/

cd ../install

Expand Down Expand Up @@ -93,6 +107,7 @@ jobs:
CXXFLAGS: -w
CFLAGS: -w
run: |
sudo xcode-select -s /Applications/Xcode_15.1.app
mkdir build && mkdir install

python3 ./toolchain/scripts/configure_llvm.py --target_cpu="${{matrix.cpu}}-apple-darwin" --build_dir=$PWD/build
Expand All @@ -108,9 +123,18 @@ jobs:
DESTDIR=$PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}-libcpp ninja install-stdlib-distribution-stripped
DESTDIR=$PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}} ninja install-toolchain-distribution-stripped

../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}-clang-tidy
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}-clang-doc
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}-clang-format
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}-clangd
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}-bolt
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}-lld
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}-libcpp
../toolchain/scripts/flatten_usr_dirs.sh $PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}

ninja llvm-dwp
DESTDIR=$PWD/../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}} ninja install-pstl
cp ./bin/llvm-dwp ../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}/bin
cp ./bin/llvm-dwp ../install/${{inputs.llvm_tag}}-macos-${{matrix.cpu}}/bin/

cd ../install

Expand Down
68 changes: 59 additions & 9 deletions scripts/configure_llvm.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,18 @@
"aarch64-unknown-linux-gnu",
"riscv64-unknown-linux-gnu",
]
targets_to_build = ["X86",
"AArch64",
"NVPTX",
"AMDGPU",
"RISCV"]
targets_to_build = [
"X86",
"AArch64",
"NVPTX",
"AMDGPU",
"RISCV",
"WebAssembly",
"BPF",
]
elif platform.system() == "Darwin":
runtime_targets = [args.target_cpu]
targets_to_build = ["X86", "AArch64"]
targets_to_build = ["X86", "AArch64", "WebAssembly"]

cmake_args = [
"cmake",
Expand All @@ -50,16 +54,18 @@
args.build_dir,
"-S",
"llvm/llvm",
"-DCMAKE_C_COMPILER=clang",
"-DCMAKE_CXX_COMPILER=clang++",
"-DCMAKE_BUILD_TYPE=Release",
"-DCMAKE_INSTALL_PREFIX=\".\"",
"-DCMAKE_INSTALL_PREFIX=/usr/local",
"-DLLVM_TARGETS_TO_BUILD={}".format(';'.join(targets_to_build)),
"-DLLVM_RUNTIME_TARGETS={}".format(';'.join(runtime_targets)),
"-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON",
"-DLLVM_ENABLE_TERMINFO=OFF",
"-DLLVM_ENABLE_ZLIB=OFF",
"-DLLVM_ENABLE_ZSTD=OFF",
"-DCLANG_DEFAULT_CXX_STDLIB=libc++",
"-DCLANG_DEFAULT_RTLIB=compiler-rt",
"-DCLANG_DEFAULT_UNWINDLIB=libunwind",
"-DCLANG_DEFAULT_LINKER=lld",
"-DLLVM_ENABLE_RUNTIMES=libunwind;compiler-rt;libcxx;libcxxabi;openmp",
"-DLLVM_ENABLE_PROJECTS=bolt;clang;clang-tools-extra;lld;pstl",
"-DLLVM_STATIC_LINK_CXX_STDLIB=ON",
Expand Down Expand Up @@ -99,6 +105,50 @@
if not args.target_cpu.startswith("x86_64"):
cmake_args.extend([
f"-DLLVM_HOST_TRIPLE={args.target_cpu}",
f"-DLLVM_TARGET_ARCH={args.target_cpu}",
f"-DLLVM_DEFAULT_TARGET_TRIPLE={args.target_cpu}",
f"-DCMAKE_ASM_COMPILER_TARGET={args.target_cpu}",
f"-DCMAKE_C_COMPILER_TARGET={args.target_cpu}",
f"-DCMAKE_CXX_COMPILER_TARGET={args.target_cpu}",
"-DCMAKE_CROSSCOMPILING=True",
])
if platform.system() == "Darwin":
cmake_args.extend([
"-DCMAKE_SYSTEM_NAME=Darwin",
"-DCMAKE_SYSTEM_PROCESSOR=arm64",
"-DCMAKE_OSX_DEPLOYMENT_TARGET=14.2",
"-DCMAKE_OSX_SYSROOT=/Applications/Xcode_15.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk",
"-DCMAKE_FIND_FRAMEWORK=LAST",
"-DCMAKE_FIND_APPBUNDLE=LAST",
])
elif platform.system() == "Linux":
gnu_prefix = args.target_cpu.replace('unknown-', '')
cmake_args.extend([
"-DCMAKE_C_COMPILER=clang",
"-DCMAKE_CXX_COMPILER=clang++",
"-DLLVM_USE_LINKER=mold",
"-DCMAKE_LINK_FLAGS=-fuse-ld=mold",
"-DCMAKE_C_COMPILER_WORKS=1",
"-DCMAKE_CXX_COMPILER_WORKS=1",
"-DCMAKE_ASM_COMPILER_WORKS=1",
# f"-DCMAKE_AR=/usr/bin/{gnu_prefix}-ar",
# f"-DCMAKE_LINKER=/usr/bin/{gnu_prefix}-ld",
# f"-DCMAKE_RANLIB=/usr/bin/{gnu_prefix}-ranlib",
# f"-DCMAKE_STRIP=/usr/bin/{gnu_prefix}-strip",
# f"-DCMAKE_C_COMPILER_AR=/usr/bin/{gnu_prefix}-ar",
# f"-DCMAKE_C_COMPILER_RANLIB=/usr/bin/{gnu_prefix}-ranlib",
# f"-DCMAKE_CXX_COMPILER_AR=/usr/bin/{gnu_prefix}-ar",
# f"-DCMAKE_CXX_COMPILER_RANLIB=/usr/bin/{gnu_prefix}-ranlib",
# f"-DCMAKE_C_COMPILER={args.target_cpu.replace('unknown-', '')}-gcc",
# f"-DCMAKE_CXX_COMPILER={args.target_cpu.replace('unknown-', '')}-g++",
"-DCMAKE_SYSTEM_NAME=Linux",
f"-DCMAKE_SYSTEM_PROCESSOR={args.target_cpu.split('-')[0]}",
])
elif platform.system() == "Linux":
cmake_args.extend([
"-DCMAKE_C_COMPILER=clang",
"-DCMAKE_CXX_COMPILER=clang++",
"-DLLVM_USE_LINKER=mold"
])

print(' '.join(cmake_args))
Expand Down
13 changes: 13 additions & 0 deletions scripts/flatten_usr_dirs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

set -eu

if [ -d "$1/usr" ]; then
for dir in $1/usr/local/*/
do
dir=${dir%*/}
mv $dir $1/${dir##*/}
done

rm -r $1/usr
fi