libxml2: build with cmake's ninja generator on Windows

A: ninja can make use of ccache out of the box
B: ninja participates in the toplevel make job server

The target architecture now comes from the compiler configure selected
instead of the generator's -A.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I86951768ae42a6684b80298ff149af6c8d8d7fb7
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10654
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 29fc77fea92e28dc007781d7f728b67f5b55c58b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210984
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
This commit is contained in:
Caolán McNamara
2026-09-17 09:02:04 +02:00
committed by Xisco Fauli
parent 7f398acee4
commit e8e4c0a88f
6 changed files with 22 additions and 16 deletions
+1 -1
View File
@@ -4251,7 +4251,7 @@ gb_ExternalExecutable__register_xmllint :=
else # ! SYSTEM_LIBXML_FOR_BUILD
define gb_ExternalExecutable__register_xmllint
$(call gb_ExternalExecutable_set_internal,xmllint,$(WORKDIR_FOR_BUILD)/UnpackedTarball/libxml2/$(if $(filter MSC,$(COM)),$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release))/xmllint$(gb_Executable_EXT_for_build),libxml2)
$(call gb_ExternalExecutable_set_internal,xmllint,$(WORKDIR_FOR_BUILD)/UnpackedTarball/libxml2/xmllint$(gb_Executable_EXT_for_build),libxml2)
$(call gb_ExternalExecutable_add_dependencies,xmllint,\
$(if $(filter WNT,$(OS)),$(call gb_Package_get_target,icu_ure)) \
$(call gb_Package_get_target,libxml2) \
+7 -5
View File
@@ -1108,8 +1108,6 @@ cygwin*|wsl*)
DLLPOST=".dll"
LINKFLAGSNOUNDEFS=
# bypass check for ninja, it is not in default path, but it can be used nevertheless by default
NINJA="assumed to be available from Visual Studio"
if test "$host_cpu" = "aarch64"; then
build_skia=yes
@@ -4737,6 +4735,10 @@ if test "$_os" = "WINNT"; then
PathFormat "$VC_PRODUCT_DIR/../Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin/cmake.exe"
CMAKE="$formatted_path"
# Find the ninja that ships with Visual Studio, beside that cmake.
PathFormat "$VC_PRODUCT_DIR/../Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe"
NINJA="$formatted_path"
# Find the version of devenv.exe
PathFormat "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe"
DEVENV="$formatted_path"
@@ -10620,9 +10622,9 @@ else
fi
if test "$COM" = "MSC"; then
if test "$MSVC_USE_DEBUG_RUNTIME" = TRUE; then
LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/Debug/libxml2d.lib"
LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/libxml2d.lib"
else
LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/Release/libxml2.lib"
LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/libxml2.lib"
fi
else
LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
@@ -14999,7 +15001,7 @@ if test "$need_meson" = "yes"; then
fi
fi
if test -z "$NINJA" || test "$NINJA" = 'assumed to be available from Visual Studio'; then
if test -z "$NINJA"; then
x_NINJA=[\#]
else
x_NINJA=
+2 -2
View File
@@ -16,9 +16,9 @@ ifeq ($(OS),MACOSX)
$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2.16.dylib,.libs/libxml2.16.dylib))
else ifeq ($(OS),WNT)
ifeq ($(COM),GCC)
$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2$(if $(MSVC_USE_DEBUG_RUNTIME),d).dll,$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release)/libxml2$(if $(MSVC_USE_DEBUG_RUNTIME),d).dll))
$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2$(if $(MSVC_USE_DEBUG_RUNTIME),d).dll,libxml2$(if $(MSVC_USE_DEBUG_RUNTIME),d).dll))
else # COM=MSC
$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2$(if $(MSVC_USE_DEBUG_RUNTIME),d).dll,$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release)/libxml2$(if $(MSVC_USE_DEBUG_RUNTIME),d).dll))
$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2$(if $(MSVC_USE_DEBUG_RUNTIME),d).dll,libxml2$(if $(MSVC_USE_DEBUG_RUNTIME),d).dll))
endif
else # OS!=WNT
$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2.so.16,.libs/libxml2.so.16.1.$(LIBXML_VERSION_MICRO)))
+10 -6
View File
@@ -25,11 +25,15 @@ $(call gb_ExternalProject_use_external_project,libxml2,icu)
# workdir\UnpackedTarball\libxml2\version(1): error C2059: syntax error: 'constant
$(call gb_ExternalProject_get_state_target,libxml2,build):
$(call gb_Trace_StartRange,libxml2,EXTERNAL)
$(call gb_ExternalProject_run,build,\
$(CMAKE) . \
$(if $(filter 17.%,$(VCVER)),-G "Visual Studio 17 2022") \
$(if $(filter 18.%,$(VCVER)),-G "Visual Studio 18 2026") \
-A $(gb_MSBUILD_PLATFORM) \
+$(call gb_ExternalProject_run,build,\
export INCLUDE="$(gb_ExternalProject_INCLUDE)" \
&& export LIB="$(ILIB)" \
&& $(CMAKE) . \
-G Ninja \
-DCMAKE_MAKE_PROGRAM=$(NINJA) \
-DCMAKE_BUILD_TYPE=$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release) \
-DCMAKE_C_COMPILER=$(lastword $(filter-out -%,$(CC))) \
$(if $(CCACHE),-DCMAKE_C_COMPILER_LAUNCHER=$(CCACHE)) \
-DLIBXML2_WITH_TESTS=OFF \
-DLIBXML2_WITH_ICONV=OFF \
-DLIBXML2_WITH_PYTHON=OFF \
@@ -40,7 +44,7 @@ $(call gb_ExternalProject_get_state_target,libxml2,build):
$(if $(MSVC_USE_DEBUG_RUNTIME), \
-DICU_UC_LIBRARY_DEBUG=$(gb_UnpackedTarball_workdir)/icu/source/lib/icuucd.lib, \
-DICU_UC_LIBRARY_RELEASE=$(gb_UnpackedTarball_workdir)/icu/source/lib/icuuc.lib) \
&& $(CMAKE) --build . --config $(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release) \
&& $(CMAKE) --build . \
&& rm VERSION \
)
$(call gb_Trace_EndRange,libxml2,EXTERNAL)
+1 -1
View File
@@ -24,7 +24,7 @@ $(call gb_ExternalProject_get_state_target,libxslt,build):
$(if $(MSVC_USE_DEBUG_RUNTIME),cruntime=/MDd) \
$(if $(filter TRUE,$(ENABLE_DBGUTIL)),debug=yes) \
vcmanifest=yes \
lib=$(gb_UnpackedTarball_workdir)/libxml2/$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release) \
lib=$(gb_UnpackedTarball_workdir)/libxml2 \
&& nmake \
,win32)
$(call gb_Trace_EndRange,libxslt,EXTERNAL)
+1 -1
View File
@@ -33,7 +33,7 @@ $(call gb_ExternalProject_get_state_target,xmlsec,build) :
$(call gb_Trace_StartRange,xmlsec,EXTERNAL)
$(call gb_ExternalProject_run,build,\
cscript /e:javascript configure.js crypto=mscng xslt=no iconv=no static=no \
lib=$(gb_UnpackedTarball_workdir)/libxml2/$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release) \
lib=$(gb_UnpackedTarball_workdir)/libxml2 \
$(if $(filter TRUE,$(ENABLE_DBGUTIL)),debug=yes cruntime=/MDd) \
cflags="$(SOLARINC) $(LIBXML_CFLAGS)" \
&& nmake \