gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnurl] 28/116: cmake: Export libcurl and curl targets to u


From: gnunet
Subject: [GNUnet-SVN] [gnurl] 28/116: cmake: Export libcurl and curl targets to use by other cmake projects
Date: Tue, 05 Dec 2017 14:50:58 +0100

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to branch master
in repository gnurl.

commit 1cb4f5d6e8e470638759a48ba99fda230089712f
Author: Jakub Zakrzewski <address@hidden>
AuthorDate: Sun Sep 10 16:56:16 2017 +0200

    cmake: Export libcurl and curl targets to use by other cmake projects
    
    The config files define curl and libcurl targets as imported targets
    CURL::curl and CURL::libcurl. For backward compatibility with CMake-
    provided find-module the CURL_INCLUDE_DIRS and CURL_LIBRARIES are
    also set.
    
    Closes #1879
---
 CMake/curl-config.cmake | 59 +++++++++++++++++++++++++++++++++++++++++++++++++
 CMakeLists.txt          | 27 +++++++++++++++++++++-
 Makefile.am             |  3 ++-
 lib/CMakeLists.txt      | 19 +++++++++++++++-
 src/CMakeLists.txt      | 13 ++++++++++-
 5 files changed, 117 insertions(+), 4 deletions(-)

diff --git a/CMake/curl-config.cmake b/CMake/curl-config.cmake
new file mode 100644
index 000000000..119332cdd
--- /dev/null
+++ b/CMake/curl-config.cmake
@@ -0,0 +1,59 @@
+
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+if(NOT CURL_FIND_COMPONENTS)
+    set(CURL_FIND_COMPONENTS curl libcurl)
+    if(CURL_FIND_REQUIRED)
+        set(CURL_FIND_REQUIRED_curl TRUE)
+        set(CURL_FIND_REQUIRED_libcurl TRUE)
+    endif()
+endif()
+
+set(_curl_missing_components)
+foreach(_comp ${CURL_FIND_COMPONENTS})
+    if(EXISTS "${_DIR}/${_comp}-target.cmake")
+        include("${_DIR}/${_comp}-target.cmake")
+        set(CURL_${_comp}_FOUND TRUE)
+    else()
+        set(CURL_${_comp}_FOUND FALSE)
+        if(CURL_FIND_REQUIRED_${_comp})
+            set(CURL_FOUND FALSE)
+            list(APPEND _curl_missing_components ${_comp})
+        endif()
+    endif()
+endforeach()
+
+if(_curl_missing_components)
+    set(CURL_NOT_FOUND_MESSAGE "Following required components not found: " 
${_curl_missing_components})
+else()
+    if(TARGET CURL::libcurl)
+        string(TOUPPER "${CMAKE_BUILD_TYPE}" _curl_current_config)
+        if(NOT _curl_current_config)
+            set(_curl_current_config "NOCONFIG")
+        endif()
+        get_target_property(_curl_configurations CURL::libcurl 
IMPORTED_CONFIGURATIONS)
+        list(FIND _curl_configurations "${_curl_current_config}" _i)
+        if(_i LESS 0)
+            set(_curl_config "RELEASE")
+            list(FIND _curl_configurations "${_curl_current_config}" _i)
+            if(_i LESS 0)
+                set(_curl_config "NOCONFIG")
+                list(FIND _curl_configurations "${_curl_current_config}" _i)
+            endif()
+        endif()
+
+        if(_i LESS 0)
+            set(_curl_current_config "") # let CMake pick config at random
+        else()
+           set(_curl_current_config "_${_curl_current_config}")
+        endif()
+
+        get_target_property(CURL_INCLUDE_DIRS CURL::libcurl 
INTERFACE_INCLUDE_DIRECTORIES)
+        get_target_property(CURL_LIBRARIES CURL::libcurl 
"LOCATION${_curl_current_config}")
+        set(_curl_current_config)
+        set(_curl_configurations)
+        set(_i)
+    endif()
+endif()
+
+unset(_curl_missing_components)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3bfb5febd..c41759aa1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,7 +38,7 @@
 # To check:
 # (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my 
box while the plain configure script did not.
 # (From Daniel Stenberg) The gcc command line use neither -g nor any -O 
options. As a developer, I also treasure our configure scripts's --enable-debug 
option that sets a long range of "picky" compiler options.
-cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
 include(Utilities)
 include(Macros)
@@ -1130,6 +1130,12 @@ function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE)
 
 endfunction()
 
+if(WIN32 AND NOT CYGWIN)
+    set(CURL_INSTALL_CMAKE_DIR CMake)
+else()
+    set(CURL_INSTALL_CMAKE_DIR lib/cmake/curl)
+endif()
+
 if(USE_MANUAL)
   add_subdirectory(docs)
 endif()
@@ -1280,6 +1286,25 @@ install(DIRECTORY 
"${CMAKE_CURRENT_SOURCE_DIR}/include/curl"
     DESTINATION include
     FILES_MATCHING PATTERN "*.h")
 
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+    "${PROJECT_BINARY_DIR}/curl-config-version.cmake"
+    VERSION ${CURL_VERSION}
+    COMPATIBILITY SameMajorVersion
+)
+
+configure_file(CMake/curl-config.cmake
+        "${PROJECT_BINARY_DIR}/curl-config.cmake"
+        COPYONLY
+)
+
+install(
+        FILES ${PROJECT_BINARY_DIR}/curl-config.cmake
+              ${PROJECT_BINARY_DIR}/curl-config-version.cmake
+        DESTINATION ${CURL_INSTALL_CMAKE_DIR}
+)
+
 # Workaround for MSVS10 to avoid the Dialog Hell
 # FIXME: This could be removed with future version of CMake.
 if(MSVC_VERSION EQUAL 1600)
diff --git a/Makefile.am b/Makefile.am
index ab8f11cbc..d225a09ec 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -30,7 +30,8 @@ CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in    
  \
  CMake/Macros.cmake              \
  CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake             \
  CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake                \
- CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in
+ CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in         \
+ CMake/curl-config.cmake
 
 VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
 VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index d6c996189..1fabdba90 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -108,7 +108,24 @@ if(WIN32)
   endif()
 endif()
 
+target_include_directories(${LIB_NAME} INTERFACE
+       $<INSTALL_INTERFACE:include>)
+
 install(TARGETS ${LIB_NAME}
+  EXPORT libcurl-target
   ARCHIVE DESTINATION lib
   LIBRARY DESTINATION lib
-  RUNTIME DESTINATION bin)
+  RUNTIME DESTINATION bin
+)
+
+export(TARGETS ${LIB_NAME}
+       APPEND FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake
+       NAMESPACE CURL::
+)
+
+install(EXPORT libcurl-target
+        FILE libcurl-target.cmake
+        NAMESPACE CURL::
+        DESTINATION ${CURL_INSTALL_CMAKE_DIR}
+)
+
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index de188be66..085c150e2 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -76,4 +76,15 @@ set_target_properties(${EXE_NAME} PROPERTIES
 
 #INCLUDE(ModuleInstall OPTIONAL)
 
-install(TARGETS ${EXE_NAME} DESTINATION bin)
+install(TARGETS ${EXE_NAME} EXPORT curl-target DESTINATION bin)
+export(TARGETS ${EXE_NAME}
+       APPEND FILE ${PROJECT_BINARY_DIR}/curl-target.cmake
+       NAMESPACE CURL::
+)
+
+install(EXPORT curl-target
+        FILE curl-target.cmake
+        NAMESPACE CURL::
+        DESTINATION ${CURL_INSTALL_CMAKE_DIR}
+)
+

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]