1IF(RPM) 2 MACRO(FIND_DEP V) 3 SET(out ${V}_DEP) 4 IF (NOT DEFINED ${out}) 5 IF(EXISTS ${${V}} AND NOT IS_DIRECTORY ${${V}}) 6 EXECUTE_PROCESS(COMMAND ${ARGN} RESULT_VARIABLE res OUTPUT_VARIABLE O OUTPUT_STRIP_TRAILING_WHITESPACE) 7 ELSE() 8 SET(res 1) 9 ENDIF() 10 IF (res) 11 SET(O) 12 ELSE() 13 MESSAGE(STATUS "Need ${O} for ${${V}}") 14 ENDIF() 15 SET(${out} ${O} CACHE INTERNAL "Package that contains ${${V}}" FORCE) 16 ENDIF() 17 ENDMACRO() 18 19 # FindBoost.cmake doesn't leave any trace, do it here 20 IF (Boost_INCLUDE_DIR) 21 FIND_FILE(Boost_config_hpp boost/config.hpp PATHS ${Boost_INCLUDE_DIR}) 22 ENDIF() 23 24 GET_CMAKE_PROPERTY(ALL_VARS CACHE_VARIABLES) 25 FOREACH (V ${ALL_VARS}) 26 GET_PROPERTY(H CACHE ${V} PROPERTY HELPSTRING) 27 IF (H MATCHES "^Have library [^/]" AND ${V}) 28 STRING(REGEX REPLACE "^Have library " "" L ${H}) 29 SET(V ${L}_LIBRARY) 30 FIND_LIBRARY(${V} ${L}) 31 ENDIF() 32 GET_PROPERTY(T CACHE ${V} PROPERTY TYPE) 33 IF ((T STREQUAL FILEPATH OR V MATCHES "^CMAKE_COMMAND$") AND ${V} MATCHES "^/") 34 IF (RPM) 35 FIND_DEP(${V} rpm -q --qf "%{NAME}" -f ${${V}}) 36 ELSE() # must be DEB 37 MESSAGE(FATAL_ERROR "Not implemented") 38 ENDIF () 39 SET(BUILD_DEPS ${BUILD_DEPS} ${${V}_DEP}) 40 ENDIF() 41 ENDFOREACH() 42 IF (BUILD_DEPS) 43 LIST(REMOVE_DUPLICATES BUILD_DEPS) 44 STRING(REPLACE ";" " " CPACK_RPM_BUILDREQUIRES "${BUILD_DEPS}") 45 ENDIF() 46ENDIF(RPM) 47