diff options
author | thierry1970 <thierry@ordissimo.com> | 2020-02-06 17:11:38 +0100 |
---|---|---|
committer | thierry1970 <thierry@ordissimo.com> | 2020-02-06 17:11:38 +0100 |
commit | 7cafed5a748a9cdd79de022514098f18dd7c1cf2 (patch) | |
tree | fe7d7489ea8dcc4b5f960f8f44e0e58f7e0791fd /src | |
parent | 7b62ea7b63d3eee8c5783edc327975ffdd3ab04b (diff) |
Added detection libraries libcurl and libxml2.
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 13 | ||||
-rw-r--r-- | src/FindCURL.cmake | 53 | ||||
-rw-r--r-- | src/FindLibXml2.cmake | 29 |
3 files changed, 95 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e6809b5..d42e194 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,6 +28,17 @@ find_package(AVAHICLIENT REQUIRED) find_package(LIBUSB REQUIRED) include_directories(${LIBUSB_INCLUDE_DIR}) +# Libxml-2.0 +find_package(LibXml2 REQUIRED) +set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY}) +include_directories(${LIBXML2_INCLUDE_DIR}) +unset(LIBXML2_LIBRARY) + +find_package(LibXml2 REQUIRED) + + +# Libcurl +find_package(CURL REQUIRED) add_executable(ippusbxd ippusbxd.c @@ -42,4 +53,6 @@ target_link_libraries(ippusbxd ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(ippusbxd ${LIBUSB_LIBRARIES}) target_link_libraries(ippusbxd ${AVAHICOMMON_LIBRARIES}) target_link_libraries(ippusbxd ${AVAHICLIENT_LIBRARIES}) +target_link_libraries(ippusbxd ${LIBXML2_LIBRARIES}) +target_link_libraries(ippusbxd ${CURL_LIBRARIES}) diff --git a/src/FindCURL.cmake b/src/FindCURL.cmake new file mode 100644 index 0000000..77bedc8 --- /dev/null +++ b/src/FindCURL.cmake @@ -0,0 +1,53 @@ +if(NOT CMAKE_CROSSCOMPILING) + find_package(PkgConfig QUIET) + pkg_check_modules(PC_CURL libcurl) +endif() + +find_library(CURL_LIBRARY + NAMES curl + HINTS ${HINTS_CURL_LIBDIR} ${PC_CURL_LIBDIR} ${PC_CURL_LIBRARY_DIRS} + PATHS ${PATHS_CURL_LIBDIR} + ${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH} +) + +find_path(CURL_INCLUDEDIR curl/curl.h + HINTS ${HINTS_CURL_INCLUDEDIR} ${PC_CURL_INCLUDEDIR} ${PC_CURL_INCLUDE_DIRS} + PATHS ${PATHS_CURL_INCLUDEDIR} + ${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Curl DEFAULT_MSG CURL_LIBRARY CURL_INCLUDEDIR) + +mark_as_advanced(CURL_LIBRARY CURL_INCLUDEDIR) + +if(CURL_FOUND) + set(CURL_LIBRARIES ${CURL_LIBRARY}) + set(CURL_INCLUDE_DIRS ${CURL_INCLUDEDIR}) + if(CURL_BUNDLED AND TARGET_OS STREQUAL "linux") + find_library(CURL_LIBRARY_SSL + NAMES ssl + HINTS ${EXTRA_CURL_LIBDIR} + ) + find_library(CURL_LIBRARY_CRYPTO + NAMES crypto + HINTS ${EXTRA_CURL_LIBDIR} + ) + # If we don't add `dl`, we get a missing reference to `dlclose`: + # ``` + # /usr/bin/ld: ../ddnet-libs/curl/linux/lib64/libcrypto.a(dso_dlfcn.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5' + # ``` + # + # Order matters, SSL needs to be linked before CRYPTO, otherwise we also get + # undefined symbols. + list(APPEND CURL_LIBRARIES ${CURL_LIBRARY_SSL} ${CURL_LIBRARY_CRYPTO} dl) + endif() + + if(CURL_BUNDLED AND TARGET_OS STREQUAL "windows") + set(CURL_COPY_FILES + "${EXTRA_CURL_LIBDIR}/libcurl.dll" + ) + else() + set(CURL_COPY_FILES) + endif() +endif() diff --git a/src/FindLibXml2.cmake b/src/FindLibXml2.cmake new file mode 100644 index 0000000..678dc22 --- /dev/null +++ b/src/FindLibXml2.cmake @@ -0,0 +1,29 @@ +# - Try to find LibXml2 +# Once done this will define +# LIBXML2_FOUND - System has LibXml2 +# LIBXML2_INCLUDE_DIRS - The LibXml2 include directories +# LIBXML2_LIBRARIES - The libraries needed to use LibXml2 +# LIBXML2_DEFINITIONS - Compiler switches required for using LibXml2 + +find_package(PkgConfig) +pkg_check_modules(PC_LIBXML QUIET libxml-2.0) +set(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER}) + +find_path(LIBXML2_INCLUDE_DIR libxml/xpath.h + HINTS ${PC_LIBXML_INCLUDEDIR} ${PC_LIBXML_INCLUDE_DIRS} + PATH_SUFFIXES libxml2 ) + +find_library(LIBXML2_LIBRARY NAMES xml2 libxml2 + HINTS ${PC_LIBXML_LIBDIR} ${PC_LIBXML_LIBRARY_DIRS} ) + +set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY} ) +set(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR} ) + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set LIBXML2_FOUND to TRUE +# if all listed variables are TRUE +find_package_handle_standard_args(LibXml2 DEFAULT_MSG + LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) + +mark_as_advanced(LIBXML2_INCLUDE_DIR LIBXML2_LIBRARY ) + |