rename of cmake files
Eduard Kalinowski
6 years ago
48 | 48 | |
49 | 49 | SET(CURRENT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}) |
50 | 50 | |
51 | INCLUDE(HTTRAQTOutOfSourceBuild) # Disallow in-source builds | |
52 | INCLUDE(HTTRAQTGenerateDEF) # Convenience macro for linking Win32 DLLs using MSVC | |
53 | INCLUDE(HTTRAQTDependencies) | |
51 | INCLUDE(OutOfSourceBuild) # Disallow in-source builds | |
52 | INCLUDE(GenerateDEF) # Convenience macro for linking Win32 DLLs using MSVC | |
53 | INCLUDE(Dependencies) | |
54 | 54 | # INCLUDE(HTTRAQTWordSize) # Detect 32/64 bit platform |
55 | 55 | # INCLUDE(HTTRAQTCompiler) # Detect problematic compilers |
56 | 56 | |
147 | 147 | ENDIF() |
148 | 148 | |
149 | 149 | |
150 | INCLUDE(HTTRAQTFindHttrack) | |
150 | INCLUDE(FindHttrack) | |
151 | 151 | |
152 | 152 | SET( HTTRACK_INCLUDES_DIR "" ) |
153 | 153 | |
275 | 275 | # HTTRAQT_CHECK_OPTIONAL_DEPENDENCY(HTTRAQT_BUILD_3DS_IO_MODULE HTTRAQT_3DS_FOUND "lib3ds") |
276 | 276 | |
277 | 277 | # Capture system configuration |
278 | INCLUDE(HTTRAQTSystemConfiguration) | |
278 | INCLUDE(SystemConfiguration) | |
279 | 279 | |
280 | 280 | # Win32 configuration |
281 | 281 | IF(WIN32) |
0 | SET(HTTRAQT_REQUIRED_LIBRARIES) | |
1 | ||
2 | SET(HTTRAQT_OPTIONAL_LIBRARY_CONFIGURATIONS) | |
3 | SET(HTTRAQT_OPTIONAL_LIBRARIES) | |
4 | ||
5 | MACRO(HTTRAQT_CHECK_REQUIRED_DEPENDENCY FOUND LIBRARY URLS DESCRIPTION) | |
6 | LIST(APPEND HTTRAQT_REQUIRED_LIBRARIES ${LIBRARY}) | |
7 | IF(NOT ${FOUND}) | |
8 | SET(MESSAGE_TEXT "Couldn't find ${LIBRARY}, which is required to build HTTraQt.") | |
9 | SET(MESSAGE_TEXT "${MESSAGE_TEXT} You can obtain ${LIBRARY} from") | |
10 | SET(DELIMITER "") | |
11 | FOREACH(URL ${URLS}) | |
12 | SET(MESSAGE_TEXT "${MESSAGE_TEXT} ${DELIMITER} ${URL}") | |
13 | SET(DELIMITER "or") | |
14 | ENDFOREACH() | |
15 | SET(MESSAGE_TEXT "${MESSAGE_TEXT}.") | |
16 | SET(MESSAGE_TEXT "${MESSAGE_TEXT} ${DESCRIPTION}") | |
17 | MESSAGE(SEND_ERROR "${MESSAGE_TEXT}") | |
18 | ENDIF(NOT ${FOUND}) | |
19 | ENDMACRO(HTTRAQT_CHECK_REQUIRED_DEPENDENCY) | |
20 | ||
21 | MACRO(HTTRAQT_CHECK_OPTIONAL_DEPENDENCY CONFIG FOUND LIBRARY) | |
22 | LIST(APPEND HTTRAQT_OPTIONAL_LIBRARY_CONFIGURATIONS ${CONFIG}) | |
23 | LIST(APPEND HTTRAQT_OPTIONAL_LIBRARIES ${LIBRARY}) | |
24 | ||
25 | IF(${CONFIG}) | |
26 | IF(NOT ${FOUND}) | |
27 | MESSAGE(SEND_ERROR "Couldn't find the ${LIBRARY} library, which is required by ${CONFIG}.") | |
28 | ENDIF(NOT ${FOUND}) | |
29 | ENDIF(${CONFIG}) | |
30 | ENDMACRO(HTTRAQT_CHECK_OPTIONAL_DEPENDENCY) | |
31 | ||
32 | MACRO(HTTRAQT_CHECK_NGUI_DEPENDENCY CONFIG) | |
33 | IF(${CONFIG} AND NOT HTTRAQT_BUILD_NGUI_MODULE) | |
34 | MESSAGE(SEND_ERROR "HTTRAQT_BUILD_NGUI_MODULE is required by ${CONFIG}.") | |
35 | ENDIF(${CONFIG} AND NOT HTTRAQT_BUILD_NGUI_MODULE) | |
36 | ENDMACRO(HTTRAQT_CHECK_NGUI_DEPENDENCY) | |
37 | ||
38 | MACRO(HTTRAQT_CONDITIONAL_BUILD BUILD_OPTION BUILD_DIRECTORY) | |
39 | IF(${BUILD_OPTION}) | |
40 | ADD_SUBDIRECTORY(${BUILD_DIRECTORY}) | |
41 | ENDIF(${BUILD_OPTION}) | |
42 | ENDMACRO(HTTRAQT_CONDITIONAL_BUILD) | |
43 | ||
44 | MACRO(HTTRAQT_ADD_LIBRARY LIBRARY_NAME) | |
45 | ADD_LIBRARY(${LIBRARY_NAME} ${ARGN}) | |
46 | SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES VERSION "${HTTRAQT_SO_VERSION}") | |
47 | ENDMACRO() | |
48 |
0 | SET(HTTRAQT_HTTRACK_FOUND 0) | |
1 | ||
2 | # INCLUDE(HTTRAQTFindPkgConfig) | |
3 | # PKG_CHECK_MODULES(HTTRACK libhttrack2) | |
4 | ||
5 | ||
6 | SET ( HT_DIR "/usr/include/httrack/" ) | |
7 | IF(EXISTS "${HT_DIR}" AND IS_DIRECTORY "${HT_DIR}") | |
8 | SET ( HTTRACK_INCLUDES_DIR "${HT_DIR}" ) | |
9 | INCLUDE_DIRECTORIES(${HTTRACK_INCLUDES_DIR}) | |
10 | ELSE() | |
11 | SET ( HT_DIR "/usr/local/include/httrack/" ) | |
12 | IF(EXISTS "${HT_DIR}" AND IS_DIRECTORY "${HT_DIR}") | |
13 | SET ( HTTRACK_INCLUDES_DIR "${HT_DIR}" ) | |
14 | INCLUDE_DIRECTORIES(${HTTRACK_INCLUDES_DIR}) | |
15 | ENDIF() | |
16 | ENDIF() | |
17 | ||
18 | ||
19 | IF( NOT HTTRACK_INCLUDES_DIR ) | |
20 | MESSAGE(FATAL_ERROR "Please INSTALL the httrack, httrack-dev packages and try again") | |
21 | # RETURN() | |
22 | ELSE() | |
23 | SET (HTTRACK_FOUND 1) | |
24 | ENDIF() | |
25 | ||
26 | MESSAGE("httrack header directory found: " ${HTTRACK_INCLUDES_DIR}) | |
27 | ||
28 | FIND_LIBRARY( | |
29 | HTTRACK_LIBRARY NAMES httrack libhttrack.lib | |
30 | PATHS /usr/local/lib /usr/lib | |
31 | HINTS ${httrack_dirs1} ${httrack_dirs2} ${STAGING_LIBS_DIR} | |
32 | DOC "Path to httrack library." | |
33 | ) | |
34 | ||
35 | IF(NOT HTTRACK_LIBRARY) | |
36 | MESSAGE( | |
37 | FATAL_ERROR | |
38 | "Could not find httrack library.\n" | |
39 | "You may need to INSTALL a package named libhttrack-dev or similarly." | |
40 | ) | |
41 | ENDIF() | |
42 | ||
43 | IF(HTTRACK_FOUND) | |
44 | SET(HTTRAQT_HTTRACK_INCLUDE_DIRS | |
45 | ${HTTRACK_INCLUDES_DIR} | |
46 | ) | |
47 | ||
48 | SET(HTTRAQT_HTTRACK_LIB_DIRS | |
49 | ${HTTRACK_LIBRARY_DIRS} | |
50 | ) | |
51 | ||
52 | SET(HTTRAQT_HTTRACK_LIBS | |
53 | ${HTTRACK_LIBRARIES} | |
54 | ) | |
55 | ||
56 | SET(HTTRAQT_HTTRACK_FOUND 1) | |
57 | ENDIF(HTTRACK_FOUND) |
0 | # - a pkg-config module for CMake | |
1 | # | |
2 | # Usage: | |
3 | # pkg_check_modules(<PREFIX> [REQUIRED] <MODULE> [<MODULE>]*) | |
4 | # checks for all the given modules | |
5 | # | |
6 | # pkg_search_module(<PREFIX> [REQUIRED] <MODULE> [<MODULE>]*) | |
7 | # checks for given modules and uses the first working one | |
8 | # | |
9 | # When the 'REQUIRED' argument was set, macros will fail with an error | |
10 | # when module(s) could not be found | |
11 | # | |
12 | # It sets the following variables: | |
13 | # PKG_CONFIG_FOUND ... true iff pkg-config works on the system | |
14 | # PKG_CONFIG_EXECUTABLE ... pathname of the pkg-config program | |
15 | # <PREFIX>_FOUND ... set to 1 iff module(s) exist | |
16 | # | |
17 | # For the following variables two sets of values exist; first one is the | |
18 | # common one and has the given PREFIX. The second set contains flags | |
19 | # which are given out when pkgconfig was called with the '--static' | |
20 | # option. | |
21 | # <XPREFIX>_LIBRARIES ... only the libraries (w/o the '-l') | |
22 | # <XPREFIX>_LIBRARY_DIRS ... the paths of the libraries (w/o the '-L') | |
23 | # <XPREFIX>_LDFLAGS ... all required linker flags | |
24 | # <XPREFIX>_LDFLAGS_OTHERS ... all other linker flags | |
25 | # <XPREFIX>_INCLUDE_DIRS ... the '-I' preprocessor flags (w/o the '-I') | |
26 | # <XPREFIX>_CFLAGS ... all required cflags | |
27 | # <XPREFIX>_CFLAGS_OTHERS ... the other compiler flags | |
28 | # | |
29 | # <XPREFIX> = <PREFIX> for common case | |
30 | # <XPREFIX> = <PREFIX>_STATIC for static linking | |
31 | # | |
32 | # There are some special variables whose prefix depends on the count | |
33 | # of given modules. When there is only one module, <PREFIX> stays | |
34 | # unchanged. When there are multiple modules, the prefix will be | |
35 | # changed to <PREFIX>_<MODNAME>: | |
36 | # <XPREFIX>_VERSION ... version of the module | |
37 | # <XPREFIX>_PREFIX ... prefix-directory of the module | |
38 | # <XPREFIX>_INCLUDEDIR ... include-dir of the module | |
39 | # <XPREFIX>_LIBDIR ... lib-dir of the module | |
40 | # | |
41 | # <XPREFIX> = <PREFIX> when |MODULES| == 1, else | |
42 | # <XPREFIX> = <PREFIX>_<MODNAME> | |
43 | # | |
44 | # A <MODULE> parameter can have the following formats: | |
45 | # {MODNAME} ... matches any version | |
46 | # {MODNAME}>={VERSION} ... at least version <VERSION> is required | |
47 | # {MODNAME}={VERSION} ... exactly version <VERSION> is required | |
48 | # {MODNAME}<={VERSION} ... modules must not be newer than <VERSION> | |
49 | # | |
50 | # Examples | |
51 | # pkg_check_modules (GLIB2 glib-2.0) | |
52 | # | |
53 | # pkg_check_modules (GLIB2 glib-2.0>=2.10) | |
54 | # requires at least version 2.10 of glib2 and defines e.g. | |
55 | # GLIB2_VERSION=2.10.3 | |
56 | # | |
57 | # pkg_check_modules (FOO glib-2.0>=2.10 gtk+-2.0) | |
58 | # requires both glib2 and gtk2, and defines e.g. | |
59 | # FOO_glib-2.0_VERSION=2.10.3 | |
60 | # FOO_gtk+-2.0_VERSION=2.8.20 | |
61 | # | |
62 | # pkg_check_modules (XRENDER REQUIRED xrender) | |
63 | # defines e.g.: | |
64 | # XRENDER_LIBRARIES=Xrender;X11 | |
65 | # XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp | |
66 | # | |
67 | # pkg_search_module (BAR libxml-2.0 libxml2 libxml>=2) | |
68 | ||
69 | ||
70 | # Copyright (C) 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> | |
71 | # | |
72 | # Redistribution and use, with or without modification, are permitted | |
73 | # provided that the following conditions are met: | |
74 | # | |
75 | # 1. Redistributions must retain the above copyright notice, this | |
76 | # list of conditions and the following disclaimer. | |
77 | # 2. The name of the author may not be used to endorse or promote | |
78 | # products derived from this software without specific prior | |
79 | # written permission. | |
80 | # | |
81 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | |
82 | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
83 | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
84 | # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | |
85 | # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
86 | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE | |
87 | # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
88 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |
89 | # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | |
90 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN | |
91 | # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
92 | ||
93 | ||
94 | ### Common stuff #### | |
95 | set(PKG_CONFIG_VERSION 1) | |
96 | set(PKG_CONFIG_FOUND 0) | |
97 | ||
98 | find_program(PKG_CONFIG_EXECUTABLE NAMES pkg-config DOC "pkg-config executable") | |
99 | mark_as_advanced(PKG_CONFIG_EXECUTABLE) | |
100 | ||
101 | if(PKG_CONFIG_EXECUTABLE) | |
102 | set(PKG_CONFIG_FOUND 1) | |
103 | endif(PKG_CONFIG_EXECUTABLE) | |
104 | ||
105 | ||
106 | # Unsets the given variables | |
107 | macro(_pkgconfig_unset var) | |
108 | set(${var} "" CACHE INTERNAL "") | |
109 | endmacro(_pkgconfig_unset) | |
110 | ||
111 | macro(_pkgconfig_set var value) | |
112 | set(${var} ${value} CACHE INTERNAL "") | |
113 | endmacro(_pkgconfig_set) | |
114 | ||
115 | # Invokes pkgconfig, cleans up the result and sets variables | |
116 | macro(_pkgconfig_invoke _pkglist _prefix _varname _regexp) | |
117 | set(_pkgconfig_invoke_result) | |
118 | ||
119 | execute_process( | |
120 | COMMAND ${PKG_CONFIG_EXECUTABLE} ${ARGN} ${_pkglist} | |
121 | OUTPUT_VARIABLE _pkgconfig_invoke_result | |
122 | RESULT_VARIABLE _pkgconfig_failed) | |
123 | ||
124 | if (_pkgconfig_failed) | |
125 | set(_pkgconfig_${_varname} "") | |
126 | _pkgconfig_unset(${_prefix}_${_varname}) | |
127 | else(_pkgconfig_failed) | |
128 | string(REGEX REPLACE "[\r\n]" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}") | |
129 | string(REGEX REPLACE " +$" "" _pkgconfig_invoke_result "${_pkgconfig_invoke_result}") | |
130 | ||
131 | if (NOT ${_regexp} STREQUAL "") | |
132 | string(REGEX REPLACE "${_regexp}" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}") | |
133 | endif(NOT ${_regexp} STREQUAL "") | |
134 | ||
135 | separate_arguments(_pkgconfig_invoke_result) | |
136 | ||
137 | #message(STATUS " ${_varname} ... ${_pkgconfig_invoke_result}") | |
138 | set(_pkgconfig_${_varname} ${_pkgconfig_invoke_result}) | |
139 | _pkgconfig_set(${_prefix}_${_varname} "${_pkgconfig_invoke_result}") | |
140 | endif(_pkgconfig_failed) | |
141 | endmacro(_pkgconfig_invoke) | |
142 | ||
143 | # Invokes pkgconfig two times; once without '--static' and once with | |
144 | # '--static' | |
145 | macro(_pkgconfig_invoke_dyn _pkglist _prefix _varname cleanup_regexp) | |
146 | _pkgconfig_invoke("${_pkglist}" ${_prefix} ${_varname} "${cleanup_regexp}" ${ARGN}) | |
147 | _pkgconfig_invoke("${_pkglist}" ${_prefix} STATIC_${_varname} "${cleanup_regexp}" --static ${ARGN}) | |
148 | endmacro(_pkgconfig_invoke_dyn) | |
149 | ||
150 | # Splits given arguments into options and a package list | |
151 | macro(_pkgconfig_parse_options _result _is_req) | |
152 | set(${_is_req} 0) | |
153 | ||
154 | foreach(_pkg ${ARGN}) | |
155 | if (_pkg STREQUAL "REQUIRED") | |
156 | set(${_is_req} 1) | |
157 | endif (_pkg STREQUAL "REQUIRED") | |
158 | endforeach(_pkg ${ARGN}) | |
159 | ||
160 | set(${_result} ${ARGN}) | |
161 | list(REMOVE_ITEM ${_result} "REQUIRED") | |
162 | endmacro(_pkgconfig_parse_options) | |
163 | ||
164 | ### | |
165 | macro(_pkg_check_modules_internal _is_required _is_silent _prefix) | |
166 | _pkgconfig_unset(${_prefix}_FOUND) | |
167 | _pkgconfig_unset(${_prefix}_VERSION) | |
168 | _pkgconfig_unset(${_prefix}_PREFIX) | |
169 | _pkgconfig_unset(${_prefix}_INCLUDEDIR) | |
170 | _pkgconfig_unset(${_prefix}_LIBDIR) | |
171 | _pkgconfig_unset(${_prefix}_LIBS) | |
172 | _pkgconfig_unset(${_prefix}_LIBS_L) | |
173 | _pkgconfig_unset(${_prefix}_LIBS_PATHS) | |
174 | _pkgconfig_unset(${_prefix}_LIBS_OTHER) | |
175 | _pkgconfig_unset(${_prefix}_CFLAGS) | |
176 | _pkgconfig_unset(${_prefix}_CFLAGS_I) | |
177 | _pkgconfig_unset(${_prefix}_CFLAGS_OTHER) | |
178 | _pkgconfig_unset(${_prefix}_STATIC_LIBDIR) | |
179 | _pkgconfig_unset(${_prefix}_STATIC_LIBS) | |
180 | _pkgconfig_unset(${_prefix}_STATIC_LIBS_L) | |
181 | _pkgconfig_unset(${_prefix}_STATIC_LIBS_PATHS) | |
182 | _pkgconfig_unset(${_prefix}_STATIC_LIBS_OTHER) | |
183 | _pkgconfig_unset(${_prefix}_STATIC_CFLAGS) | |
184 | _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_I) | |
185 | _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_OTHER) | |
186 | ||
187 | # create a better addressable variable of the modules and calculate its size | |
188 | set(_pkg_check_modules_list ${ARGN}) | |
189 | list(LENGTH _pkg_check_modules_list _pkg_check_modules_cnt) | |
190 | ||
191 | if(PKG_CONFIG_EXECUTABLE) | |
192 | # give out status message telling checked module | |
193 | if (NOT ${_is_silent}) | |
194 | if (_pkg_check_modules_cnt EQUAL 1) | |
195 | message(STATUS "checking for module '${_pkg_check_modules_list}'") | |
196 | else(_pkg_check_modules_cnt EQUAL 1) | |
197 | message(STATUS "checking for modules '${_pkg_check_modules_list}'") | |
198 | endif(_pkg_check_modules_cnt EQUAL 1) | |
199 | endif(NOT ${_is_silent}) | |
200 | ||
201 | set(_pkg_check_modules_packages) | |
202 | set(_pkg_check_modules_failed) | |
203 | ||
204 | # iterate through module list and check whether they exist and match the required version | |
205 | foreach (_pkg_check_modules_pkg ${_pkg_check_modules_list}) | |
206 | set(_pkg_check_modules_exist_query) | |
207 | ||
208 | # check whether version is given | |
209 | if (_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*") | |
210 | string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\1" _pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}") | |
211 | string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\2" _pkg_check_modules_pkg_op "${_pkg_check_modules_pkg}") | |
212 | string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\3" _pkg_check_modules_pkg_ver "${_pkg_check_modules_pkg}") | |
213 | else(_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*") | |
214 | set(_pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}") | |
215 | set(_pkg_check_modules_pkg_op) | |
216 | set(_pkg_check_modules_pkg_ver) | |
217 | endif(_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*") | |
218 | ||
219 | # handle the operands | |
220 | if (_pkg_check_modules_pkg_op STREQUAL ">=") | |
221 | list(APPEND _pkg_check_modules_exist_query --atleast-version) | |
222 | endif(_pkg_check_modules_pkg_op STREQUAL ">=") | |
223 | ||
224 | if (_pkg_check_modules_pkg_op STREQUAL "=") | |
225 | list(APPEND _pkg_check_modules_exist_query --exact-version) | |
226 | endif(_pkg_check_modules_pkg_op STREQUAL "=") | |
227 | ||
228 | if (_pkg_check_modules_pkg_op STREQUAL "<=") | |
229 | list(APPEND _pkg_check_modules_exist_query --max-version) | |
230 | endif(_pkg_check_modules_pkg_op STREQUAL "<=") | |
231 | ||
232 | # create the final query which is of the format: | |
233 | # * --atleast-version <version> <pkg-name> | |
234 | # * --exact-version <version> <pkg-name> | |
235 | # * --max-version <version> <pkg-name> | |
236 | # * --exists <pkg-name> | |
237 | if (_pkg_check_modules_pkg_op) | |
238 | list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_ver}") | |
239 | else(_pkg_check_modules_pkg_op) | |
240 | list(APPEND _pkg_check_modules_exist_query --exists) | |
241 | endif(_pkg_check_modules_pkg_op) | |
242 | ||
243 | _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_VERSION) | |
244 | _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_PREFIX) | |
245 | _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_INCLUDEDIR) | |
246 | _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_LIBDIR) | |
247 | ||
248 | list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_name}") | |
249 | list(APPEND _pkg_check_modules_packages "${_pkg_check_modules_pkg_name}") | |
250 | ||
251 | # execute the query | |
252 | execute_process( | |
253 | COMMAND ${PKG_CONFIG_EXECUTABLE} ${_pkg_check_modules_exist_query} | |
254 | RESULT_VARIABLE _pkgconfig_retval) | |
255 | ||
256 | # evaluate result and tell failures | |
257 | if (_pkgconfig_retval) | |
258 | if(NOT ${_is_silent}) | |
259 | message(STATUS " package '${_pkg_check_modules_pkg}' not found") | |
260 | endif(NOT ${_is_silent}) | |
261 | ||
262 | set(_pkg_check_modules_failed 1) | |
263 | endif(_pkgconfig_retval) | |
264 | endforeach(_pkg_check_modules_pkg) | |
265 | ||
266 | if(_pkg_check_modules_failed) | |
267 | # fail when requested | |
268 | if (${_is_required}) | |
269 | message(SEND_ERROR "A required package was not found") | |
270 | endif (${_is_required}) | |
271 | else(_pkg_check_modules_failed) | |
272 | # when we are here, we checked whether requested modules | |
273 | # exist. Now, go through them and set variables | |
274 | ||
275 | _pkgconfig_set(${_prefix}_FOUND 1) | |
276 | list(LENGTH _pkg_check_modules_packages pkg_count) | |
277 | ||
278 | # iterate through all modules again and set individual variables | |
279 | foreach (_pkg_check_modules_pkg ${_pkg_check_modules_packages}) | |
280 | # handle case when there is only one package required | |
281 | if (pkg_count EQUAL 1) | |
282 | set(_pkg_check_prefix "${_prefix}") | |
283 | else(pkg_count EQUAL 1) | |
284 | set(_pkg_check_prefix "${_prefix}_${_pkg_check_modules_pkg}") | |
285 | endif(pkg_count EQUAL 1) | |
286 | ||
287 | _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" VERSION "" --modversion ) | |
288 | _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" PREFIX "" --variable=prefix ) | |
289 | _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" INCLUDEDIR "" --variable=includedir ) | |
290 | _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" LIBDIR "" --variable=libdir ) | |
291 | ||
292 | message(STATUS " found ${_pkg_check_modules_pkg}, version ${_pkgconfig_VERSION}") | |
293 | endforeach(_pkg_check_modules_pkg) | |
294 | ||
295 | # set variables which are combined for multiple modules | |
296 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARIES "(^| )-l" --libs-only-l ) | |
297 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARY_DIRS "(^| )-L" --libs-only-L ) | |
298 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS "" --libs ) | |
299 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS_OTHER "" --libs-only-other ) | |
300 | ||
301 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" INCLUDE_DIRS "(^| )-I" --cflags-only-I ) | |
302 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS "" --cflags ) | |
303 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS_OTHER "" --cflags-only-other ) | |
304 | endif(_pkg_check_modules_failed) | |
305 | else(PKG_CONFIG_EXECUTABLE) | |
306 | if (${_is_required}) | |
307 | message(SEND_ERROR "pkg-config tool not found") | |
308 | endif (${_is_required}) | |
309 | endif(PKG_CONFIG_EXECUTABLE) | |
310 | endmacro(_pkg_check_modules_internal) | |
311 | ||
312 | ### | |
313 | ### User visible macros start here | |
314 | ### | |
315 | ||
316 | ### | |
317 | macro(pkg_check_modules _prefix _module0) | |
318 | # check cached value | |
319 | # if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION}) | |
320 | _pkgconfig_parse_options (_pkg_modules _pkg_is_required "${_module0}" ${ARGN}) | |
321 | _pkg_check_modules_internal("${_pkg_is_required}" 0 "${_prefix}" ${_pkg_modules}) | |
322 | ||
323 | # _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION}) | |
324 | # endif(NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION}) | |
325 | endmacro(pkg_check_modules) | |
326 | ||
327 | ### | |
328 | macro(pkg_search_module _prefix _module0) | |
329 | # check cached value | |
330 | # if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION}) | |
331 | set(_pkg_modules_found 0) | |
332 | _pkgconfig_parse_options(_pkg_modules_alt _pkg_is_required "${_module0}" ${ARGN}) | |
333 | ||
334 | message(STATUS "checking for one of the modules '${_pkg_modules_alt}'") | |
335 | ||
336 | # iterate through all modules and stop at the first working one. | |
337 | foreach(_pkg_alt ${_pkg_modules_alt}) | |
338 | if(NOT _pkg_modules_found) | |
339 | _pkg_check_modules_internal(0 1 "${_prefix}" "${_pkg_alt}") | |
340 | endif(NOT _pkg_modules_found) | |
341 | ||
342 | if (${_prefix}_FOUND) | |
343 | set(_pkg_modules_found 1) | |
344 | endif(${_prefix}_FOUND) | |
345 | endforeach(_pkg_alt) | |
346 | ||
347 | if (NOT ${_prefix}_FOUND) | |
348 | if(${_pkg_is_required}) | |
349 | message(SEND_ERROR "None of the required '${_pkg_modules_alt}' found") | |
350 | endif(${_pkg_is_required}) | |
351 | endif(NOT ${_prefix}_FOUND) | |
352 | ||
353 | # _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION}) | |
354 | # endif(NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION}) | |
355 | endmacro(pkg_search_module) | |
356 | ||
357 | ### Local Variables: | |
358 | ### mode: cmake | |
359 | ### End: |
0 | MACRO(HTTRAQT_GENERATE_DEF_FILE TARGET_NAME) | |
1 | IF(MSVC) | |
2 | ADD_DEPENDENCIES(${TARGET_NAME} httraqt-gendef) | |
3 | GET_TARGET_PROPERTY(gendef_EXE httraqt-gendef LOCATION) | |
4 | ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} | |
5 | PRE_LINK | |
6 | COMMAND ${gendef_EXE} $(IntDir)\\$(InputName).def $(TargetFileName) $(IntDir)\\*.obj) | |
7 | SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES LINK_FLAGS "/DEF:$(IntDir)\\$(InputName).def") | |
8 | ENDIF(MSVC) | |
9 | ENDMACRO(HTTRAQT_GENERATE_DEF_FILE) | |
10 |
0 | SET(HTTRAQT_REQUIRED_LIBRARIES) | |
1 | ||
2 | SET(HTTRAQT_OPTIONAL_LIBRARY_CONFIGURATIONS) | |
3 | SET(HTTRAQT_OPTIONAL_LIBRARIES) | |
4 | ||
5 | MACRO(HTTRAQT_CHECK_REQUIRED_DEPENDENCY FOUND LIBRARY URLS DESCRIPTION) | |
6 | LIST(APPEND HTTRAQT_REQUIRED_LIBRARIES ${LIBRARY}) | |
7 | IF(NOT ${FOUND}) | |
8 | SET(MESSAGE_TEXT "Couldn't find ${LIBRARY}, which is required to build HTTraQt.") | |
9 | SET(MESSAGE_TEXT "${MESSAGE_TEXT} You can obtain ${LIBRARY} from") | |
10 | SET(DELIMITER "") | |
11 | FOREACH(URL ${URLS}) | |
12 | SET(MESSAGE_TEXT "${MESSAGE_TEXT} ${DELIMITER} ${URL}") | |
13 | SET(DELIMITER "or") | |
14 | ENDFOREACH() | |
15 | SET(MESSAGE_TEXT "${MESSAGE_TEXT}.") | |
16 | SET(MESSAGE_TEXT "${MESSAGE_TEXT} ${DESCRIPTION}") | |
17 | MESSAGE(SEND_ERROR "${MESSAGE_TEXT}") | |
18 | ENDIF(NOT ${FOUND}) | |
19 | ENDMACRO(HTTRAQT_CHECK_REQUIRED_DEPENDENCY) | |
20 | ||
21 | MACRO(HTTRAQT_CHECK_OPTIONAL_DEPENDENCY CONFIG FOUND LIBRARY) | |
22 | LIST(APPEND HTTRAQT_OPTIONAL_LIBRARY_CONFIGURATIONS ${CONFIG}) | |
23 | LIST(APPEND HTTRAQT_OPTIONAL_LIBRARIES ${LIBRARY}) | |
24 | ||
25 | IF(${CONFIG}) | |
26 | IF(NOT ${FOUND}) | |
27 | MESSAGE(SEND_ERROR "Couldn't find the ${LIBRARY} library, which is required by ${CONFIG}.") | |
28 | ENDIF(NOT ${FOUND}) | |
29 | ENDIF(${CONFIG}) | |
30 | ENDMACRO(HTTRAQT_CHECK_OPTIONAL_DEPENDENCY) | |
31 | ||
32 | MACRO(HTTRAQT_CHECK_NGUI_DEPENDENCY CONFIG) | |
33 | IF(${CONFIG} AND NOT HTTRAQT_BUILD_NGUI_MODULE) | |
34 | MESSAGE(SEND_ERROR "HTTRAQT_BUILD_NGUI_MODULE is required by ${CONFIG}.") | |
35 | ENDIF(${CONFIG} AND NOT HTTRAQT_BUILD_NGUI_MODULE) | |
36 | ENDMACRO(HTTRAQT_CHECK_NGUI_DEPENDENCY) | |
37 | ||
38 | MACRO(HTTRAQT_CONDITIONAL_BUILD BUILD_OPTION BUILD_DIRECTORY) | |
39 | IF(${BUILD_OPTION}) | |
40 | ADD_SUBDIRECTORY(${BUILD_DIRECTORY}) | |
41 | ENDIF(${BUILD_OPTION}) | |
42 | ENDMACRO(HTTRAQT_CONDITIONAL_BUILD) | |
43 | ||
44 | MACRO(HTTRAQT_ADD_LIBRARY LIBRARY_NAME) | |
45 | ADD_LIBRARY(${LIBRARY_NAME} ${ARGN}) | |
46 | SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES VERSION "${HTTRAQT_SO_VERSION}") | |
47 | ENDMACRO() | |
48 |
0 | SET(HTTRAQT_HTTRACK_FOUND 0) | |
1 | ||
2 | # INCLUDE(HTTRAQTFindPkgConfig) | |
3 | # PKG_CHECK_MODULES(HTTRACK libhttrack2) | |
4 | ||
5 | ||
6 | SET ( HT_DIR "/usr/include/httrack/" ) | |
7 | IF(EXISTS "${HT_DIR}" AND IS_DIRECTORY "${HT_DIR}") | |
8 | SET ( HTTRACK_INCLUDES_DIR "${HT_DIR}" ) | |
9 | INCLUDE_DIRECTORIES(${HTTRACK_INCLUDES_DIR}) | |
10 | ELSE() | |
11 | SET ( HT_DIR "/usr/local/include/httrack/" ) | |
12 | IF(EXISTS "${HT_DIR}" AND IS_DIRECTORY "${HT_DIR}") | |
13 | SET ( HTTRACK_INCLUDES_DIR "${HT_DIR}" ) | |
14 | INCLUDE_DIRECTORIES(${HTTRACK_INCLUDES_DIR}) | |
15 | ENDIF() | |
16 | ENDIF() | |
17 | ||
18 | ||
19 | IF( NOT HTTRACK_INCLUDES_DIR ) | |
20 | MESSAGE(FATAL_ERROR "Please INSTALL the httrack, httrack-dev packages and try again") | |
21 | # RETURN() | |
22 | ELSE() | |
23 | SET (HTTRACK_FOUND 1) | |
24 | ENDIF() | |
25 | ||
26 | MESSAGE("httrack header directory found: " ${HTTRACK_INCLUDES_DIR}) | |
27 | ||
28 | FIND_LIBRARY( | |
29 | HTTRACK_LIBRARY NAMES httrack libhttrack.lib | |
30 | PATHS /usr/local/lib /usr/lib | |
31 | HINTS ${httrack_dirs1} ${httrack_dirs2} ${STAGING_LIBS_DIR} | |
32 | DOC "Path to httrack library." | |
33 | ) | |
34 | ||
35 | IF(NOT HTTRACK_LIBRARY) | |
36 | MESSAGE( | |
37 | FATAL_ERROR | |
38 | "Could not find httrack library.\n" | |
39 | "You may need to INSTALL a package named libhttrack-dev or similarly." | |
40 | ) | |
41 | ENDIF() | |
42 | ||
43 | IF(HTTRACK_FOUND) | |
44 | SET(HTTRAQT_HTTRACK_INCLUDE_DIRS | |
45 | ${HTTRACK_INCLUDES_DIR} | |
46 | ) | |
47 | ||
48 | SET(HTTRAQT_HTTRACK_LIB_DIRS | |
49 | ${HTTRACK_LIBRARY_DIRS} | |
50 | ) | |
51 | ||
52 | SET(HTTRAQT_HTTRACK_LIBS | |
53 | ${HTTRACK_LIBRARIES} | |
54 | ) | |
55 | ||
56 | SET(HTTRAQT_HTTRACK_FOUND 1) | |
57 | ENDIF(HTTRACK_FOUND) |
0 | # - a pkg-config module for CMake | |
1 | # | |
2 | # Usage: | |
3 | # pkg_check_modules(<PREFIX> [REQUIRED] <MODULE> [<MODULE>]*) | |
4 | # checks for all the given modules | |
5 | # | |
6 | # pkg_search_module(<PREFIX> [REQUIRED] <MODULE> [<MODULE>]*) | |
7 | # checks for given modules and uses the first working one | |
8 | # | |
9 | # When the 'REQUIRED' argument was set, macros will fail with an error | |
10 | # when module(s) could not be found | |
11 | # | |
12 | # It sets the following variables: | |
13 | # PKG_CONFIG_FOUND ... true iff pkg-config works on the system | |
14 | # PKG_CONFIG_EXECUTABLE ... pathname of the pkg-config program | |
15 | # <PREFIX>_FOUND ... set to 1 iff module(s) exist | |
16 | # | |
17 | # For the following variables two sets of values exist; first one is the | |
18 | # common one and has the given PREFIX. The second set contains flags | |
19 | # which are given out when pkgconfig was called with the '--static' | |
20 | # option. | |
21 | # <XPREFIX>_LIBRARIES ... only the libraries (w/o the '-l') | |
22 | # <XPREFIX>_LIBRARY_DIRS ... the paths of the libraries (w/o the '-L') | |
23 | # <XPREFIX>_LDFLAGS ... all required linker flags | |
24 | # <XPREFIX>_LDFLAGS_OTHERS ... all other linker flags | |
25 | # <XPREFIX>_INCLUDE_DIRS ... the '-I' preprocessor flags (w/o the '-I') | |
26 | # <XPREFIX>_CFLAGS ... all required cflags | |
27 | # <XPREFIX>_CFLAGS_OTHERS ... the other compiler flags | |
28 | # | |
29 | # <XPREFIX> = <PREFIX> for common case | |
30 | # <XPREFIX> = <PREFIX>_STATIC for static linking | |
31 | # | |
32 | # There are some special variables whose prefix depends on the count | |
33 | # of given modules. When there is only one module, <PREFIX> stays | |
34 | # unchanged. When there are multiple modules, the prefix will be | |
35 | # changed to <PREFIX>_<MODNAME>: | |
36 | # <XPREFIX>_VERSION ... version of the module | |
37 | # <XPREFIX>_PREFIX ... prefix-directory of the module | |
38 | # <XPREFIX>_INCLUDEDIR ... include-dir of the module | |
39 | # <XPREFIX>_LIBDIR ... lib-dir of the module | |
40 | # | |
41 | # <XPREFIX> = <PREFIX> when |MODULES| == 1, else | |
42 | # <XPREFIX> = <PREFIX>_<MODNAME> | |
43 | # | |
44 | # A <MODULE> parameter can have the following formats: | |
45 | # {MODNAME} ... matches any version | |
46 | # {MODNAME}>={VERSION} ... at least version <VERSION> is required | |
47 | # {MODNAME}={VERSION} ... exactly version <VERSION> is required | |
48 | # {MODNAME}<={VERSION} ... modules must not be newer than <VERSION> | |
49 | # | |
50 | # Examples | |
51 | # pkg_check_modules (GLIB2 glib-2.0) | |
52 | # | |
53 | # pkg_check_modules (GLIB2 glib-2.0>=2.10) | |
54 | # requires at least version 2.10 of glib2 and defines e.g. | |
55 | # GLIB2_VERSION=2.10.3 | |
56 | # | |
57 | # pkg_check_modules (FOO glib-2.0>=2.10 gtk+-2.0) | |
58 | # requires both glib2 and gtk2, and defines e.g. | |
59 | # FOO_glib-2.0_VERSION=2.10.3 | |
60 | # FOO_gtk+-2.0_VERSION=2.8.20 | |
61 | # | |
62 | # pkg_check_modules (XRENDER REQUIRED xrender) | |
63 | # defines e.g.: | |
64 | # XRENDER_LIBRARIES=Xrender;X11 | |
65 | # XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp | |
66 | # | |
67 | # pkg_search_module (BAR libxml-2.0 libxml2 libxml>=2) | |
68 | ||
69 | ||
70 | # Copyright (C) 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> | |
71 | # | |
72 | # Redistribution and use, with or without modification, are permitted | |
73 | # provided that the following conditions are met: | |
74 | # | |
75 | # 1. Redistributions must retain the above copyright notice, this | |
76 | # list of conditions and the following disclaimer. | |
77 | # 2. The name of the author may not be used to endorse or promote | |
78 | # products derived from this software without specific prior | |
79 | # written permission. | |
80 | # | |
81 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | |
82 | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
83 | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
84 | # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | |
85 | # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
86 | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE | |
87 | # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
88 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |
89 | # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | |
90 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN | |
91 | # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
92 | ||
93 | ||
94 | ### Common stuff #### | |
95 | set(PKG_CONFIG_VERSION 1) | |
96 | set(PKG_CONFIG_FOUND 0) | |
97 | ||
98 | find_program(PKG_CONFIG_EXECUTABLE NAMES pkg-config DOC "pkg-config executable") | |
99 | mark_as_advanced(PKG_CONFIG_EXECUTABLE) | |
100 | ||
101 | if(PKG_CONFIG_EXECUTABLE) | |
102 | set(PKG_CONFIG_FOUND 1) | |
103 | endif(PKG_CONFIG_EXECUTABLE) | |
104 | ||
105 | ||
106 | # Unsets the given variables | |
107 | macro(_pkgconfig_unset var) | |
108 | set(${var} "" CACHE INTERNAL "") | |
109 | endmacro(_pkgconfig_unset) | |
110 | ||
111 | macro(_pkgconfig_set var value) | |
112 | set(${var} ${value} CACHE INTERNAL "") | |
113 | endmacro(_pkgconfig_set) | |
114 | ||
115 | # Invokes pkgconfig, cleans up the result and sets variables | |
116 | macro(_pkgconfig_invoke _pkglist _prefix _varname _regexp) | |
117 | set(_pkgconfig_invoke_result) | |
118 | ||
119 | execute_process( | |
120 | COMMAND ${PKG_CONFIG_EXECUTABLE} ${ARGN} ${_pkglist} | |
121 | OUTPUT_VARIABLE _pkgconfig_invoke_result | |
122 | RESULT_VARIABLE _pkgconfig_failed) | |
123 | ||
124 | if (_pkgconfig_failed) | |
125 | set(_pkgconfig_${_varname} "") | |
126 | _pkgconfig_unset(${_prefix}_${_varname}) | |
127 | else(_pkgconfig_failed) | |
128 | string(REGEX REPLACE "[\r\n]" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}") | |
129 | string(REGEX REPLACE " +$" "" _pkgconfig_invoke_result "${_pkgconfig_invoke_result}") | |
130 | ||
131 | if (NOT ${_regexp} STREQUAL "") | |
132 | string(REGEX REPLACE "${_regexp}" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}") | |
133 | endif(NOT ${_regexp} STREQUAL "") | |
134 | ||
135 | separate_arguments(_pkgconfig_invoke_result) | |
136 | ||
137 | #message(STATUS " ${_varname} ... ${_pkgconfig_invoke_result}") | |
138 | set(_pkgconfig_${_varname} ${_pkgconfig_invoke_result}) | |
139 | _pkgconfig_set(${_prefix}_${_varname} "${_pkgconfig_invoke_result}") | |
140 | endif(_pkgconfig_failed) | |
141 | endmacro(_pkgconfig_invoke) | |
142 | ||
143 | # Invokes pkgconfig two times; once without '--static' and once with | |
144 | # '--static' | |
145 | macro(_pkgconfig_invoke_dyn _pkglist _prefix _varname cleanup_regexp) | |
146 | _pkgconfig_invoke("${_pkglist}" ${_prefix} ${_varname} "${cleanup_regexp}" ${ARGN}) | |
147 | _pkgconfig_invoke("${_pkglist}" ${_prefix} STATIC_${_varname} "${cleanup_regexp}" --static ${ARGN}) | |
148 | endmacro(_pkgconfig_invoke_dyn) | |
149 | ||
150 | # Splits given arguments into options and a package list | |
151 | macro(_pkgconfig_parse_options _result _is_req) | |
152 | set(${_is_req} 0) | |
153 | ||
154 | foreach(_pkg ${ARGN}) | |
155 | if (_pkg STREQUAL "REQUIRED") | |
156 | set(${_is_req} 1) | |
157 | endif (_pkg STREQUAL "REQUIRED") | |
158 | endforeach(_pkg ${ARGN}) | |
159 | ||
160 | set(${_result} ${ARGN}) | |
161 | list(REMOVE_ITEM ${_result} "REQUIRED") | |
162 | endmacro(_pkgconfig_parse_options) | |
163 | ||
164 | ### | |
165 | macro(_pkg_check_modules_internal _is_required _is_silent _prefix) | |
166 | _pkgconfig_unset(${_prefix}_FOUND) | |
167 | _pkgconfig_unset(${_prefix}_VERSION) | |
168 | _pkgconfig_unset(${_prefix}_PREFIX) | |
169 | _pkgconfig_unset(${_prefix}_INCLUDEDIR) | |
170 | _pkgconfig_unset(${_prefix}_LIBDIR) | |
171 | _pkgconfig_unset(${_prefix}_LIBS) | |
172 | _pkgconfig_unset(${_prefix}_LIBS_L) | |
173 | _pkgconfig_unset(${_prefix}_LIBS_PATHS) | |
174 | _pkgconfig_unset(${_prefix}_LIBS_OTHER) | |
175 | _pkgconfig_unset(${_prefix}_CFLAGS) | |
176 | _pkgconfig_unset(${_prefix}_CFLAGS_I) | |
177 | _pkgconfig_unset(${_prefix}_CFLAGS_OTHER) | |
178 | _pkgconfig_unset(${_prefix}_STATIC_LIBDIR) | |
179 | _pkgconfig_unset(${_prefix}_STATIC_LIBS) | |
180 | _pkgconfig_unset(${_prefix}_STATIC_LIBS_L) | |
181 | _pkgconfig_unset(${_prefix}_STATIC_LIBS_PATHS) | |
182 | _pkgconfig_unset(${_prefix}_STATIC_LIBS_OTHER) | |
183 | _pkgconfig_unset(${_prefix}_STATIC_CFLAGS) | |
184 | _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_I) | |
185 | _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_OTHER) | |
186 | ||
187 | # create a better addressable variable of the modules and calculate its size | |
188 | set(_pkg_check_modules_list ${ARGN}) | |
189 | list(LENGTH _pkg_check_modules_list _pkg_check_modules_cnt) | |
190 | ||
191 | if(PKG_CONFIG_EXECUTABLE) | |
192 | # give out status message telling checked module | |
193 | if (NOT ${_is_silent}) | |
194 | if (_pkg_check_modules_cnt EQUAL 1) | |
195 | message(STATUS "checking for module '${_pkg_check_modules_list}'") | |
196 | else(_pkg_check_modules_cnt EQUAL 1) | |
197 | message(STATUS "checking for modules '${_pkg_check_modules_list}'") | |
198 | endif(_pkg_check_modules_cnt EQUAL 1) | |
199 | endif(NOT ${_is_silent}) | |
200 | ||
201 | set(_pkg_check_modules_packages) | |
202 | set(_pkg_check_modules_failed) | |
203 | ||
204 | # iterate through module list and check whether they exist and match the required version | |
205 | foreach (_pkg_check_modules_pkg ${_pkg_check_modules_list}) | |
206 | set(_pkg_check_modules_exist_query) | |
207 | ||
208 | # check whether version is given | |
209 | if (_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*") | |
210 | string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\1" _pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}") | |
211 | string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\2" _pkg_check_modules_pkg_op "${_pkg_check_modules_pkg}") | |
212 | string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\3" _pkg_check_modules_pkg_ver "${_pkg_check_modules_pkg}") | |
213 | else(_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*") | |
214 | set(_pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}") | |
215 | set(_pkg_check_modules_pkg_op) | |
216 | set(_pkg_check_modules_pkg_ver) | |
217 | endif(_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*") | |
218 | ||
219 | # handle the operands | |
220 | if (_pkg_check_modules_pkg_op STREQUAL ">=") | |
221 | list(APPEND _pkg_check_modules_exist_query --atleast-version) | |
222 | endif(_pkg_check_modules_pkg_op STREQUAL ">=") | |
223 | ||
224 | if (_pkg_check_modules_pkg_op STREQUAL "=") | |
225 | list(APPEND _pkg_check_modules_exist_query --exact-version) | |
226 | endif(_pkg_check_modules_pkg_op STREQUAL "=") | |
227 | ||
228 | if (_pkg_check_modules_pkg_op STREQUAL "<=") | |
229 | list(APPEND _pkg_check_modules_exist_query --max-version) | |
230 | endif(_pkg_check_modules_pkg_op STREQUAL "<=") | |
231 | ||
232 | # create the final query which is of the format: | |
233 | # * --atleast-version <version> <pkg-name> | |
234 | # * --exact-version <version> <pkg-name> | |
235 | # * --max-version <version> <pkg-name> | |
236 | # * --exists <pkg-name> | |
237 | if (_pkg_check_modules_pkg_op) | |
238 | list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_ver}") | |
239 | else(_pkg_check_modules_pkg_op) | |
240 | list(APPEND _pkg_check_modules_exist_query --exists) | |
241 | endif(_pkg_check_modules_pkg_op) | |
242 | ||
243 | _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_VERSION) | |
244 | _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_PREFIX) | |
245 | _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_INCLUDEDIR) | |
246 | _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_LIBDIR) | |
247 | ||
248 | list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_name}") | |
249 | list(APPEND _pkg_check_modules_packages "${_pkg_check_modules_pkg_name}") | |
250 | ||
251 | # execute the query | |
252 | execute_process( | |
253 | COMMAND ${PKG_CONFIG_EXECUTABLE} ${_pkg_check_modules_exist_query} | |
254 | RESULT_VARIABLE _pkgconfig_retval) | |
255 | ||
256 | # evaluate result and tell failures | |
257 | if (_pkgconfig_retval) | |
258 | if(NOT ${_is_silent}) | |
259 | message(STATUS " package '${_pkg_check_modules_pkg}' not found") | |
260 | endif(NOT ${_is_silent}) | |
261 | ||
262 | set(_pkg_check_modules_failed 1) | |
263 | endif(_pkgconfig_retval) | |
264 | endforeach(_pkg_check_modules_pkg) | |
265 | ||
266 | if(_pkg_check_modules_failed) | |
267 | # fail when requested | |
268 | if (${_is_required}) | |
269 | message(SEND_ERROR "A required package was not found") | |
270 | endif (${_is_required}) | |
271 | else(_pkg_check_modules_failed) | |
272 | # when we are here, we checked whether requested modules | |
273 | # exist. Now, go through them and set variables | |
274 | ||
275 | _pkgconfig_set(${_prefix}_FOUND 1) | |
276 | list(LENGTH _pkg_check_modules_packages pkg_count) | |
277 | ||
278 | # iterate through all modules again and set individual variables | |
279 | foreach (_pkg_check_modules_pkg ${_pkg_check_modules_packages}) | |
280 | # handle case when there is only one package required | |
281 | if (pkg_count EQUAL 1) | |
282 | set(_pkg_check_prefix "${_prefix}") | |
283 | else(pkg_count EQUAL 1) | |
284 | set(_pkg_check_prefix "${_prefix}_${_pkg_check_modules_pkg}") | |
285 | endif(pkg_count EQUAL 1) | |
286 | ||
287 | _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" VERSION "" --modversion ) | |
288 | _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" PREFIX "" --variable=prefix ) | |
289 | _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" INCLUDEDIR "" --variable=includedir ) | |
290 | _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" LIBDIR "" --variable=libdir ) | |
291 | ||
292 | message(STATUS " found ${_pkg_check_modules_pkg}, version ${_pkgconfig_VERSION}") | |
293 | endforeach(_pkg_check_modules_pkg) | |
294 | ||
295 | # set variables which are combined for multiple modules | |
296 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARIES "(^| )-l" --libs-only-l ) | |
297 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARY_DIRS "(^| )-L" --libs-only-L ) | |
298 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS "" --libs ) | |
299 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS_OTHER "" --libs-only-other ) | |
300 | ||
301 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" INCLUDE_DIRS "(^| )-I" --cflags-only-I ) | |
302 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS "" --cflags ) | |
303 | _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS_OTHER "" --cflags-only-other ) | |
304 | endif(_pkg_check_modules_failed) | |
305 | else(PKG_CONFIG_EXECUTABLE) | |
306 | if (${_is_required}) | |
307 | message(SEND_ERROR "pkg-config tool not found") | |
308 | endif (${_is_required}) | |
309 | endif(PKG_CONFIG_EXECUTABLE) | |
310 | endmacro(_pkg_check_modules_internal) | |
311 | ||
312 | ### | |
313 | ### User visible macros start here | |
314 | ### | |
315 | ||
316 | ### | |
317 | macro(pkg_check_modules _prefix _module0) | |
318 | # check cached value | |
319 | # if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION}) | |
320 | _pkgconfig_parse_options (_pkg_modules _pkg_is_required "${_module0}" ${ARGN}) | |
321 | _pkg_check_modules_internal("${_pkg_is_required}" 0 "${_prefix}" ${_pkg_modules}) | |
322 | ||
323 | # _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION}) | |
324 | # endif(NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION}) | |
325 | endmacro(pkg_check_modules) | |
326 | ||
327 | ### | |
328 | macro(pkg_search_module _prefix _module0) | |
329 | # check cached value | |
330 | # if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION}) | |
331 | set(_pkg_modules_found 0) | |
332 | _pkgconfig_parse_options(_pkg_modules_alt _pkg_is_required "${_module0}" ${ARGN}) | |
333 | ||
334 | message(STATUS "checking for one of the modules '${_pkg_modules_alt}'") | |
335 | ||
336 | # iterate through all modules and stop at the first working one. | |
337 | foreach(_pkg_alt ${_pkg_modules_alt}) | |
338 | if(NOT _pkg_modules_found) | |
339 | _pkg_check_modules_internal(0 1 "${_prefix}" "${_pkg_alt}") | |
340 | endif(NOT _pkg_modules_found) | |
341 | ||
342 | if (${_prefix}_FOUND) | |
343 | set(_pkg_modules_found 1) | |
344 | endif(${_prefix}_FOUND) | |
345 | endforeach(_pkg_alt) | |
346 | ||
347 | if (NOT ${_prefix}_FOUND) | |
348 | if(${_pkg_is_required}) | |
349 | message(SEND_ERROR "None of the required '${_pkg_modules_alt}' found") | |
350 | endif(${_pkg_is_required}) | |
351 | endif(NOT ${_prefix}_FOUND) | |
352 | ||
353 | # _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION}) | |
354 | # endif(NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION}) | |
355 | endmacro(pkg_search_module) | |
356 | ||
357 | ### Local Variables: | |
358 | ### mode: cmake | |
359 | ### End: |
0 | MACRO(HTTRAQT_GENERATE_DEF_FILE TARGET_NAME) | |
1 | IF(MSVC) | |
2 | ADD_DEPENDENCIES(${TARGET_NAME} httraqt-gendef) | |
3 | GET_TARGET_PROPERTY(gendef_EXE httraqt-gendef LOCATION) | |
4 | ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} | |
5 | PRE_LINK | |
6 | COMMAND ${gendef_EXE} $(IntDir)\\$(InputName).def $(TargetFileName) $(IntDir)\\*.obj) | |
7 | SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES LINK_FLAGS "/DEF:$(IntDir)\\$(InputName).def") | |
8 | ENDIF(MSVC) | |
9 | ENDMACRO(HTTRAQT_GENERATE_DEF_FILE) | |
10 |
0 | # Disallow in-source build | |
1 | STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" HTTRAQT_IN_SOURCE) | |
2 | IF(HTTRAQT_IN_SOURCE) | |
3 | MESSAGE(FATAL_ERROR "HTTraQt requires an out of source build. Please create a separate build directory and run 'cmake path_to_httraqt [options]' there.") | |
4 | ENDIF(HTTRAQT_IN_SOURCE) | |
5 |
0 | # Compiler configuration | |
1 | IF(WIN32) | |
2 | IF(MSVC) | |
3 | SET(HTTRAQT_COMPILER_MSVC TRUE) | |
4 | ELSE(MSVC) | |
5 | SET(HTTRAQT_COMPILER_GCC TRUE) | |
6 | ENDIF(MSVC) | |
7 | ELSE(WIN32) | |
8 | SET(HTTRAQT_COMPILER_GCC TRUE) | |
9 | ENDIF(WIN32) | |
10 | ||
11 | # Win32 API configuration | |
12 | IF(WIN32) | |
13 | SET(HTTRAQT_API_WIN32 TRUE) | |
14 | ENDIF(WIN32) | |
15 | ||
16 | # Darwin API configuration | |
17 | IF(APPLE) | |
18 | SET(HTTRAQT_API_DARWIN TRUE) | |
19 | ||
20 | EXECUTE_PROCESS( | |
21 | COMMAND sw_vers -productVersion | |
22 | OUTPUT_VARIABLE HTTRAQT_OSX_VERSION | |
23 | ) | |
24 | STRING(REGEX REPLACE "([0-9]*)[.]([0-9]*)[.]([0-9]*).*" "\\1" HTTRAQT_OSX_MAJOR_VERSION "${HTTRAQT_OSX_VERSION}") | |
25 | STRING(REGEX REPLACE "([0-9]*)[.]([0-9]*)[.]([0-9]*).*" "\\2" HTTRAQT_OSX_MINOR_VERSION "${HTTRAQT_OSX_VERSION}") | |
26 | ||
27 | ENDIF(APPLE) | |
28 |
0 | # Disallow in-source build | |
1 | STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" HTTRAQT_IN_SOURCE) | |
2 | IF(HTTRAQT_IN_SOURCE) | |
3 | MESSAGE(FATAL_ERROR "HTTraQt requires an out of source build. Please create a separate build directory and run 'cmake path_to_httraqt [options]' there.") | |
4 | ENDIF(HTTRAQT_IN_SOURCE) | |
5 |
0 | # Compiler configuration | |
1 | IF(WIN32) | |
2 | IF(MSVC) | |
3 | SET(HTTRAQT_COMPILER_MSVC TRUE) | |
4 | ELSE(MSVC) | |
5 | SET(HTTRAQT_COMPILER_GCC TRUE) | |
6 | ENDIF(MSVC) | |
7 | ELSE(WIN32) | |
8 | SET(HTTRAQT_COMPILER_GCC TRUE) | |
9 | ENDIF(WIN32) | |
10 | ||
11 | # Win32 API configuration | |
12 | IF(WIN32) | |
13 | SET(HTTRAQT_API_WIN32 TRUE) | |
14 | ENDIF(WIN32) | |
15 | ||
16 | # Darwin API configuration | |
17 | IF(APPLE) | |
18 | SET(HTTRAQT_API_DARWIN TRUE) | |
19 | ||
20 | EXECUTE_PROCESS( | |
21 | COMMAND sw_vers -productVersion | |
22 | OUTPUT_VARIABLE HTTRAQT_OSX_VERSION | |
23 | ) | |
24 | STRING(REGEX REPLACE "([0-9]*)[.]([0-9]*)[.]([0-9]*).*" "\\1" HTTRAQT_OSX_MAJOR_VERSION "${HTTRAQT_OSX_VERSION}") | |
25 | STRING(REGEX REPLACE "([0-9]*)[.]([0-9]*)[.]([0-9]*).*" "\\2" HTTRAQT_OSX_MINOR_VERSION "${HTTRAQT_OSX_VERSION}") | |
26 | ||
27 | ENDIF(APPLE) | |
28 |