Bug 1963424 - Statically link libxml2 to clang on Linux too. r=firefox-build-system-reviewers,sergesanspaille

Differential Revision: https://phabricator.services.mozilla.com/D247549
This commit is contained in:
Mike Hommey
2025-05-07 01:05:32 +00:00
committed by mh@glandium.org
parent a0d57be908
commit 6f0f9df521
6 changed files with 92 additions and 38 deletions

View File

@@ -288,6 +288,13 @@ def build_one_stage(
# checks. # checks.
cmake_args += ["-DCAN_TARGET_i386=1"] cmake_args += ["-DCAN_TARGET_i386=1"]
cmake_args += ["-DLLVM_ENABLE_TERMINFO=OFF"] cmake_args += ["-DLLVM_ENABLE_TERMINFO=OFF"]
libxml2 = os.path.join(os.environ.get("MOZ_FETCHES_DIR", ""), "libxml2")
if os.path.exists(libxml2):
cmake_args += [
"-DLIBXML2_DEFINITIONS=-DLIBXML_STATIC",
f"-DLIBXML2_INCLUDE_DIR={libxml2}/include/libxml2",
f"-DLIBXML2_LIBRARIES={libxml2}/lib/libxml2.a",
]
if is_windows(target): if is_windows(target):
cmake_args.insert(-1, "-DLLVM_EXPORT_SYMBOLS_FOR_PLUGINS=ON") cmake_args.insert(-1, "-DLLVM_EXPORT_SYMBOLS_FOR_PLUGINS=ON")
cmake_args.insert(-1, "-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded") cmake_args.insert(-1, "-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded")

View File

@@ -235,6 +235,7 @@ linux64-clang-19-raw:
toolchain: toolchain:
- linux64-clang-19-stage1 - linux64-clang-19-stage1
- linux64-clang-19-profile - linux64-clang-19-profile
- linux64-libxml2
- linux64-toolchain-sysroot - linux64-toolchain-sysroot
linux64-clang-19: linux64-clang-19:
@@ -298,6 +299,7 @@ linux64-aarch64-clang-19-raw:
toolchain: toolchain:
- linux64-clang-19-stage1 - linux64-clang-19-stage1
- linux64-clang-19-profile - linux64-clang-19-profile
- linux64-aarch64-libxml2
- linux64-aarch64-toolchain-sysroot - linux64-aarch64-toolchain-sysroot
linux64-aarch64-clang-19: linux64-aarch64-clang-19:
@@ -886,6 +888,7 @@ linux64-clang-20-raw:
toolchain: toolchain:
- linux64-clang-20-stage1 - linux64-clang-20-stage1
- linux64-clang-20-profile - linux64-clang-20-profile
- linux64-libxml2
- linux64-toolchain-sysroot - linux64-toolchain-sysroot
linux64-clang-20: linux64-clang-20:
@@ -945,6 +948,7 @@ linux64-aarch64-clang-20-raw:
toolchain: toolchain:
- linux64-clang-20-stage1 - linux64-clang-20-stage1
- linux64-clang-20-profile - linux64-clang-20-profile
- linux64-aarch64-libxml2
- linux64-aarch64-toolchain-sysroot - linux64-aarch64-toolchain-sysroot
linux64-aarch64-clang-20: linux64-aarch64-clang-20:
@@ -1531,6 +1535,7 @@ linux64-clang-trunk-raw:
toolchain: toolchain:
- linux64-clang-trunk-stage1 - linux64-clang-trunk-stage1
- linux64-clang-trunk-profile - linux64-clang-trunk-profile
- linux64-libxml2
- linux64-toolchain-sysroot - linux64-toolchain-sysroot
linux64-clang-trunk: linux64-clang-trunk:
@@ -1596,6 +1601,7 @@ linux64-aarch64-clang-trunk-raw:
toolchain: toolchain:
- linux64-clang-trunk-stage1 - linux64-clang-trunk-stage1
- linux64-clang-trunk-profile - linux64-clang-trunk-profile
- linux64-aarch64-libxml2
- linux64-aarch64-toolchain-sysroot - linux64-aarch64-toolchain-sysroot
linux64-aarch64-clang-trunk: linux64-aarch64-clang-trunk:

View File

@@ -40,6 +40,7 @@ tasks-from:
- grcov.yml - grcov.yml
- hostutils.yml - hostutils.yml
- libunwind.yml - libunwind.yml
- libxml2.yml
- llvm-symbolizer.yml - llvm-symbolizer.yml
- macos-sdk.yml - macos-sdk.yml
- mingw.yml - mingw.yml

View File

@@ -0,0 +1,54 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
---
task-defaults:
worker-type: b-linux-gcp
worker:
max-run-time: 1800
description: "libxml2 toolchain build"
run:
script: build-libxml2.sh
toolchain-artifact: public/build/libxml2.tar.zst
fetches:
fetch:
- libxml2
toolchain:
- linux64-clang-toolchain
linux64-libxml2:
treeherder:
symbol: TL(libxml2)
run:
arguments: ['x86_64-unknown-linux-gnu']
fetches:
toolchain:
- linux64-toolchain-sysroot
linux64-aarch64-libxml2:
treeherder:
symbol: TLA64(libxml2)
run:
arguments: ['aarch64-unknown-linux-gnu']
fetches:
toolchain:
- linux64-aarch64-toolchain-sysroot
win64-libxml2:
treeherder:
symbol: TW64(libxml2)
run:
arguments: ['x86_64-pc-windows-msvc']
fetches:
toolchain:
- vs-toolchain
win64-aarch64-libxml2:
description: "libxml2 toolchain build"
treeherder:
symbol: TWA64(libxml2)
run:
arguments: ['aarch64-pc-windows-msvc']
fetches:
toolchain:
- vs-toolchain

View File

@@ -770,36 +770,6 @@ win64-cmake:
- linux64-clang-toolchain - linux64-clang-toolchain
- vs-toolchain - vs-toolchain
win64-libxml2:
description: "libxml2 toolchain build"
treeherder:
symbol: TW64(libxml2)
run:
script: build-libxml2.sh
arguments: ['x86_64-pc-windows-msvc']
toolchain-artifact: public/build/libxml2.tar.zst
fetches:
fetch:
- libxml2
toolchain:
- linux64-clang-toolchain
- vs-toolchain
win64-aarch64-libxml2:
description: "libxml2 toolchain build"
treeherder:
symbol: TWA64(libxml2)
run:
script: build-libxml2.sh
arguments: ['aarch64-pc-windows-msvc']
toolchain-artifact: public/build/libxml2.tar.zst
fetches:
fetch:
- libxml2
toolchain:
- linux64-clang-toolchain
- vs-toolchain
talos-pdfs: talos-pdfs:
description: "Gathers all the PDFs needed for the pdfpaint test" description: "Gathers all the PDFs needed for the pdfpaint test"
attributes: attributes:

View File

@@ -13,18 +13,34 @@ TARGET=${1?"First argument must be a valid value for CMAKE_C_COMPILER_TARGET"}
# actually need it, so just remove its creation. # actually need it, so just remove its creation.
sed -i /libxml2\\.rc/d CMakeLists.txt sed -i /libxml2\\.rc/d CMakeLists.txt
cmake \ case "$TARGET" in
*-pc-windows-msvc)
EXTRA_CMAKE_FLAGS="
-DCMAKE_C_COMPILER=clang-cl
-DCMAKE_LINKER=lld-link
-DCMAKE_MT=llvm-mt
-DCMAKE_C_FLAGS=\"-fuse-ld=lld -Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml -winsysroot $MOZ_FETCHES_DIR/vs\"
-DCMAKE_EXE_LINKER_FLAGS=\"-winsysroot:$MOZ_FETCHES_DIR/vs\"
-DCMAKE_SYSTEM_NAME=Windows
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
"
;;
*-unknown-linux-gnu)
EXTRA_CMAKE_FLAGS="
-DCMAKE_C_COMPILER=clang
-DCMAKE_LINKER=clang
-DCMAKE_C_FLAGS=\"-fuse-ld=lld --sysroot=$MOZ_FETCHES_DIR/sysroot\"
-DCMAKE_EXE_LINKER_FLAGS=\"--sysroot=$MOZ_FETCHES_DIR/sysroot\"
"
;;
esac
eval cmake \
-GNinja \ -GNinja \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=Off \ -DBUILD_SHARED_LIBS=Off \
-DCMAKE_C_COMPILER=clang-cl \
-DCMAKE_C_COMPILER_TARGET=$TARGET \ -DCMAKE_C_COMPILER_TARGET=$TARGET \
-DCMAKE_LINKER=lld-link \ $EXTRA_CMAKE_FLAGS \
-DCMAKE_MT=llvm-mt \
-DCMAKE_C_FLAGS="-fuse-ld=lld -Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml -winsysroot $MOZ_FETCHES_DIR/vs" \
-DCMAKE_EXE_LINKER_FLAGS="-winsysroot:$MOZ_FETCHES_DIR/vs" \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded \
-DLIBXML2_WITH_C14N=OFF \ -DLIBXML2_WITH_C14N=OFF \
-DLIBXML2_WITH_CATALOG=OFF \ -DLIBXML2_WITH_CATALOG=OFF \
-DLIBXML2_WITH_DEBUG=OFF \ -DLIBXML2_WITH_DEBUG=OFF \