Skip to content

Commit 9c03bc0

Browse files
committed
buildsystem: improvements to pkg-config handling
Use pkg-config to find dependents, removing need for explicitly specifying transitive dependencies Use pkg-config to specify dependencies instead of full path to library Use relative paths in pkg-config metadata file Add exinfo to pkg-config file :
1 parent b752b30 commit 9c03bc0

2 files changed

Lines changed: 78 additions & 57 deletions

File tree

CMakeLists.txt

Lines changed: 65 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -29,69 +29,87 @@ set(INSTALL_PKGCONFIG_DIR "${GSKIT}/lib/pkgconfig" CACHE PATH "Installation dire
2929

3030
set(GSKIT_EXTERNAL_LIBS "")
3131
set(GSKIT_EXTERNAL_INCLUDES "")
32+
set(GSKIT_EXTERNAL_REQUIRES "")
3233

3334
# Enable interprocedural optimization LTO
3435
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
3536

37+
# Prepare git metadata
3638
set(CUR_GIT_TAG v0.0.0)
39+
set(CUR_GIT_COMMIT_HASH "")
40+
set(CUR_GIT_COMMIT_TIMESTAMP "")
41+
set(CUR_GIT_REFS "")
42+
set(CUR_GIT_REMOTE_URL "")
3743
find_package(Git)
3844
if(GIT_FOUND)
39-
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
40-
execute_process(COMMAND ${GIT_EXECUTABLE} describe --abbrev=0 --tags
41-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
42-
OUTPUT_VARIABLE TMP_GIT_TAG
43-
RESULT_VARIABLE TMP_RES
44-
OUTPUT_STRIP_TRAILING_WHITESPACE)
45-
if(TMP_RES EQUAL "0")
46-
set(CUR_GIT_TAG ${TMP_GIT_TAG})
47-
endif()
48-
endif()
45+
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
46+
execute_process(COMMAND ${GIT_EXECUTABLE} describe --abbrev=0 --tags
47+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
48+
OUTPUT_VARIABLE TMP_GIT_TAG
49+
RESULT_VARIABLE TMP_RES
50+
OUTPUT_STRIP_TRAILING_WHITESPACE)
51+
execute_process(COMMAND ${GIT_EXECUTABLE} show --no-patch --format=%H
52+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
53+
OUTPUT_VARIABLE TMP_GIT_COMMIT_HASH
54+
RESULT_VARIABLE TMP_RES
55+
OUTPUT_STRIP_TRAILING_WHITESPACE)
56+
if(TMP_RES EQUAL "0")
57+
set(CUR_GIT_COMMIT_HASH ${TMP_GIT_COMMIT_HASH})
58+
endif()
59+
execute_process(COMMAND ${GIT_EXECUTABLE} show --no-patch --format=%cd --date=unix
60+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
61+
OUTPUT_VARIABLE TMP_GIT_COMMIT_TIMESTAMP
62+
RESULT_VARIABLE TMP_RES
63+
OUTPUT_STRIP_TRAILING_WHITESPACE)
64+
if(TMP_RES EQUAL "0")
65+
set(CUR_GIT_COMMIT_TIMESTAMP ${TMP_GIT_COMMIT_TIMESTAMP})
66+
endif()
67+
execute_process(COMMAND ${GIT_EXECUTABLE} show --no-patch "--format=%(decorate:prefix=,suffix=,tag=,separator=%x2C,pointer=%x2C)"
68+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
69+
OUTPUT_VARIABLE TMP_GIT_REFS
70+
RESULT_VARIABLE TMP_RES
71+
OUTPUT_STRIP_TRAILING_WHITESPACE)
72+
if(TMP_RES EQUAL "0")
73+
set(CUR_GIT_REFS ${TMP_GIT_REFS})
74+
endif()
75+
execute_process(COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url
76+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
77+
OUTPUT_VARIABLE TMP_GIT_REMOTE_URL
78+
RESULT_VARIABLE TMP_RES
79+
OUTPUT_STRIP_TRAILING_WHITESPACE)
80+
if(TMP_RES EQUAL "0")
81+
set(CUR_GIT_REMOTE_URL ${TMP_GIT_REMOTE_URL})
82+
endif()
83+
endif()
4984
endif()
5085

5186
string(REGEX REPLACE "^v" "" CUR_VERSION ${CUR_GIT_TAG})
5287

53-
find_library(LIBJPEG_LIBRARY NAMES jpeg)
54-
find_path(LIBJPEG_INCLUDE_DIR NAMES jpeglib.h)
88+
find_package(PkgConfig REQUIRED)
89+
pkg_check_modules(LIBJPEG libjpeg)
5590

56-
if(LIBJPEG_LIBRARY)
57-
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBJPEG_LIBRARY})
58-
list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBJPEG_INCLUDE_DIR})
91+
if(LIBJPEG_FOUND)
92+
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBJPEG_LIBRARIES})
93+
list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBJPEG_INCLUDE_DIRS})
94+
list(APPEND GSKIT_EXTERNAL_REQUIRES libjpeg)
5995
add_definitions(-DHAVE_LIBJPEG)
6096
endif()
6197

62-
find_library(LIBLZMA_LIBRARY NAMES lzma)
63-
find_path(LIBLZMA_INCLUDE_DIR NAMES lzma.h)
64-
65-
if(LIBLZMA_LIBRARY)
66-
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBLZMA_LIBRARY})
67-
list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBLZMA_INCLUDE_DIR})
68-
add_definitions(-DHAVE_LIBLZMA)
69-
endif()
70-
71-
find_library(LIBTIFF_LIBRARY NAMES tiff)
72-
find_path(LIBTIFF_INCLUDE_DIR NAMES tiff.h)
98+
pkg_check_modules(LIBTIFF libtiff-4)
7399

74-
if(LIBTIFF_LIBRARY)
75-
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBTIFF_LIBRARY})
76-
list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBTIFF_INCLUDE_DIR})
100+
if(LIBTIFF_FOUND)
101+
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBTIFF_LIBRARIES})
102+
list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBTIFF_INCLUDE_DIRS})
103+
list(APPEND GSKIT_EXTERNAL_REQUIRES libtiff-4)
77104
add_definitions(-DHAVE_LIBTIFF)
78105
endif()
79106

80-
find_library(LIBZ_LIBRARY NAMES z)
81-
find_path(LIBZ_INCLUDE_DIR NAMES zlib.h)
82-
83-
if(LIBZ_LIBRARY)
84-
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBZ_LIBRARY})
85-
list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBZ_INCLUDE_DIR})
86-
add_definitions(-DHAVE_ZLIB)
87-
endif()
88-
89-
find_library(LIBPNG_LIBRARY NAMES png)
90-
find_path(LIBPNG_INCLUDE_DIR NAMES png.h)
107+
pkg_check_modules(LIBPNG libpng)
91108

92-
if(LIBPNG_LIBRARY)
93-
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBPNG_LIBRARY})
94-
list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBPNG_INCLUDE_DIR})
109+
if(LIBPNG_FOUND)
110+
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBPNG_LIBRARIES})
111+
list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBPNG_INCLUDE_DIRS})
112+
list(APPEND GSKIT_EXTERNAL_REQUIRES libpng)
95113
add_definitions(-DHAVE_LIBPNG)
96114
endif()
97115

@@ -306,15 +324,12 @@ add_library(gskit_toolkit STATIC
306324

307325
target_include_directories(gskit_toolkit PUBLIC ee/toolkit/include)
308326

309-
set(PCKEY_NAME gsKit)
327+
set(PCKEY_NAME ${PROJECT_NAME})
310328
set(PCKEY_DESCRIPTION "gsKit graphics library for Sony Playstation 2")
311329
set(PCKEY_VERSION ${CUR_VERSION})
312-
set(PCKEY_REQUIRES)
313-
set(PCKEY_LIBS "-L${INSTALL_LIB_DIR} -lgskit -ldmakit -lgskit_toolkit")
314-
foreach(_ITEM ${GSKIT_EXTERNAL_LIBS})
315-
set(PCKEY_LIBS "${PCKEY_LIBS} ${_ITEM}")
316-
endforeach()
317-
set(PCKEY_CFLAGS "-I${INSTALL_INC_DIR}")
330+
set(PCKEY_REQUIRES "${GSKIT_EXTERNAL_REQUIRES}")
331+
set(PCKEY_LIBS "-lgskit -ldmakit -lgskit_toolkit")
332+
set(PCKEY_CFLAGS "")
318333
set(GSKIT_PC ${CMAKE_CURRENT_BINARY_DIR}/gsKit.pc)
319334
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/gsKit.pc.cmakein
320335
${GSKIT_PC} @ONLY)

gsKit.pc.cmakein

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
1-
prefix=@CMAKE_INSTALL_PREFIX@
2-
exec_prefix=@CMAKE_INSTALL_PREFIX@
3-
libdir=@INSTALL_LIB_DIR@
4-
sharedlibdir=@INSTALL_LIB_DIR@
5-
includedir=@INSTALL_INC_DIR@
1+
prefix=${pcfiledir}/../..
2+
exec_prefix=${prefix}
3+
libdir=${prefix}/lib
4+
sharedlibdir=${exec_prefix}/lib
5+
includedir=${exec_prefix}/include
6+
7+
exinfo_git_tag=@CUR_GIT_TAG@
8+
exinfo_git_commit_hash=@CUR_GIT_COMMIT_HASH@
9+
exinfo_git_commit_timestamp=@CUR_GIT_COMMIT_TIMESTAMP@
10+
exinfo_git_refs=@CUR_GIT_REFS@
11+
exinfo_git_remote_url=@CUR_GIT_REMOTE_URL@
612

713
Name: @PCKEY_NAME@
814
Description: @PCKEY_DESCRIPTION@
915
Version: @PCKEY_VERSION@
1016

1117
Requires: @PCKEY_REQUIRES@
12-
Libs: @PCKEY_LIBS@
13-
Cflags: @PCKEY_CFLAGS@
18+
Libs: -L${libdir} @PCKEY_LIBS@
19+
Cflags: -I${includedir} @PCKEY_CFLAGS@

0 commit comments

Comments
 (0)