summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorthierry1970 <thierry@ordissimo.com>2020-02-06 17:11:38 +0100
committerthierry1970 <thierry@ordissimo.com>2020-02-06 17:11:38 +0100
commit7cafed5a748a9cdd79de022514098f18dd7c1cf2 (patch)
treefe7d7489ea8dcc4b5f960f8f44e0e58f7e0791fd /src
parent7b62ea7b63d3eee8c5783edc327975ffdd3ab04b (diff)
Added detection libraries libcurl and libxml2.
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt13
-rw-r--r--src/FindCURL.cmake53
-rw-r--r--src/FindLibXml2.cmake29
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 )
+