3 # polly & lldb aren't enabled for every platform
4 PROJECTS
= clang
;clang-tools-extra
;lld
;cross-project-tests
;mlir
5 # openmp & libunwind aren't enabled for every platform
6 RUNTIMES
= compiler-rt
;libcxx
;libcxxabi
8 TARGET_BUILD
:= build-llvm
9 TARGET_BUILD_STAGE2
:= $(TARGET_BUILD
)/tools
/clang
/stage2-bins
10 DEB_INST
:= $(CURDIR
)/debian
/tmp
/
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
))
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")
18 LLVM_VERSION_SNAPSHOT
:= $(shell dpkg-parsechangelog | sed
-rne
"s,^Version: 1:(.*),\1,p")
19 ifeq ($(LLVM_VERSION
),$(LLVM_VERSION_FULL
))
20 LLVM_VERSION_FULL
:= $(LLVM_VERSION
).0.0
23 SOURCE_NAME
:= $(shell dpkg-parsechangelog
-S Source
)
24 ifneq (,$(findstring snapshot
,$(SOURCE_NAME
)))
27 BRANCH_NAME
=$(LLVM_VERSION
)
32 # Manage the case when the version is 3.5~svn213052-1~exp1 or 3.4.2-1
33 DEBIAN_REVISION
:= $(shell dpkg-parsechangelog | sed
-rne
"s,^Version: 1:([0-9.]+)(~|-)(.*),\3,p")
34 ifneq (,$(filter parallel
=%,$(subst $(COMMA
), ,$(DEB_BUILD_OPTIONS
))))
35 NJOBS
:= $(subst parallel
=,,$(filter parallel
=%,$(subst $(COMMA
), ,$(DEB_BUILD_OPTIONS
))))
37 NJOBS
:= $(shell nproc
)
40 VENDOR
=$(shell lsb_release
-is
)
41 DISTRO
=$(shell lsb_release
-sc
)
43 DH_VERSION
:= $(shell dpkg
-s debhelper | grep
'^Version' | awk
'{print $$2}')
45 include /usr
/share
/dpkg
/architecture.mk
49 # dpkg-buildflags support
50 # disable fixfilepath in favor of the llvm-project supplied flavor, disable lto
51 export DEB_BUILD_MAINT_OPTIONS
= reproducible
=-fixfilepath
,-fixdebugpath optimize
=-lto
52 # these are handled on a per stage / build basis
53 export DEB_CFLAGS_MAINT_STRIP
= -g
-O2
54 export DEB_CXXFLAGS_MAINT_STRIP
= -g
-O2
56 include /usr
/share
/dpkg
/buildflags.mk
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
60 # And the various components are built using the second clang.
61 # See https://llvm.org/docs/AdvancedBuilds.html
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
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
)
72 # If we build with libc++, we might want to set different arguments for
74 RUNTIMES_CFLAGS
= $(STAGE_1_CFLAGS
)
75 RUNTIMES_CXXFLAGS
:= $(STAGE_1_CXXFLAGS
)
76 RUNTIMES_LDFLAGS
:= $(STAGE_1_LDFLAGS
)
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
)
83 # collect additional cmake options for toolchain build configuration
86 STAGE_ALL_CMAKE_EXTRA
=
87 # toolchain config-only var combining all stage 1 cmake options
88 CMAKE_EXTRA
= $(STAGE_1_CMAKE_EXTRA
) $(STAGE_ALL_CMAKE_EXTRA
)
89 # toolchain config-only var prepending BOOTSTRAP_ to all stage 2 cmake options
90 BOOTSTRAP_CMAKE_EXTRA
= $(foreach extra
,$(STAGE_2_CMAKE_EXTRA
) $(STAGE_ALL_CMAKE_EXTRA
), $(subst -D
,-DBOOTSTRAP_
,$(extra
)))
92 BASE_PATH
:= $(CURDIR
)
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
99 COMPILER_RT_USE_BUILTINS_LIBRARY
:= ON
100 LIBCXX_EXCEPTIONS
:= ON
101 LIBCXX_USE_COMPILER_RT
:= ON
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
)
109 ifneq (,$(filter $(DEB_HOST_ARCH
),sparc sparc64
))
110 STAGE_1_CMAKE_EXTRA
+= -DLLVM_PARALLEL_LINK_JOBS
=4
113 ifneq (,$(filter $(DEB_HOST_ARCH
),i386 hurd-i386 kfreebsd-i386 armel mipsel powerpc powerpcspe riscv64
))
114 # For some reason, in the stage2 build, when clang is used to compile
115 # itself. The atomic detection is failing on armel and riscv64. Forcing the inclusion
116 # everywhere and in all stages
117 LDFLAGS_EXTRA
+= -latomic
120 Z3_FLAG
= -DLLVM_ENABLE_Z3_SOLVER
=OFF
121 ifeq ($(shell dpkg
--compare-versions
$(shell dpkg-query
-W
-f
'$${Version}' libz3-dev
) gt
4.7.0; echo
$$?
),0)
122 # no ocaml support in main for Ubuntu
123 ifneq ($(shell dpkg-vendor
--derives-from Ubuntu
&& echo yes
),yes
)
124 Z3_FLAG
= -DLLVM_ENABLE_Z3_SOLVER
=ON
127 STAGE_2_CMAKE_EXTRA
+= $(Z3_FLAG
)
129 # Change the default CPU for s390x
131 ifeq ($(shell dpkg-vendor
--derives-from Ubuntu
&& echo yes
),yes
)
134 STAGE_2_CMAKE_EXTRA
+= -DCLANG_SYSTEMZ_DEFAULT_ARCH
=$(ZARCH
)
136 # clangd remote index support requires GRPC & protobuf.
137 # Enable if minimum tested versions are available.
138 CLANGD_GRPC_INSTALLED
=no
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)
143 CLANGD_GRPC_INSTALLED
=yes
144 STAGE_2_CMAKE_EXTRA
+= -DCLANGD_ENABLE_REMOTE
=ON
150 export CC
=gcc-
$(GCC_VERSION
)
151 export CXX
=g
++-$(GCC_VERSION
)
153 ifneq (,$(findstring $(DEB_HOST_ARCH
),armel
))
154 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_HOST_TRIPLE
=arm-linux-gnueabi
155 STAGE_ALL_CMAKE_EXTRA
+= -DCOMPILER_RT_DEFAULT_TARGET_ONLY
=ON
156 # align arch profile with debian baseline
157 # https://wiki.debian.org/ArmEabiPort
158 CFLAGS_EXTRA
+= -march
=armv5t
159 CXXFLAGS_EXTRA
+= -march
=armv5t
160 # disable compiler-rt builtins (not supported for baseline armel arch: armv5t)
161 # See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html
162 STAGE_ALL_CMAKE_EXTRA
+= -DCOMPILER_RT_BUILD_BUILTINS
=OFF
163 COMPILER_RT_USE_BUILTINS_LIBRARY
:= OFF
164 LIBCXX_USE_COMPILER_RT
:= OFF
165 # disable scudo standalone (not supported for baseline armel arch: armv5t)
166 STAGE_ALL_CMAKE_EXTRA
+= -DCOMPILER_RT_BUILD_SCUDO_STANDALONE
=OFF
169 ifneq (,$(findstring $(DEB_HOST_ARCH
),armhf
))
170 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_HOST_TRIPLE
=arm-linux-gnueabihf
171 STAGE_ALL_CMAKE_EXTRA
+= -DCOMPILER_RT_DEFAULT_TARGET_ONLY
=ON
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
178 ifneq (,$(filter $(DEB_HOST_ARCH
),i386
))
179 # Sometimes, i386 needs help with the triple
180 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_HOST_TRIPLE
=i386-linux-gnu
181 CMAKE_EXTRA
+= -DLLVM_HOST_TRIPLE
=i386-linux-gnu
184 ifneq (,$(filter $(DEB_HOST_ARCH
),mips64el
))
185 # avoid an issue with search path on mips64el
186 # https://bugs.llvm.org/show_bug.cgi?id=41204
187 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_HOST_TRIPLE
=mips64el-linux-gnuabi64
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
195 # debug symbols OOM in Ubuntu Ubuntu and slows down build process.
196 ifneq (,$(filter $(DEB_HOST_ARCH
),riscv64
))
197 opt_flags
= -O2
-DNDEBUG
-g0
199 opt_flags
= -O2
-DNDEBUG
-g1
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
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
211 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_PARALLEL_LINK_JOBS
=4
214 ifneq (,$(filter $(DEB_HOST_ARCH
),s390x
))
215 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_HOST_TRIPLE
=s390x-linux-gnu
216 STAGE_ALL_CMAKE_EXTRA
+= -DCOMPILER_RT_DEFAULT_TARGET_ONLY
=ON
217 LIBCXX_EXCEPTIONS
:= OFF
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
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
231 ifneq (,$(filter $(DEB_HOST_ARCH
),x32
))
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
234 STAGE_ALL_CMAKE_EXTRA
+= -DCOMPILER_RT_BUILD_BUILTINS
=OFF
235 COMPILER_RT_USE_BUILTINS_LIBRARY
:= OFF
236 LIBCXX_USE_COMPILER_RT
:= OFF
239 ifneq (,$(filter $(DEB_HOST_ARCH
),hurd-i386
))
240 STAGE_ALL_CMAKE_EXTRA
+= -DCOMPILER_RT_DEFAULT_TARGET_ONLY
=ON
243 ifeq ($(shell dpkg
--compare-versions
$(shell dpkg-query
-W
-f
'$${Version}' g
++-$(GCC_VERSION
)) ge
4.8-20121128-1~
; echo
$$?
),0)
244 control_vars
= '-Vdep:devlibs=libstdc++-$(GCC_VERSION)-dev, libgcc-$(GCC_VERSION)-dev' \
245 '-Vdep:devlibs-objc=libobjc-$(GCC_VERSION)-dev'
246 else ifeq ($(shell dpkg
--compare-versions
$(shell dpkg-query
-W
-f
'$${Version}' g
++-$(GCC_VERSION
)) ge
4.7.2-10~
; echo
$$?
),0)
247 control_vars
= '-Vdep:devlibs=libstdc++6-$(GCC_VERSION)-dev, libgcc-$(GCC_VERSION)-dev' \
248 '-Vdep:devlibs-objc=libobjc-$(GCC_VERSION)-dev'
250 control_vars
= '-Vdep:devlibs=libstdc++6-$(GCC_VERSION)-dev'
253 LLVM_SPIRV_VERSION
:= $(LLVM_VERSION
)
254 LLVM_SPIRV
:= $(shell bash
-c
"command -v llvm-spirv-$(LLVM_SPIRV_VERSION)" 2>/dev
/null
)
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
)
260 LLVM_SPIRV_INSTALLED
= no
262 ifeq ($(shell dpkg
--compare-versions
$(shell dpkg-query
-W
-f
'$${Version}' llvm-spirv-
$(LLVM_SPIRV_VERSION
)) gt
14.0.0 ; echo
$$?
),0)
263 # Too old llvm-spirv version are failing. See #52200
264 LLVM_SPIRV_INSTALLED
= yes
266 LLVM_SPIRV_INSTALLED
= no
270 LIBCLC_TARGETS_TO_BUILD
="amdgcn--;amdgcn--amdhsa;amdgcn-mesa-mesa3d;r600--;nvptx--;nvptx64--;nvptx--nvidiacl;nvptx64--nvidiacl"
272 ifeq ($(LLVM_SPIRV_INSTALLED
),yes
)
273 LIBCLC_TARGETS_TO_BUILD
:= $(LIBCLC_TARGETS_TO_BUILD
)";spirv-mesa3d-;spirv64-mesa3d-"
274 LIBCLC_LLVM_SPIRV
= "-DLLVM_SPIRV=$(LLVM_SPIRV)"
277 BINUTILS_GOLD_ARCHS
:= amd64 arm64 armhf i386 ppc64 ppc64el x32 s390x hurd-i386 kfreebsd-amd64 kfreebsd-i386
278 ifeq ($(shell dpkg
--compare-versions
$(shell dpkg-query
-W
-f
'$${Version}' binutils
) ge
2.23.1-1~exp3
; echo
$$?
),0)
279 ifneq (,$(filter $(DEB_HOST_ARCH
),$(BINUTILS_GOLD_ARCHS
)))
280 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_USE_LINKER
=gold
281 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_BINUTILS_INCDIR
=/usr
/include/
285 ifneq (,$(filter bolt-
$(LLVM_VERSION
), $(shell dh_listpackages
)))
289 # flang is only for 64bits
290 ifneq (,$(filter flang-
$(LLVM_VERSION
), $(shell dh_listpackages
)))
295 ifneq (,$(filter codecoverage
,$(DEB_BUILD_OPTIONS
)))
296 # enable the code coverage
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
302 # OpenMP doesn't respect LDFLAGS
303 STAGE_2_CMAKE_EXTRA
+= -DLIBOMP_LDFLAGS
="-coverage -lgcov" # don't pass LDFLAGS_EXTRA because it expects gcc arg
306 # Enable polly (or not)
308 ifneq (,$(filter $(DEB_HOST_ARCH
), powerpc powerpcspe
))
314 # Enable libunwind (or not)
316 ifneq (,$(filter $(DEB_HOST_ARCH
), s390x armel m68k mipsel mips64el hurd-i386 powerpc sparc sparc64 x32
))
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
322 RUNTIMES
+= ;libunwind
323 STAGE_ALL_CMAKE_EXTRA
+= -DLIBCXXABI_USE_LLVM_UNWINDER
=ON
326 # Enable openmp (or not)
328 ifneq (,$(filter $(DEB_HOST_ARCH
), m68k mipsel powerpc powerpcspe sparc64 s390x x32
))
332 STAGE_ALL_CMAKE_EXTRA
+= -DLIBOMP_LIBFLAGS
="-lm"
333 ifeq ($(LIBUNWIND_ENABLE
),yes
)
334 STAGE_ALL_CMAKE_EXTRA
+= -DOPENMP_USE_LLVM_UNWINDER
=ON
338 # Do not install objects
339 STAGE_ALL_CMAKE_EXTRA
+= -DMLIR_INSTALL_AGGREGATE_OBJECTS
=OFF
343 ifneq (,$(filter nocheck
,$(DEB_BUILD_OPTIONS
)))
346 ifeq ($(shell dpkg-vendor
--derives-from Ubuntu
&& echo yes
),yes
)
347 ifeq (riscv64
,$(DEB_HOST_ARCH
))
352 # llvm tests timeout, disable it on mipsel
353 ifeq (mipsel
,$(DEB_HOST_ARCH
))
358 ifneq (,$(filter scan-build
,$(DEB_BUILD_OPTIONS
)))
359 # enable the build using scan-build
360 # The package are installed through the variable declarations:
361 # OTHERMIRROR="deb http://llvm.org/apt/unstable/ llvm-toolchain main"
362 # EXTRAPACKAGES="clang-X"
365 PRE_PROCESS
=scan-build-
$(LLVM_VERSION
) --show-description
-analyzer-config stable-report-filename
=true
366 PRE_PROCESS_CONF
=scan-build-
$(LLVM_VERSION
)
367 # no need to run tests in this case
369 CONFIGURE_EXTRA
+= --enable-assertions
370 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_ENABLE_ASSERTIONS
=ON
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
382 CONFIGURE_EXTRA
+= --enable-assertions
383 STAGE_ALL_CMAKE_EXTRA
+= -DLLVM_ENABLE_ASSERTIONS
=ON
384 # no need to run tests in this case
391 LLDB_DISABLE_ARCHS
:= hurd-i386 ia64 powerpc powerpcspe ppc64 riscv64 sparc64 mips64el mipsel
392 # hurd has threading issues
393 ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS
), $(DEB_HOST_ARCH
)))
394 # Disable LLDB for this arch.
397 STAGE_ALL_CMAKE_EXTRA
+= -DLLDB_ENABLE_LUA
=OFF
401 ifneq (,$(filter $(DISTRO
),buster
))
402 # Don't enable lld python for old distros
403 STAGE_ALL_CMAKE_EXTRA
+= -DLLDB_ENABLE_PYTHON
=OFF
406 LIBCXX_WASM_ENABLE
=yes
407 LIBCXX_WASM_DISABLE_DISTRO
:= bionic buster focal bullseye jammy
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
411 ifeq (,$(filter-out $(LIBCXX_WASM_DISABLE_DISTRO
), $(DISTRO
)))
412 LIBCXX_WASM_ENABLE
=no
415 ifneq (,$(filter $(DEB_HOST_ARCH
),powerpc powerpcspe
))
416 LIBCXX_WASM_ENABLE
=no
421 ifneq (,$(filter $(DEB_HOST_ARCH_OS
),linux
))
423 STAGE_2_CMAKE_EXTRA
+= -DLLVM_USE_PERF
=ON
-DLLVM_ENABLE_LIBPFM
=ON
427 # Only enable it for archs supporting gold
428 ifneq (,$(filter $(DEB_HOST_ARCH
),$(BINUTILS_GOLD_ARCHS
)))
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
)))
434 # Disable for now because of
435 # https://github.com/llvm/llvm-project/issues/58317#issuecomment-1276190743
437 # STAGE_2_CMAKE_EXTRA += -DLLVM_ENABLE_LTO="On"
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
451 OCAML_ARCHS
:= amd64 arm64 armhf ppc64el riscv64 s390x
452 ifneq (,$(filter $(DEB_HOST_ARCH
),$(OCAML_ARCHS
)))
453 # Enable OCAML for this arch.
455 OCAML_STDLIB_DIR ?
= $(shell ocamlc
-where
)
456 DH_OPTIONS
=--with ocaml
460 ifeq (,$(filter $(DEB_HOST_ARCH_OS
),linux
))
464 ifneq (,$(filter $(DEB_HOST_ARCH
), mipsel
))
468 ifneq (,$(filter $(DEB_HOST_ARCH
), mips64 mips64el
))
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
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
/
482 # if sccache is installed in the chroot, use it
483 ifeq ($(shell test -e
/opt
/sccache
/sccache
&& echo
-n yes
),yes
)
484 ifneq (,$(filter $(DEB_HOST_ARCH
),i386 amd64
))
485 STAGE_1_CMAKE_EXTRA
+= $(SCCACHE_CMAKE
)
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
494 # enables cmake build targets like stage2-[target_name]
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
500 # For some reasons, some spaces are added, removing them
501 PROJECTS_LIST
:= $(shell echo
"$(PROJECTS)"|sed
-e
"s| ||g")
502 RUNTIMES_LIST
:= $(shell echo
"$(RUNTIMES)"|sed
-e
"s| ||g")
506 if
! grep
-qs
'/proc ' /proc
/mounts
; then \
507 echo
"/proc needs to be mounted"; \
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"; \
515 @echo
"DEB_BUILD_OPTIONS=$(DEB_BUILD_OPTIONS)"
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)"
521 @echo
"DISTRO=$(DISTRO)"
522 @echo
"GCC_VERSION=$(GCC_VERSION)"
523 @echo
"PROJECTS=$(PROJECTS_LIST)"
524 @echo
"RUNTIMES=$(RUNTIMES_LIST)"
525 @echo
"LLVM_VERSION=$(LLVM_VERSION)"
526 @echo
"LLVM_VERSION_FULL=$(LLVM_VERSION_FULL)"
527 @echo
"LLVM_VERSION_SNAPSHOT=$(LLVM_VERSION_SNAPSHOT)"
529 @echo
"LD_LIBRARY_PATH=$$LD_LIBRARY_PATH"
530 @echo
"RUNTIMES_CXXFLAGS=$(RUNTIMES_CXXFLAGS)"
531 @echo
"STAGE_1_CXXFLAGS=$(STAGE_1_CXXFLAGS)"
532 @echo
"STAGE_2_CFLAGS=$(STAGE_2_CFLAGS)"
533 @echo
"LIBFUZZER_ENABLE=$(LIBFUZZER_ENABLE)"
534 @echo
"LTO_ENABLE=$(LTO_ENABLE)"
535 @echo
"COMPILER_RT_WASM_ENABLE=$(COMPILER_RT_WASM_ENABLE)"
536 @echo
"LIBCXX_WASM_ENABLE=$(LIBCXX_WASM_ENABLE)"
537 @echo
"SCCACHE_ENABLE=$(SCCACHE_ENABLE)"
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' \
543 -e
"s|@BRANCH_NAME@|$(BRANCH_NAME)|g" \
544 -e
"s|@OCAML_STDLIB_DIR@|$(OCAML_STDLIB_DIR)|g" \
545 -e
"s|@LLVM_VERSION_FULL@|$(LLVM_VERSION_FULL)|g" \
546 -e
"s|@LLVM_VERSION@|$(LLVM_VERSION)|g" $$f > $$f2; \
549 # Make install file executable for dh-exec
551 debian
/clang-tools-
$(LLVM_VERSION
).
install \
552 debian
/libclang-
$(LLVM_VERSION
)-dev.
install \
553 debian
/libclang-rt-
$(LLVM_VERSION
)-dev.
install \
554 debian
/libpolly-
$(LLVM_VERSION
)-dev.
install \
555 debian
/libomp-
$(LLVM_VERSION
)-dev.
install \
556 debian
/libomp5-
$(LLVM_VERSION
).
install \
557 debian
/llvm-
$(LLVM_VERSION
)-dev.
install \
558 debian
/llvm-
$(LLVM_VERSION
)-linker-tools.
install \
559 debian
/llvm-
$(LLVM_VERSION
)-linker-tools.links \
560 debian
/libbolt-
$(LLVM_VERSION
)-dev.
install
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
566 sed
-i
-e
"s|#spv\ ||g" debian
/libclc-
$(LLVM_VERSION
).
install
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; \
572 echo
"" > debian
/libc
++abi-
$(LLVM_VERSION
)-dev-wasm32.
install; \
575 # Conditionally enable install clangd grpc files
576 if
test "$(CLANGD_GRPC_INSTALLED)" = "yes"; then \
577 sed
-i
-e
"s|#grpc\ ||g" debian
/libclang-
$(LLVM_VERSION
)-dev.
install; \
580 # Override this two targets. They are trying to manage the .in conversion for me
581 override_dh_ocamlinit
:
582 override_dh_ocamlclean
:
585 override_dh_auto_configure
: preconfigure
586 ifeq (${SCCACHE_ENABLE},yes
)
587 ls
-al
$(SCCACHE_PATH
)*
592 mkdir
-p
$(TARGET_BUILD
)
593 # remove in case of artifact
596 if
test "$(SCAN_BUILD)" = "yes"; then \
597 patch
-f
-p1
< debian
/patches
/on-the-fly
/use-scan-build-runtimes.diff||true
; \
600 # Configure coverity (we need the compilers) + work around perf issues
601 -(if
test $(COVERITY_ENABLE
) -eq
1; then \
602 export PATH
=$$PATH:/opt
/cov-analysis
/bin
/; \
603 cov-configure
--compiler clang
--comptype clang
; \
604 cov-configure
--compiler gcc-
$(GCC_VERSION
) --comptype gcc
; \
605 cov-configure
--compiler g
++-$(GCC_VERSION
) --comptype gcc
; \
606 cov-configure
-co /usr
/bin
/g
++-$(GCC_VERSION
) --comptype gcc
-- -fPIC
-std
=c
++11; \
607 cov-configure
-co /usr
/bin
/gcc-
$(GCC_VERSION
) --comptype gcc
-- -fPIC
; \
608 cov-configure
-co /usr
/bin
/g
++-$(GCC_VERSION
) --comptype gcc
-- -fPIC
-std
=c
++11 -fno-exceptions
; \
609 cov-configure
-co /usr
/bin
/g
++-$(GCC_VERSION
) --comptype gcc
--template \
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" \
618 --xml-option append_arg
:"replace/llvm::AlignOf<NextTy>::Alignment/(llvm::AlignOf<NextTy>::Alignment)"; \
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
628 ifeq (${SCCACHE_ENABLE},yes
)
630 $(SCCACHE_CMD
) --stop-server||true
631 # Start the sccache server with the right set of options to use GCP
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
634 echo
"Running tests: $(RUN_TEST)"
635 echo
"Using cmake: $(CMAKE_BIN)"; \
636 LD_LIBRARY_PATH
=$$LD_LIBRARY_PATH \
637 $(PRE_PROCESS_CONF
) $(CMAKE_BIN
) -S llvm
/ -B
$(TARGET_BUILD
) \
639 -DCMAKE_INSTALL_PREFIX
=/usr
/lib
/llvm-
$(LLVM_VERSION
) \
640 -DLLVM_VERSION_SUFFIX
= \
641 -DCMAKE_SUPPRESS_REGENERATION
=ON \
642 -DCMAKE_BUILD_TYPE
=Release \
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)" \
648 -DPACKAGE_VENDOR
=$(VENDOR
) \
649 -DENABLE_LINKER_BUILD_ID
=ON \
650 -DLLVM_TARGETS_TO_BUILD
=Native \
651 -DLLVM_ENABLE_PROJECTS
="$(PROJECTS_LIST)" \
652 -DLLVM_ENABLE_RUNTIMES
="$(RUNTIMES_LIST)" \
653 -DLLVM_ENABLE_PIC
=ON \
654 -DLLVM_ENABLE_RTTI
=ON \
655 -DLLVM_BUILD_DOCS
=OFF \
656 -DLLVM_INCLUDE_GO_TESTS
=OFF \
657 -DLLVM_USE_RELATIVE_PATHS_IN_FILES
=ON \
658 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN
=ON \
659 -DLLVM_ENABLE_CURL
=ON \
660 -DLLVM_USE_RELATIVE_PATHS_IN_DEBUG_INFO
=ON \
661 -DCLANG_PLUGIN_SUPPORT
=OFF \
662 -DCLANG_BUILD_EXAMPLES
=OFF \
663 -DCLANG_DEFAULT_LINKER
=ld \
664 -DCLANG_DEFAULT_RTLIB
=libgcc \
665 -DCOMPILER_RT_BUILD_XRAY
=OFF \
666 -DCOMPILER_RT_INCLUDE_TESTS
=OFF \
667 -DCOMPILER_RT_USE_LIBCXX
=OFF \
668 -DCOMPILER_RT_USE_BUILTINS_LIBRARY
=$(COMPILER_RT_USE_BUILTINS_LIBRARY
) \
669 -DLIBUNWIND_USE_COMPILER_RT
=ON \
670 -DLIBUNWIND_INSTALL_LIBRARY
=OFF \
671 -DLIBCXXABI_ENABLE_EXCEPTIONS
=$(LIBCXX_EXCEPTIONS
) \
672 -DLIBCXXABI_USE_COMPILER_RT
=$(LIBCXX_USE_COMPILER_RT
) \
673 -DLIBCXXABI_INSTALL_LIBRARY
=OFF \
674 -DLIBCXX_ENABLE_EXCEPTIONS
=$(LIBCXX_EXCEPTIONS
) \
675 -DLIBCXX_USE_COMPILER_RT
=$(LIBCXX_USE_COMPILER_RT
) \
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 \
679 -DLIBCXX_INSTALL_LIBRARY
=OFF \
680 -DOPENMP_ENABLE_LIBOMP_PROFILING
=OFF \
681 -DOPENMP_ENABLE_LIBOMPTARGET_PROFILING
=OFF \
682 -DLIBOMP_ENABLE_RTTI
=OFF \
683 -DLIBOMP_OMPT_SUPPORT
=OFF \
684 -DCLANG_FORCE_MATCHING_LIBCLANG_SOVERSION
=ON \
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" \
688 -DCLANG_ENABLE_BOOTSTRAP
=ON \
689 -DCLANG_BOOTSTRAP_TARGETS
="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \
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" \
691 -DBOOTSTRAP_CMAKE_BUILD_TYPE
=RelWithDebInfo \
692 -DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO
="$(opt_flags)" \
693 -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO
="$(opt_flags)" \
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)" \
699 -DBOOTSTRAP_LLVM_ENABLE_FFI
=ON \
700 -DBOOTSTRAP_LLVM_ENABLE_DUMP
=ON \
701 -DBOOTSTRAP_LLVM_ENABLE_LIBPFM
=ON \
702 -DBOOTSTRAP_LLVM_ENABLE_SPHINX
=ON \
703 -DBOOTSTRAP_CLANG_DEFAULT_PIE_ON_LINUX
=ON \
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 \
709 -DBOOTSTRAP_LLVM_EXPERIMENTAL_TARGETS_TO_BUILD
="M68k;Xtensa" \
710 -DBOOTSTRAP_LLVM_LINK_LLVM_DYLIB
=ON \
711 -DBOOTSTRAP_LLVM_ENABLE_CURL
=ON \
712 -DBOOTSTRAP_CLANG_LINK_CLANG_DYLIB
=ON \
713 -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION
=$(SONAME_EXT
) \
714 -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY
=ON \
715 -DBOOTSTRAP_PYTHON_EXECUTABLE
=/usr
/bin
/python3 \
716 $(BOOTSTRAP_CMAKE_EXTRA
) \
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" \
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"
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 \
722 echo
"mismatch of version. Found: $$FOUND_VERSION / Expected: $(LLVM_VERSION_FULL)"; \
729 echo
"Using cmake: $(CMAKE_BIN)"
730 # linker hack so stage2 can link against stage1 libs at runtime
731 LD_LIBRARY_PATH
=$(STAGE_1_LIB_DIR
):$$LD_LIBRARY_PATH \
732 VERBOSE
=1 $(PRE_PROCESS
) $(CMAKE_BIN
) --build
$(TARGET_BUILD
) -j
$(NJOBS
) --target stage2 || cat build-llvm
/tools
/clang
/stage2-bins
/CMakeFiles
/CMakeOutput.log
734 # Check the stage 2 build worked
735 if
! readelf
--string-dump .comment
$(TARGET_BUILD_STAGE2
)/bin
/clang
2>&1|grep
-q
"clang version"; then \
736 echo
"clang hasn't been built using clang. Bye bye. Check that the stage2 build has been done."; \
737 if
test "$(SCAN_BUILD)" = "no"; then \
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"; \
745 if
test -e
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/libclang-
$(LLVM_VERSION
).so
.1; then \
746 echo
"libclang-$(LLVM_VERSION).so.1 link is broken"; \
751 debian-libfuzzer-build
:
752 ifeq (${LIBFUZZER_ENABLE},yes
)
753 cd
$(TARGET_BUILD
); \
754 CFLAGS
="$(opt_flags) $(STAGE_2_CFLAGS)"; \
756 for sourcefile in
$(BASE_PATH
)/compiler-rt
/lib
/fuzzer
/*.
cpp; do \
757 $(SCCACHE_CMD
) $(STAGE_2_BIN_DIR
)/clang
++ -c
$$CFLAGS -std
=c
++17 $$sourcefile -IFuzzer || exit
1; \
759 ar ruv libFuzzer.a Fuzzer
*.o
765 mkdir
-p libclc
/build
766 echo
"Using cmake: $(CMAKE_BIN)"
771 -DCMAKE_C_COMPILER
=$(STAGE_2_BIN_DIR
)/clang \
772 -DCMAKE_CXX_COMPILER
=$(STAGE_2_BIN_DIR
)/clang
++ \
773 -DCMAKE_C_FLAGS
="$(opt_flags) $(STAGE_2_CFLAGS)" \
774 -DCMAKE_CXX_FLAGS
="$(opt_flags) $(STAGE_2_CXXFLAGS) -I$(BASE_PATH)/llvm/include" \
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)" \
778 -DCMAKE_INSTALL_PREFIX
=/usr \
779 -DCMAKE_INSTALL_DATADIR
=lib \
780 -DCMAKE_INSTALL_INCLUDEDIR
=include \
781 -DLLVM_CMAKE_DIR
=$(STAGE_2_BIN_DIR
)/..
/ \
782 $(LIBCLC_LLVM_SPIRV
) \
783 -DLIBCLC_TARGETS_TO_BUILD
=$(LIBCLC_TARGETS_TO_BUILD
); \
784 LD_LIBRARY_PATH
=$$LD_LIBRARY_PATH:$(STAGE_2_LIB_DIR
) ninja
-j
$(NJOBS
) $(VERBOSE
)
786 echo
"libclc built without SPIRV (.spv) outputs because llvm-spirv wasn't found"
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)"
795 $(CMAKE_BIN
) -B
"$@" -S compiler-rt
/lib
/builtins
/ \
798 -DCMAKE_SYSTEM_NAME
=Generic \
799 -DCMAKE_C_COMPILER_TARGET
=$(cpu
)-unknown-unknown \
800 -DCMAKE_CXX_COMPILER_TARGET
=$(cpu
)-unknown-unknown \
801 -DCMAKE_ASM_COMPILER_TARGET
=$(cpu
)-unknown-unknown \
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)" \
809 -DCMAKE_INSTALL_PREFIX
=/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/clang
/$(LLVM_VERSION
) \
810 -DCMAKE_INSTALL_DATADIR
=lib \
811 -DCMAKE_INSTALL_INCLUDEDIR
=include \
812 -DLLVM_CMAKE_DIR
=$(STAGE_2_BIN_DIR
)/..
/ \
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 \
818 -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE
=$(cpu
)-unknown-unknown \
819 -DCOMPILER_RT_OS_DIR
=wasi
820 ninja
-C
"$@" -j
$(NJOBS
) $(VERBOSE
)
822 ifeq ($(LIBCXX_WASM_ENABLE
), no
)
823 build-wasm
/libcxx-
%-wasi
: build-wasm
/compiler-rt-
%
824 @echo
"Skipping libcxx-*-wasi on this distro $(DISTRO)"
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)"
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
)
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
839 $(STAGE_2_LIB_DIR
)/clang
/$(LLVM_VERSION
)/lib
/wasi
/
840 cp build-wasm
/compiler-rt-
$(cpu
)/lib
/wasi
/libclang_rt.builtins-
$(cpu
).a \
841 $(STAGE_2_LIB_DIR
)/clang
/$(LLVM_VERSION
)/lib
/wasi
/
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
855 $(CMAKE_BIN
) -B
"$@" -S runtimes \
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
902 ninja
-C
"$@" -j
$(NJOBS
) $(VERBOSE
)
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.
908 build-wasm
/compiler-rt-wasm32 \
909 build-wasm
/libcxx-wasm32-wasi \
910 build-wasm
/compiler-rt-wasm64
914 # If we used sccache, shows stats
915 if
test -f
$(SCCACHE_CMD
); then \
916 ls
-al
$(SCCACHE_PATH
)/; \
917 mkdir
-p
/tmp
/buildd
/source
/; \
918 $(SCCACHE_CMD
) --stats-format json
--show-stats
> /tmp
/buildd
/source
/sccache-stats.json
; \
919 cat
/tmp
/buildd
/source
/sccache-stats.json
; \
923 override_dh_auto_build
: \
925 debian-libfuzzer-build \
926 debian-libclc-build \
930 override_dh_prep
: build_doc
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
&& \
940 cd
$(CURDIR
)/clang
/docs
&& \
941 sphinx-build
-b html
$$ALLSPHINXOPTS $$BUILDDIR/html
&& \
942 sphinx-build
-b man
$$ALLSPHINXOPTS $$BUILDDIR/man
944 -(if
test "$(OCAML_ENABLE)" = yes
; then \
945 ninja
-C
"$(TARGET_BUILD_STAGE2)" $(VERBOSE
) ocaml_doc
; \
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
950 ifeq (${POLLY_ENABLE},yes
)
951 ninja
-C
$(TARGET_BUILD_STAGE2
) $(VERBOSE
) docs-polly-html docs-polly-man
955 d
=$(CURDIR
)/llvm
/docs
/_build
/man
/; \
956 if
test -d
$$d; then \
959 echo
"$$f"|grep
$(LLVM_VERSION
) || mv
$$f `echo $$f|sed "s|\.1|-$(LLVM_VERSION).1|"`; \
962 echo
"could not find $$d"; \
964 # the clang doc generation only generates clang manpage
965 # When it will do more, we should move that in the loop above
966 cd
$(CURDIR
)/clang
/docs
/_build
/man
/ && mv clang
.1 clang-
$(LLVM_VERSION
).1
968 # Remove the copy of jquery. See bug #701087
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 \
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
-; \
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
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"; \
981 for f in
$$CMDS; do \
982 echo
"Generating manpage of $$f"; \
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
; \
985 # Create the following directory regardless as libomp-16-doc
986 # is Architecture: all
987 mkdir
-p openmp
/runtime
/doc
/doxygen
/generated
/html
/
989 if
test "$(OPENMP_ENABLE)" = yes
; then \
990 cd openmp
/runtime
&& doxygen doc
/doxygen
/config
; cd
-; \
991 cd openmp
/runtime
/doc
/doxygen
/generated
/html
/ && rm jquery.js
&& ln
-s
/usr
/share
/javascript
/jquery
/jquery.js
; \
995 override_dh_auto_install
:
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
)
999 # install/fast enables a make install without recompiling temporary files
1000 LD_LIBRARY_PATH
=$(STAGE_2_LIB_DIR
):$$LD_LIBRARY_PATH DESTDIR
=$(DEB_INST
)/ ninja
-C
$(TARGET_BUILD
) $(VERBOSE
) stage2-install
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
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
1008 rm -f
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/libExampleIRTransforms.a
1009 # Remove an example - introduced in https://reviews.llvm.org/D61446
1010 rm -f
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/libBye.a
1012 cp
$(TARGET_BUILD_STAGE2
)/bin
/clang-query
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/bin
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`
1016 ifeq (,$(filter $(DEB_HOST_ARCH
), powerpc powerpcspe
))
1017 ifneq (,$(filter $(DEB_HOST_ARCH_OS
),linux
))
1018 # To fix custom-library-search-path
1019 chrpath
-d
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/clang
/$(LLVM_VERSION
)*/lib
/linux
/*.so
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
/; \
1029 if
test "$(OPENMP_ENABLE)" = yes
; then \
1030 cd debian
/tmp
/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
; \
1031 ln
-s libomp.so.
$(SONAME_OPENMP
) libomp.so
; \
1032 cp libomp.so.
$(SONAME_OPENMP
) libomp-
$(LLVM_VERSION
).so.
$(SONAME_OPENMP
); \
1035 # Remove artifact (where compiler-rt is built)
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; \
1040 mkdir
-p
$(CURDIR
)/debian
/clang-
$(LLVM_VERSION
)/usr
/bin
/
1041 cp compiler-rt
/lib
/asan
/scripts
/asan_symbolize.py
$(CURDIR
)/debian
/clang-
$(LLVM_VERSION
)/usr
/bin
/asan_symbolize-
$(LLVM_VERSION
)
1043 ifeq (${LIBFUZZER_ENABLE},yes
)
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
/
1048 # Create this fake directory to make the install libclang-common-dev happy
1049 # under the unsupported archs of compiler-rt
1050 mkdir
-p
$(DEB_INST
)/usr
/lib
/clang
/$(LLVM_VERSION
)/lib
1051 mkdir
-p
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/clang
/$(LLVM_VERSION
)/lib
/
1052 mkdir
-p
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/clang
/$(LLVM_VERSION
)/lib
/clang_linux
/
1053 mkdir
-p
$(TARGET_BUILD
)/tools
/clang
/runtime
/compiler-rt
/clang_linux
/
1054 mkdir
-p
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/clang
/$(LLVM_VERSION
)/share
/
1055 # On some archs, the sanitizers are not built. As we explicitly includes some txt files, create
1056 # a fake txt to make sure it doesn't fail
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
1059 # Path changed. Make a copy of it
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
1062 # Remove things that CMake install but which aren't packaged yet,
1063 # or are packaged from the source or build tree.
1064 mv
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/bin
/clang-
$(LLVM_VERSION
) \
1065 $(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/bin
/clang
1068 rm -f
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/python
*/*-packages
/six.py
1069 rm -f
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/local
/lib
/python
*/*-packages
/six.py
1070 rm -rf
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/build
/utils
/lit
/lit
/__pycache__
/ \
1071 $(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/build
/utils
/lit
/lit
/*/__pycache__
/
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
1078 DESTDIR
=$(DEB_INST
) ninja
$(VERBOSE
) -C libclc
/build
install
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
1082 if
test -d build-wasm
/libcxx-wasm32-wasi
; then \
1083 DESTDIR
=$(DEB_INST
) ninja
$(VERBOSE
) -C build-wasm
/libcxx-wasm32-wasi
install; \
1088 mkdir
-p
$(DEB_INST
)/usr
/bin
/
1089 cd
$(DEB_INST
)/usr
/bin
/; \
1091 for f in ..
/lib
/llvm-
$(LLVM_VERSION
)/bin
/*; do \
1092 ln
-s
$$f `basename $$f`-$(LLVM_VERSION
); \
1093 echo
"Link $$f to `basename $$f`-$(LLVM_VERSION)"; \
1096 # Rename some stuff with the version name
1097 cp
$(CURDIR
)/clang
/tools
/scan-build
/man
/scan-build
.1 $(CURDIR
)/clang
/tools
/scan-build
/man
/scan-build-
$(LLVM_VERSION
).1
1099 # copy the vim files (except that tablegen does not exist for indent
1100 VIM_DIRS
="ftdetect ftplugin syntax indent"; \
1101 for
dir in
$$VIM_DIRS; do \
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
; \
1107 cp
-f
$(CURDIR
)/llvm
/utils
/vim
/vimrc
$(CURDIR
)/llvm
/utils
/vim
/llvm-
$(LLVM_VERSION
)-vimrc
1109 cp
-f
$(CURDIR
)/clang
/tools
/clang-format
/clang-format-diff.py
$(CURDIR
)/clang
/tools
/clang-format
/clang-format-diff-
$(LLVM_VERSION
)
1111 cp
-f
$(CURDIR
)/clang
/tools
/clang-format
/clang-format.py clang
/tools
/clang-format
/clang-format-
$(LLVM_VERSION
).py
1113 rm -rf clang
/tools
/scan-build-
$(LLVM_VERSION
)
1114 cp
-fR
$(CURDIR
)/clang
/tools
/scan-build clang
/tools
/scan-build-
$(LLVM_VERSION
)
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
)
1118 chmod
+x clang
/tools
/scan-build-py-
$(LLVM_VERSION
)/bin
/*
1120 rm -rf clang
/tools
/scan-view-
$(LLVM_VERSION
)
1121 cp
-fR
$(CURDIR
)/clang
/tools
/scan-view clang
/tools
/scan-view-
$(LLVM_VERSION
)
1123 # Remove some license files
1124 rm -f
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/include/llvm
/Support
/LICENSE.TXT
1126 # Disable CMake's package validation checks for target files that we may remove.
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
1129 # Also disable mlir-* checks in the cmake
1130 sed
-i
'/_IMPORT_CHECK_TARGETS \(mlir-\|MLIR\)/ {s|^|#|}' $(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/cmake
/llvm
/LLVMExports-
*.cmake
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
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
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
1140 # Adjust to the existing symlink. See #994827
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
1143 # Managed in python*-lldb-X.Y.links.in
1144 rm -f
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/python
*/*-packages
/lldb
/_lldb.so
1146 # Manage the polly files. Sometimes, we build them. Sometimes not.
1147 if
test "$(POLLY_ENABLE)" = yes
; then \
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
/; \
1149 mv
-f
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/libPolly
* \
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
; \
1152 mv
-f
$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/include/polly
/ \
1153 $(CURDIR
)/debian
/libpolly-
$(LLVM_VERSION
)-dev
/usr
/lib
/llvm-
$(LLVM_VERSION
)/include/; \
1156 mkdir
-p
$(CURDIR
)/debian
/usr
/share
/doc
/llvm-
$(LLVM_VERSION
)-doc
/ $(CURDIR
)/debian
/usr
/share
/doc
/clang-
$(LLVM_VERSION
)-doc
/
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
1161 # Rename OCaml bindings
1162 if
test "$(OCAML_ENABLE)" = yes
; then \
1163 mkdir
-p
"$(DEB_INST)$(OCAML_STDLIB_DIR)"; \
1164 mkdir
-p
"$(DEB_INST)usr/lib/llvm-$(LLVM_VERSION)/docs/ocaml/html/html"; \
1165 mkdir
-p
"$(DEB_INST)usr/lib/llvm-$(LLVM_VERSION)/share/doc/llvm/ocaml-html/"; \
1166 if
test -d
"$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/ocaml"; then \
1167 mv
-f
"$(DEB_INST)usr/lib/llvm-$(LLVM_VERSION)/lib/ocaml" \
1168 "$(DEB_INST)$(OCAML_STDLIB_DIR)/llvm-$(LLVM_VERSION)"; \
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
; \
1181 # Disable the python binding for buster. not sure why it regressed
1182 # regressed de4364f1ecaa..0745b0c0354a
1183 if
test "$(DISTRO)" = "buster" -o
"$(DISTRO)" = "bionic" -o
"$(DEB_HOST_ARCH)" = "mips64el"; then \
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
; \
1186 echo
"" > debian
/python3-lldb-
$(LLVM_VERSION
).
install; \
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
1191 rm -rf
$(TARGET_BUILD
)
1195 override_dh_makeshlibs
:
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
)
1200 dh_makeshlibs
--remaining-packages
-V
1202 override_dh_shlibdeps
:
1203 # Ignore asan libraries. They would trigger dependencies to multiarch libraries
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
1206 override_dh_installman
:
1207 if
test -f lld
/docs
/ld.lld
.1; then \
1208 mv lld
/docs
/ld.lld
.1 lld
/docs
/ld.lld-
$(LLVM_VERSION
).1; \
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
*
1216 : # running out of diskspace on the buildds
1217 find
$(TARGET_BUILD
) -name
'*.o' -o
-name
'*.a' -type f | xargs
-r
rm -f
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
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'
1225 # ifeq (${LLD_ENABLE},yes)
1226 # PATH=$(CURDIR)/:$$PATH dh_strip -p liblld-$(LLVM_VERSION) --dbg-package=liblld-$(LLVM_VERSION)-dbg
1228 ifeq ($(shell dpkg
--compare-versions
$(shell dpkg-query
-W
-f
'$${Version}' binutils
) lt
2.31.1-11 ; echo
$$?
),0)
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
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; \
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
1239 : # Therefore, continue when we encounter an error
1240 PATH
=$(CURDIR
)/:$$PATH LD_LIBRARY_PATH
=$(DEB_INST
)/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/:/usr
/lib
/*/libfakeroot dh_strip
-a
-v || true
1241 : # Remove the workaround
1243 : # for some reasons, the +x might be removed
1244 chmod
-f
+x
$(CURDIR
)/debian
/*/usr
/lib
/llvm-
$(LLVM_VERSION
)/bin
/* || true
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)
1248 dh_strip
-a
-v
-Xlibclang_rt.builtins-wasm32.a
-Xlibclang_rt.builtins-wasm64.a
-Xusr
/lib
/wasm32-wasi
1251 override_dh_install
:
1252 ifeq (${POLLY_ENABLE},yes
)
1253 # only for arch:any builds
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
1256 # On old Debian & Ubuntu, removing the files is necessary
1257 rm -rf debian
/tmp
/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/cmake
/polly
/*.cmake
1259 rm -rf
$(CURDIR
)/debian
/tmp
/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/cmake
/polly
/*.cmake
1262 dh_install
--fail-missing
1263 # Move the libc++ abi files from libc++ to libc++-abi for the wasm32 packages
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
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
; \
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
1277 rm -fr
$(CURDIR
)/debian
/libclang-rt-
$(LLVM_VERSION
)-dev
/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/clang
/$(LLVM_VERSION
)/lib
/wasi
/
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
)
1287 override_dh_installdeb
: repack_a_llvm_ir
1288 # Managed by the package
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
1292 rm -f
$(CURDIR
)/debian
/clang-
$(LLVM_VERSION
)-examples
/usr
/share
/doc
/clang-
$(LLVM_VERSION
)-examples
/examples
/*Make
*
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
1297 rm -f
$(CURDIR
)/debian
/libclang-common-
$(LLVM_VERSION
)-dev
/usr
/lib
/llvm-
$(LLVM_VERSION
)/lib
/clang
/$(LLVM_VERSION
)/include/omp
*.h
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
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
1305 ifeq (${RUN_TEST},yes
)
1306 # List of the archs we know we have 100 % tests working
1307 ARCH_LLVM_TEST_OK
:= i386 amd64
1309 override_dh_auto_test
:
1310 echo
"Running tests: $(RUN_TEST)"
1312 ifneq (,$(findstring $(DEB_HOST_ARCH
),$(ARCH_LLVM_TEST_OK
)))
1313 # logs the output to check-llvm_build_log.txt for validation through autopkgtest
1314 ninja
$(VERBOSE
) -C
$(TARGET_BUILD
) stage2-check-llvm | tee check-llvm_build_log.txt
1316 ninja
$(VERBOSE
) -C
$(TARGET_BUILD
) stage2-check-llvm || true
1320 ninja
$(VERBOSE
) -C
$(TARGET_BUILD
) stage2-check-clang || true
1322 # Clang extra tests (ex: clang-tidy)
1323 ninja
$(VERBOSE
) -C
$(TARGET_BUILD_STAGE2
) check-clang-tools || true
1326 ifeq (${LLD_ENABLE},yes
)
1327 ninja
$(VERBOSE
) -C
$(TARGET_BUILD_STAGE2
) check-lld || true
1331 ninja
$(VERBOSE
) -C
$(TARGET_BUILD_STAGE2
) check-sanitizer || true
1334 ninja
$(VERBOSE
) -C
$(TARGET_BUILD_STAGE2
) check-libcxx || true
1337 ninja
$(VERBOSE
) -C
$(TARGET_BUILD_STAGE2
) check-libcxxabi || true
1340 ifeq (,$(filter $(DEB_HOST_ARCH
), armel armhf i386 x32
))
1341 # Do not run MLIR test on i386 because of
1342 # https://github.com/llvm/llvm-project/issues/58357
1343 ninja
$(VERBOSE
) -C
$(TARGET_BUILD_STAGE2
) check-mlir || true
1347 ninja
$(VERBOSE
) -C libclc
/build
test || true
1350 ifeq (,$(filter $(DEB_HOST_ARCH
), $(LLDB_DISABLE_ARCHS
) armhf armel
))
1351 ifneq (,$(filter codecoverage
,$(DEB_BUILD_OPTIONS
)))
1352 # Create a symlink to run the testsuite: see https://bugs.archlinux.org/task/50759
1353 cd
$(CURDIR
)/$(TARGET_BUILD
)/lib
/python
*/*-packages
/; \
1354 if
test ! -e _lldb.so
; then \
1355 ln
-s lldb
/_lldb.so
; \
1357 if
test "$(CODECOVERAGE)" = "no"; then \
1358 LD_LIBRARY_PATH
=$$LD_LIBRARY_PATH:$(CURDIR
)/$(TARGET_BUILD
)/lib
/ ninja
$(VERBOSE
) -C
$(TARGET_BUILD
) check-lldb || true
; \
1360 # remove the workaround
1361 rm $(CURDIR
)/$(TARGET_BUILD
)/lib
/python
*/*-packages
/_lldb.so
1366 #ifeq (${POLLY_ENABLE},yes)
1367 # ninja -C $(TARGET_BUILD) check-polly || true
1370 # Managed by debian build system
1371 rm -f
$(CURDIR
)/$(TARGET_BUILD
)/lib
/python
*/*-packages
/lldb
/_lldb.so
1373 # The compression of the code coverage report is done in the
1374 # hook B21GetCoverageResults on the server
1375 if
test "$(CODECOVERAGE)" = "yes"; then \
1376 REPORT
=reports
/llvm-toolchain.
info; \
1377 mkdir
-p reports
/; \
1378 lcov
--directory
$(TARGET_BUILD
)/ --capture
--ignore-errors source
--output-file
$$REPORT; \
1379 lcov
--remove
$$REPORT "/usr*" -o
$$REPORT; \
1380 genhtml
-o reports
/coverage
--show-details
--highlight
--legend
$$REPORT; \
1381 chmod
0755 `find reports/coverage -type d`; \
1382 chmod
0644 `find reports/coverage -type f`; \
1385 override_dh_auto_test
:
1386 @echo
"Skipping tests"
1390 override_dh_gencontrol
: sccache-stats
1391 dh_gencontrol
-- $(control_vars
)
1394 override_dh_auto_clean
:
1395 rm -rf
$(TARGET_BUILD
) llvm
/docs
/_build
/ clang
/docs
/_build tools
/clang
/docs
/_html
/
1397 rm -rf cov-int
/ reports
/
1398 rm -f
`ls debian/*.in|grep -v control.in|sed -e "s|.in$$||g"`
1399 find utils
-name
'*.pyc' | xargs
-r
rm -f
1400 # Use -I because a test has a space in its name
1401 find lldb
/test -iname
'*.pyc' | xargs
-I
{} -r
rm -f
{}
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
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; \
1410 for f in debian
/*.in
; do \
1411 if
! echo
$$f|grep control
; then \
1412 f2
=$$(echo
$$f | sed
's/\.in$$//;s/X\.Y/$(LLVM_VERSION)/'); \
1416 if
test "$(SCAN_BUILD)" = "yes"; then \
1417 patch
-f
-R
-p1
< debian
/patches
/on-the-fly
/use-scan-build-runtimes.diff||true
; \
1419 : # for some reason, the docs are written to debian/usr and debian/man ...
1420 rm -rf debian
/usr debian
/man
1421 : # remove extra stamps
1422 rm -f debian-
*-build override_dh_auto_install sccache-stats build_doc
1424 .PHONY
: override_dh_strip preconfigure