test: poll_timeout; see php-memcached-dev/php-memcached#531
[awesomized/libmemcached] / CMake / InstallPublicHeaders.cmake
1 macro(install_public_headers DIRECTORY)
2 # validate current directory
3 string(FIND ${CMAKE_CURRENT_SOURCE_DIR} /include/ INCDIR REVERSE)
4 string(FIND ${CMAKE_CURRENT_SOURCE_DIR} /src/ SRCDIR REVERSE)
5 if((INCDIR GREATER_EQUAL 0) OR (SRCDIR GREATER_EQUAL 0))
6 if(INCDIR GREATER_EQUAL 0)
7 math(EXPR POSITION "${INCDIR} + 9")
8 else()
9 math(EXPR POSITION "${SRCDIR} + 5")
10 endif()
11 string(SUBSTRING ${CMAKE_CURRENT_SOURCE_DIR} ${POSITION} -1 CHKDIR)
12 if(NOT "${CHKDIR}" STREQUAL "${DIRECTORY}")
13 message(SEND_ERROR "install_public_headers() directories do not match: '${CHKDIR}' != '${DIRECTORY}'")
14 set(ENV{INVALID_CONFIGURATION} 1)
15 endif()
16 endif()
17
18 string(REGEX MATCH "^[^/-]+" LIBRARY "${DIRECTORY}")
19
20 # validate public interface version
21 string(FIND "${DIRECTORY}" "-" DASH)
22 if(DASH GREATER 0)
23 string(SUBSTRING "${DIRECTORY}" 0 ${DASH} LIBRARY_BASE)
24 string(TOUPPER ${LIBRARY_BASE} LIBRARY_UCASE)
25 math(EXPR DASH "${DASH} + 1")
26 string(SUBSTRING "${DIRECTORY}" ${DASH} -1 VERSION)
27 if(NOT ${LIBRARY_UCASE}_VERSION_INC VERSION_EQUAL ${VERSION})
28 message(SEND_ERROR "${LIBRARY_BASE} public include directory version ${VERSION} != " ${${LIBRARY_UCASE}_VERSION_INC})
29 set(ENV{INVALID_CONFIGURATION} 1)
30 endif()
31 endif()
32
33 # change local includes to system includes
34 foreach(HEADER IN ITEMS ${ARGN})
35 if(HEADER MATCHES "^@")
36 string(SUBSTRING ${HEADER} 1 -1 HEADER)
37 configure_file(${HEADER}.in ${HEADER})
38 set(HEADER "${CMAKE_CURRENT_BINARY_DIR}/${HEADER}")
39 else()
40 set(HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${HEADER}")
41 endif()
42 install(FILES ${HEADER}
43 COMPONENT dev
44 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${DIRECTORY}
45 )
46 list(APPEND ${LIBRARY}_includes ${HEADER})
47 endforeach()
48 set(${LIBRARY}_includes "${${LIBRARY}_includes}" PARENT_SCOPE)
49 endmacro()