Skip to content

Commit c9c572a

Browse files
committed
depends: Allow building with system clang
1 parent e6e5c8d commit c9c572a

File tree

3 files changed

+50
-4
lines changed

3 files changed

+50
-4
lines changed

depends/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,11 @@ $(host_arch)_$(host_os)_native_toolchain?=$($(host_os)_native_toolchain)
156156
include funcs.mk
157157

158158
binutils_path=$($($(host_arch)_$(host_os)_native_binutils)_prefixbin)
159+
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
159160
toolchain_path=$($($(host_arch)_$(host_os)_native_toolchain)_prefixbin)
161+
else
162+
toolchain_path=
163+
endif
160164
final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in)
161165
final_build_id+=$(shell echo -n "$(final_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))
162166
$(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)

depends/hosts/darwin.mk

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ OSX_SDK=$(SDK_PATH)/Xcode-$(XCODE_VERSION)-$(XCODE_BUILD_ID)-extracted-SDK-with-
88

99
# When cross-compiling for Darwin using Clang, -mlinker-version must be passed to
1010
# ensure that modern linker features are enabled.
11-
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
12-
darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -stdlib=libc++ -mlinker-version=$(LD64_VERSION)
11+
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -B$(build_prefix)/bin
12+
darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -stdlib=libc++ -mlinker-version=$(LD64_VERSION) -B$(build_prefix)/bin
1313

1414
darwin_CFLAGS=-pipe
1515
darwin_CXXFLAGS=$(darwin_CFLAGS)
@@ -21,5 +21,10 @@ darwin_debug_CFLAGS=-O1
2121
darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS)
2222

2323
darwin_native_binutils=native_cctools
24+
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
2425
darwin_native_toolchain=native_cctools
26+
else
27+
darwin_native_toolchain=
28+
endif
29+
2530
darwin_cmake_system=Darwin

depends/packages/native_cctools.mk

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,39 @@ $(package)_download_path=https://github.com/tpoechtrager/cctools-port/archive
44
$(package)_file_name=$($(package)_version).tar.gz
55
$(package)_sha256_hash=a2d491c0981cef72fee2b833598f20f42a6c44a7614a61c439bda93d56446fec
66
$(package)_build_subdir=cctools
7+
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
78
$(package)_clang_version=8.0.0
89
$(package)_clang_download_path=https://releases.llvm.org/$($(package)_clang_version)
910
$(package)_clang_download_file=clang+llvm-$($(package)_clang_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz
1011
$(package)_clang_file_name=clang-llvm-$($(package)_clang_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz
1112
$(package)_clang_sha256_hash=9ef854b71949f825362a119bf2597f744836cb571131ae6b721cd102ffea8cd0
13+
endif
1214

1315
$(package)_libtapi_version=3efb201881e7a76a21e0554906cf306432539cef
1416
$(package)_libtapi_download_path=https://github.com/tpoechtrager/apple-libtapi/archive
1517
$(package)_libtapi_download_file=$($(package)_libtapi_version).tar.gz
1618
$(package)_libtapi_file_name=$($(package)_libtapi_version).tar.gz
1719
$(package)_libtapi_sha256_hash=380c1ca37cfa04a8699d0887a8d3ee1ad27f3d08baba78887c73b09485c0fbd3
1820

19-
$(package)_extra_sources=$($(package)_clang_file_name)
20-
$(package)_extra_sources += $($(package)_libtapi_file_name)
21+
$(package)_extra_sources=$($(package)_libtapi_file_name)
22+
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
23+
$(package)_extra_sources += $($(package)_clang_file_name)
24+
endif
2125

26+
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
2227
define $(package)_fetch_cmds
2328
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
2429
$(call fetch_file,$(package),$($(package)_clang_download_path),$($(package)_clang_download_file),$($(package)_clang_file_name),$($(package)_clang_sha256_hash)) && \
2530
$(call fetch_file,$(package),$($(package)_libtapi_download_path),$($(package)_libtapi_download_file),$($(package)_libtapi_file_name),$($(package)_libtapi_sha256_hash))
2631
endef
32+
else
33+
define $(package)_fetch_cmds
34+
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
35+
$(call fetch_file,$(package),$($(package)_libtapi_download_path),$($(package)_libtapi_download_file),$($(package)_libtapi_file_name),$($(package)_libtapi_sha256_hash))
36+
endef
37+
endif
2738

39+
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
2840
define $(package)_extract_cmds
2941
mkdir -p $($(package)_extract_dir) && \
3042
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
@@ -38,12 +50,28 @@ define $(package)_extract_cmds
3850
rm -f toolchain/lib/libc++abi.so* && \
3951
tar --no-same-owner --strip-components=1 -xf $($(package)_source)
4052
endef
53+
else
54+
define $(package)_extract_cmds
55+
mkdir -p $($(package)_extract_dir) && \
56+
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
57+
echo "$($(package)_libtapi_sha256_hash) $($(package)_source_dir)/$($(package)_libtapi_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
58+
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
59+
mkdir -p libtapi && \
60+
tar --no-same-owner --strip-components=1 -C libtapi -xf $($(package)_source_dir)/$($(package)_libtapi_file_name) && \
61+
tar --no-same-owner --strip-components=1 -xf $($(package)_source)
62+
endef
63+
endif
4164

4265
define $(package)_set_vars
4366
$(package)_config_opts=--target=$(host) --disable-lto-support --with-libtapi=$($(package)_extract_dir)
4467
$(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib
68+
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
4569
$(package)_cc=$($(package)_extract_dir)/toolchain/bin/clang
4670
$(package)_cxx=$($(package)_extract_dir)/toolchain/bin/clang++
71+
else
72+
$(package)_cc=clang
73+
$(package)_cxx=clang++
74+
endif
4775
endef
4876

4977
define $(package)_preprocess_cmds
@@ -60,6 +88,7 @@ define $(package)_build_cmds
6088
$(MAKE)
6189
endef
6290

91+
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
6392
define $(package)_stage_cmds
6493
$(MAKE) DESTDIR=$($(package)_staging_dir) install && \
6594
mkdir -p $($(package)_staging_prefix_dir)/lib/ && \
@@ -74,3 +103,11 @@ define $(package)_stage_cmds
74103
cp -rf lib/clang/$($(package)_clang_version)/include/* $($(package)_staging_prefix_dir)/lib/clang/$($(package)_clang_version)/include/ && \
75104
cp bin/dsymutil $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil
76105
endef
106+
else
107+
define $(package)_stage_cmds
108+
$(MAKE) DESTDIR=$($(package)_staging_dir) install && \
109+
mkdir -p $($(package)_staging_prefix_dir)/lib/ && \
110+
cd $($(package)_extract_dir) && \
111+
cp lib/libtapi.so.6 $($(package)_staging_prefix_dir)/lib/
112+
endef
113+
endif

0 commit comments

Comments
 (0)