test: poll_timeout; see php-memcached-dev/php-memcached#531
[awesomized/libmemcached] / CMake / InstallPublicHeaders.cmake
index c25c5cf03776fe83099a6ad9d966b67345721281..7943ddb2eb03be2912d5f93fc1135d3b6442af21 100644 (file)
@@ -1,4 +1,4 @@
-function(install_public_headers DIRECTORY)
+macro(install_public_headers DIRECTORY)
     # validate current directory
     string(FIND ${CMAKE_CURRENT_SOURCE_DIR} /include/ INCDIR REVERSE)
     string(FIND ${CMAKE_CURRENT_SOURCE_DIR} /src/ SRCDIR REVERSE)
@@ -9,35 +9,41 @@ function(install_public_headers DIRECTORY)
             math(EXPR POSITION "${SRCDIR} + 5")
         endif()
         string(SUBSTRING ${CMAKE_CURRENT_SOURCE_DIR} ${POSITION} -1 CHKDIR)
-        if(NOT CHKDIR STREQUAL DIRECTORY)
-            message(SEND_ERROR "install_public_headers() directories do not match: ${CHKDIR} != ${DIRECTORY}")
+        if(NOT "${CHKDIR}" STREQUAL "${DIRECTORY}")
+            message(SEND_ERROR "install_public_headers() directories do not match: '${CHKDIR}' != '${DIRECTORY}'")
             set(ENV{INVALID_CONFIGURATION} 1)
         endif()
     endif()
 
+    string(REGEX MATCH "^[^/-]+" LIBRARY "${DIRECTORY}")
+
     # validate public interface version
-    get_filename_component(TOP ${DIRECTORY} NAME)
-    string(FIND ${TOP} "-" DASH)
+    string(FIND "${DIRECTORY}" "-" DASH)
     if(DASH GREATER 0)
-        string(SUBSTRING ${TOP} 0 ${DASH} LIBRARY)
-        string(TOUPPER ${LIBRARY} LIBRARY_UCASE)
+        string(SUBSTRING "${DIRECTORY}" 0 ${DASH} LIBRARY_BASE)
+        string(TOUPPER ${LIBRARY_BASE} LIBRARY_UCASE)
         math(EXPR DASH "${DASH} + 1")
-        string(SUBSTRING ${TOP} ${DASH} -1 VERSION)
+        string(SUBSTRING "${DIRECTORY}" ${DASH} -1 VERSION)
         if(NOT ${LIBRARY_UCASE}_VERSION_INC VERSION_EQUAL ${VERSION})
-            message(SEND_ERROR "${LIBRARY} public include directory version ${VERSION} != " ${${LIBRARY_UCASE}_VERSION_INC})
+            message(SEND_ERROR "${LIBRARY_BASE} public include directory version ${VERSION} != " ${${LIBRARY_UCASE}_VERSION_INC})
             set(ENV{INVALID_CONFIGURATION} 1)
         endif()
     endif()
 
     # change local includes to system includes
-    foreach(HEADER IN LISTS ARGN)
+    foreach(HEADER IN ITEMS ${ARGN})
         if(HEADER MATCHES "^@")
             string(SUBSTRING ${HEADER} 1 -1 HEADER)
             configure_file(${HEADER}.in ${HEADER})
-            string(PREPEND HEADER ${CMAKE_CURRENT_BINARY_DIR}/)
+            set(HEADER "${CMAKE_CURRENT_BINARY_DIR}/${HEADER}")
+        else()
+            set(HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${HEADER}")
         endif()
         install(FILES ${HEADER}
+                COMPONENT dev
                 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${DIRECTORY}
                 )
+        list(APPEND ${LIBRARY}_includes ${HEADER})
     endforeach()
-endfunction()
+    set(${LIBRARY}_includes "${${LIBRARY}_includes}" PARENT_SCOPE)
+endmacro()