Skip to content

Commit 3766b2c

Browse files
committed
Refactor package modules and download also LibXslt
1 parent f7ae5bc commit 3766b2c

File tree

13 files changed

+494
-291
lines changed

13 files changed

+494
-291
lines changed

.github/workflows/ci.yaml

Lines changed: 92 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ jobs:
143143
steps:
144144
- name: Install base dependencies
145145
run: |
146-
sudo apt-get update -y
146+
sudo apt-get update
147147
sudo apt-get -y install \
148148
build-essential \
149149
libssl-dev \
@@ -170,7 +170,6 @@ jobs:
170170
libxpm-dev \
171171
libtidy-dev \
172172
libargon2-dev \
173-
libxslt1-dev \
174173
libcapstone-dev \
175174
libedit-dev \
176175
libcdb-dev \
@@ -215,7 +214,7 @@ jobs:
215214
steps:
216215
- name: Install packages
217216
run: |
218-
sudo apt-get update -y
217+
sudo apt-get update
219218
sudo apt-get -y install \
220219
build-essential \
221220
freetds-dev \
@@ -268,6 +267,96 @@ jobs:
268267
cmake --preset conan
269268
cmake --build --preset conan -j
270269
270+
linux-vcpkg:
271+
runs-on: ubuntu-latest
272+
name: Downloading dependencies with vcpkg on Linux
273+
steps:
274+
- name: Install base dependencies
275+
run: |
276+
sudo apt-get update
277+
sudo apt-get -y install \
278+
build-essential \
279+
re2c \
280+
bison \
281+
libxml2-dev \
282+
libssl-dev \
283+
libpcre2-dev \
284+
libsqlite3-dev \
285+
libbz2-dev \
286+
libcurl4-openssl-dev \
287+
libdb5.3++-dev \
288+
libenchant-2-dev \
289+
libgmp-dev \
290+
libc-client-dev \
291+
libkrb5-dev \
292+
unixodbc-dev \
293+
freetds-dev \
294+
apache2-dev \
295+
firebird-dev \
296+
libsodium-dev \
297+
libicu-dev \
298+
libzip-dev \
299+
aspell \
300+
libaspell-dev \
301+
libavif-dev \
302+
libfreetype-dev \
303+
libjpeg-dev \
304+
libpng-dev \
305+
libwebp-dev \
306+
libxpm-dev \
307+
libonig-dev \
308+
libtidy-dev \
309+
libargon2-dev \
310+
libcapstone-dev \
311+
libedit-dev \
312+
libcdb-dev \
313+
liblmdb-dev \
314+
libqdbm-dev \
315+
libtokyocabinet-dev \
316+
libsnmp-dev \
317+
snmp \
318+
snmpd \
319+
snmp-mibs-downloader \
320+
libexpat1-dev \
321+
libacl1-dev \
322+
libapparmor-dev \
323+
libselinux1-dev \
324+
libsystemd-dev \
325+
libldap2-dev \
326+
libsasl2-dev \
327+
libpq-dev \
328+
libmm-dev \
329+
zlib1g-dev \
330+
libdmalloc-dev \
331+
dovecot-core \
332+
dovecot-pop3d \
333+
dovecot-imapd \
334+
sendmail;
335+
336+
- name: Install CMake
337+
uses: lukka/get-cmake@latest
338+
339+
- name: Install vcpkg
340+
run: |
341+
sudo apt update
342+
sudo apt install -y curl zip git
343+
curl --output vcpkg.tar.gz https://github.com/microsoft/vcpkg/archive/master.tar.gz
344+
sudo mkdir -p /opt/vcpkg
345+
sudo tar xf vcpkg.tar.gz --strip-components=1 -C /opt/vcpkg
346+
sudo /opt/vcpkg/bootstrap-vcpkg.sh
347+
sudo ln -s /opt/vcpkg/vcpkg /usr/local/bin/vcpkg
348+
sudo chmod a+x /usr/local/bin/vcpkg
349+
350+
- name: Checkout
351+
uses: actions/checkout@v4
352+
with:
353+
fetch-depth: 2
354+
355+
- name: Build and install
356+
run: |
357+
cmake --preset all-enabled
358+
cmake --build --preset all-enabled -j
359+
271360
windows:
272361
runs-on: windows-latest
273362
name: Windows

cmake/cmake/modules/FindLibXslt.cmake

Lines changed: 0 additions & 20 deletions
This file was deleted.

cmake/cmake/modules/PHP/Package/LibXml2.cmake

Lines changed: 38 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@ Basic usage:
2020
```cmake
2121
# CMakeLists.txt
2222
include(PHP/Package/LibXml2)
23+
php_package_libxml2()
2324
target_link_libraries(example PRIVATE LibXml2::LibXml2)
2425
```
2526
#]=============================================================================]
2627

2728
include(ExternalProject)
2829
include(FeatureSummary)
2930
include(FetchContent)
31+
include(PHP/Package/_Internal)
3032

3133
set_package_properties(
3234
LibXml2
@@ -41,44 +43,50 @@ set(PHP_LIBXML2_MIN_VERSION 2.9.0)
4143
# Download version when system dependency is not found.
4244
set(PHP_LIBXML2_DOWNLOAD_VERSION 2.14.5)
4345

44-
macro(php_package_libxml2_find)
45-
if(TARGET LibXml2::LibXml2)
46-
set(LibXml2_FOUND TRUE)
47-
get_property(LibXml2_DOWNLOADED GLOBAL PROPERTY _PHP_LibXml2_DOWNLOADED)
48-
else()
49-
# LibXml2 depends on ZLIB.
50-
include(PHP/Package/ZLIB)
46+
set(PHP_LIBXML2_URL https://github.com/GNOME/libxml2/archive/refs/tags/v${PHP_LIBXML2_DOWNLOAD_VERSION}.tar.gz)
5147

52-
find_package(LibXml2 ${PHP_LIBXML2_MIN_VERSION})
53-
54-
if(NOT LibXml2_FOUND)
55-
_php_package_libxml2_download()
56-
endif()
57-
endif()
58-
endmacro()
59-
60-
macro(_php_package_libxml2_download)
61-
message(STATUS "Downloading LibXml2 ${PHP_LIBXML2_DOWNLOAD_VERSION}")
48+
macro(php_package_libxml2)
49+
# LibXml2 depends on ZLIB.
50+
include(PHP/Package/ZLIB)
6251

6352
FetchContent_Declare(
6453
LibXml2
65-
URL https://github.com/GNOME/libxml2/archive/refs/tags/v${PHP_LIBXML2_DOWNLOAD_VERSION}.tar.gz
54+
URL ${PHP_LIBXML2_URL}
6655
SOURCE_SUBDIR non-existing
67-
OVERRIDE_FIND_PACKAGE
56+
FIND_PACKAGE_ARGS ${PHP_LIBXML2_MIN_VERSION}
6857
)
6958

70-
FetchContent_MakeAvailable(LibXml2)
59+
find_package(LibXml2 ${PHP_LIBXML2_MIN_VERSION})
60+
61+
if(PHP_USE_FETCHCONTENT)
62+
if(NOT LibXml2_FOUND)
63+
message(STATUS "Downloading ${PHP_LIBXML2_URL}")
64+
endif()
65+
66+
FetchContent_MakeAvailable(LibXml2)
67+
68+
if(NOT LibXml2_FOUND)
69+
_php_package_libxml2_init()
70+
endif()
71+
endif()
72+
73+
get_property(PHP_LIBXML2_DOWNLOADED GLOBAL PROPERTY _PHP_LIBXML2_DOWNLOADED)
74+
75+
if(PHP_LIBXML2_DOWNLOADED)
76+
set(LibXml2_VERSION ${PHP_LIBXML2_DOWNLOAD_VERSION})
77+
endif()
78+
endmacro()
7179

72-
set(options "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>")
73-
list(
74-
APPEND
80+
macro(_php_package_libxml2_init)
81+
set(
7582
options
76-
-DLIBXML2_WITH_PYTHON=OFF
77-
-DLIBXML2_WITH_LZMA=OFF
7883
-DBUILD_SHARED_LIBS=OFF
84+
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
85+
-DLIBXML2_WITH_LZMA=OFF
86+
-DLIBXML2_WITH_PYTHON=OFF
7987
)
8088

81-
if(ZLIB_DOWNLOADED)
89+
if(PHP_ZLIB_DOWNLOADED)
8290
ExternalProject_Get_Property(ZLIB INSTALL_DIR)
8391
list(APPEND options "-DZLIB_ROOT=${INSTALL_DIR}")
8492
endif()
@@ -119,30 +127,15 @@ macro(_php_package_libxml2_download)
119127
IMPORTED_LOCATION ${INSTALL_DIR}/lib/libxml2${CMAKE_STATIC_LIBRARY_SUFFIX}
120128
)
121129

122-
# Move dependency to PACKAGES_FOUND.
123-
block()
124-
set(package "LibXml2")
125-
get_property(packagesNotFound GLOBAL PROPERTY PACKAGES_NOT_FOUND)
126-
list(REMOVE_ITEM packagesNotFound ${package})
127-
set_property(GLOBAL PROPERTY PACKAGES_NOT_FOUND ${packagesNotFound})
128-
get_property(packagesFound GLOBAL PROPERTY PACKAGES_FOUND)
129-
list(FIND packagesFound ${package} found)
130-
if(found EQUAL -1)
131-
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND ${package})
132-
endif()
133-
endblock()
134-
135-
# Mark package as found.
136-
set(LibXml2_FOUND TRUE)
130+
php_package_mark_as_found(LibXml2)
137131

138132
define_property(
139133
GLOBAL
140-
PROPERTY _PHP_LibXml2_DOWNLOADED
134+
PROPERTY _PHP_LIBXML2_DOWNLOADED
141135
BRIEF_DOCS "Marker that LibXml2 library will be downloaded"
142136
)
143137

144-
set_property(GLOBAL PROPERTY _PHP_LibXml2_DOWNLOADED TRUE)
145-
set(Libxml2_DOWNLOADED TRUE)
138+
set_property(GLOBAL PROPERTY _PHP_LIBXML2_DOWNLOADED TRUE)
146139
endmacro()
147140

148-
php_package_libxml2_find()
141+
php_package_libxml2()

0 commit comments

Comments
 (0)