Compare commits
9 Commits
Author | SHA1 | Date |
---|---|---|
Duke | 355b167703 | 1 year ago |
Duke | 4a289a10cc | 1 year ago |
Duke | 8a0bd507d4 | 1 year ago |
Duke | da2538f895 | 1 year ago |
Duke | 4dac0ab267 | 1 year ago |
Duke | 80a808592c | 1 year ago |
Duke | b4767fd817 | 1 year ago |
Duke | 1b20d7980e | 1 year ago |
Duke | b4a22bb2b9 | 1 year ago |
9 changed files with 192 additions and 18 deletions
@ -0,0 +1,61 @@ |
|||
package=libcxx |
|||
$(package)_version=$(native_clang_version) |
|||
$(package)_msys2_version=15.0.7-3 |
|||
|
|||
ifneq ($(canonical_host),$(build)) |
|||
ifneq ($(host_os),mingw32) |
|||
# Clang is provided pre-compiled for a bunch of targets; fetch the one we need
|
|||
# and stage its copies of the static libraries.
|
|||
$(package)_download_path=$(native_clang_download_path) |
|||
$(package)_download_file_aarch64_linux=clang+llvm-$($(package)_version)-aarch64-linux-gnu.tar.xz |
|||
$(package)_file_name_aarch64_linux=clang-llvm-$($(package)_version)-aarch64-linux-gnu.tar.xz |
|||
$(package)_sha256_hash_aarch64_linux=8ca4d68cf103da8331ca3f35fe23d940c1b78fb7f0d4763c1c059e352f5d1bec |
|||
$(package)_download_file_linux=clang+llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz |
|||
$(package)_file_name_linux=clang-llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz |
|||
$(package)_sha256_hash_linux=38bc7f5563642e73e69ac5626724e206d6d539fbef653541b34cae0ba9c3f036 |
|||
|
|||
# Starting from LLVM 14.0.0, some Clang binary tarballs store libc++ in a
|
|||
# target-specific subdirectory.
|
|||
define $(package)_stage_cmds |
|||
mkdir -p $($(package)_staging_prefix_dir)/lib && \
|
|||
(test ! -f lib/*/libc++.a || cp lib/*/libc++.a $($(package)_staging_prefix_dir)/lib) && \
|
|||
(test ! -f lib/*/libc++abi.a || cp lib/*/libc++abi.a $($(package)_staging_prefix_dir)/lib) && \
|
|||
(test ! -f lib/libc++.a || cp lib/libc++.a $($(package)_staging_prefix_dir)/lib) && \
|
|||
(test ! -f lib/libc++abi.a || cp lib/libc++abi.a $($(package)_staging_prefix_dir)/lib) |
|||
endef |
|||
|
|||
else |
|||
# For Windows cross-compilation, use the MSYS2 binaries.
|
|||
# Starting from LLVM 15.0.0, libc++abi is provided by libc++.
|
|||
$(package)_download_path=https://repo.msys2.org/mingw/x86_64 |
|||
$(package)_download_file=mingw-w64-x86_64-libc++-$($(package)_msys2_version)-any.pkg.tar.zst |
|||
$(package)_file_name=mingw-w64-x86_64-libcxx-$($(package)_msys2_version)-any.pkg.tar.zst |
|||
$(package)_sha256_hash=8c14da21fa9622cc7450b22467452c6c933a03cee526cf8744faea3d4674035b |
|||
|
|||
define $(package)_stage_cmds |
|||
mkdir -p $($(package)_staging_prefix_dir)/lib && \
|
|||
mv include/ $($(package)_staging_prefix_dir) && \
|
|||
cp lib/libc++.a $($(package)_staging_prefix_dir)/lib && \
|
|||
cp lib/libc++abi.a $($(package)_staging_prefix_dir)/lib |
|||
endef |
|||
endif |
|||
|
|||
else |
|||
# For native compilation, use the static libraries from native_clang.
|
|||
# We explicitly stage them so that subsequent dependencies don't link to the
|
|||
# shared libraries distributed with Clang.
|
|||
define $(package)_fetch_cmds |
|||
endef |
|||
|
|||
define $(package)_extract_cmds |
|||
endef |
|||
|
|||
define $(package)_stage_cmds |
|||
mkdir -p $($(package)_staging_prefix_dir)/lib && \
|
|||
(test ! -f $(build_prefix)/lib/*/libc++.a || cp $(build_prefix)/lib/*/libc++.a $($(package)_staging_prefix_dir)/lib) && \
|
|||
(test ! -f $(build_prefix)/lib/*/libc++abi.a || cp $(build_prefix)/lib/*/libc++abi.a $($(package)_staging_prefix_dir)/lib) && \
|
|||
(test ! -f $(build_prefix)/lib/libc++.a || cp $(build_prefix)/lib/libc++.a $($(package)_staging_prefix_dir)/lib) && \
|
|||
(test ! -f $(build_prefix)/lib/libc++abi.a || cp $(build_prefix)/lib/libc++abi.a $($(package)_staging_prefix_dir)/lib) |
|||
endef |
|||
|
|||
endif |
@ -0,0 +1,62 @@ |
|||
package=native_clang |
|||
# To update the Clang compiler:
|
|||
# - Change the versions below, and the MSYS2 version in libcxx.mk
|
|||
# - Run the script ./contrib/devtools/update-clang-hashes.sh
|
|||
# - Manually fix the versions for packages that don't exist (the LLVM project
|
|||
# doesn't uniformly cut binaries across releases).
|
|||
# The Clang compiler should use the same LLVM version as the Rust compiler.
|
|||
$(package)_major_version=15 |
|||
$(package)_version=15.0.6 |
|||
$(package)_download_path_linux=https://github.com/llvm/llvm-project/releases/download/llvmorg-$($(package)_version) |
|||
$(package)_download_file_linux=clang+llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz |
|||
$(package)_file_name_linux=clang-llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz |
|||
$(package)_sha256_hash_linux=38bc7f5563642e73e69ac5626724e206d6d539fbef653541b34cae0ba9c3f036 |
|||
$(package)_download_path_darwin=https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.4 |
|||
$(package)_download_file_darwin=clang+llvm-15.0.4-x86_64-apple-darwin.tar.xz |
|||
$(package)_file_name_darwin=clang-llvm-15.0.4-x86_64-apple-darwin.tar.xz |
|||
$(package)_sha256_hash_darwin=4c98d891c07c8f6661b233bf6652981f28432cfdbd6f07181114195c3536544b |
|||
# 2023-02-16: No FreeBSD packages are available for Clang 15, so we use Clang 14
|
|||
# here. This means FreeBSD builds will use two different versions of LLVM, but
|
|||
# FreeBSD is only a Tier 3 platform, so that is acceptable.
|
|||
$(package)_download_path_freebsd=https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.6 |
|||
$(package)_download_file_freebsd=clang+llvm-14.0.6-amd64-unknown-freebsd12.tar.xz |
|||
$(package)_file_name_freebsd=clang-llvm-14.0.6-amd64-unknown-freebsd12.tar.xz |
|||
$(package)_sha256_hash_freebsd=b0a7b86dacb12afb8dd2ca99ea1b894d9cce84aab7711cb1964b3005dfb09af3 |
|||
$(package)_download_path_aarch64_linux=https://github.com/llvm/llvm-project/releases/download/llvmorg-$($(package)_version) |
|||
$(package)_download_file_aarch64_linux=clang+llvm-$($(package)_version)-aarch64-linux-gnu.tar.xz |
|||
$(package)_file_name_aarch64_linux=clang-llvm-$($(package)_version)-aarch64-linux-gnu.tar.xz |
|||
$(package)_sha256_hash_aarch64_linux=8ca4d68cf103da8331ca3f35fe23d940c1b78fb7f0d4763c1c059e352f5d1bec |
|||
|
|||
ifneq (,$(wildcard /etc/arch-release)) |
|||
$(package)_dependencies=native_libtinfo |
|||
endif |
|||
|
|||
# Ensure we have clang native to the builder, not the target host
|
|||
ifneq ($(canonical_host),$(build)) |
|||
$(package)_exact_download_path=$($(package)_download_path_$(build_os)) |
|||
$(package)_exact_download_file=$($(package)_download_file_$(build_os)) |
|||
$(package)_exact_file_name=$($(package)_file_name_$(build_os)) |
|||
$(package)_exact_sha256_hash=$($(package)_sha256_hash_$(build_os)) |
|||
endif |
|||
|
|||
define $(package)_stage_cmds |
|||
mkdir -p $($(package)_staging_prefix_dir)/bin && \
|
|||
cp bin/clang-$($(package)_major_version) $($(package)_staging_prefix_dir)/bin && \
|
|||
cp bin/lld $($(package)_staging_prefix_dir)/bin && \
|
|||
cp bin/llvm-ar $($(package)_staging_prefix_dir)/bin && \
|
|||
cp bin/llvm-config $($(package)_staging_prefix_dir)/bin && \
|
|||
cp bin/llvm-nm $($(package)_staging_prefix_dir)/bin && \
|
|||
cp bin/llvm-objcopy $($(package)_staging_prefix_dir)/bin && \
|
|||
cp -P bin/clang $($(package)_staging_prefix_dir)/bin && \
|
|||
cp -P bin/clang++ $($(package)_staging_prefix_dir)/bin && \
|
|||
cp -P bin/ld.lld $($(package)_staging_prefix_dir)/bin && \
|
|||
cp -P bin/ld64.lld $($(package)_staging_prefix_dir)/bin && \
|
|||
cp -P bin/lld-link $($(package)_staging_prefix_dir)/bin && \
|
|||
cp -P bin/llvm-ranlib $($(package)_staging_prefix_dir)/bin && \
|
|||
cp -P bin/llvm-strip $($(package)_staging_prefix_dir)/bin && \
|
|||
(test ! -f include/x86_64-unknown-linux-gnu/c++/v1/__config_site || \
|
|||
cp include/x86_64-unknown-linux-gnu/c++/v1/__config_site include/c++/v1/__config_site) && \
|
|||
mv include/ $($(package)_staging_prefix_dir) && \
|
|||
mv lib/ $($(package)_staging_prefix_dir) && \
|
|||
mv libexec/ $($(package)_staging_prefix_dir) |
|||
endef |
Loading…
Reference in new issue