2020-10-12 10:06:56 -07:00
|
|
|
package=libcxx
|
|
|
|
$(package)_version=$(native_clang_version)
|
2022-07-12 05:43:32 -07:00
|
|
|
$(package)_msys2_version=14.0.6-1
|
2020-10-12 10:06:56 -07:00
|
|
|
|
|
|
|
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.
|
2021-01-15 09:42:33 -08:00
|
|
|
$(package)_download_path=$(native_clang_download_path)
|
2020-10-12 10:06:56 -07:00
|
|
|
$(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
|
2022-07-12 05:43:32 -07:00
|
|
|
$(package)_sha256_hash_aarch64_linux=1a81fda984f5e607584916fdf69cf41e5385b219b983544d2c1a14950d5a65cf
|
2022-02-28 16:30:32 -08:00
|
|
|
$(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
|
2022-07-12 05:43:32 -07:00
|
|
|
$(package)_sha256_hash_linux=61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5
|
2020-10-12 10:06:56 -07:00
|
|
|
|
2022-07-12 05:43:32 -07:00
|
|
|
# Starting from LLVM 14.0.0, some Clang binary tarballs store libc++ in a
|
|
|
|
# target-specific subdirectory.
|
2020-10-12 10:06:56 -07:00
|
|
|
define $(package)_stage_cmds
|
|
|
|
mkdir -p $($(package)_staging_prefix_dir)/lib && \
|
2022-07-12 05:43:32 -07:00
|
|
|
(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)
|
2020-10-12 10:06:56 -07:00
|
|
|
endef
|
|
|
|
|
|
|
|
else
|
|
|
|
# For Windows cross-compilation, use the MSYS2 binaries.
|
2020-12-12 16:33:22 -08:00
|
|
|
$(package)_download_path=https://repo.msys2.org/mingw/x86_64
|
2022-07-12 05:43:32 -07:00
|
|
|
$(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=05f888ec1d82cb989a22ced6b85834c5d9aac46613b15334e6a2806c3d0960a4
|
2020-10-12 10:06:56 -07:00
|
|
|
|
2022-07-12 05:43:32 -07:00
|
|
|
$(package)_libcxxabi_download_file=mingw-w64-x86_64-libc++abi-$($(package)_msys2_version)-any.pkg.tar.zst
|
|
|
|
$(package)_libcxxabi_file_name=mingw-w64-x86_64-libcxxabi-$($(package)_msys2_version)-any.pkg.tar.zst
|
|
|
|
$(package)_libcxxabi_sha256_hash=0ca22d18cb155f6d230d7f6691c05b876316e0c381195428f063f66352689ca4
|
2020-10-12 10:06:56 -07:00
|
|
|
|
|
|
|
$(package)_extra_sources += $($(package)_libcxxabi_file_name)
|
|
|
|
|
|
|
|
define $(package)_fetch_cmds
|
|
|
|
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
|
|
|
|
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_libcxxabi_download_file),$($(package)_libcxxabi_file_name),$($(package)_libcxxabi_sha256_hash))
|
|
|
|
endef
|
|
|
|
|
|
|
|
define $(package)_extract_cmds
|
|
|
|
mkdir -p $($(package)_extract_dir) && \
|
|
|
|
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
|
|
echo "$($(package)_libcxxabi_sha256_hash) $($(package)_source_dir)/$($(package)_libcxxabi_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
|
|
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
|
|
mkdir -p libcxxabi && \
|
|
|
|
tar --no-same-owner --strip-components=1 -C libcxxabi -xf $($(package)_source_dir)/$($(package)_libcxxabi_file_name) && \
|
|
|
|
tar --no-same-owner --strip-components=1 -xf $($(package)_source)
|
|
|
|
endef
|
|
|
|
|
|
|
|
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 libcxxabi/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 && \
|
2022-07-12 05:43:32 -07:00
|
|
|
(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)
|
2020-10-12 10:06:56 -07:00
|
|
|
endef
|
2020-12-30 16:50:25 -08:00
|
|
|
|
2020-10-12 10:06:56 -07:00
|
|
|
endif
|