mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
b12f14965d
automatic BuildRequires for source RPM: for every FILEPATH and "Have library XXX" cached variable, detect what rpm package it comes from and add it to the list of dependencies. That is, the source RPM will BuildRequire all those packages that were found by cmake when the source RPM was built. Presumably, our CMakeLists.txt won't check for libraries that aren't needed for a build. It supports libraries/executables/files found with FIND_LIBRARY FIND_FILE FIND_PROGRAM CHECK_LIBRARY_EXISTS
39 lines
1.2 KiB
CMake
39 lines
1.2 KiB
CMake
IF(RPM)
|
|
MACRO(FIND_DEP V)
|
|
SET(out ${V}_DEP)
|
|
IF (NOT DEFINED ${out})
|
|
IF(EXISTS ${${V}} AND NOT IS_DIRECTORY ${${V}})
|
|
EXECUTE_PROCESS(COMMAND ${ARGN} RESULT_VARIABLE res OUTPUT_VARIABLE O OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
ELSE()
|
|
SET(res 1)
|
|
ENDIF()
|
|
IF (res)
|
|
SET(O)
|
|
ELSE()
|
|
MESSAGE(STATUS "Need ${O} for ${${V}}")
|
|
ENDIF()
|
|
SET(${out} ${O} CACHE INTERNAL "Package that contains ${${V}}" FORCE)
|
|
ENDIF()
|
|
ENDMACRO()
|
|
|
|
GET_CMAKE_PROPERTY(ALL_VARS CACHE_VARIABLES)
|
|
FOREACH (V ${ALL_VARS})
|
|
GET_PROPERTY(H CACHE ${V} PROPERTY HELPSTRING)
|
|
IF (H MATCHES "^Have library [^/]" AND ${V})
|
|
STRING(REGEX REPLACE "^Have library " "" L ${H})
|
|
SET(V ${L}_LIBRARY)
|
|
FIND_LIBRARY(${V} ${L})
|
|
ENDIF()
|
|
GET_PROPERTY(T CACHE ${V} PROPERTY TYPE)
|
|
IF ((T STREQUAL FILEPATH OR V MATCHES "^CMAKE_COMMAND$") AND ${V} MATCHES "^/")
|
|
IF (RPM)
|
|
FIND_DEP(${V} rpm -q --qf "%{NAME}" -f ${${V}})
|
|
ELSE() # must be DEB
|
|
MESSAGE(FATAL_ERROR "Not implemented")
|
|
ENDIF ()
|
|
SET(BUILD_DEPS ${BUILD_DEPS} ${${V}_DEP})
|
|
ENDIF()
|
|
ENDFOREACH()
|
|
LIST(REMOVE_DUPLICATES BUILD_DEPS)
|
|
STRING(REPLACE ";" " " CPACK_RPM_BUILDREQUIRES "${BUILD_DEPS}")
|
|
ENDIF(RPM)
|