diff options
| author | Gustavo Marques <pushstarttocontinue@outlook.com> | 2020-10-12 15:31:22 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-12 21:31:22 +0300 |
| commit | ba948f86612e7cd7f563837512a6195080fd298f (patch) | |
| tree | 7f618bdbd05dac0d625b55f1e1ea7ba274f7709c /CMake | |
| parent | a8355f1749a045e64d1a9c4cf3a777fa5f014747 (diff) | |
generate pkg-config files for targets (#1223)
Diffstat (limited to 'CMake')
| -rw-r--r-- | CMake/GeneratePkgConfig.cmake | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/CMake/GeneratePkgConfig.cmake b/CMake/GeneratePkgConfig.cmake new file mode 100644 index 000000000..2966c3c6e --- /dev/null +++ b/CMake/GeneratePkgConfig.cmake @@ -0,0 +1,57 @@ +function(get_relative_link REL PATH) + get_filename_component(NAME ${PATH} NAME_WE) + if(${NAME} MATCHES "^lib") + string(REGEX REPLACE "^lib" "-l" LINK ${NAME}) + elseif(${NAME} MATCHES "^-") + set(LINK ${NAME}) + else() + string(CONCAT LINK "-l" ${NAME}) + endif() + set(${REL} ${LINK} PARENT_SCOPE) +endfunction() + +function(generate_pkgconfig TARGET DESCRIPTION) + message("generating pkg-config for ${TARGET}") + get_filename_component(PREFIX ${CMAKE_INSTALL_PREFIX} ABSOLUTE) + + get_target_property(LIST ${TARGET} LINK_LIBRARIES) + set(REQS "") + set(LIBS "") + foreach(LIB ${LIST}) + if(TARGET ${LIB}) + set(HAS_REQS 1) + list(APPEND REQS ${LIB}) + else() + set(HAS_LIBS 1) + get_relative_link(LINK ${LIB}) + list(APPEND LIBS ${LINK}) + endif() + endforeach() + + if(HAS_REQS) + set(REQUIRES "\nRequires.private:") + foreach (REQ ${REQS}) + string(APPEND REQUIRES " ${REQ}") + endforeach() + endif() + if(HAS_LIBS) + set(LIBRARIES "\nLibs.private:") + foreach (LIB ${LIBS}) + string(APPEND LIBRARIES " ${LIB}") + endforeach() + endif() + + file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" CONTENT +"prefix=${PREFIX} +includedir=\${prefix}/include +libdir=\${prefix}/lib + +Name: ${TARGET} +Description: ${DESCRIPTION} +Version: ${PROJECT_VERSION} + +CFlags: -I\${includedir} +Libs: -L\${libdir} -l${TARGET}${REQUIRES}${LIBRARIES}") + + install(FILES "pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") +endfunction() |
