]> git.proxmox.com Git - libgit2.git/blob - cmake/Modules/PkgBuildConfig.cmake
New upstream version 1.0.0+dfsg.1
[libgit2.git] / cmake / Modules / PkgBuildConfig.cmake
1 # pkg-config file generation
2 #
3
4 function(pkg_build_config)
5 set(options)
6 set(oneValueArgs NAME DESCRIPTION VERSION FILENAME LIBS_SELF)
7 set(multiValueArgs LIBS PRIVATE_LIBS REQUIRES CFLAGS)
8
9 cmake_parse_arguments(PKGCONFIG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
10
11 if (NOT DEFINED PKGCONFIG_FILENAME AND DEFINED PKGCONFIG_NAME)
12 set(PKGCONFIG_FILENAME ${PKGCONFIG_NAME})
13 endif()
14 if (NOT DEFINED PKGCONFIG_FILENAME)
15 message(FATAL_ERROR "Missing FILENAME argument")
16 endif()
17 set(PKGCONFIG_FILE "${PROJECT_BINARY_DIR}/${PKGCONFIG_FILENAME}.pc")
18
19 if (NOT DEFINED PKGCONFIG_DESCRIPTION)
20 message(FATAL_ERROR "Missing DESCRIPTION argument")
21 endif()
22
23 if (NOT DEFINED PKGCONFIG_VERSION)
24 message(FATAL_ERROR "Missing VERSION argument")
25 endif()
26
27 # Write .pc "header"
28 file(WRITE "${PKGCONFIG_FILE}"
29 "prefix=\"${CMAKE_INSTALL_PREFIX}\"\n"
30 "libdir=\"${CMAKE_INSTALL_FULL_LIBDIR}\"\n"
31 "includedir=\"${CMAKE_INSTALL_FULL_INCLUDEDIR}\"\n"
32 "\n"
33 "Name: ${PKGCONFIG_NAME}\n"
34 "Description: ${PKGCONFIG_DESCRIPTION}\n"
35 "Version: ${PKGCONFIG_VERSION}\n"
36 )
37
38 # Prepare Libs
39 if(NOT DEFINED PKGCONFIG_LIBS_SELF)
40 set(PKGCONFIG_LIBS_SELF "${PKGCONFIG_FILE}")
41 endif()
42
43 if(NOT DEFINED PKGCONFIG_LIBS)
44 set(PKGCONFIG_LIBS "-l${PKGCONFIG_LIBS_SELF}")
45 else()
46 list(INSERT PKGCONFIG_LIBS 0 "-l${PKGCONFIG_LIBS_SELF}")
47 endif()
48
49 list(REMOVE_DUPLICATES PKGCONFIG_LIBS)
50 string(REPLACE ";" " " PKGCONFIG_LIBS "${PKGCONFIG_LIBS}")
51 file(APPEND "${PKGCONFIG_FILE}" "Libs: -L\${libdir} ${PKGCONFIG_LIBS}\n")
52
53 # Prepare Libs.private
54 if(DEFINED PKGCONFIG_PRIVATE_LIBS)
55 list(REMOVE_DUPLICATES PKGCONFIG_PRIVATE_LIBS)
56 string(REPLACE ";" " " PKGCONFIG_PRIVATE_LIBS "${PKGCONFIG_PRIVATE_LIBS}")
57 file(APPEND "${PKGCONFIG_FILE}" "Libs.private: ${PKGCONFIG_PRIVATE_LIBS}\n")
58 endif()
59
60 # Prepare Requires.private
61 if(DEFINED PKGCONFIG_REQUIRES)
62 list(REMOVE_DUPLICATES PKGCONFIG_REQUIRES)
63 string(REPLACE ";" " " PKGCONFIG_REQUIRES "${PKGCONFIG_REQUIRES}")
64 file(APPEND "${PKGCONFIG_FILE}" "Requires.private: ${PKGCONFIG_REQUIRES}\n")
65 endif()
66
67 # Prepare Cflags
68 if(DEFINED PKGCONFIG_CFLAGS)
69 string(REPLACE ";" " " PKGCONFIG_CFLAGS "${PKGCONFIG_CFLAGS}")
70 else()
71 set(PKGCONFIG_CFLAGS "")
72 endif()
73 file(APPEND "${PKGCONFIG_FILE}" "Cflags: -I\${includedir} ${PKGCONFIG_CFLAGS}\n")
74
75 # Install .pc file
76 install(FILES "${PKGCONFIG_FILE}" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
77 endfunction()