-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)
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()