]>
Commit | Line | Data |
---|---|---|
875ec1e7 SL |
1 | #!/usr/bin/make -f |
2 | ||
20d2a90c | 3 | # polly & lldb aren't enabled for every platform |
4a688750 | 4 | PROJECTS = clang;clang-tools-extra;lld;cross-project-tests;mlir |
20d2a90c EM |
5 | # openmp & libunwind aren't enabled for every platform |
6 | RUNTIMES = compiler-rt;libcxx;libcxxabi | |
3c075840 | 7 | |
43b40b1a | 8 | TARGET_BUILD := build-llvm |
3b17d907 | 9 | TARGET_BUILD_STAGE2 := $(TARGET_BUILD)/tools/clang/stage2-bins |
65242311 | 10 | DEB_INST := $(CURDIR)/debian/tmp/ |
338ca522 SL |
11 | |
12 | GXX_VERSIONED_PACKAGE := $(shell dpkg-query -W -f '$${Depends}' g++ | grep -o 'g++-[0-9][0-9.]*' | tail -n1 ) | |
13 | GXX_VERSIONED_EXECUTABLE := $(shell dpkg -L $(GXX_VERSIONED_PACKAGE) | grep '/usr/bin/g++-[0-9][0-9.]*' | xargs ls -d | tail -n1 ) | |
14 | GCC_VERSION := $(subst /usr/bin/g++-,,$(GXX_VERSIONED_EXECUTABLE)) | |
15 | ||
42fc7bcf SL |
16 | LLVM_VERSION := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9]+).*,\1,p") |
17 | LLVM_VERSION_FULL := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9.]+)(~|-)(.*),\1,p") | |
f01f2c14 | 18 | LLVM_VERSION_SNAPSHOT := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:(.*),\1,p") |
ec919ec0 | 19 | ifeq ($(LLVM_VERSION),$(LLVM_VERSION_FULL)) |
228ad20a | 20 | LLVM_VERSION_FULL := $(LLVM_VERSION).0.0 |
ec919ec0 | 21 | endif |
18c9c055 | 22 | |
6fb05958 SL |
23 | SOURCE_NAME := $(shell dpkg-parsechangelog -S Source) |
24 | ifneq (,$(findstring snapshot,$(SOURCE_NAME))) | |
25 | BRANCH_NAME=snapshot | |
26 | else | |
27 | BRANCH_NAME=$(LLVM_VERSION) | |
28 | endif | |
29 | ||
875ec1e7 | 30 | SONAME_EXT := 1 |
430f8ff5 | 31 | SONAME_OPENMP := 5 |
228ad20a | 32 | # Manage the case when the version is 3.5~svn213052-1~exp1 or 3.4.2-1 |
3f935e99 | 33 | DEBIAN_REVISION := $(shell dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9.]+)(~|-)(.*),\3,p") |
875ec1e7 | 34 | ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) |
187d0897 | 35 | NJOBS := $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) |
6da834fd SL |
36 | else |
37 | NJOBS := $(shell nproc) | |
875ec1e7 SL |
38 | endif |
39 | ||
af1ace76 | 40 | VENDOR=$(shell lsb_release -is) |
773d6874 SL |
41 | DISTRO=$(shell lsb_release -sc) |
42 | ||
231b7c6e | 43 | DH_VERSION := $(shell dpkg -s debhelper | grep '^Version' | awk '{print $$2}') |
99d00fae | 44 | |
583a0943 | 45 | include /usr/share/dpkg/architecture.mk |
875ec1e7 | 46 | |
feae1e11 | 47 | CONFIGURE_EXTRA = |
708c17e6 | 48 | |
5088c762 | 49 | # dpkg-buildflags support |
27687a10 EM |
50 | # disable fixfilepath in favor of the llvm-project supplied flavor, disable lto |
51 | export DEB_BUILD_MAINT_OPTIONS = reproducible=-fixfilepath,-fixdebugpath optimize=-lto | |
dd07b033 | 52 | # these are handled on a per stage / build basis |
5088c762 EM |
53 | export DEB_CFLAGS_MAINT_STRIP = -g -O2 |
54 | export DEB_CXXFLAGS_MAINT_STRIP = -g -O2 | |
55 | ||
56 | include /usr/share/dpkg/buildflags.mk | |
e5d18af7 SL |
57 | |
58 | # We use a stage2 build. It means that a first clang is built using gcc, | |
59 | # a second clang is built with the first | |
16e05820 | 60 | # And the various components are built using the second clang. |
e5d18af7 SL |
61 | # See https://llvm.org/docs/AdvancedBuilds.html |
62 | ||
5088c762 EM |
63 | # collect additional flags for all stages all builds |
64 | CFLAGS_EXTRA = -Wno-unused-command-line-argument | |
65 | CXXFLAGS_EXTRA = -Wno-unused-command-line-argument | |
66 | LDFLAGS_EXTRA = -Wl,--build-id | |
67 | ||
68 | # collect all flags for stage 1 toolchain build only | |
69 | STAGE_1_CFLAGS = $(CFLAGS) $(CFLAGS_EXTRA) $(CPPFLAGS) | |
70 | STAGE_1_CXXFLAGS = $(CXXFLAGS) $(CXXFLAGS_EXTRA) $(CPPFLAGS) | |
71 | STAGE_1_LDFLAGS = $(LDFLAGS) $(LDFLAGS_EXTRA) | |
89fafb13 SL |
72 | # If we build with libc++, we might want to set different arguments for |
73 | # stage 1 & runtimes | |
74 | RUNTIMES_CFLAGS = $(STAGE_1_CFLAGS) | |
75 | RUNTIMES_CXXFLAGS := $(STAGE_1_CXXFLAGS) | |
76 | RUNTIMES_LDFLAGS := $(STAGE_1_LDFLAGS) | |
5088c762 EM |
77 | |
78 | # collect all flags for stage 2 toolchain and stand-alone builds | |
79 | STAGE_2_CFLAGS = $(CFLAGS) $(CFLAGS_EXTRA) $(CPPFLAGS) | |
80 | STAGE_2_CXXFLAGS = $(CXXFLAGS) $(CXXFLAGS_EXTRA) $(CPPFLAGS) | |
81 | STAGE_2_LDFLAGS = $(LDFLAGS) $(LDFLAGS_EXTRA) | |
2bb5eae6 | 82 | |
5088c762 | 83 | # collect additional cmake options for toolchain build configuration |
2e88154b | 84 | STAGE_1_CMAKE_EXTRA = |
8fdac930 | 85 | STAGE_2_CMAKE_EXTRA = |
2e88154b | 86 | STAGE_ALL_CMAKE_EXTRA = |
5088c762 | 87 | # toolchain config-only var combining all stage 1 cmake options |
2e88154b | 88 | CMAKE_EXTRA = $(STAGE_1_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA) |
5088c762 | 89 | # toolchain config-only var prepending BOOTSTRAP_ to all stage 2 cmake options |
2e88154b | 90 | BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(STAGE_2_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra))) |
708c17e6 | 91 | |
cb07c387 | 92 | BASE_PATH := $(CURDIR) |
35a8b4a6 EM |
93 | STAGE_1_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD)/bin |
94 | STAGE_1_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD)/lib | |
95 | STAGE_2_BIN_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/bin | |
96 | STAGE_2_LIB_DIR := $(BASE_PATH)/$(TARGET_BUILD_STAGE2)/lib | |
6ac04400 | 97 | |
21741170 EM |
98 | # toggleable defaults |
99 | COMPILER_RT_USE_BUILTINS_LIBRARY := ON | |
cb07c387 | 100 | LIBCXX_EXCEPTIONS := ON |
d816c395 | 101 | LIBCXX_USE_COMPILER_RT := ON |
6ac04400 | 102 | |
3270880a SL |
103 | # We want to set the clang extra version ONLY in stage 2 |
104 | # because we want the clang stage 1 to be as reproducible as possible | |
105 | # when building with sccache (because this tool do a hash using the | |
106 | # compiler binary and other things) | |
107 | STAGE_2_CMAKE_EXTRA += -DCLANG_REPOSITORY_STRING=$(DEBIAN_REVISION) | |
108 | ||
042d6084 | 109 | ifneq (,$(filter $(DEB_HOST_ARCH),sparc sparc64)) |
2e88154b | 110 | STAGE_1_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 |
042d6084 JPAG |
111 | endif |
112 | ||
3d0e431f | 113 | ifneq (,$(filter $(DEB_HOST_ARCH),i386 hurd-i386 kfreebsd-i386 armel mipsel powerpc powerpcspe riscv64)) |
75562373 | 114 | # For some reason, in the stage2 build, when clang is used to compile |
ee4d16b4 EM |
115 | # itself. The atomic detection is failing on armel and riscv64. Forcing the inclusion |
116 | # everywhere and in all stages | |
75562373 SL |
117 | LDFLAGS_EXTRA += -latomic |
118 | endif | |
119 | ||
3e6b8215 | 120 | Z3_FLAG = -DLLVM_ENABLE_Z3_SOLVER=OFF |
4a38357f | 121 | ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' libz3-dev) gt 4.7.0; echo $$?),0) |
3e6b8215 GC |
122 | # no ocaml support in main for Ubuntu |
123 | ifneq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes) | |
4a38357f SL |
124 | Z3_FLAG = -DLLVM_ENABLE_Z3_SOLVER=ON |
125 | endif | |
3e6b8215 | 126 | endif |
2e88154b | 127 | STAGE_2_CMAKE_EXTRA += $(Z3_FLAG) |
4a38357f | 128 | |
bf461e44 | 129 | # Change the default CPU for s390x |
af118900 GC |
130 | ZARCH=z196 |
131 | ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes) | |
132 | ZARCH=z13 | |
133 | endif | |
2e88154b | 134 | STAGE_2_CMAKE_EXTRA += -DCLANG_SYSTEMZ_DEFAULT_ARCH=$(ZARCH) |
af118900 | 135 | |
227598db SM |
136 | # clangd remote index support requires GRPC & protobuf. |
137 | # Enable if minimum tested versions are available. | |
922aee77 | 138 | CLANGD_GRPC_INSTALLED=no |
227598db SM |
139 | ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' libgrpc++-dev) gt 1.30.0; echo $$?),0) |
140 | ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' protobuf-compiler-grpc) gt 1.30.0; echo $$?),0) | |
141 | ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' libprotobuf-dev) gt 3.12.0; echo $$?),0) | |
142 | ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' protobuf-compiler) gt 3.12.0; echo $$?),0) | |
922aee77 | 143 | CLANGD_GRPC_INSTALLED=yes |
227598db SM |
144 | STAGE_2_CMAKE_EXTRA += -DCLANGD_ENABLE_REMOTE=ON |
145 | endif | |
146 | endif | |
147 | endif | |
148 | endif | |
149 | ||
123767a4 SL |
150 | export CC=gcc-$(GCC_VERSION) |
151 | export CXX=g++-$(GCC_VERSION) | |
152 | ||
875ec1e7 | 153 | ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) |
2e88154b EM |
154 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi |
155 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON | |
b7363248 EM |
156 | # align arch profile with debian baseline |
157 | # https://wiki.debian.org/ArmEabiPort | |
158 | CFLAGS_EXTRA += -march=armv5t | |
159 | CXXFLAGS_EXTRA += -march=armv5t | |
6558504c | 160 | # disable compiler-rt builtins (not supported for baseline armel arch: armv5t) |
21741170 | 161 | # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html |
2e88154b | 162 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF |
21741170 | 163 | COMPILER_RT_USE_BUILTINS_LIBRARY := OFF |
21741170 | 164 | LIBCXX_USE_COMPILER_RT := OFF |
c39e93a3 EM |
165 | # disable scudo standalone (not supported for baseline armel arch: armv5t) |
166 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_SCUDO_STANDALONE=OFF | |
875ec1e7 SL |
167 | endif |
168 | ||
af56187b | 169 | ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) |
2e88154b EM |
170 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabihf |
171 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON | |
b7363248 EM |
172 | # align arch profile with debian baseline |
173 | # https://wiki.debian.org/ArmHardFloatPort#Minimum_CPU_.26_FPU | |
174 | CFLAGS_EXTRA += -march=armv7-a -mfpu=vfpv3-d16 | |
175 | CXXFLAGS_EXTRA += -march=armv7-a -mfpu=vfpv3-d16 | |
af56187b SL |
176 | endif |
177 | ||
21741170 EM |
178 | ifneq (,$(filter $(DEB_HOST_ARCH),i386)) |
179 | # Sometimes, i386 needs help with the triple | |
2e88154b | 180 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=i386-linux-gnu |
dd97ff40 SL |
181 | CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=i386-linux-gnu |
182 | endif | |
183 | ||
c27a5a49 | 184 | ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) |
eac2759e SL |
185 | # avoid an issue with search path on mips64el |
186 | # https://bugs.llvm.org/show_bug.cgi?id=41204 | |
2e88154b | 187 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=mips64el-linux-gnuabi64 |
eac2759e SL |
188 | endif |
189 | ||
36bdfcce EM |
190 | ifneq (,$(filter $(DEB_HOST_ARCH),powerpc)) |
191 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=powerpc-linux-gnu | |
192 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON | |
193 | endif | |
194 | ||
c32f435a | 195 | # debug symbols OOM in Ubuntu Ubuntu and slows down build process. |
fae383f3 | 196 | ifneq (,$(filter $(DEB_HOST_ARCH),riscv64)) |
e2951087 GC |
197 | opt_flags = -O2 -DNDEBUG -g0 |
198 | else | |
199 | opt_flags = -O2 -DNDEBUG -g1 | |
fae383f3 GC |
200 | endif |
201 | ||
66650350 JPAG |
202 | ifneq (,$(filter $(DEB_HOST_ARCH),sparc)) |
203 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=sparc-linux-gnu | |
204 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON | |
205 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 | |
206 | endif | |
207 | ||
208 | ifneq (,$(filter $(DEB_HOST_ARCH),sparc64)) | |
209 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=sparc64-linux-gnu | |
210 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON | |
cdc92042 JPAG |
211 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 |
212 | endif | |
213 | ||
21741170 | 214 | ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) |
9a1ae924 EM |
215 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=s390x-linux-gnu |
216 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON | |
21741170 | 217 | LIBCXX_EXCEPTIONS := OFF |
6558504c EM |
218 | # disable compiler-rt builtins (not supported for s390x) |
219 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF | |
220 | COMPILER_RT_USE_BUILTINS_LIBRARY := OFF | |
221 | LIBCXX_USE_COMPILER_RT := OFF | |
eac2759e SL |
222 | endif |
223 | ||
6be367e5 GC |
224 | ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) |
225 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON | |
226 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF | |
227 | COMPILER_RT_USE_BUILTINS_LIBRARY := OFF | |
228 | LIBCXX_USE_COMPILER_RT := OFF | |
229 | endif | |
230 | ||
6a524ab3 | 231 | ifneq (,$(filter $(DEB_HOST_ARCH),x32)) |
6558504c EM |
232 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=x86_64-linux-gnux32 |
233 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-linux-gnux32 | |
bfbd8f81 JPAG |
234 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF |
235 | COMPILER_RT_USE_BUILTINS_LIBRARY := OFF | |
236 | LIBCXX_USE_COMPILER_RT := OFF | |
6a524ab3 | 237 | endif |
eac2759e | 238 | |
653f1a56 PT |
239 | ifneq (,$(filter $(DEB_HOST_ARCH),hurd-i386)) |
240 | STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON | |
241 | endif | |
242 | ||
4ac4be96 | 243 | ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) ge 4.8-20121128-1~ ; echo $$?),0) |
a405cb76 SL |
244 | control_vars = '-Vdep:devlibs=libstdc++-$(GCC_VERSION)-dev, libgcc-$(GCC_VERSION)-dev' \ |
245 | '-Vdep:devlibs-objc=libobjc-$(GCC_VERSION)-dev' | |
4ac4be96 | 246 | else ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) ge 4.7.2-10~ ; echo $$?),0) |
a405cb76 SL |
247 | control_vars = '-Vdep:devlibs=libstdc++6-$(GCC_VERSION)-dev, libgcc-$(GCC_VERSION)-dev' \ |
248 | '-Vdep:devlibs-objc=libobjc-$(GCC_VERSION)-dev' | |
712c1081 | 249 | else |
4ac4be96 | 250 | control_vars = '-Vdep:devlibs=libstdc++6-$(GCC_VERSION)-dev' |
712c1081 SL |
251 | endif |
252 | ||
5c8a7151 | 253 | LLVM_SPIRV_VERSION := $(LLVM_VERSION) |
277362b9 | 254 | LLVM_SPIRV := $(shell bash -c "command -v llvm-spirv-$(LLVM_SPIRV_VERSION)" 2>/dev/null) |
5befbff1 JJ |
255 | ifndef LLVM_SPIRV |
256 | LLVM_SPIRV_VERSION := $(shell expr $(LLVM_VERSION) - 1) | |
257 | LLVM_SPIRV := $(shell bash -c "command -v llvm-spirv-$(LLVM_SPIRV_VERSION)" 2>/dev/null) | |
258 | endif | |
277362b9 JJ |
259 | ifndef LLVM_SPIRV |
260 | LLVM_SPIRV_INSTALLED = no | |
7a5f4765 | 261 | else |
45ef20d1 | 262 | ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' llvm-spirv-$(LLVM_SPIRV_VERSION)) gt 14.0.0 ; echo $$?),0) |
1f06639f SL |
263 | # Too old llvm-spirv version are failing. See #52200 |
264 | LLVM_SPIRV_INSTALLED = yes | |
265 | else | |
266 | LLVM_SPIRV_INSTALLED = no | |
267 | endif | |
7a5f4765 SL |
268 | endif |
269 | ||
236aed51 | 270 | LIBCLC_TARGETS_TO_BUILD="amdgcn--;amdgcn--amdhsa;amdgcn-mesa-mesa3d;r600--;nvptx--;nvptx64--;nvptx--nvidiacl;nvptx64--nvidiacl" |
41a4a741 | 271 | LIBCLC_LLVM_SPIRV = |
7a5f4765 SL |
272 | ifeq ($(LLVM_SPIRV_INSTALLED),yes) |
273 | LIBCLC_TARGETS_TO_BUILD := $(LIBCLC_TARGETS_TO_BUILD)";spirv-mesa3d-;spirv64-mesa3d-" | |
41a4a741 | 274 | LIBCLC_LLVM_SPIRV = "-DLLVM_SPIRV=$(LLVM_SPIRV)" |
7a5f4765 SL |
275 | endif |
276 | ||
5088597e | 277 | BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 ppc64 ppc64el x32 s390x hurd-i386 kfreebsd-amd64 kfreebsd-i386 |
128450ef | 278 | ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) ge 2.23.1-1~exp3 ; echo $$?),0) |
584e8ad0 | 279 | ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS))) |
2e88154b EM |
280 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_USE_LINKER=gold |
281 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_BINUTILS_INCDIR=/usr/include/ | |
708c17e6 | 282 | endif |
ebe2c90f | 283 | endif |
875ec1e7 | 284 | |
4a5a2b0c | 285 | ifneq (,$(filter bolt-$(LLVM_VERSION), $(shell dh_listpackages))) |
5bfe8cc3 | 286 | PROJECTS += ;bolt |
40422bb7 SL |
287 | endif |
288 | ||
25f7f7a9 SL |
289 | # flang is only for 64bits |
290 | ifneq (,$(filter flang-$(LLVM_VERSION), $(shell dh_listpackages))) | |
291 | PROJECTS += ;flang | |
292 | endif | |
293 | ||
ee6846e2 | 294 | CODECOVERAGE=no |
772552aa SL |
295 | ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS))) |
296 | # enable the code coverage | |
297 | CODECOVERAGE=yes | |
298 | # for -fvisibility-inlines-hidden see http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130729/183016.html | |
299 | CXXFLAGS_EXTRA += -fprofile-arcs -ftest-coverage | |
300 | LDFLAGS_EXTRA += -coverage -lgcov | |
301 | RUN_TEST=yes | |
5a1349d0 | 302 | # OpenMP doesn't respect LDFLAGS |
2e88154b | 303 | STAGE_2_CMAKE_EXTRA+= -DLIBOMP_LDFLAGS="-coverage -lgcov" # don't pass LDFLAGS_EXTRA because it expects gcc arg |
772552aa SL |
304 | endif |
305 | ||
d5ce4ee9 | 306 | # Enable polly (or not) |
e213b377 | 307 | POLLY_ENABLE=yes |
b5662072 | 308 | ifneq (,$(filter $(DEB_HOST_ARCH), powerpc powerpcspe)) |
e213b377 | 309 | POLLY_ENABLE=no |
d2c4dc94 | 310 | else |
4e2033bd | 311 | PROJECTS+=;polly |
b6af4ab8 | 312 | endif |
d5ce4ee9 | 313 | |
c039e046 SL |
314 | # Enable libunwind (or not) |
315 | LIBUNWIND_ENABLE=yes | |
6be367e5 | 316 | ifneq (,$(filter $(DEB_HOST_ARCH), s390x armel m68k mipsel mips64el hurd-i386 powerpc sparc sparc64 x32)) |
c039e046 | 317 | LIBUNWIND_ENABLE=no |
14aeabd6 EM |
318 | # do not use compiler-rt builtins for libcxx (libcxxabi) when libunwind is |
319 | # disabled since the gnu implementation in libgcc_s will then be required | |
320 | LIBCXX_USE_COMPILER_RT := OFF | |
c039e046 | 321 | else |
3ee7840e | 322 | RUNTIMES += ;libunwind |
2e88154b | 323 | STAGE_ALL_CMAKE_EXTRA += -DLIBCXXABI_USE_LLVM_UNWINDER=ON |
3ee7840e EM |
324 | endif |
325 | ||
514529a9 SL |
326 | # Enable openmp (or not) |
327 | OPENMP_ENABLE=yes | |
ffdb0eb4 | 328 | ifneq (,$(filter $(DEB_HOST_ARCH), m68k mipsel powerpc powerpcspe sparc64 s390x x32)) |
514529a9 | 329 | OPENMP_ENABLE=no |
d2c4dc94 | 330 | else |
20ef6420 | 331 | PROJECTS+=;openmp |
2e88154b | 332 | STAGE_ALL_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" |
3ee7840e | 333 | ifeq ($(LIBUNWIND_ENABLE),yes) |
2e88154b | 334 | STAGE_ALL_CMAKE_EXTRA += -DOPENMP_USE_LLVM_UNWINDER=ON |
514529a9 | 335 | endif |
c039e046 SL |
336 | endif |
337 | ||
b990b953 SL |
338 | # Do not install objects |
339 | STAGE_ALL_CMAKE_EXTRA += -DMLIR_INSTALL_AGGREGATE_OBJECTS=OFF | |
340 | ||
341 | ||
f5a56de6 | 342 | RUN_TEST=yes |
b4d3a200 | 343 | ifneq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) |
f5a56de6 SL |
344 | RUN_TEST=no |
345 | endif | |
3bea2aed GC |
346 | ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes) |
347 | ifeq (riscv64,$(DEB_HOST_ARCH)) | |
348 | RUN_TEST=no | |
349 | endif | |
350 | endif | |
f5a56de6 | 351 | |
e96aa0e7 SL |
352 | # llvm tests timeout, disable it on mipsel |
353 | ifeq (mipsel,$(DEB_HOST_ARCH)) | |
354 | RUN_TEST=no | |
355 | endif | |
356 | ||
c06e8852 | 357 | SCAN_BUILD=no |
afd4c9da SL |
358 | ifneq (,$(filter scan-build,$(DEB_BUILD_OPTIONS))) |
359 | # enable the build using scan-build | |
d4afd42d SL |
360 | # The package are installed through the variable declarations: |
361 | # OTHERMIRROR="deb http://llvm.org/apt/unstable/ llvm-toolchain main" | |
66eb6597 | 362 | # EXTRAPACKAGES="clang-X" |
c06e8852 | 363 | SCAN_BUILD=yes |
d7a17e8c | 364 | |
cdfc21c7 | 365 | PRE_PROCESS=scan-build-$(LLVM_VERSION) --show-description -analyzer-config stable-report-filename=true |
b1ecb207 | 366 | PRE_PROCESS_CONF=scan-build-$(LLVM_VERSION) |
d4afd42d | 367 | # no need to run tests in this case |
b553daa1 | 368 | RUN_TEST=no |
0ee244c8 | 369 | CONFIGURE_EXTRA += --enable-assertions |
2e88154b | 370 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON |
afd4c9da SL |
371 | endif |
372 | ||
4573b6a9 SL |
373 | ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) |
374 | # enable the build using coverity | |
375 | # pbuilder contains BINDMOUNTS="/opt/cov-analysis/" | |
376 | # And we have some pbuilder hooks to configure and pack the result | |
377 | # Where the binaries are installed on the jenkins instance | |
378 | PRE_PROCESS=PATH=$$PATH:/opt/cov-analysis/bin/ cov-build --dir cov-int | |
379 | # We don't want to check the temporary files produced by the configure | |
380 | PRE_PROCESS_CONF= | |
381 | COVERITY_ENABLE=1 | |
382 | CONFIGURE_EXTRA += --enable-assertions | |
383 | STAGE_ALL_CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON | |
384 | # no need to run tests in this case | |
385 | RUN_TEST=no | |
386 | else | |
387 | COVERITY_ENABLE=0 | |
388 | endif | |
389 | ||
e4e11479 | 390 | LLDB_ENABLE=yes |
4baa08eb | 391 | LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 riscv64 sparc64 mips64el mipsel |
03b2cfea | 392 | # hurd has threading issues |
03b2cfea SL |
393 | ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS), $(DEB_HOST_ARCH))) |
394 | # Disable LLDB for this arch. | |
d2c4dc94 | 395 | LLDB_ENABLE=no |
bbdfe123 | 396 | else |
2dee6a81 | 397 | STAGE_ALL_CMAKE_EXTRA += -DLLDB_ENABLE_LUA=OFF |
4e2033bd | 398 | PROJECTS+=;lldb |
e4e11479 SL |
399 | endif |
400 | ||
b938a0de SL |
401 | ifneq (,$(filter $(DISTRO),buster)) |
402 | # Don't enable lld python for old distros | |
403 | STAGE_ALL_CMAKE_EXTRA += -DLLDB_ENABLE_PYTHON=OFF | |
404 | endif | |
405 | ||
39f4464e | 406 | LIBCXX_WASM_ENABLE=yes |
99ff46f9 | 407 | LIBCXX_WASM_DISABLE_DISTRO := bionic buster focal bullseye jammy |
f647ae31 SL |
408 | # Either wasi-libc doesn't exist / too old |
409 | # or we have this bug | |
410 | # https://sourceware.org/bugzilla/show_bug.cgi?id=27558 | |
2e851b26 | 411 | ifeq (,$(filter-out $(LIBCXX_WASM_DISABLE_DISTRO), $(DISTRO))) |
39f4464e SL |
412 | LIBCXX_WASM_ENABLE=no |
413 | endif | |
0b46f82e | 414 | |
77462f3a JPAG |
415 | ifneq (,$(filter $(DEB_HOST_ARCH),powerpc powerpcspe)) |
416 | LIBCXX_WASM_ENABLE=no | |
417 | endif | |
418 | ||
5c2afe58 | 419 | LLD_ENABLE=yes |
03b2cfea | 420 | |
54017839 SL |
421 | ifneq (,$(filter $(DEB_HOST_ARCH_OS),linux)) |
422 | # only for linux | |
2e88154b | 423 | STAGE_2_CMAKE_EXTRA += -DLLVM_USE_PERF=ON -DLLVM_ENABLE_LIBPFM=ON |
54017839 SL |
424 | endif |
425 | ||
a235abc1 | 426 | LTO_ENABLE=no |
25057e14 SL |
427 | # Only enable it for archs supporting gold |
428 | ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS))) | |
a235abc1 SL |
429 | # LTO requires a bunch of memory. Don't do it everywhere |
430 | LTO_DISABLE_ARCHS := i386 armhf s390x ppc64 x32 | |
431 | ifeq (,$(filter-out $(LTO_DISABLE_ARCHS), $(DEB_HOST_ARCH))) | |
432 | LTO_ENABLE=no | |
433 | else | |
a5b9f332 SL |
434 | # Disable for now because of |
435 | # https://github.com/llvm/llvm-project/issues/58317#issuecomment-1276190743 | |
86b2f11f SL |
436 | # LTO_ENABLE=yes |
437 | # STAGE_2_CMAKE_EXTRA += -DLLVM_ENABLE_LTO="On" | |
773d6874 | 438 | endif |
25057e14 | 439 | endif |
1bc431e7 | 440 | |
4baff304 SL |
441 | # https://bugs.launchpad.net/bugs/2016471 |
442 | ifeq (,$(filter-out $(LTO_DISABLE_ARCHS), $(DEB_HOST_ARCH))) | |
443 | LD_GOLD_SUPPORTS_NO_SYMBOLIC := $(shell ld.gold --help | grep -q -w '-Bno-symbolic' && echo "yes" || echo "no") | |
444 | ifeq ($(LD_GOLD_SUPPORTS_NO_SYMBOLIC),yes) | |
445 | STAGE_2_CMAKE_EXTRA += -DLIBOMP_LDFLAGS=-Wl,-Bno-symbolic | |
446 | endif | |
447 | endif | |
448 | ||
21cd3633 SL |
449 | DH_OPTIONS= |
450 | OCAML_ENABLE= no | |
1ee43950 | 451 | OCAML_ARCHS := amd64 arm64 armhf ppc64el riscv64 s390x |
21cd3633 SL |
452 | ifneq (,$(filter $(DEB_HOST_ARCH),$(OCAML_ARCHS))) |
453 | # Enable OCAML for this arch. | |
eac6d991 SL |
454 | OCAML_ENABLE=yes |
455 | OCAML_STDLIB_DIR ?= $(shell ocamlc -where) | |
456 | DH_OPTIONS=--with ocaml | |
21cd3633 SL |
457 | endif |
458 | ||
45f800fa SL |
459 | LIBFUZZER_ENABLE=yes |
460 | ifeq (,$(filter $(DEB_HOST_ARCH_OS),linux)) | |
461 | LIBFUZZER_ENABLE=no | |
462 | endif | |
463 | ||
cd137e13 | 464 | ifneq (,$(filter $(DEB_HOST_ARCH), mipsel)) |
430f8ff5 RS |
465 | LIBOMP_ARCH = mips |
466 | endif | |
467 | ||
468 | ifneq (,$(filter $(DEB_HOST_ARCH), mips64 mips64el)) | |
469 | LIBOMP_ARCH = mips64 | |
470 | endif | |
471 | ||
f01f2c14 SL |
472 | # if cmake is installed in /tmp/cmake/ uses it |
473 | # Used to build llvm on old ubuntu (precise) on the llvm.org/apt/ ci | |
474 | CMAKE_BIN=cmake | |
475 | ifeq ($(shell test -e /tmp/cmake/bin/cmake && echo -n yes),yes) | |
476 | CMAKE_BIN=/tmp/cmake/bin/cmake | |
477 | export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:/tmp/cmake/bin/ | |
478 | endif | |
479 | ||
ae115f52 | 480 | SCCACHE_ENABLE=no |
5e129ea1 | 481 | SCCACHE_CMAKE = |
2eee7fef | 482 | # if sccache is installed in the chroot, use it |
268544a5 | 483 | ifeq ($(shell test -e /opt/sccache/sccache && echo -n yes),yes) |
58d3e085 | 484 | ifneq (,$(filter $(DEB_HOST_ARCH),i386 amd64)) |
2157c15a SL |
485 | STAGE_1_CMAKE_EXTRA += $(SCCACHE_CMAKE) |
486 | SCCACHE_ENABLE=yes | |
487 | SCCACHE_PATH=/opt/sccache/ | |
488 | SCCACHE_CMD=$(SCCACHE_PATH)/sccache | |
489 | SCCACHE_CMAKE = -DCMAKE_C_COMPILER_LAUNCHER=$(SCCACHE_CMD) -DCMAKE_CXX_COMPILER_LAUNCHER=$(SCCACHE_CMD) | |
490 | export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:/opt/sccache | |
491 | endif | |
2eee7fef SL |
492 | endif |
493 | ||
cb07c387 | 494 | # enables cmake build targets like stage2-[target_name] |
55387e6b | 495 | ENABLED_STAGE2_CMAKE_BUILD_TARGETS = check-all;check-llvm;check-clang;check-clang-tools;check-lld;check-libcxx;check-libcxxabi;check-mlir;check-sanitizer;llvm-config;test-suite |
cb07c387 | 496 | |
21cd3633 SL |
497 | %: |
498 | dh $@ $(DH_OPTIONS) | |
7aec1357 | 499 | |
4e2033bd SL |
500 | # For some reasons, some spaces are added, removing them |
501 | PROJECTS_LIST := $(shell echo "$(PROJECTS)"|sed -e "s| ||g") | |
20d2a90c | 502 | RUNTIMES_LIST := $(shell echo "$(RUNTIMES)"|sed -e "s| ||g") |
8c0727ae SL |
503 | |
504 | preconfigure: | |
cc5cb79e SL |
505 | |
506 | if ! grep -qs '/proc ' /proc/mounts; then \ | |
507 | echo "/proc needs to be mounted"; \ | |
508 | exit 1; \ | |
509 | fi | |
510 | ||
53465968 SL |
511 | if test "$(DISTRO)" = "bookworm" -a "$(LLVM_SPIRV_INSTALLED)" = "no"; then \ |
512 | echo "llvm spriv isn't detected while it should probably for this distro"; \ | |
53465968 SL |
513 | fi |
514 | ||
58d3e085 | 515 | @echo "DEB_BUILD_OPTIONS=$(DEB_BUILD_OPTIONS)" |
795b5b2a SL |
516 | @echo "DEB_HOST_MULTIARCH=$(DEB_HOST_MULTIARCH)" |
517 | @echo "DEB_HOST_GNU_TYPE=$(DEB_HOST_GNU_TYPE)" | |
518 | @echo "DEB_HOST_ARCH_BITS=$(DEB_HOST_ARCH_BITS)" | |
519 | @echo "DEB_HOST_ARCH=$(DEB_HOST_ARCH)" | |
520 | @echo "DEB_HOST_ARCH_OS=$(DEB_HOST_ARCH_OS)" | |
e29bc92a | 521 | @echo "DISTRO=$(DISTRO)" |
386d2533 | 522 | @echo "GCC_VERSION=$(GCC_VERSION)" |
dae222ed | 523 | @echo "PROJECTS=$(PROJECTS_LIST)" |
20d2a90c | 524 | @echo "RUNTIMES=$(RUNTIMES_LIST)" |
dae222ed SL |
525 | @echo "LLVM_VERSION=$(LLVM_VERSION)" |
526 | @echo "LLVM_VERSION_FULL=$(LLVM_VERSION_FULL)" | |
f01f2c14 | 527 | @echo "LLVM_VERSION_SNAPSHOT=$(LLVM_VERSION_SNAPSHOT)" |
34fe63ca | 528 | @echo "PATH=$(PATH)" |
58d3e085 | 529 | @echo "LD_LIBRARY_PATH=$$LD_LIBRARY_PATH" |
89fafb13 SL |
530 | @echo "RUNTIMES_CXXFLAGS=$(RUNTIMES_CXXFLAGS)" |
531 | @echo "STAGE_1_CXXFLAGS=$(STAGE_1_CXXFLAGS)" | |
532 | @echo "STAGE_2_CFLAGS=$(STAGE_2_CFLAGS)" | |
66d973fe | 533 | @echo "LIBFUZZER_ENABLE=$(LIBFUZZER_ENABLE)" |
a235abc1 | 534 | @echo "LTO_ENABLE=$(LTO_ENABLE)" |
66d973fe | 535 | @echo "COMPILER_RT_WASM_ENABLE=$(COMPILER_RT_WASM_ENABLE)" |
e1e0815e | 536 | @echo "LIBCXX_WASM_ENABLE=$(LIBCXX_WASM_ENABLE)" |
58d3e085 | 537 | @echo "SCCACHE_ENABLE=$(SCCACHE_ENABLE)" |
795b5b2a | 538 | |
8c0727ae SL |
539 | for f in debian/*.in; do \ |
540 | f2=$$(echo $$f | sed 's/\.in$$//;s/X\.Y/$(LLVM_VERSION)/'); \ | |
541 | echo "$$f => $$f2"; \ | |
542 | sed -e 's|@DEB_HOST_MULTIARCH@|$(DEB_HOST_MULTIARCH)|g' \ | |
6fb05958 | 543 | -e "s|@BRANCH_NAME@|$(BRANCH_NAME)|g" \ |
21cd3633 | 544 | -e "s|@OCAML_STDLIB_DIR@|$(OCAML_STDLIB_DIR)|g" \ |
8c0727ae SL |
545 | -e "s|@LLVM_VERSION_FULL@|$(LLVM_VERSION_FULL)|g" \ |
546 | -e "s|@LLVM_VERSION@|$(LLVM_VERSION)|g" $$f > $$f2; \ | |
547 | done | |
875ec1e7 | 548 | |
c1e98235 | 549 | # Make install file executable for dh-exec |
f01f2c14 SL |
550 | chmod +x \ |
551 | debian/clang-tools-$(LLVM_VERSION).install \ | |
c380af2f | 552 | debian/libclang-$(LLVM_VERSION)-dev.install \ |
a8ab81b5 | 553 | debian/libclang-rt-$(LLVM_VERSION)-dev.install \ |
f2231f33 | 554 | debian/libpolly-$(LLVM_VERSION)-dev.install \ |
f01f2c14 | 555 | debian/libomp-$(LLVM_VERSION)-dev.install \ |
e4160527 | 556 | debian/libomp5-$(LLVM_VERSION).install \ |
f01f2c14 | 557 | debian/llvm-$(LLVM_VERSION)-dev.install \ |
a6a1aae2 | 558 | debian/llvm-$(LLVM_VERSION)-linker-tools.install \ |
0b5d5a54 SL |
559 | debian/llvm-$(LLVM_VERSION)-linker-tools.links \ |
560 | debian/libbolt-$(LLVM_VERSION)-dev.install | |
f01f2c14 | 561 | |
0336f15c JJ |
562 | ifdef LLVM_SPIRV |
563 | # llvm-spirv was found, so we can enable *.spv files. Debian | |
564 | # buster and Ubuntu 18.04 don't have llvm-spirv to create the | |
565 | # *.spv files. | |
566 | sed -i -e "s|#spv\ ||g" debian/libclc-$(LLVM_VERSION).install | |
567 | endif | |
f445b2b0 | 568 | |
39f4464e SL |
569 | # disable libc++-X.Y-dev-wasm32.install.in on old distro |
570 | if test "$(LIBCXX_WASM_ENABLE)" = "no"; then \ | |
571 | echo "" > debian/libc++-$(LLVM_VERSION)-dev-wasm32.install; \ | |
1de02633 | 572 | echo "" > debian/libc++abi-$(LLVM_VERSION)-dev-wasm32.install; \ |
39f4464e SL |
573 | fi |
574 | ||
922aee77 SL |
575 | # Conditionally enable install clangd grpc files |
576 | if test "$(CLANGD_GRPC_INSTALLED)" = "yes"; then \ | |
b6ea5560 | 577 | sed -i -e "s|#grpc\ ||g" debian/libclang-$(LLVM_VERSION)-dev.install; \ |
922aee77 SL |
578 | fi |
579 | ||
03b2cfea | 580 | # Override this two targets. They are trying to manage the .in conversion for me |
21cd3633 SL |
581 | override_dh_ocamlinit: |
582 | override_dh_ocamlclean: | |
d887566a | 583 | override_dh_ocaml: |
7aec1357 | 584 | |
8c0727ae | 585 | override_dh_auto_configure: preconfigure |
58d3e085 SL |
586 | ifeq (${SCCACHE_ENABLE},yes) |
587 | ls -al $(SCCACHE_PATH)* | |
588 | endif | |
0118a145 SL |
589 | echo "Using gcc: " |
590 | $(CC) -v | |
e89930d4 | 591 | $(CXX) -v |
875ec1e7 | 592 | mkdir -p $(TARGET_BUILD) |
179cd18f SL |
593 | # remove in case of artifact |
594 | rm -rf build | |
595 | ||
d7a17e8c | 596 | if test "$(SCAN_BUILD)" = "yes"; then \ |
eda4bcc8 | 597 | patch -f -p1 < debian/patches/on-the-fly/use-scan-build-runtimes.diff||true; \ |
d7a17e8c | 598 | fi |
875ec1e7 | 599 | |
fe7a4317 | 600 | # Configure coverity (we need the compilers) + work around perf issues |
c6ad4a0d | 601 | -(if test $(COVERITY_ENABLE) -eq 1; then \ |
0c8aea33 | 602 | export PATH=$$PATH:/opt/cov-analysis/bin/; \ |
9f86c8bf | 603 | cov-configure --compiler clang --comptype clang; \ |
cff0f5da SL |
604 | cov-configure --compiler gcc-$(GCC_VERSION) --comptype gcc; \ |
605 | cov-configure --compiler g++-$(GCC_VERSION) --comptype gcc; \ | |
4432e6b4 | 606 | cov-configure -co /usr/bin/g++-$(GCC_VERSION) --comptype gcc -- -fPIC -std=c++11; \ |
cff0f5da | 607 | cov-configure -co /usr/bin/gcc-$(GCC_VERSION) --comptype gcc -- -fPIC; \ |
4432e6b4 | 608 | cov-configure -co /usr/bin/g++-$(GCC_VERSION) --comptype gcc -- -fPIC -std=c++11 -fno-exceptions; \ |
5f3fa775 | 609 | cov-configure -co /usr/bin/g++-$(GCC_VERSION) --comptype gcc --template \ |
fe7a4317 SL |
610 | --xml-option append_arg:"--ppp_translator" \ |
611 | --xml-option append_arg:"replace/llvm::AlignOf<PrevTy>::Alignment/(llvm::AlignOf<PrevTy>::Alignment)" \ | |
612 | --xml-option append_arg:"--ppp_translator" \ | |
613 | --xml-option append_arg:"replace/llvm::AlignOf<NextTy>::Alignment/(llvm::AlignOf<NextTy>::Alignment)"; \ | |
614 | cov-configure --compiler c++ --comptype g++ --template \ | |
615 | --xml-option append_arg:"--ppp_translator" \ | |
616 | --xml-option append_arg:"replace/llvm::AlignOf<PrevTy>::Alignment/(llvm::AlignOf<PrevTy>::Alignment)" \ | |
617 | --xml-option append_arg:"--ppp_translator" \ | |
779e06a3 | 618 | --xml-option append_arg:"replace/llvm::AlignOf<NextTy>::Alignment/(llvm::AlignOf<NextTy>::Alignment)"; \ |
c6ad4a0d | 619 | fi) |
bc3c8281 | 620 | |
20d2a90c EM |
621 | # Fails with No target "unwind_static" |
622 | # -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ | |
623 | # -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \ | |
624 | # -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON \ | |
625 | #- to libc++ when libunwind is built | |
626 | #- Matches what is done on brew: | |
627 | #- https://bit.ly/3kDNpC9 | |
ae115f52 | 628 | ifeq (${SCCACHE_ENABLE},yes) |
8579a7d2 | 629 | # Just in case... |
06f31916 | 630 | $(SCCACHE_CMD) --stop-server||true |
8579a7d2 | 631 | # Start the sccache server with the right set of options to use GCP |
06f31916 | 632 | SCCACHE_LOG=sccache=debug SCCACHE_ERROR_LOG=$(SCCACHE_PATH)/sccache.log SCCACHE_GCS_KEY_PATH=$(SCCACHE_PATH)/secret-gcp-storage.json SCCACHE_GCS_BUCKET=apt-llvm-org-sccache SCCACHE_GCS_RW_MODE=READ_WRITE $(SCCACHE_CMD) --start-server |
ae115f52 | 633 | endif |
f6d87b0d | 634 | echo "Running tests: $(RUN_TEST)" |
f01f2c14 | 635 | echo "Using cmake: $(CMAKE_BIN)"; \ |
2bb5eae6 EM |
636 | LD_LIBRARY_PATH=$$LD_LIBRARY_PATH \ |
637 | $(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \ | |
83fab602 | 638 | -G Ninja \ |
5eecc2f0 | 639 | -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ |
66767e15 | 640 | -DLLVM_VERSION_SUFFIX= \ |
20d2a90c | 641 | -DCMAKE_SUPPRESS_REGENERATION=ON \ |
20d2a90c | 642 | -DCMAKE_BUILD_TYPE=Release \ |
5088c762 EM |
643 | -DCMAKE_C_FLAGS="$(STAGE_1_CFLAGS)" \ |
644 | -DCMAKE_CXX_FLAGS="$(STAGE_1_CXXFLAGS)" \ | |
645 | -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_1_LDFLAGS)" \ | |
646 | -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_1_LDFLAGS)" \ | |
647 | -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_1_LDFLAGS)" \ | |
fe702823 | 648 | -DPACKAGE_VENDOR=$(VENDOR) \ |
f0f0ba2c | 649 | -DENABLE_LINKER_BUILD_ID=ON \ |
20d2a90c EM |
650 | -DLLVM_TARGETS_TO_BUILD=Native \ |
651 | -DLLVM_ENABLE_PROJECTS="$(PROJECTS_LIST)" \ | |
652 | -DLLVM_ENABLE_RUNTIMES="$(RUNTIMES_LIST)" \ | |
20d2a90c EM |
653 | -DLLVM_ENABLE_PIC=ON \ |
654 | -DLLVM_ENABLE_RTTI=ON \ | |
20d2a90c EM |
655 | -DLLVM_BUILD_DOCS=OFF \ |
656 | -DLLVM_INCLUDE_GO_TESTS=OFF \ | |
27687a10 | 657 | -DLLVM_USE_RELATIVE_PATHS_IN_FILES=ON \ |
eb425e63 | 658 | -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ |
22f693c0 | 659 | -DLLVM_ENABLE_CURL=ON \ |
160ea573 | 660 | -DLLVM_USE_RELATIVE_PATHS_IN_DEBUG_INFO=ON \ |
20d2a90c | 661 | -DCLANG_PLUGIN_SUPPORT=OFF \ |
1ea7b813 | 662 | -DCLANG_BUILD_EXAMPLES=OFF \ |
aaf419a9 | 663 | -DCLANG_DEFAULT_LINKER=ld \ |
aaf419a9 | 664 | -DCLANG_DEFAULT_RTLIB=libgcc \ |
20d2a90c EM |
665 | -DCOMPILER_RT_BUILD_XRAY=OFF \ |
666 | -DCOMPILER_RT_INCLUDE_TESTS=OFF \ | |
21741170 EM |
667 | -DCOMPILER_RT_USE_LIBCXX=OFF \ |
668 | -DCOMPILER_RT_USE_BUILTINS_LIBRARY=$(COMPILER_RT_USE_BUILTINS_LIBRARY) \ | |
20d2a90c EM |
669 | -DLIBUNWIND_USE_COMPILER_RT=ON \ |
670 | -DLIBUNWIND_INSTALL_LIBRARY=OFF \ | |
21741170 EM |
671 | -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ |
672 | -DLIBCXXABI_USE_COMPILER_RT=$(LIBCXX_USE_COMPILER_RT) \ | |
20d2a90c | 673 | -DLIBCXXABI_INSTALL_LIBRARY=OFF \ |
72d3d9be | 674 | -DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ |
d816c395 | 675 | -DLIBCXX_USE_COMPILER_RT=$(LIBCXX_USE_COMPILER_RT) \ |
72d3d9be SL |
676 | -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ |
677 | -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ | |
678 | -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ | |
20d2a90c EM |
679 | -DLIBCXX_INSTALL_LIBRARY=OFF \ |
680 | -DOPENMP_ENABLE_LIBOMP_PROFILING=OFF \ | |
681 | -DOPENMP_ENABLE_LIBOMPTARGET_PROFILING=OFF \ | |
20d2a90c EM |
682 | -DLIBOMP_ENABLE_RTTI=OFF \ |
683 | -DLIBOMP_OMPT_SUPPORT=OFF \ | |
3541b7d2 | 684 | -DCLANG_FORCE_MATCHING_LIBCLANG_SOVERSION=ON \ |
2bb5eae6 | 685 | $(CMAKE_EXTRA) \ |
7bcbe441 SL |
686 | -DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ |
687 | -DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ | |
20d2a90c EM |
688 | -DCLANG_ENABLE_BOOTSTRAP=ON \ |
689 | -DCLANG_BOOTSTRAP_TARGETS="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \ | |
3541b7d2 | 690 | -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;LLVM_USE_RELATIVE_PATHS_IN_FILES;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;CLANG_FORCE_MATCHING_LIBCLANG_SOVERSION" \ |
20d2a90c EM |
691 | -DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \ |
692 | -DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ | |
693 | -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ | |
5088c762 EM |
694 | -DBOOTSTRAP_CMAKE_C_FLAGS="$(STAGE_2_CFLAGS)" \ |
695 | -DBOOTSTRAP_CMAKE_CXX_FLAGS="$(STAGE_2_CXXFLAGS)" \ | |
696 | -DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS)" \ | |
697 | -DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS)" \ | |
698 | -DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS)" \ | |
20d2a90c EM |
699 | -DBOOTSTRAP_LLVM_ENABLE_FFI=ON \ |
700 | -DBOOTSTRAP_LLVM_ENABLE_DUMP=ON \ | |
701 | -DBOOTSTRAP_LLVM_ENABLE_LIBPFM=ON \ | |
702 | -DBOOTSTRAP_LLVM_ENABLE_SPHINX=ON \ | |
4c62eb73 | 703 | -DBOOTSTRAP_CLANG_DEFAULT_PIE_ON_LINUX=ON \ |
20d2a90c EM |
704 | -DBOOTSTRAP_SPHINX_WARNINGS_AS_ERRORS=OFF \ |
705 | -DBOOTSTRAP_LLVM_USE_RELATIVE_PATHS_IN_FILES=ON \ | |
706 | -DBOOTSTRAP_LLVM_INSTALL_UTILS=ON \ | |
707 | -DBOOTSTRAP_LLVM_VERSION_SUFFIX= \ | |
708 | -DBOOTSTRAP_LLVM_POLLY_LINK_INTO_TOOLS=ON \ | |
c7f288bb | 709 | -DBOOTSTRAP_LLVM_EXPERIMENTAL_TARGETS_TO_BUILD="M68k;Xtensa" \ |
20d2a90c | 710 | -DBOOTSTRAP_LLVM_LINK_LLVM_DYLIB=ON \ |
4250a0c0 | 711 | -DBOOTSTRAP_LLVM_ENABLE_CURL=ON \ |
20d2a90c | 712 | -DBOOTSTRAP_CLANG_LINK_CLANG_DYLIB=ON \ |
20d2a90c | 713 | -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ |
20d2a90c | 714 | -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ |
8fdac930 | 715 | -DBOOTSTRAP_PYTHON_EXECUTABLE=/usr/bin/python3 \ |
20d2a90c | 716 | $(BOOTSTRAP_CMAKE_EXTRA) \ |
b02fa835 | 717 | -DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ |
89fafb13 | 718 | -DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS);-DCMAKE_CXX_FLAGS=$(RUNTIMES_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" |
8fdac930 | 719 | |
77d09c0d SL |
720 | FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \ |
721 | if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \ | |
a13dfd15 | 722 | echo "mismatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \ |
8617886b | 723 | exit 1; \ |
77d09c0d | 724 | fi |
7d63b357 | 725 | |
066d9c79 | 726 | VERBOSE=-v |
7d63b357 | 727 | |
7c261d5b | 728 | debian-full-build: |
181db69a | 729 | echo "Using cmake: $(CMAKE_BIN)" |
3fc7e4da | 730 | # linker hack so stage2 can link against stage1 libs at runtime |
35a8b4a6 | 731 | LD_LIBRARY_PATH=$(STAGE_1_LIB_DIR):$$LD_LIBRARY_PATH \ |
82d26c04 | 732 | VERBOSE=1 $(PRE_PROCESS) $(CMAKE_BIN) --build $(TARGET_BUILD) -j $(NJOBS) --target stage2 || cat build-llvm/tools/clang/stage2-bins/CMakeFiles/CMakeOutput.log |
7d63b357 SL |
733 | |
734 | # Check the stage 2 build worked | |
3b17d907 | 735 | if ! readelf --string-dump .comment $(TARGET_BUILD_STAGE2)/bin/clang 2>&1|grep -q "clang version"; then \ |
7d63b357 | 736 | echo "clang hasn't been built using clang. Bye bye. Check that the stage2 build has been done."; \ |
c06e8852 SL |
737 | if test "$(SCAN_BUILD)" = "no"; then \ |
738 | exit 2; \ | |
739 | fi; \ | |
7d63b357 | 740 | fi |
78a11429 SL |
741 | if ldd $(TARGET_BUILD_STAGE2)/lib/libclang-$(LLVM_VERSION).so.1|grep -q libclang-cpp-$(LLVM_VERSION); then \ |
742 | echo "libclang-$(LLVM_VERSION).so.1 depends on libclang-cpp. Should not be the case"; \ | |
743 | exit 2; \ | |
744 | fi | |
beabf665 | 745 | if test -e $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libclang-$(LLVM_VERSION).so.1; then \ |
6cb0704a SL |
746 | echo "libclang-$(LLVM_VERSION).so.1 link is broken"; \ |
747 | exit 2; \ | |
748 | fi | |
7d63b357 SL |
749 | touch $@ |
750 | ||
751 | debian-libfuzzer-build: | |
752 | ifeq (${LIBFUZZER_ENABLE},yes) | |
bb5876c1 | 753 | cd $(TARGET_BUILD); \ |
5088c762 | 754 | CFLAGS="$(opt_flags) $(STAGE_2_CFLAGS)"; \ |
7d63b357 | 755 | echo $$CFLAGS; \ |
1de70a0b | 756 | for sourcefile in $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp; do \ |
2f1fc2f0 | 757 | $(SCCACHE_CMD) $(STAGE_2_BIN_DIR)/clang++ -c $$CFLAGS -std=c++17 $$sourcefile -IFuzzer || exit 1; \ |
1a948d0e | 758 | done; \ |
7d63b357 SL |
759 | ar ruv libFuzzer.a Fuzzer*.o |
760 | endif | |
761 | touch $@ | |
762 | ||
437f86c9 TA |
763 | debian-libclc-build: |
764 | # Builds libclc | |
437f86c9 | 765 | mkdir -p libclc/build |
cb07c387 | 766 | echo "Using cmake: $(CMAKE_BIN)" |
437f86c9 | 767 | cd libclc/build && \ |
cb07c387 | 768 | $(CMAKE_BIN) ../ \ |
83fab602 | 769 | -G Ninja \ |
8579a7d2 | 770 | $(SCCACHE_CMAKE) \ |
35a8b4a6 EM |
771 | -DCMAKE_C_COMPILER=$(STAGE_2_BIN_DIR)/clang \ |
772 | -DCMAKE_CXX_COMPILER=$(STAGE_2_BIN_DIR)/clang++ \ | |
5088c762 | 773 | -DCMAKE_C_FLAGS="$(opt_flags) $(STAGE_2_CFLAGS)" \ |
e436189c | 774 | -DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE_2_CXXFLAGS) -I$(BASE_PATH)/llvm/include" \ |
5088c762 EM |
775 | -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ |
776 | -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ | |
777 | -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ | |
e001f3ee JJ |
778 | -DCMAKE_INSTALL_PREFIX=/usr \ |
779 | -DCMAKE_INSTALL_DATADIR=lib \ | |
780 | -DCMAKE_INSTALL_INCLUDEDIR=include \ | |
f884c990 | 781 | -DLLVM_CMAKE_DIR=$(STAGE_2_BIN_DIR)/../ \ |
41a4a741 | 782 | $(LIBCLC_LLVM_SPIRV) \ |
7a5f4765 | 783 | -DLIBCLC_TARGETS_TO_BUILD=$(LIBCLC_TARGETS_TO_BUILD); \ |
7729b52c | 784 | LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$(STAGE_2_LIB_DIR) ninja -j $(NJOBS) $(VERBOSE) |
0336f15c JJ |
785 | ifndef LLVM_SPIRV |
786 | echo "libclc built without SPIRV (.spv) outputs because llvm-spirv wasn't found" | |
d9604ece | 787 | endif |
437f86c9 TA |
788 | touch $@ |
789 | ||
78fcc5f7 GC |
790 | build-wasm/compiler-rt-%: cpu = $(@:build-wasm/compiler-rt-%=%) |
791 | build-wasm/compiler-rt-%: | |
792 | @echo "Building compiler-rt for $(cpu)" | |
793 | @echo "Using cmake: $(CMAKE_BIN)" | |
794 | mkdir -p "$@" | |
795 | $(CMAKE_BIN) -B "$@" -S compiler-rt/lib/builtins/ \ | |
bcf5c6f8 | 796 | -G Ninja \ |
8579a7d2 | 797 | $(SCCACHE_CMAKE) \ |
98b9aa75 | 798 | -DCMAKE_SYSTEM_NAME=Generic \ |
78fcc5f7 GC |
799 | -DCMAKE_C_COMPILER_TARGET=$(cpu)-unknown-unknown \ |
800 | -DCMAKE_CXX_COMPILER_TARGET=$(cpu)-unknown-unknown \ | |
801 | -DCMAKE_ASM_COMPILER_TARGET=$(cpu)-unknown-unknown \ | |
bcf5c6f8 FL |
802 | -DCMAKE_C_COMPILER=$(STAGE_2_BIN_DIR)/clang \ |
803 | -DCMAKE_CXX_COMPILER=$(STAGE_2_BIN_DIR)/clang++ \ | |
804 | -DCMAKE_C_FLAGS="$(opt_flags) $(STAGE_2_CFLAGS)" \ | |
805 | -DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE_2_CXXFLAGS)" \ | |
806 | -DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ | |
807 | -DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ | |
808 | -DCMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ | |
93128711 | 809 | -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION) \ |
bcf5c6f8 FL |
810 | -DCMAKE_INSTALL_DATADIR=lib \ |
811 | -DCMAKE_INSTALL_INCLUDEDIR=include \ | |
f884c990 | 812 | -DLLVM_CMAKE_DIR=$(STAGE_2_BIN_DIR)/../ \ |
bcf5c6f8 FL |
813 | -DCOMPILER_RT_STANDALONE_BUILD=ON \ |
814 | -DCOMPILER_RT_BAREMETAL_BUILD=ON \ | |
815 | -DCOMPILER_RT_INCLUDE_TESTS=OFF \ | |
816 | -DCOMPILER_RT_USE_LIBCXX=OFF \ | |
817 | -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \ | |
78fcc5f7 GC |
818 | -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=$(cpu)-unknown-unknown \ |
819 | -DCOMPILER_RT_OS_DIR=wasi | |
9e3e1db3 | 820 | ninja -C "$@" -j $(NJOBS) $(VERBOSE) |
78fcc5f7 | 821 | |
93ecb8e7 | 822 | ifeq ($(LIBCXX_WASM_ENABLE), no) |
78fcc5f7 | 823 | build-wasm/libcxx-%-wasi: build-wasm/compiler-rt-% |
39f4464e | 824 | @echo "Skipping libcxx-*-wasi on this distro $(DISTRO)" |
c8e6138a | 825 | else |
78fcc5f7 GC |
826 | build-wasm/libcxx-%-wasi: cpu = $(@:build-wasm/libcxx-%-wasi=%) |
827 | build-wasm/libcxx-%-wasi: build-wasm/compiler-rt-% | |
828 | @echo "Building libcxx for $(cpu)" | |
829 | @echo "Using cmake: $(CMAKE_BIN)" | |
830 | ||
831 | # We need a functioning clang, which in turn requires a linker. We | |
832 | # patch clang to use a versioned wasm-ld (cf. wasm-ld-path.diff), so | |
833 | # create wasm-ld-$(LLVM_VERSION) in the stage2 bin dir manually. | |
834 | cp $(STAGE_2_BIN_DIR)/wasm-ld $(STAGE_2_BIN_DIR)/wasm-ld-$(LLVM_VERSION) | |
835 | ||
836 | # We need a wasm compiler-rt. Depend on the make target that builds it, | |
837 | # and manually copy it to the stage2 lib dir from there | |
838 | mkdir -p \ | |
93128711 | 839 | $(STAGE_2_LIB_DIR)/clang/$(LLVM_VERSION)/lib/wasi/ |
78fcc5f7 | 840 | cp build-wasm/compiler-rt-$(cpu)/lib/wasi/libclang_rt.builtins-$(cpu).a \ |
93128711 | 841 | $(STAGE_2_LIB_DIR)/clang/$(LLVM_VERSION)/lib/wasi/ |
78fcc5f7 GC |
842 | |
843 | # Notes: | |
844 | # - Uses $(LDFLAGS) instead of $(STAGE_2_LDFLAGS), because wasm-ld does not | |
845 | # support --build-id yet. Upstream is working on it, cf. D107662. | |
846 | # - Pass -fno-stack-protector to disable -fstack-protector-strong that is | |
847 | # passed by default, as this is not supported yet in WebAssembly, cf. | |
848 | # https://github.com/WebAssembly/wasi-libc/issues/157 | |
849 | # - Use llvm-ar and llvm-ranlib, as binutils does not currently support | |
850 | # WebAssembly and creates invalid indexes. | |
851 | # - Use LLVM_LIBDIR_SUFFIX to install to /usr/lib/wasm32-wasi. To be | |
852 | # replaced by CMAKE_INSTALL_LIBDIR=lib/$(cpu)-wasi when D130586 | |
853 | # ships. | |
854 | mkdir -p "$@" | |
855 | $(CMAKE_BIN) -B "$@" -S runtimes \ | |
7863400b | 856 | -G Ninja \ |
78fcc5f7 GC |
857 | $(SCCACHE_CMAKE) \ |
858 | -DCMAKE_C_COMPILER_WORKS=ON \ | |
859 | -DCMAKE_CXX_COMPILER_WORKS=ON \ | |
860 | -DLLVM_COMPILER_CHECKED=ON \ | |
861 | -DCMAKE_C_COMPILER_TARGET=$(cpu)-unknown-wasi \ | |
862 | -DCMAKE_CXX_COMPILER_TARGET=$(cpu)-unknown-wasi \ | |
863 | -DCMAKE_ASM_COMPILER_TARGET=$(cpu)-unknown-wasi \ | |
864 | -DCMAKE_C_COMPILER=$(STAGE_2_BIN_DIR)/clang \ | |
865 | -DCMAKE_CXX_COMPILER=$(STAGE_2_BIN_DIR)/clang++ \ | |
866 | -DCMAKE_AR=$(STAGE_2_BIN_DIR)/llvm-ar \ | |
867 | -DCMAKE_RANLIB=$(STAGE_2_BIN_DIR)/llvm-ranlib \ | |
868 | -DCMAKE_C_FLAGS="$(opt_flags) $(STAGE_2_CFLAGS) -fno-stack-protector" \ | |
869 | -DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE_2_CXXFLAGS) -fno-stack-protector" \ | |
870 | -DCMAKE_SHARED_LINKER_FLAGS="$(LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ | |
871 | -DCMAKE_MODULE_LINKER_FLAGS="$(LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ | |
872 | -DCMAKE_EXE_LINKER_FLAGS="$(LDFLAGS) -L$(STAGE_2_LIB_DIR)" \ | |
873 | -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ | |
874 | -DCMAKE_INSTALL_INCLUDEDIR=include/$(cpu)-wasi \ | |
875 | -DLLVM_LIBDIR_SUFFIX=/$(cpu)-wasi \ | |
876 | -DLLVM_CONFIG=$(STAGE_2_BIN_DIR)/llvm-config \ | |
877 | -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ | |
878 | -DLIBCXX_USE_COMPILER_RT=ON \ | |
879 | -DLIBCXXABI_USE_COMPILER_RT=ON \ | |
880 | -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \ | |
881 | -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ | |
882 | -DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF \ | |
883 | -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ | |
884 | -DLIBCXX_CXX_ABI=libcxxabi \ | |
885 | -DLIBCXX_ABI_VERSION=2 \ | |
886 | -DLIBCXX_HAS_MUSL_LIBC:BOOL=ON \ | |
887 | -DLIBCXX_ENABLE_SHARED:BOOL=OFF \ | |
888 | -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL=OFF \ | |
889 | -DLIBCXX_ENABLE_EXCEPTIONS:BOOL=OFF \ | |
890 | -DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF \ | |
891 | -DLIBCXX_ENABLE_THREADS:BOOL=OFF \ | |
892 | -DLIBCXX_HAS_PTHREAD_API:BOOL=OFF \ | |
893 | -DLIBCXX_HAS_EXTERNAL_THREAD_API:BOOL=OFF \ | |
894 | -DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \ | |
895 | -DLIBCXXABI_ENABLE_SHARED:BOOL=OFF \ | |
896 | -DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=OFF \ | |
897 | -DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \ | |
898 | -DLIBCXXABI_ENABLE_THREADS:BOOL=OFF \ | |
899 | -DLIBCXXABI_HAS_PTHREAD_API:BOOL=OFF \ | |
900 | -DLIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL=OFF \ | |
901 | -DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF | |
9e3e1db3 | 902 | ninja -C "$@" -j $(NJOBS) $(VERBOSE) |
39f4464e | 903 | endif |
78fcc5f7 GC |
904 | |
905 | # Build compiler-rt for wasm32 and wasm64. Build libcxx only for wasm32, as | |
906 | # libcxx requires wasi-libc, which only exists for wasm32 right now. | |
907 | debian-wasm-build: \ | |
908 | build-wasm/compiler-rt-wasm32 \ | |
909 | build-wasm/libcxx-wasm32-wasi \ | |
910 | build-wasm/compiler-rt-wasm64 | |
bcf5c6f8 FL |
911 | touch $@ |
912 | ||
a5c11bf3 SL |
913 | sccache-stats: |
914 | # If we used sccache, shows stats | |
06f31916 SL |
915 | if test -f $(SCCACHE_CMD); then \ |
916 | ls -al $(SCCACHE_PATH)/; \ | |
bde3d49c | 917 | mkdir -p /tmp/buildd/source/; \ |
06f31916 | 918 | $(SCCACHE_CMD) --stats-format json --show-stats > /tmp/buildd/source/sccache-stats.json; \ |
bde3d49c | 919 | cat /tmp/buildd/source/sccache-stats.json; \ |
a5c11bf3 SL |
920 | fi |
921 | touch $@ | |
922 | ||
78fcc5f7 GC |
923 | override_dh_auto_build: \ |
924 | debian-full-build \ | |
925 | debian-libfuzzer-build \ | |
926 | debian-libclc-build \ | |
927 | debian-wasm-build \ | |
928 | sccache-stats | |
6ac04400 | 929 | |
a6c0767f SL |
930 | override_dh_prep: build_doc |
931 | dh_prep | |
932 | ||
76129c23 | 933 | build_doc: |
daf38c16 SL |
934 | BUILDDIR="_build"; \ |
935 | ALLSPHINXOPTS="-d $$BUILDDIR/doctrees ."; \ | |
936 | cd $(CURDIR)/llvm/docs && \ | |
937 | sphinx-build -b html $$ALLSPHINXOPTS $$BUILDDIR/html && \ | |
938 | sphinx-build -b man $$ALLSPHINXOPTS $$BUILDDIR/man && \ | |
939 | cd -; \ | |
940 | cd $(CURDIR)/clang/docs && \ | |
941 | sphinx-build -b html $$ALLSPHINXOPTS $$BUILDDIR/html && \ | |
942 | sphinx-build -b man $$ALLSPHINXOPTS $$BUILDDIR/man | |
943 | ||
dfa81be0 | 944 | -(if test "$(OCAML_ENABLE)" = yes; then \ |
dd2ac7bd | 945 | ninja -C "$(TARGET_BUILD_STAGE2)" $(VERBOSE) ocaml_doc; \ |
dfa81be0 | 946 | fi) |
c0198ab3 | 947 | |
dd2ac7bd | 948 | ninja -C $(TARGET_BUILD_STAGE2) $(VERBOSE) docs-llvm-html docs-clang-html docs-clang-tools-html docs-clang-tools-man docs-clang-man docs-llvm-man |
df8b6900 JPAG |
949 | |
950 | ifeq (${POLLY_ENABLE},yes) | |
dd2ac7bd | 951 | ninja -C $(TARGET_BUILD_STAGE2) $(VERBOSE) docs-polly-html docs-polly-man |
df8b6900 | 952 | endif |
875ec1e7 | 953 | |
a6c0767f | 954 | # Rename manpages |
66dfda54 | 955 | d=$(CURDIR)/llvm/docs/_build/man/; \ |
630eb4ec | 956 | if test -d $$d; then \ |
a9ab44f7 SL |
957 | cd $$d; \ |
958 | for f in *.1; do \ | |
959 | echo "$$f"|grep $(LLVM_VERSION) || mv $$f `echo $$f|sed "s|\.1|-$(LLVM_VERSION).1|"`; \ | |
960 | done; \ | |
961 | else \ | |
962 | echo "could not find $$d"; \ | |
630eb4ec | 963 | fi |
65fb2295 SL |
964 | # the clang doc generation only generates clang manpage |
965 | # When it will do more, we should move that in the loop above | |
0203a45f | 966 | cd $(CURDIR)/clang/docs/_build/man/ && mv clang.1 clang-$(LLVM_VERSION).1 |
fe848490 | 967 | |
76129c23 | 968 | # Remove the copy of jquery. See bug #701087 |
dbba4938 | 969 | for d in $(TARGET_BUILD_STAGE2)/docs/html/_static/ $(TARGET_BUILD_STAGE2)/tools/clang/docs/html/_static/ $(TARGET_BUILD_STAGE2)/tools/clang/tools/extra/docs/html/_static/; do \ |
da7745a4 SL |
970 | cd $$d && rm -f jquery.js && ln -s /usr/share/javascript/jquery/jquery.js && cd -; \ |
971 | cd $$d && rm -f underscore.js && ln -s /usr/share/javascript/underscore/underscore.js && cd -; \ | |
76129c23 SL |
972 | done |
973 | ||
7d1b8a2a | 974 | mkdir -p debian/man/ |
1037ae5f SL |
975 | ls -al clang/tools/scan-view/bin/scan-view |
976 | clang/tools/scan-view/bin/scan-view --help || true | |
977 | help2man --no-info --version-string=$(LLVM_VERSION) clang/tools/scan-view/bin/scan-view > debian/man/scan-view-$(LLVM_VERSION).1 || true | |
978 | help2man --no-info --version-string=$(LLVM_VERSION) clang/tools/clang-format/clang-format-diff.py > debian/man/clang-format-diff-$(LLVM_VERSION).1 || true | |
76129c23 | 979 | |
d3aa5d84 | 980 | CMDS="llvm-dwarfdump llvm-mc llvm-objdump llvm-rtdyld llvm-size llvm-ranlib lldb clang-format clang clang++ clang-tblgen clang-check clang-cpp clang-tidy clang-apply-replacements clang-rename clang-query pp-trace sancov lli modularize clang-include-fixer find-all-symbols clang-reorder-fields ld.lld llvm-tblgen clang-change-namespace clang-offload-bundler clangd clang-repl git-clang-format run-clang-tidy"; \ |
d13452ba SL |
981 | for f in $$CMDS; do \ |
982 | echo "Generating manpage of $$f"; \ | |
c0281a9d | 983 | LD_LIBRARY_PATH=$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/:/usr/lib/*/libfakeroot help2man --no-info --version-string=$(LLVM_VERSION) $(TARGET_BUILD_STAGE2)/bin/$$f > debian/man/$$f-$(LLVM_VERSION).1 || true; \ |
6d6fb79c | 984 | done |
0f9f7a80 SL |
985 | # Create the following directory regardless as libomp-16-doc |
986 | # is Architecture: all | |
987 | mkdir -p openmp/runtime/doc/doxygen/generated/html/ | |
988 | ||
514529a9 | 989 | if test "$(OPENMP_ENABLE)" = yes; then \ |
e9955fc3 | 990 | cd openmp/runtime && doxygen doc/doxygen/config; cd -; \ |
514529a9 SL |
991 | cd openmp/runtime/doc/doxygen/generated/html/ && rm jquery.js && ln -s /usr/share/javascript/jquery/jquery.js; \ |
992 | fi | |
e5225028 | 993 | touch $@ |
875ec1e7 SL |
994 | |
995 | override_dh_auto_install: | |
b3654c24 SL |
996 | # Clean up temporary files to make sure the install works |
997 | rm -rf $(find $(TARGET_BUILD) -wholename '*CMakeFiles*' -not -name CMakeLists.txt -a -name "*.dir" -type d) | |
187d0897 | 998 | |
b3654c24 | 999 | # install/fast enables a make install without recompiling temporary files |
caaf053d | 1000 | LD_LIBRARY_PATH=$(STAGE_2_LIB_DIR):$$LD_LIBRARY_PATH DESTDIR=$(DEB_INST)/ ninja -C $(TARGET_BUILD) $(VERBOSE) stage2-install |
c5abefcc | 1001 | |
dd8713ff SL |
1002 | # Not used on Linux. |
1003 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/argdumper | |
1004 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/clang/clang-format-bbedit.applescript | |
eb2110af SL |
1005 | # Remove bat files https://bugs.llvm.org/show_bug.cgi?id=30755 |
1006 | rm -f $(DEB_INST)/usr/share/clang/scan-build-$(LLVM_VERSION)/libexec/*.bat $(DEB_INST)/usr/share/clang/scan-build-$(LLVM_VERSION)/bin/*.bat | |
dd8713ff | 1007 | |
f656e7dd | 1008 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libExampleIRTransforms.a |
fb1f4563 SL |
1009 | # Remove an example - introduced in https://reviews.llvm.org/D61446 |
1010 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libBye.a | |
f656e7dd | 1011 | |
d6eab310 | 1012 | cp $(TARGET_BUILD_STAGE2)/bin/clang-query $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin |
dd8713ff | 1013 | |
b742b383 SL |
1014 | # Only run on executable, not script |
1015 | chrpath -d `find $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/ -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'|cut -d: -f1` | |
0af59c9b | 1016 | ifeq (,$(filter $(DEB_HOST_ARCH), powerpc powerpcspe)) |
816d1182 | 1017 | ifneq (,$(filter $(DEB_HOST_ARCH_OS),linux)) |
d24f4d88 SL |
1018 | # To fix custom-library-search-path |
1019 | chrpath -d $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)*/lib/linux/*.so | |
816d1182 | 1020 | endif |
0af59c9b | 1021 | endif |
b742b383 | 1022 | |
c039e046 SL |
1023 | if test "$(LIBUNWIND_ENABLE)" = yes; then \ |
1024 | mkdir -p debian/tmp/usr/include/libunwind; \ | |
1025 | cp -R libunwind/include/* debian/tmp/usr/include/libunwind/; \ | |
1026 | fi | |
c72a6c0e | 1027 | |
20d2a90c | 1028 | : # libomp |
514529a9 | 1029 | if test "$(OPENMP_ENABLE)" = yes; then \ |
11a0af38 | 1030 | cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib; \ |
20d2a90c | 1031 | ln -s libomp.so.$(SONAME_OPENMP) libomp.so; \ |
124f9774 | 1032 | cp libomp.so.$(SONAME_OPENMP) libomp-$(LLVM_VERSION).so.$(SONAME_OPENMP); \ |
514529a9 | 1033 | fi |
430f8ff5 | 1034 | |
b0c15f84 | 1035 | # Remove artifact (where compiler-rt is built) |
dd8713ff SL |
1036 | # if test -d $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux; then \ |
1037 | # cd $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux && rm -rf $$(find . -mindepth 2 -maxdepth 2 -type d) && rm -rf $$(find -empty) && rm -rf */.dir; \ | |
1038 | # fi | |
e5cf5438 SL |
1039 | |
1040 | mkdir -p $(CURDIR)/debian/clang-$(LLVM_VERSION)/usr/bin/ | |
94db6453 | 1041 | cp compiler-rt/lib/asan/scripts/asan_symbolize.py $(CURDIR)/debian/clang-$(LLVM_VERSION)/usr/bin/asan_symbolize-$(LLVM_VERSION) |
e5cf5438 | 1042 | |
45f800fa | 1043 | ifeq (${LIBFUZZER_ENABLE},yes) |
45fe7b69 SL |
1044 | mkdir -p $(CURDIR)/debian/libfuzzer-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/ |
1045 | cp -v $(TARGET_BUILD)/libFuzzer.a $(CURDIR)/debian/libfuzzer-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/ | |
45f800fa | 1046 | endif |
45fe7b69 | 1047 | |
875ec1e7 SL |
1048 | # Create this fake directory to make the install libclang-common-dev happy |
1049 | # under the unsupported archs of compiler-rt | |
65242311 | 1050 | mkdir -p $(DEB_INST)/usr/lib/clang/$(LLVM_VERSION)/lib |
5a8e8787 | 1051 | mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/lib/ |
65242311 | 1052 | mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/lib/clang_linux/ |
956d37d3 | 1053 | mkdir -p $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux/ |
5a8e8787 | 1054 | mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/share/ |
a13dfd15 | 1055 | # On some archs, the sanitizers are not built. As we explicitly includes some txt files, create |
a3daeed3 | 1056 | # a fake txt to make sure it doesn't fail |
5a8e8787 SL |
1057 | echo "The *.txt files, if available, contain helper to override some of the errors messages." > $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/README.txt |
1058 | echo "Please visit https://github.com/google/sanitizers/wiki/AddressSanitizer for help" >> $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/README.txt | |
68662551 | 1059 | # Path changed. Make a copy of it |
5a8e8787 | 1060 | cp $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/README.txt $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/share/README.txt |
875ec1e7 | 1061 | |
5eecc2f0 | 1062 | # Remove things that CMake install but which aren't packaged yet, |
dd8713ff | 1063 | # or are packaged from the source or build tree. |
dd8713ff SL |
1064 | mv $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/clang-$(LLVM_VERSION) \ |
1065 | $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/clang | |
5eecc2f0 | 1066 | |
7138491d | 1067 | # Probably useless |
6bbfdc3d | 1068 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/python*/*-packages/six.py |
4afa87ab | 1069 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/local/lib/python*/*-packages/six.py |
b2075702 | 1070 | rm -rf $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/__pycache__/ \ |
3401c0d7 | 1071 | $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/*/__pycache__/ |
7043d832 | 1072 | |
5bfe8cc3 SL |
1073 | # workaround issue https://github.com/llvm/llvm-project/issues/57101 |
1074 | find debian/tmp -iname 'libbolt_rt*.a' -path '*/build-llvm/*' -delete | |
1075 | # Remove an osx file | |
1076 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libbolt_rt_instr_osx.a | |
1077 | ||
dd2ac7bd | 1078 | DESTDIR=$(DEB_INST) ninja $(VERBOSE) -C libclc/build install |
5f674308 | 1079 | |
78fcc5f7 GC |
1080 | DESTDIR=$(DEB_INST) ninja $(VERBOSE) -C build-wasm/compiler-rt-wasm32 install |
1081 | DESTDIR=$(DEB_INST) ninja $(VERBOSE) -C build-wasm/compiler-rt-wasm64 install | |
41c7732f SL |
1082 | if test -d build-wasm/libcxx-wasm32-wasi; then \ |
1083 | DESTDIR=$(DEB_INST) ninja $(VERBOSE) -C build-wasm/libcxx-wasm32-wasi install; \ | |
1084 | fi | |
1085 | ||
50a54f4e | 1086 | |
1448ae0a | 1087 | # Rename binaries |
65242311 | 1088 | mkdir -p $(DEB_INST)/usr/bin/ |
45fe7b69 SL |
1089 | cd $(DEB_INST)/usr/bin/; \ |
1090 | rm -f *; \ | |
b80030da | 1091 | for f in ../lib/llvm-$(LLVM_VERSION)/bin/*; do \ |
1448ae0a SL |
1092 | ln -s $$f `basename $$f`-$(LLVM_VERSION); \ |
1093 | echo "Link $$f to `basename $$f`-$(LLVM_VERSION)"; \ | |
1094 | done | |
1095 | ||
31daa190 | 1096 | # Rename some stuff with the version name |
6086214c | 1097 | cp $(CURDIR)/clang/tools/scan-build/man/scan-build.1 $(CURDIR)/clang/tools/scan-build/man/scan-build-$(LLVM_VERSION).1 |
b1ecb207 | 1098 | |
b910c7e9 | 1099 | # copy the vim files (except that tablegen does not exist for indent |
d251a2ee SL |
1100 | VIM_DIRS="ftdetect ftplugin syntax indent"; \ |
1101 | for dir in $$VIM_DIRS; do \ | |
2aa08a74 SL |
1102 | cp -f $(CURDIR)/llvm/utils/vim/$$dir/llvm.vim $(CURDIR)/llvm/utils/vim/$$dir/llvm-$(LLVM_VERSION).vim; \ |
1103 | if test -f $(CURDIR)/llvm/utils/vim/$$dir/tablegen.vim; then \ | |
1104 | cp -f $(CURDIR)/llvm/utils/vim/$$dir/tablegen.vim $(CURDIR)/llvm/utils/vim/$$dir/tablegen-$(LLVM_VERSION).vim; \ | |
d251a2ee SL |
1105 | fi; \ |
1106 | done | |
2aa08a74 | 1107 | cp -f $(CURDIR)/llvm/utils/vim/vimrc $(CURDIR)/llvm/utils/vim/llvm-$(LLVM_VERSION)-vimrc |
31daa190 | 1108 | |
a5a8400e | 1109 | cp -f $(CURDIR)/clang/tools/clang-format/clang-format-diff.py $(CURDIR)/clang/tools/clang-format/clang-format-diff-$(LLVM_VERSION) |
76129c23 | 1110 | |
a5a8400e | 1111 | cp -f $(CURDIR)/clang/tools/clang-format/clang-format.py clang/tools/clang-format/clang-format-$(LLVM_VERSION).py |
7fa75a0e | 1112 | |
d13452ba | 1113 | rm -rf clang/tools/scan-build-$(LLVM_VERSION) |
94db6453 SL |
1114 | cp -fR $(CURDIR)/clang/tools/scan-build clang/tools/scan-build-$(LLVM_VERSION) |
1115 | ||
a46bba31 SL |
1116 | rm -rf clang/tools/scan-build-py-$(LLVM_VERSION) |
1117 | cp -fR $(CURDIR)/clang/tools/scan-build-py clang/tools/scan-build-py-$(LLVM_VERSION) | |
21cd3633 | 1118 | chmod +x clang/tools/scan-build-py-$(LLVM_VERSION)/bin/* |
a46bba31 | 1119 | |
d13452ba | 1120 | rm -rf clang/tools/scan-view-$(LLVM_VERSION) |
94db6453 SL |
1121 | cp -fR $(CURDIR)/clang/tools/scan-view clang/tools/scan-view-$(LLVM_VERSION) |
1122 | ||
0d6e1b40 | 1123 | # Remove some license files |
5eecc2f0 | 1124 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/include/llvm/Support/LICENSE.TXT |
1448ae0a | 1125 | |
f075d6a0 | 1126 | # Disable CMake's package validation checks for target files that we may remove. |
20434a8d | 1127 | sed -i '/_IMPORT_CHECK_TARGETS \(Polly\|sancov\|llvm-omp-device-info\|omptarget\)/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake |
68e5f7c0 SL |
1128 | |
1129 | # Also disable mlir-* checks in the cmake | |
1cc6c3ec | 1130 | sed -i '/_IMPORT_CHECK_TARGETS \(mlir-\|MLIR\)/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake |
e10ac5c5 SL |
1131 | |
1132 | sed -i '/_cmake_import_check_files_for_.*\/bin\/.*/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake | |
1133 | sed -i '/_IMPORT_CHECK_FILES_FOR_.*\/bin\/.*/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake | |
1134 | sed -i '/_IMPORT_CHECK_FILES_FOR_\(mlir-\|Polly\|MLIR\)/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake | |
24f56dd4 | 1135 | sed -i '/_cmake_import_check_files_for_\(mlir\|Polly\|MLIR\|omptarget\)/ {s|^|#|}' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/llvm/LLVMExports-*.cmake $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake |
f075d6a0 | 1136 | |
8ab8cd7b PW |
1137 | # Disable CMake's package validation checks for binaries that may not be installed |
1138 | sed -i 's|.*_IMPORT_CHECK_FILES_FOR_.*/bin/.*)|#&|' $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake | |
1139 | ||
14a06d10 | 1140 | # Adjust to the existing symlink. See #994827 |
26db809a | 1141 | sed -i "s|libclang-$(LLVM_VERSION).so.$(LLVM_VERSION).*\"|libclang-$(LLVM_VERSION).so.1\"|" $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/clang/ClangTargets-*.cmake |
14a06d10 | 1142 | |
c05f6c91 | 1143 | # Managed in python*-lldb-X.Y.links.in |
e7d54dd0 | 1144 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/python*/*-packages/lldb/_lldb.so |
e5cf5438 | 1145 | |
65242311 | 1146 | # Manage the polly files. Sometimes, we build them. Sometimes not. |
b6af4ab8 | 1147 | if test "$(POLLY_ENABLE)" = yes; then \ |
519cbc61 | 1148 | mkdir -p $(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/ $(CURDIR)/debian/libpolly-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly/; \ |
20d2a90c | 1149 | mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libPolly* \ |
519cbc61 SL |
1150 | $(CURDIR)/debian/libpolly-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/; \ |
1151 | rm -rf $(CURDIR)/debian/libpolly-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly; \ | |
65242311 | 1152 | mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/include/polly/ \ |
519cbc61 | 1153 | $(CURDIR)/debian/libpolly-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/; \ |
65242311 SL |
1154 | fi |
1155 | ||
1aa9ae9e | 1156 | mkdir -p $(CURDIR)/debian/usr/share/doc/llvm-$(LLVM_VERSION)-doc/ $(CURDIR)/debian/usr/share/doc/clang-$(LLVM_VERSION)-doc/ |
dbba4938 SL |
1157 | cp -R $(TARGET_BUILD_STAGE2)/docs/html $(CURDIR)/debian/usr/share/doc/llvm-$(LLVM_VERSION)-doc/ |
1158 | cp -R $(TARGET_BUILD_STAGE2)/tools/clang/docs/html $(CURDIR)/debian/usr/share/doc/clang-$(LLVM_VERSION)-doc/ | |
1159 | cp -R $(TARGET_BUILD_STAGE2)/tools/clang/tools/extra/docs/html $(CURDIR)/debian/usr/share/doc/clang-$(LLVM_VERSION)-doc/clang-extra | |
1aa9ae9e | 1160 | |
cc9911af | 1161 | # Rename OCaml bindings |
21cd3633 | 1162 | if test "$(OCAML_ENABLE)" = yes; then \ |
ebc5013b | 1163 | mkdir -p "$(DEB_INST)$(OCAML_STDLIB_DIR)"; \ |
45f800fa | 1164 | mkdir -p "$(DEB_INST)usr/lib/llvm-$(LLVM_VERSION)/docs/ocaml/html/html"; \ |
c62cdd3c | 1165 | mkdir -p "$(DEB_INST)usr/lib/llvm-$(LLVM_VERSION)/share/doc/llvm/ocaml-html/"; \ |
21cd3633 | 1166 | if test -d "$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/ocaml"; then \ |
21cd3633 SL |
1167 | mv -f "$(DEB_INST)usr/lib/llvm-$(LLVM_VERSION)/lib/ocaml" \ |
1168 | "$(DEB_INST)$(OCAML_STDLIB_DIR)/llvm-$(LLVM_VERSION)"; \ | |
1169 | fi; \ | |
1170 | fi | |
cc9911af | 1171 | |
4dbb8ad2 SL |
1172 | # For some reasons, from Ubuntu jammy, python stuff are installed in /local/lib, move it back |
1173 | if test -d $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/local/lib/; then \ | |
1174 | mv $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/local/lib/* $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/; \ | |
1175 | rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/python*/*-packages/six.py; \ | |
1176 | ls $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/local/; \ | |
1177 | rmdir $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/local/lib; \ | |
1178 | rmdir $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/local; \ | |
1179 | fi | |
1180 | ||
f445b2b0 SL |
1181 | # Disable the python binding for buster. not sure why it regressed |
1182 | # regressed de4364f1ecaa..0745b0c0354a | |
66bfde8c | 1183 | if test "$(DISTRO)" = "buster" -o "$(DISTRO)" = "bionic" -o "$(DEB_HOST_ARCH)" = "mips64el"; then \ |
f445b2b0 SL |
1184 | mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/gdb/python/ompd/; \ |
1185 | touch $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/gdb/python/ompd/empty; \ | |
fec3c5de | 1186 | echo "" > debian/python3-lldb-$(LLVM_VERSION).install; \ |
f445b2b0 SL |
1187 | fi |
1188 | ||
dd8713ff SL |
1189 | # Delete the target build directory to save some space on the build systems |
1190 | # All the files have been installed in $(CURDIR)/debian/tmp/ already | |
44b820ea | 1191 | rm -rf $(TARGET_BUILD) |
e5225028 | 1192 | touch $@ |
dd8713ff | 1193 | |
1d9005f1 | 1194 | |
cc9911af | 1195 | override_dh_makeshlibs: |
738f2e66 SL |
1196 | dh_makeshlibs -plibclang$(SONAME_EXT)-$(LLVM_VERSION) |
1197 | dh_makeshlibs -pliblldb-$(LLVM_VERSION) | |
1198 | dh_makeshlibs -plibllvm$(LLVM_VERSION) | |
1199 | dh_makeshlibs -plibomp$(SONAME_OPENMP)-$(LLVM_VERSION) | |
f1490d72 | 1200 | dh_makeshlibs --remaining-packages -V |
cc9911af | 1201 | |
52df5b22 | 1202 | override_dh_shlibdeps: |
3eb35be5 | 1203 | # Ignore asan libraries. They would trigger dependencies to multiarch libraries |
fd14caa2 | 1204 | dh_shlibdeps -l$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/ -Xlibclang_rt.asan -Xlibclang_rt.asan -Xlibclang_rt.asan-*.so -Xlibclang_rt.asan-*.so |
52df5b22 | 1205 | |
e5cf5438 | 1206 | override_dh_installman: |
af56187b SL |
1207 | if test -f lld/docs/ld.lld.1; then \ |
1208 | mv lld/docs/ld.lld.1 lld/docs/ld.lld-$(LLVM_VERSION).1; \ | |
1209 | fi | |
e5cf5438 SL |
1210 | dh_installman |
1211 | # Make sure that lli manpage is only in llvm-3.2-runtime (See #697117) | |
1212 | rm -f $(CURDIR)/debian/llvm-$(LLVM_VERSION)/usr/share/man/man1/lli* | |
1213 | ||
1214 | ||
875ec1e7 | 1215 | override_dh_strip: |
e9f1d28b | 1216 | : # running out of diskspace on the buildds |
c114641a | 1217 | find $(TARGET_BUILD) -name '*.o' -o -name '*.a' -type f | xargs -r rm -f |
231b7c6e SL |
1218 | ifeq (0, $(strip $(shell dpkg --compare-versions $(DH_VERSION) ge 9.20160114; echo $$?))) |
1219 | : # If we don't have the right version of debhelper, don't run the option | |
738f2e66 SL |
1220 | dh_strip -p libclang$(SONAME_EXT)-$(LLVM_VERSION) --dbgsym-migration='libclang$(SONAME_EXT)-$(LLVM_VERSION)-dbg' |
1221 | dh_strip -p libllvm$(LLVM_VERSION) --dbgsym-migration='libllvm$(LLVM_VERSION)-dbg' | |
1222 | dh_strip -p liblldb-$(LLVM_VERSION) --dbgsym-migration='liblldb-$(LLVM_VERSION)-dbg' | |
1223 | dh_strip -p libomp$(SONAME_OPENMP)-$(LLVM_VERSION) --dbgsym-migration='libomp$(SONAME_OPENMP)-$(LLVM_VERSION)-dbg' | |
231b7c6e | 1224 | endif |
06b90c93 | 1225 | # ifeq (${LLD_ENABLE},yes) |
6bcd0a96 | 1226 | # PATH=$(CURDIR)/:$$PATH dh_strip -p liblld-$(LLVM_VERSION) --dbg-package=liblld-$(LLVM_VERSION)-dbg |
06b90c93 | 1227 | # endif |
f0f0ba2c | 1228 | ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) lt 2.31.1-11 ; echo $$?),0) |
87fdbcd7 SL |
1229 | : # building with clang, binutils/strip has hard time stripping some libs because of |
1230 | : # https://sourceware.org/bugzilla/show_bug.cgi?id=23788 | |
1231 | : # use llvm-strip instead | |
7dd264c6 SL |
1232 | : # Workaround some issues with stripping by using llvm's |
1233 | if test ! -f $(CURDIR)/strip; then \ | |
1234 | ln -s $(CURDIR)/debian/llvm-$(LLVM_VERSION)/usr/lib/llvm-$(LLVM_VERSION)/bin/llvm-strip $(CURDIR)/strip; \ | |
1235 | fi | |
2630cd44 SL |
1236 | ls -al $(CURDIR)/debian/.debhelper/*/dbgsym-root/usr/lib/debug/.build-id/*/*|| true |
1237 | : # On some old version of Debian (stretch) and Ubuntu, Rules-Requires-Root isn't supported | |
1238 | : # Sometime, it fails because of chown: changing ownership of 'debian/.debhelper/clang-7/dbgsym-root/usr/lib/debug/.build-id/37/ba506ae9d2f82219bf5c552f7c09853052b2b0.debug': Operation not permitted | |
c471c172 | 1239 | : # Therefore, continue when we encounter an error |
2630cd44 | 1240 | PATH=$(CURDIR)/:$$PATH LD_LIBRARY_PATH=$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/:/usr/lib/*/libfakeroot dh_strip -a -v || true |
6bcd0a96 SL |
1241 | : # Remove the workaround |
1242 | rm $(CURDIR)/strip | |
fd33d673 SL |
1243 | : # for some reasons, the +x might be removed |
1244 | chmod -f +x $(CURDIR)/debian/*/usr/lib/llvm-$(LLVM_VERSION)/bin/* || true | |
10fe453c | 1245 | else |
bcf5c6f8 FL |
1246 | # GNU strip doesn't recognize WebAssembly binaries, and actually corrupts them. |
1247 | # llvm-strip (as of 15.0.2) fails with --strip-debug (but works with --strip-all) | |
78fcc5f7 | 1248 | dh_strip -a -v -Xlibclang_rt.builtins-wasm32.a -Xlibclang_rt.builtins-wasm64.a -Xusr/lib/wasm32-wasi |
10fe453c | 1249 | endif |
7aec1357 | 1250 | |
44ef5ad8 | 1251 | override_dh_install: |
ed8ddc78 | 1252 | ifeq (${POLLY_ENABLE},yes) |
259b7ad4 | 1253 | # only for arch:any builds |
519cbc61 SL |
1254 | ifneq (,$(filter libpolly-$(LLVM_VERSION)-dev, $(shell dh_listpackages))) |
1255 | dh_install -p libpolly-$(LLVM_VERSION)-dev usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly/*.cmake usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly | |
21d3048d | 1256 | # On old Debian & Ubuntu, removing the files is necessary |
0a64af0a | 1257 | rm -rf debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly/*.cmake |
8e4a4321 GC |
1258 | else |
1259 | rm -rf $(CURDIR)/debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/cmake/polly/*.cmake | |
259b7ad4 | 1260 | endif |
ed8ddc78 | 1261 | endif |
44ef5ad8 | 1262 | dh_install --fail-missing |
1d75785e | 1263 | # Move the libc++ abi files from libc++ to libc++-abi for the wasm32 packages |
3b5da5d9 SL |
1264 | # These packages are arch: all, so only do so when the packages are built |
1265 | ifneq (,$(filter libc++-$(LLVM_VERSION)-dev-wasm32, $(shell dh_listpackages))) | |
1266 | mkdir -p $(CURDIR)/debian/libc++abi-$(LLVM_VERSION)-dev-wasm32/usr/lib/llvm-$(LLVM_VERSION)/include/wasm32-wasi/c++/v1 | |
1d75785e SL |
1267 | if test -f $(CURDIR)/debian/libc++-$(LLVM_VERSION)-dev-wasm32/usr/lib/llvm-$(LLVM_VERSION)/include/wasm32-wasi/c++/v1/__cxxabi_config.h; then \ |
1268 | mv $(CURDIR)/debian/libc++-$(LLVM_VERSION)-dev-wasm32/usr/lib/llvm-$(LLVM_VERSION)/include/wasm32-wasi/c++/v1/__cxxabi_config.h \ | |
1269 | $(CURDIR)/debian/libc++abi-$(LLVM_VERSION)-dev-wasm32/usr/lib/llvm-$(LLVM_VERSION)/include/wasm32-wasi/c++/v1/__cxxabi_config.h; \ | |
1270 | mv $(CURDIR)/debian/libc++-$(LLVM_VERSION)-dev-wasm32/usr/lib/llvm-$(LLVM_VERSION)/include/wasm32-wasi/c++/v1/cxxabi.h \ | |
1271 | $(CURDIR)/debian/libc++abi-$(LLVM_VERSION)-dev-wasm32/usr/lib/llvm-$(LLVM_VERSION)/include/wasm32-wasi/c++/v1/cxxabi.h; \ | |
1272 | fi | |
f667185d | 1273 | endif |
563a36e0 SL |
1274 | # Because of hurd, we are more flexible in what we include in libclang-X.Y-rt |
1275 | # but we don't want to install wasi files into libclang-rt as they have their own package | |
1276 | # So, we remove this directory from the package | |
ba265857 | 1277 | rm -fr $(CURDIR)/debian/libclang-rt-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/lib/wasi/ |
300cdbe1 SL |
1278 | |
1279 | repack_a_llvm_ir: | |
1280 | ifeq (${LTO_ENABLE},yes) | |
1281 | # with LTO, .a contains llvm ir instead of native code. So, recompile them | |
1282 | NJOBS="$(NJOBS)" P_TO_LLVM="$(CURDIR)" VERSION=$(LLVM_VERSION) bash -v debian/llvm-compile-lto-elf.sh $(CXXFLAGS_EXTRA) | |
1283 | endif | |
1284 | touch $@ | |
1285 | ||
1286 | ||
1287 | override_dh_installdeb: repack_a_llvm_ir | |
1d2a025d SL |
1288 | # Managed by the package |
1289 | dh_installdeb -a | |
1290 | ||
c05f6c91 | 1291 | rm -f $(CURDIR)/debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/python*/*-packages/lldb/__init__.pyc $(CURDIR)/debian/python*-lldb-$(LLVM_VERSION)/usr/lib/llvm-$(LLVM_VERSION)/lib/python*/*-packages/lldb/__init__.pyc |
673cb02f | 1292 | rm -f $(CURDIR)/debian/clang-$(LLVM_VERSION)-examples/usr/share/doc/clang-$(LLVM_VERSION)-examples/examples/*Make* |
81435e71 | 1293 | |
7ab8ed57 SL |
1294 | # the openmp header files moved to the same path as lib clang headers. |
1295 | # To make sure they aren't conflicting ( https://bugs.llvm.org/show_bug.cgi?id=46977 ) | |
1296 | # Remove them from the libclang-common package | |
5a8e8787 | 1297 | rm -f $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/include/omp*.h |
7ab8ed57 | 1298 | |
4e78d353 SL |
1299 | # Remove some libc++ abi files in the libc++ file. See bug #969274 |
1300 | rm -f $(CURDIR)/debian/libc++-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/c++/__cxxabi_config.h $(CURDIR)/debian/libc++-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/c++/cxxabi.h | |
78fcc5f7 | 1301 | |
3ed4be9b SL |
1302 | # Remove auto generated python pyc |
1303 | find $(CURDIR)/debian/llvm-$(LLVM_VERSION)-tools/usr/lib/llvm-$(LLVM_VERSION)/ -name '*.pyc' | xargs -r rm -f | |
1304 | ||
b553daa1 | 1305 | ifeq (${RUN_TEST},yes) |
42bfe3ea | 1306 | # List of the archs we know we have 100 % tests working |
056378d9 | 1307 | ARCH_LLVM_TEST_OK := i386 amd64 |
dd8713ff | 1308 | |
875ec1e7 | 1309 | override_dh_auto_test: |
b6ca1c63 | 1310 | echo "Running tests: $(RUN_TEST)" |
da2955c1 | 1311 | # LLVM tests |
dd8713ff | 1312 | ifneq (,$(findstring $(DEB_HOST_ARCH),$(ARCH_LLVM_TEST_OK))) |
f25e2499 | 1313 | # logs the output to check-llvm_build_log.txt for validation through autopkgtest |
dd2ac7bd | 1314 | ninja $(VERBOSE) -C $(TARGET_BUILD) stage2-check-llvm | tee check-llvm_build_log.txt |
dd8713ff | 1315 | else |
dd2ac7bd | 1316 | ninja $(VERBOSE) -C $(TARGET_BUILD) stage2-check-llvm || true |
dd8713ff SL |
1317 | endif |
1318 | ||
da2955c1 | 1319 | # Clang tests |
dd2ac7bd | 1320 | ninja $(VERBOSE) -C $(TARGET_BUILD) stage2-check-clang || true |
dd8713ff | 1321 | |
da2955c1 | 1322 | # Clang extra tests (ex: clang-tidy) |
dd2ac7bd | 1323 | ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-clang-tools || true |
da2955c1 SL |
1324 | |
1325 | # LLD tests | |
ef64786f | 1326 | ifeq (${LLD_ENABLE},yes) |
dd2ac7bd | 1327 | ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-lld || true |
ef64786f | 1328 | endif |
7c7373be | 1329 | |
528f1c84 | 1330 | # Sanitizer |
dd2ac7bd | 1331 | ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-sanitizer || true |
a4104082 | 1332 | |
6ac04400 | 1333 | # Libcxx |
8d4ee847 | 1334 | ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-libcxx || true |
6ac04400 RS |
1335 | |
1336 | # Libcxxabi | |
8d4ee847 | 1337 | ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-libcxxabi || true |
6ac04400 | 1338 | |
55387e6b | 1339 | # MLIR |
59a5e080 | 1340 | ifeq (,$(filter $(DEB_HOST_ARCH), armel armhf i386 x32)) |
32a70e59 SL |
1341 | # Do not run MLIR test on i386 because of |
1342 | # https://github.com/llvm/llvm-project/issues/58357 | |
55387e6b | 1343 | ninja $(VERBOSE) -C $(TARGET_BUILD_STAGE2) check-mlir || true |
32a70e59 | 1344 | endif |
55387e6b | 1345 | |
437f86c9 | 1346 | # Libclc |
dd2ac7bd | 1347 | ninja $(VERBOSE) -C libclc/build test || true |
437f86c9 | 1348 | |
da2955c1 | 1349 | # LLDB tests |
dd8713ff | 1350 | ifeq (,$(filter $(DEB_HOST_ARCH), $(LLDB_DISABLE_ARCHS) armhf armel)) |
4a1524f5 | 1351 | ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS))) |
f3a81d32 | 1352 | # Create a symlink to run the testsuite: see https://bugs.archlinux.org/task/50759 |
e7d54dd0 | 1353 | cd $(CURDIR)/$(TARGET_BUILD)/lib/python*/*-packages/; \ |
a6c8c74a SL |
1354 | if test ! -e _lldb.so; then \ |
1355 | ln -s lldb/_lldb.so; \ | |
1356 | fi | |
f2830edd | 1357 | if test "$(CODECOVERAGE)" = "no"; then \ |
dd2ac7bd | 1358 | LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$(CURDIR)/$(TARGET_BUILD)/lib/ ninja $(VERBOSE) -C $(TARGET_BUILD) check-lldb || true; \ |
f2830edd | 1359 | fi |
18368be9 | 1360 | # remove the workaround |
e7d54dd0 | 1361 | rm $(CURDIR)/$(TARGET_BUILD)/lib/python*/*-packages/_lldb.so |
dd8713ff | 1362 | endif |
bf21400e | 1363 | endif |
dd8713ff | 1364 | |
da2955c1 | 1365 | # Polly tests |
a958f0b7 | 1366 | #ifeq (${POLLY_ENABLE},yes) |
066d9c79 | 1367 | # ninja -C $(TARGET_BUILD) check-polly || true |
a958f0b7 | 1368 | #endif |
dd8713ff | 1369 | |
fa3d839c | 1370 | # Managed by debian build system |
e7d54dd0 | 1371 | rm -f $(CURDIR)/$(TARGET_BUILD)/lib/python*/*-packages/lldb/_lldb.so |
1432f600 | 1372 | |
c1c56e85 SL |
1373 | # The compression of the code coverage report is done in the |
1374 | # hook B21GetCoverageResults on the server | |
3dbb24b9 | 1375 | if test "$(CODECOVERAGE)" = "yes"; then \ |
3b524bad | 1376 | REPORT=reports/llvm-toolchain.info; \ |
3dbb24b9 | 1377 | mkdir -p reports/; \ |
1db2f514 | 1378 | lcov --directory $(TARGET_BUILD)/ --capture --ignore-errors source --output-file $$REPORT; \ |
9a38e3eb | 1379 | lcov --remove $$REPORT "/usr*" -o $$REPORT; \ |
f11bd58b | 1380 | genhtml -o reports/coverage --show-details --highlight --legend $$REPORT; \ |
b64f52e0 SL |
1381 | chmod 0755 `find reports/coverage -type d`; \ |
1382 | chmod 0644 `find reports/coverage -type f`; \ | |
3dbb24b9 | 1383 | fi |
8bcfb779 | 1384 | else |
f111124c | 1385 | override_dh_auto_test: |
8bcfb779 | 1386 | @echo "Skipping tests" |
f111124c SL |
1387 | endif |
1388 | ||
875ec1e7 | 1389 | |
ada0fc6b | 1390 | override_dh_gencontrol: sccache-stats |
712c1081 SL |
1391 | dh_gencontrol -- $(control_vars) |
1392 | ||
7aec1357 | 1393 | |
875ec1e7 | 1394 | override_dh_auto_clean: |
3270880a | 1395 | rm -rf $(TARGET_BUILD) llvm/docs/_build/ clang/docs/_build tools/clang/docs/_html/ |
10a05cac SL |
1396 | # QA tools |
1397 | rm -rf cov-int/ reports/ | |
0e2e9334 | 1398 | rm -f `ls debian/*.in|grep -v control.in|sed -e "s|.in$$||g"` |
12815a6f | 1399 | find utils -name '*.pyc' | xargs -r rm -f |
a5a8400e SL |
1400 | # Use -I because a test has a space in its name |
1401 | find lldb/test -iname '*.pyc' | xargs -I{} -r rm -f {} | |
a5a8400e SL |
1402 | rm -f $(CURDIR)/utils/vim/llvm-$(LLVM_VERSION).vim $(CURDIR)/utils/vim/tablegen-$(LLVM_VERSION).vim |
1403 | rm -f $(CURDIR)/clang/tools/clang-format/clang-format-diff-$(LLVM_VERSION) | |
1404 | rm -f $(CURDIR)/clang/tools/clang-format/clang-format-$(LLVM_VERSION).py | |
d2bd294c | 1405 | rm -rf libclc/build |
78fcc5f7 | 1406 | rm -rf build-wasm |
4625379d SL |
1407 | if test -f lld/docs/ld.lld-$(LLVM_VERSION).1; then \ |
1408 | mv lld/docs/ld.lld-$(LLVM_VERSION).1 lld/docs/ld.lld.1; \ | |
1409 | fi | |
f01f2c14 | 1410 | for f in debian/*.in; do \ |
2c450a09 SL |
1411 | if ! echo $$f|grep control; then \ |
1412 | f2=$$(echo $$f | sed 's/\.in$$//;s/X\.Y/$(LLVM_VERSION)/'); \ | |
1413 | rm -f $$f2; \ | |
1414 | fi; \ | |
f01f2c14 | 1415 | done |
c06e8852 | 1416 | if test "$(SCAN_BUILD)" = "yes"; then \ |
fd0d9b39 | 1417 | patch -f -R -p1 < debian/patches/on-the-fly/use-scan-build-runtimes.diff||true; \ |
c06e8852 | 1418 | fi |
f01f2c14 SL |
1419 | : # for some reason, the docs are written to debian/usr and debian/man ... |
1420 | rm -rf debian/usr debian/man | |
4afa87ab | 1421 | : # remove extra stamps |
d24f4d88 | 1422 | rm -f debian-*-build override_dh_auto_install sccache-stats build_doc |
214db535 | 1423 | |
78fcc5f7 | 1424 | .PHONY: override_dh_strip preconfigure |