@@ -20,13 +20,15 @@ Basic usage:
20
20
```cmake
21
21
# CMakeLists.txt
22
22
include(PHP/Package/LibXml2)
23
+ php_package_libxml2()
23
24
target_link_libraries(example PRIVATE LibXml2::LibXml2)
24
25
```
25
26
#]=============================================================================]
26
27
27
28
include (ExternalProject)
28
29
include (FeatureSummary)
29
30
include (FetchContent)
31
+ include (PHP/Package/_Internal)
30
32
31
33
set_package_properties(
32
34
LibXml2
@@ -41,44 +43,50 @@ set(PHP_LIBXML2_MIN_VERSION 2.9.0)
41
43
# Download version when system dependency is not found.
42
44
set (PHP_LIBXML2_DOWNLOAD_VERSION 2.14.5)
43
45
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)
51
47
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)
62
51
63
52
FetchContent_Declare(
64
53
LibXml2
65
- URL https://github.com/GNOME/libxml2/archive/refs/tags/v ${PHP_LIBXML2_DOWNLOAD_VERSION} .tar.gz
54
+ URL ${PHP_LIBXML2_URL}
66
55
SOURCE_SUBDIR non-existing
67
- OVERRIDE_FIND_PACKAGE
56
+ FIND_PACKAGE_ARGS ${PHP_LIBXML2_MIN_VERSION}
68
57
)
69
58
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 ()
71
79
72
- set (options "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>" )
73
- list (
74
- APPEND
80
+ macro (_php_package_libxml2_init)
81
+ set (
75
82
options
76
- -DLIBXML2_WITH_PYTHON=OFF
77
- -DLIBXML2_WITH_LZMA=OFF
78
83
-DBUILD_SHARED_LIBS=OFF
84
+ -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
85
+ -DLIBXML2_WITH_LZMA=OFF
86
+ -DLIBXML2_WITH_PYTHON=OFF
79
87
)
80
88
81
- if (ZLIB_DOWNLOADED )
89
+ if (PHP_ZLIB_DOWNLOADED )
82
90
ExternalProject_Get_Property(ZLIB INSTALL_DIR)
83
91
list (APPEND options "-DZLIB_ROOT=${INSTALL_DIR} " )
84
92
endif ()
@@ -119,30 +127,15 @@ macro(_php_package_libxml2_download)
119
127
IMPORTED_LOCATION ${INSTALL_DIR} /lib/libxml2${CMAKE_STATIC_LIBRARY_SUFFIX}
120
128
)
121
129
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)
137
131
138
132
define_property (
139
133
GLOBAL
140
- PROPERTY _PHP_LibXml2_DOWNLOADED
134
+ PROPERTY _PHP_LIBXML2_DOWNLOADED
141
135
BRIEF_DOCS "Marker that LibXml2 library will be downloaded"
142
136
)
143
137
144
- set_property (GLOBAL PROPERTY _PHP_LibXml2_DOWNLOADED TRUE )
145
- set (Libxml2_DOWNLOADED TRUE )
138
+ set_property (GLOBAL PROPERTY _PHP_LIBXML2_DOWNLOADED TRUE )
146
139
endmacro ()
147
140
148
- php_package_libxml2_find ()
141
+ php_package_libxml2 ()
0 commit comments