Merge pull request #2247 from staabm/patch-1
[hiphop-php.git] / CMake / HPHPFindLibs.cmake
blobca97af823cd26263fd1ea8a79e4de40d68ce186b
2 #   +----------------------------------------------------------------------+
3 #   | HipHop for PHP                                                       |
4 #   +----------------------------------------------------------------------+
5 #   | Copyright (c) 2010 Facebook, Inc. (http://www.facebook.com)          |
6 #   | Copyright (c) 1997-2010 The PHP Group                                |
7 #   +----------------------------------------------------------------------+
8 #   | This source file is subject to version 3.01 of the PHP license,      |
9 #   | that is bundled with this package in the file LICENSE, and is        |
10 #   | available through the world-wide-web at the following url:           |
11 #   | http://www.php.net/license/3_01.txt                                  |
12 #   | If you did not receive a copy of the PHP license and are unable to   |
13 #   | obtain it through the world-wide-web, please send a note to          |
14 #   | license@php.net so we can mail you a copy immediately.               |
15 #   +----------------------------------------------------------------------+
18 include(CheckFunctionExists)
20 add_definitions("-DHAVE_QUICKLZ")
22 # libdl
23 find_package(LibDL)
24 if (LIBDL_INCLUDE_DIRS)
25         add_definitions("-DHAVE_LIBDL")
26         include_directories(${LIBDL_INCLUDE_DIRS})
27         if (LIBDL_NEEDS_UNDERSCORE)
28                 add_definitions("-DLIBDL_NEEDS_UNDERSCORE")
29         endif()
30 endif()
32 # boost checks
33 find_package(Boost 1.49.0 COMPONENTS system program_options filesystem regex REQUIRED)
34 include_directories(${Boost_INCLUDE_DIRS})
35 link_directories(${Boost_LIBRARY_DIRS})
36 add_definitions("-DHAVE_BOOST1_49")
39 # features.h
40 FIND_PATH(FEATURES_HEADER features.h)
41 if (FEATURES_HEADER)
42         add_definitions("-DHAVE_FEATURES_H=1")
43 endif()
45 # google-glog
46 find_package(Glog REQUIRED)
47 include_directories(${LIBGLOG_INCLUDE_DIR})
49 # inotify checks
50 find_package(Libinotify)
51 if (LIBINOTIFY_INCLUDE_DIR)
52         include_directories(${LIBINOTIFY_INCLUDE_DIR})
53 endif()
55 # iconv checks
56 find_package(Libiconv REQUIRED)
57 include_directories(${LIBICONV_INCLUDE_DIR})
58 if (LIBICONV_CONST)
59   message(STATUS "Using const for input to iconv() call")
60   add_definitions("-DICONV_CONST=const")
61 endif()
63 # mysql checks
64 find_package(MySQL REQUIRED)
65 include_directories(${MYSQL_INCLUDE_DIR})
66 link_directories(${MYSQL_LIB_DIR})
67 MYSQL_SOCKET_SEARCH()
68 if (MYSQL_UNIX_SOCK_ADDR)
69   add_definitions(-DPHP_MYSQL_UNIX_SOCK_ADDR="${MYSQL_UNIX_SOCK_ADDR}")
70 endif()
72 # libmemcached checks
73 find_package(Libmemcached REQUIRED)
74 if (LIBMEMCACHED_VERSION VERSION_LESS "0.39")
75   unset(LIBMEMCACHED_INCLUDE_DIR CACHE)
76   unset(LIBMEMCACHED_LIBRARY CACHE)
77   unset(LIBMEMCACHED_VERSION CACHE)
78   message(FATAL_ERROR "libmemcache is too old, found ${LIBMEMCACHED_VERSION} and we need 0.39")
79 endif ()
80 include_directories(${LIBMEMCACHED_INCLUDE_DIR})
82 # pcre checks
83 find_package(PCRE REQUIRED)
84 include_directories(${PCRE_INCLUDE_DIRS})
86 # libevent checks
87 find_package(LibEvent REQUIRED)
88 include_directories(${LIBEVENT_INCLUDE_DIR})
90 set(CMAKE_REQUIRED_LIBRARIES "${LIBEVENT_LIB}")
91 CHECK_FUNCTION_EXISTS("evhttp_bind_socket_with_fd" HAVE_CUSTOM_LIBEVENT)
92 if(HAVE_CUSTOM_LIBEVENT)
93         message("Using custom LIBEVENT")
94         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_CUSTOM_LIBEVENT")
95 endif()
96 set(CMAKE_REQUIRED_LIBRARIES)
98 find_package(LibUODBC)
99 if (LIBUODBC_INCLUDE_DIRS)
100         include_directories(${LIBUODBC_INCLUDE_DIRS})
101         add_definitions("-DHAVE_UODBC")
102 endif ()
104 # GD checks
105 add_definitions(-DPNG_SKIP_SETJMP_CHECK)
106 find_package(LibJpeg)
107 if (LIBJPEG_INCLUDE_DIRS)
108         include_directories(${LIBJPEG_INCLUDE_DIRS})
109         add_definitions("-DHAVE_GD_JPG")
110 endif()
111 find_package(LibPng)
112 if (LIBPNG_INCLUDE_DIRS)
113         include_directories(${LIBPNG_INCLUDE_DIRS})
114         add_definitions("-DHAVE_GD_PNG")
115 endif()
116 find_package(Freetype)
117 if (FREETYPE_INCLUDE_DIRS)
118         include_directories(${FREETYPE_INCLUDE_DIRS})
119         add_definitions("-DHAVE_LIBFREETYPE -DHAVE_GD_FREETYPE -DENABLE_GD_TTF")
120 endif()
122 # libXed
123 find_package(LibXed)
124 if (LibXed_INCLUDE_DIR AND LibXed_LIBRARY)
125         include_directories(${LibXed_INCLUDE_DIR})
126         add_definitions("-DHAVE_LIBXED")
127 endif()
129 # CURL checks
130 find_package(CURL REQUIRED)
131 include_directories(${CURL_INCLUDE_DIR})
133 set(CMAKE_REQUIRED_LIBRARIES "${CURL_LIBRARIES}")
134 CHECK_FUNCTION_EXISTS("curl_multi_select" HAVE_CURL_MULTI_SELECT)
135 CHECK_FUNCTION_EXISTS("curl_multi_wait" HAVE_CURL_MULTI_WAIT)
136 if (HAVE_CURL_MULTI_SELECT)
137         add_definitions("-DHAVE_CURL_MULTI_SELECT")
138 endif()
139 if (HAVE_CURL_MULTI_WAIT)
140         add_definitions("-DHAVE_CURL_MULTI_WAIT")
141 endif()
142 set(CMAKE_REQUIRED_LIBRARIES)
144 # LibXML2 checks
145 find_package(LibXml2 REQUIRED)
146 include_directories(${LIBXML2_INCLUDE_DIR})
147 add_definitions(${LIBXML2_DEFINITIONS})
149 find_package(LibXslt REQUIRED)
150 include_directories(${LIBXSLT_INCLUDE_DIR})
151 add_definitions(${LIBXSLT_DEFINITIONS})
153 find_package(EXPAT REQUIRED)
154 include_directories(${EXPAT_INCLUDE_DIRS})
156 # SQLite3 + timelib are bundled in HPHP sources
157 include_directories("${HPHP_HOME}/hphp/third_party/libsqlite3")
158 include_directories("${HPHP_HOME}/hphp/third_party/timelib")
159 include_directories("${HPHP_HOME}/hphp/third_party/libafdt/src")
160 include_directories("${HPHP_HOME}/hphp/third_party/libmbfl")
161 include_directories("${HPHP_HOME}/hphp/third_party/libmbfl/mbfl")
162 include_directories("${HPHP_HOME}/hphp/third_party/libmbfl/filter")
163 include_directories("${HPHP_HOME}/hphp/third_party/lz4")
164 include_directories("${HPHP_HOME}/hphp/third_party/double-conversion/src")
165 include_directories("${HPHP_HOME}/hphp/third_party/folly")
166 include_directories("${HPHP_HOME}/hphp/third_party/libzip")
168 # ICU
169 find_package(ICU REQUIRED)
170 if (ICU_FOUND)
171         if (ICU_VERSION VERSION_LESS "4.2")
172                 unset(ICU_FOUND CACHE)
173                 unset(ICU_INCLUDE_DIRS CACHE)
174                 unset(ICU_LIBRARIES CACHE)
175                 message(FATAL_ERROR "ICU is too old, found ${ICU_VERSION} and we need 4.2")
176         endif ()
177         include_directories(${ICU_INCLUDE_DIRS})
178 endif (ICU_FOUND)
180 # jemalloc/tmalloc and profiler
181 if (USE_GOOGLE_HEAP_PROFILER OR USE_GOOGLE_CPU_PROFILER)
182         FIND_LIBRARY(GOOGLE_PROFILER_LIB profiler)
183         if (GOOGLE_PROFILER_LIB)
184                 message(STATUS "Found Google profiler: ${GOOGLE_PROFILER_LIB}")
185                 if (USE_GOOGLE_CPU_PROFILER)
186                         set(GOOGLE_CPU_PROFILER_ENABLED 1)
187                 endif()
188         else()
189                 message(STATUS "Can't find Google profiler")
190         endif()
191 endif()
193 if (USE_GOOGLE_HEAP_PROFILER AND GOOGLE_PROFILER_LIB)
194         FIND_LIBRARY(GOOGLE_TCMALLOC_FULL_LIB tcmalloc)
195         if (GOOGLE_TCMALLOC_FULL_LIB)
196                 message(STATUS "Found full tcmalloc: ${GOOGLE_TCMALLOC_FULL_LIB}")
197                 set(GOOGLE_HEAP_PROFILER_ENABLED 1)
198                 set(GOOGLE_TCMALLOC_ENABLED 1)
199         else()
200                 message(STATUS "Can't find full tcmalloc - heap profiling is disabled")
201         endif()
202 endif()
204 if (USE_JEMALLOC AND NOT GOOGLE_TCMALLOC_ENABLED)
205         FIND_LIBRARY(JEMALLOC_LIB NAMES jemalloc)
206         FIND_PATH(JEMALLOC_INCLUDE_DIR NAMES jemalloc/jemalloc.h)
208         if (JEMALLOC_INCLUDE_DIR AND JEMALLOC_LIB)
209                 include_directories(${JEMALLOC_INCLUDE_DIR})
211                 set (CMAKE_REQUIRED_INCLUDES ${JEMALLOC_INCLUDE_DIR})
212                 INCLUDE(CheckCXXSourceCompiles)
213                 CHECK_CXX_SOURCE_COMPILES("
214 #include <jemalloc/jemalloc.h>
215 int main(void) {
216 #if !defined(JEMALLOC_VERSION_MAJOR) || (JEMALLOC_VERSION_MAJOR < 3)
217 # error \"jemalloc version >= 3.0.0 required\"
218 #endif
219         return 0;
220 }" JEMALLOC_VERSION_3)
221                 set (CMAKE_REQUIRED_INCLUDES)
223                 if (JEMALLOC_VERSION_3)
224                         message(STATUS "Found jemalloc: ${JEMALLOC_LIB}")
225                         set(JEMALLOC_ENABLED 1)
226                 else()
227                         message(STATUS "Found jemalloc, but it was too old")
228                 endif()
229         endif()
230 endif()
232 if (USE_TCMALLOC AND NOT JEMALLOC_ENABLED AND NOT GOOGLE_TCMALLOC_ENABLED)
233         FIND_LIBRARY(GOOGLE_TCMALLOC_MIN_LIB tcmalloc_minimal)
234         if (GOOGLE_TCMALLOC_MIN_LIB)
235                 message(STATUS "Found minimal tcmalloc: ${GOOGLE_TCMALLOC_MIN_LIB}")
236                 set(GOOGLE_TCMALLOC_ENABLED 1)
237         else()
238                 message(STATUS "Can't find minimal tcmalloc")
239         endif()
240 endif()
242 if (JEMALLOC_ENABLED)
243         add_definitions(-DUSE_JEMALLOC=1)
244 else()
245         add_definitions(-DNO_JEMALLOC=1)
246 endif()
247 if (GOOGLE_TCMALLOC_ENABLED)
248         add_definitions(-DGOOGLE_TCMALLOC=1)
249 else()
250         add_definitions(-DNO_TCMALLOC=1)
251 endif()
252 if (GOOGLE_HEAP_PROFILER_ENABLED)
253         add_definitions(-DGOOGLE_HEAP_PROFILER=1)
254 endif()
255 if (GOOGLE_CPU_PROFILER_ENABLED)
256         add_definitions(-DGOOGLE_CPU_PROFILER=1)
257 endif()
259 # tbb libs
260 find_package(TBB REQUIRED)
261 if (${TBB_INTERFACE_VERSION} LESS 5005)
262         unset(TBB_FOUND CACHE)
263         unset(TBB_INCLUDE_DIRS CACHE)
264         unset(TBB_LIBRARIES CACHE)
265         message(FATAL_ERROR "TBB is too old, please install at least 3.0(5005), preferably 4.0(6000) or higher")
266 endif()
267 include_directories(${TBB_INCLUDE_DIRS})
268 link_directories(${TBB_LIBRARY_DIRS})
270 # mcrypt libs
271 find_package(Mcrypt REQUIRED)
272 include_directories(${Mcrypt_INCLUDE_DIR})
274 # OpenSSL libs
275 find_package(OpenSSL REQUIRED)
276 include_directories(${OPENSSL_INCLUDE_DIR})
278 # ZLIB
279 find_package(ZLIB REQUIRED)
280 include_directories(${ZLIB_INCLUDE_DIR})
282 find_package(BZip2 REQUIRED)
283 include_directories(${BZIP2_INCLUDE_DIR})
284 add_definitions(${BZIP2_DEFINITIONS})
286 # oniguruma
287 find_package(ONIGURUMA REQUIRED)
288 include_directories(${ONIGURUMA_INCLUDE_DIRS})
290 # LDAP
291 find_package(Ldap REQUIRED)
292 include_directories(${LDAP_INCLUDE_DIR})
294 # ncurses, readline and history
295 #set(CURSES_NEED_NCURSES true)
296 find_package(Ncurses REQUIRED)
297 include_directories(${NCURSES_INCLUDE_PATH})
299 # libpthreads
300 find_package(PThread REQUIRED)
301 include_directories(${LIBPTHREAD_INCLUDE_DIRS})
303 # Either Readline or Editline (for hphpd)
304 find_package(Readline)
305 find_package(Editline)
306 if (READLINE_INCLUDE_DIR)
307         include_directories(${READLINE_INCLUDE_DIR})
308 elseif (EDITLINE_INCLUDE_DIRS)
309         add_definitions("-DUSE_EDITLINE")
310         include_directories(${EDITLINE_INCLUDE_DIRS})
311 else()
312         message(FATAL_ERROR "Could not find Readline or Editline")
313 endif()
315 find_package(CClient REQUIRED)
316 include_directories(${CCLIENT_INCLUDE_PATH})
318 find_package(LibDwarf REQUIRED)
319 include_directories(${LIBDWARF_INCLUDE_DIRS})
320 if (LIBDWARF_HAVE_ENCODE_LEB128)
321         add_definitions("-DHAVE_LIBDWARF_20130729")
322 endif()
324 find_package(LibElf REQUIRED)
325 include_directories(${LIBELF_INCLUDE_DIRS})
326 if (ELF_GETSHDRSTRNDX)
327         add_definitions("-DHAVE_ELF_GETSHDRSTRNDX")
328 endif()
330 CONTAINS_STRING("${CCLIENT_INCLUDE_PATH}/utf8.h" U8T_DECOMPOSE RECENT_CCLIENT)
331 if (NOT RECENT_CCLIENT)
332         unset(RECENT_CCLIENT CACHE)
333         message(FATAL_ERROR "Your version of c-client is too old, you need 2007")
334 endif()
337 if (EXISTS "${CCLIENT_INCLUDE_PATH}/linkage.c")
338         CONTAINS_STRING("${CCLIENT_INCLUDE_PATH}/linkage.c" auth_gss CCLIENT_HAS_GSS)
339 elseif (EXISTS "${CCLIENT_INCLUDE_PATH}/linkage.h")
340     CONTAINS_STRING("${CCLIENT_INCLUDE_PATH}/linkage.h" auth_gss CCLIENT_HAS_GSS)
341 endif()
343 find_package(Libpam)
344 if (PAM_INCLUDE_PATH)
345         include_directories(${PAM_INCLUDE_PATH})
346 endif()
348 if (NOT CCLIENT_HAS_GSS)
349         add_definitions(-DSKIP_IMAP_GSS=1)
350 endif()
352 if (EXISTS "${CCLIENT_INCLUDE_PATH}/linkage.c")
353         CONTAINS_STRING("${CCLIENT_INCLUDE_PATH}/linkage.c" ssl_onceonlyinit CCLIENT_HAS_SSL)
354 elseif (EXISTS "${CCLIENT_INCLUDE_PATH}/linkage.h")
355         CONTAINS_STRING("${CCLIENT_INCLUDE_PATH}/linkage.h" ssl_onceonlyinit CCLIENT_HAS_SSL)
356 endif()
358 if (NOT CCLIENT_HAS_SSL)
359         add_definitions(-DSKIP_IMAP_SSL=1)
360 endif()
362 FIND_LIBRARY(CRYPT_LIB NAMES xcrypt crypt crypto)
363 if (LINUX OR FREEBSD)
364         FIND_LIBRARY (RT_LIB rt)
365 endif()
367 if (LINUX)
368         FIND_LIBRARY (CAP_LIB cap)
370         if (NOT CAP_LIB)
371                 message(FATAL_ERROR "You need to install libcap")
372         endif()
373 endif()
375 if (LINUX OR APPLE)
376         FIND_LIBRARY (DL_LIB dl)
377         FIND_LIBRARY (RESOLV_LIB resolv)
378 endif()
380 FIND_LIBRARY (BFD_LIB bfd)
381 FIND_LIBRARY (LIBIBERTY_LIB iberty)
383 if (NOT BFD_LIB)
384         message(FATAL_ERROR "You need to install binutils")
385 endif()
387 if (NOT LIBIBERTY_LIB)
388         message(FATAL_ERROR "You need to install libiberty (usually bundled with binutils)")
389 endif()
391 if (FREEBSD)
392         FIND_LIBRARY (EXECINFO_LIB execinfo)
393         if (NOT EXECINFO_LIB)
394                 message(FATAL_ERROR "You need to install libexecinfo")
395         endif()
396 endif()
398 if (APPLE)
399         find_library(LIBINTL_LIBRARIES NAMES intl libintl)
400         if (LIBINTL_INCLUDE_DIR)
401                 include_directories(${LIBINTL_INCLUDE_DIR})
402         endif()
403         find_library(KERBEROS_LIB NAMES gssapi_krb5)
404 endif()
406 #find_package(BISON REQUIRED)
407 #find_package(FLEX REQUIRED)
409 #if (${FLEX_VERSION} VERSION_LESS 2.5.33)
410 #       message(FATAL_ERROR "Flex is too old, found ${FLEX_VERSION} and we need 2.5.33")
411 #endif()
413 include_directories(${HPHP_HOME}/hphp)
414 include_directories(${HPHP_HOME}/hphp/system/gen)
416 macro(hphp_link target)
417         if (LIBDL_LIBRARIES)
418                 target_link_libraries(${target} ${LIBDL_LIBRARIES})
419         endif ()
421         if (GOOGLE_HEAP_PROFILER_ENABLED OR GOOGLE_CPU_PROFILER_ENABLED)
422                 target_link_libraries(${target} ${GOOGLE_PROFILER_LIB})
423         endif()
425         if (JEMALLOC_ENABLED)
426                 target_link_libraries(${target} ${JEMALLOC_LIB})
427         endif()
429         if (GOOGLE_HEAP_PROFILER_ENABLED)
430                 target_link_libraries(${target} ${GOOGLE_TCMALLOC_FULL_LIB})
431         elseif (GOOGLE_TCMALLOC_ENABLED)
432                 target_link_libraries(${target} ${GOOGLE_TCMALLOC_MIN_LIB})
433         endif()
435         target_link_libraries(${target} ${Boost_LIBRARIES})
436         target_link_libraries(${target} ${MYSQL_CLIENT_LIBS})
437         target_link_libraries(${target} ${PCRE_LIBRARY})
438         target_link_libraries(${target} ${ICU_DATA_LIBRARIES} ${ICU_I18N_LIBRARIES} ${ICU_LIBRARIES})
439         target_link_libraries(${target} ${LIBEVENT_LIB})
440         target_link_libraries(${target} ${CURL_LIBRARIES})
441         target_link_libraries(${target} ${LIBGLOG_LIBRARY})
443 if (LibXed_LIBRARY)
444         target_link_libraries(${target} ${LibXed_LIBRARY})
445 endif()
447 if (LIBINOTIFY_LIBRARY)
448         target_link_libraries(${target} ${LIBINOTIFY_LIBRARY})
449 endif()
451 if (LIBICONV_LIBRARY)
452         target_link_libraries(${target} ${LIBICONV_LIBRARY})
453 endif()
456 if (LINUX)
457         target_link_libraries(${target} ${CAP_LIB})
458 endif()
460 if (LINUX OR APPLE)
461         target_link_libraries(${target} ${RESOLV_LIB})
462         target_link_libraries(${target} ${DL_LIB})
463 endif()
465 if (FREEBSD)
466         target_link_libraries(${target} ${EXECINFO_LIB})
467 endif()
469 if (APPLE)
470         target_link_libraries(${target} ${LIBINTL_LIBRARIES})
471         target_link_libraries(${target} ${KERBEROS_LIB})
472 endif()
474         target_link_libraries(${target} ${BFD_LIB})
475         target_link_libraries(${target} ${LIBIBERTY_LIB})
476 if (${LIBPTHREAD_LIBRARIES})
477         target_link_libraries(${target} ${LIBPTHREAD_LIBRARIES})
478 endif()
479         target_link_libraries(${target} ${TBB_LIBRARIES})
480         target_link_libraries(${target} ${OPENSSL_LIBRARIES})
481         target_link_libraries(${target} ${ZLIB_LIBRARIES})
482         target_link_libraries(${target} ${BZIP2_LIBRARIES})
484         target_link_libraries(${target} ${LIBXML2_LIBRARIES})
485         target_link_libraries(${target} ${LIBXSLT_LIBRARIES})
486         target_link_libraries(${target} ${LIBXSLT_EXSLT_LIBRARIES})
487         target_link_libraries(${target} ${EXPAT_LIBRARY})
488         target_link_libraries(${target} ${ONIGURUMA_LIBRARIES})
489         target_link_libraries(${target} ${Mcrypt_LIB})
490         target_link_libraries(${target} ${GD_LIBRARY})
491 if (FREETYPE_LIBRARIES)
492         target_link_libraries(${target} ${FREETYPE_LIBRARIES})
493 endif()
494 if (LIBJPEG_LIBRARIES)
495         target_link_libraries(${target} ${LIBJPEG_LIBRARIES})
496 endif()
497 if (LIBPNG_LIBRARIES)
498         target_link_libraries(${target} ${LIBPNG_LIBRARIES})
499 endif()
500 if (LIBUODBC_LIBRARIES)
501         target_link_libraries(${target} ${LIBUODBC_LIBRARIES})
502 endif()
503         target_link_libraries(${target} ${LDAP_LIBRARIES})
504         target_link_libraries(${target} ${LBER_LIBRARIES})
506         target_link_libraries(${target} ${LIBMEMCACHED_LIBRARY})
508         target_link_libraries(${target} ${CRYPT_LIB})
509         if (LINUX OR FREEBSD)
510                 target_link_libraries(${target} ${RT_LIB})
511         endif()
513         target_link_libraries(${target} timelib)
514         target_link_libraries(${target} sqlite3)
515         target_link_libraries(${target} lz4)
516         target_link_libraries(${target} double-conversion)
517         target_link_libraries(${target} folly)
518         target_link_libraries(${target} zip_static)
520         target_link_libraries(${target} afdt)
521         target_link_libraries(${target} mbfl)
523         if (READLINE_LIBRARY)
524                 target_link_libraries(${target} ${READLINE_LIBRARY})
525         elseif (EDITLINE_LIBRARIES)
526                 target_link_libraries(${target} ${EDITLINE_LIBRARIES})
527         endif()
529         target_link_libraries(${target} ${NCURSES_LIBRARY})
530         target_link_libraries(${target} ${CCLIENT_LIBRARY})
532         if (PAM_LIBRARY)
533                 target_link_libraries(${target} ${PAM_LIBRARY})
534         endif()
536         target_link_libraries(${target} ${LIBDWARF_LIBRARIES})
537         target_link_libraries(${target} ${LIBELF_LIBRARIES})
539         if (ZEND_COMPAT_LINK_LIBRARIES)
540                 target_link_libraries(${target} ${ZEND_COMPAT_LINK_LIBRARIES})
541         endif()
542 endmacro()