mirror of
https://github.com/libgit2/libgit2.git
synced 2026-01-25 11:06:32 +00:00
Our custom CMake module currently live in "cmake/Modules". As the "cmake/" directory doesn't contain anything except the "Modules" directory, it doesn't really make sense to have the additional intermediate directory. So let's instead move the modules one level up into the "cmake/" top level directory.
78 lines
2.6 KiB
CMake
78 lines
2.6 KiB
CMake
# pkg-config file generation
|
|
#
|
|
|
|
function(pkg_build_config)
|
|
set(options)
|
|
set(oneValueArgs NAME DESCRIPTION VERSION FILENAME LIBS_SELF)
|
|
set(multiValueArgs LIBS PRIVATE_LIBS REQUIRES CFLAGS)
|
|
|
|
cmake_parse_arguments(PKGCONFIG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
if (NOT DEFINED PKGCONFIG_FILENAME AND DEFINED PKGCONFIG_NAME)
|
|
set(PKGCONFIG_FILENAME ${PKGCONFIG_NAME})
|
|
endif()
|
|
if (NOT DEFINED PKGCONFIG_FILENAME)
|
|
message(FATAL_ERROR "Missing FILENAME argument")
|
|
endif()
|
|
set(PKGCONFIG_FILE "${PROJECT_BINARY_DIR}/${PKGCONFIG_FILENAME}.pc")
|
|
|
|
if (NOT DEFINED PKGCONFIG_DESCRIPTION)
|
|
message(FATAL_ERROR "Missing DESCRIPTION argument")
|
|
endif()
|
|
|
|
if (NOT DEFINED PKGCONFIG_VERSION)
|
|
message(FATAL_ERROR "Missing VERSION argument")
|
|
endif()
|
|
|
|
# Write .pc "header"
|
|
file(WRITE "${PKGCONFIG_FILE}"
|
|
"prefix=\"${CMAKE_INSTALL_PREFIX}\"\n"
|
|
"libdir=\"${CMAKE_INSTALL_FULL_LIBDIR}\"\n"
|
|
"includedir=\"${CMAKE_INSTALL_FULL_INCLUDEDIR}\"\n"
|
|
"\n"
|
|
"Name: ${PKGCONFIG_NAME}\n"
|
|
"Description: ${PKGCONFIG_DESCRIPTION}\n"
|
|
"Version: ${PKGCONFIG_VERSION}\n"
|
|
)
|
|
|
|
# Prepare Libs
|
|
if(NOT DEFINED PKGCONFIG_LIBS_SELF)
|
|
set(PKGCONFIG_LIBS_SELF "${PKGCONFIG_FILE}")
|
|
endif()
|
|
|
|
if(NOT DEFINED PKGCONFIG_LIBS)
|
|
set(PKGCONFIG_LIBS "-l${PKGCONFIG_LIBS_SELF}")
|
|
else()
|
|
list(INSERT PKGCONFIG_LIBS 0 "-l${PKGCONFIG_LIBS_SELF}")
|
|
endif()
|
|
|
|
list(REMOVE_DUPLICATES PKGCONFIG_LIBS)
|
|
string(REPLACE ";" " " PKGCONFIG_LIBS "${PKGCONFIG_LIBS}")
|
|
file(APPEND "${PKGCONFIG_FILE}" "Libs: -L\${libdir} ${PKGCONFIG_LIBS}\n")
|
|
|
|
# Prepare Libs.private
|
|
if(DEFINED PKGCONFIG_PRIVATE_LIBS)
|
|
list(REMOVE_DUPLICATES PKGCONFIG_PRIVATE_LIBS)
|
|
string(REPLACE ";" " " PKGCONFIG_PRIVATE_LIBS "${PKGCONFIG_PRIVATE_LIBS}")
|
|
file(APPEND "${PKGCONFIG_FILE}" "Libs.private: ${PKGCONFIG_PRIVATE_LIBS}\n")
|
|
endif()
|
|
|
|
# Prepare Requires.private
|
|
if(DEFINED PKGCONFIG_REQUIRES)
|
|
list(REMOVE_DUPLICATES PKGCONFIG_REQUIRES)
|
|
string(REPLACE ";" " " PKGCONFIG_REQUIRES "${PKGCONFIG_REQUIRES}")
|
|
file(APPEND "${PKGCONFIG_FILE}" "Requires.private: ${PKGCONFIG_REQUIRES}\n")
|
|
endif()
|
|
|
|
# Prepare Cflags
|
|
if(DEFINED PKGCONFIG_CFLAGS)
|
|
string(REPLACE ";" " " PKGCONFIG_CFLAGS "${PKGCONFIG_CFLAGS}")
|
|
else()
|
|
set(PKGCONFIG_CFLAGS "")
|
|
endif()
|
|
file(APPEND "${PKGCONFIG_FILE}" "Cflags: -I\${includedir} ${PKGCONFIG_CFLAGS}\n")
|
|
|
|
# Install .pc file
|
|
install(FILES "${PKGCONFIG_FILE}" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
|
endfunction()
|