From 65748e2244c2a7d99db5aa3bcad5478f64aa036c Mon Sep 17 00:00:00 2001 From: Julian Uy Date: Fri, 13 Dec 2024 21:09:59 -0600 Subject: [PATCH] add: pkg-config file for gsKit --- .github/workflows/compilation.yml | 8 +++-- CMakeLists.txt | 55 ++++++++++++++++++++++++++++--- gsKit.pc.cmakein | 13 ++++++++ 3 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 gsKit.pc.cmakein diff --git a/.github/workflows/compilation.yml b/.github/workflows/compilation.yml index a829ed1..f8587c0 100644 --- a/.github/workflows/compilation.yml +++ b/.github/workflows/compilation.yml @@ -11,12 +11,16 @@ jobs: runs-on: ubuntu-latest container: ps2dev/ps2sdk-ports:latest steps: - - uses: actions/checkout@v4 - - name: Install dependencies run: | apk add build-base git cmake + - uses: actions/checkout@v4 + + - run: | + git config --global --add safe.directory "$GITHUB_WORKSPACE" + git fetch --prune --unshallow + - name: Compile project with everything enabled env: GSKIT_DEBUG: 1 diff --git a/CMakeLists.txt b/CMakeLists.txt index c9a1e13..571034d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,24 +25,52 @@ endif() set(INSTALL_LIB_DIR "${GSKIT}/lib" CACHE PATH "Installation directory for libraries") set(INSTALL_INC_DIR "${GSKIT}/include" CACHE PATH "Installation directory for headers") +set(INSTALL_PKGCONFIG_DIR "${GSKIT}/lib/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files") set(GSKIT_EXTERNAL_LIBS "") +set(GSKIT_EXTERNAL_INCLUDES "") + +set(CUR_GIT_TAG v0.0.0) +find_package(Git) +if(GIT_FOUND) + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git) + execute_process(COMMAND ${GIT_EXECUTABLE} describe --abbrev=0 --tags + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE TMP_GIT_TAG + RESULT_VARIABLE TMP_RES + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(TMP_RES EQUAL "0") + set(CUR_GIT_TAG ${TMP_GIT_TAG}) + endif() + endif() +endif() + +string(REGEX REPLACE "^v" "" CUR_VERSION ${CUR_GIT_TAG}) find_library(LIBJPEG_LIBRARY NAMES jpeg) find_path(LIBJPEG_INCLUDE_DIR NAMES jpeglib.h) if(LIBJPEG_LIBRARY) list(APPEND GSKIT_EXTERNAL_LIBS ${LIBJPEG_LIBRARY}) - include_directories(${LIBJPEG_INCLUDE_DIR}) + list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBJPEG_INCLUDE_DIR}) add_definitions(-DHAVE_LIBJPEG) endif() +find_library(LIBLZMA_LIBRARY NAMES lzma) +find_path(LIBLZMA_INCLUDE_DIR NAMES lzma.h) + +if(LIBLZMA_LIBRARY) + list(APPEND GSKIT_EXTERNAL_LIBS ${LIBLZMA_LIBRARY}) + list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBLZMA_INCLUDE_DIR}) + add_definitions(-DHAVE_LIBLZMA) +endif() + find_library(LIBTIFF_LIBRARY NAMES tiff) find_path(LIBTIFF_INCLUDE_DIR NAMES tiff.h) if(LIBTIFF_LIBRARY) - list(APPEND GSKIT_EXTERNAL_LIBS lzma ${LIBTIFF_LIBRARY}) - include_directories(${LIBTIFF_INCLUDE_DIR}) + list(APPEND GSKIT_EXTERNAL_LIBS ${LIBTIFF_LIBRARY}) + list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBTIFF_INCLUDE_DIR}) add_definitions(-DHAVE_LIBTIFF) endif() @@ -51,7 +79,7 @@ find_path(LIBZ_INCLUDE_DIR NAMES zlib.h) if(LIBZ_LIBRARY) list(APPEND GSKIT_EXTERNAL_LIBS ${LIBZ_LIBRARY}) - include_directories(${LIBZ_INCLUDE_DIR}) + list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBZ_INCLUDE_DIR}) add_definitions(-DHAVE_ZLIB) endif() @@ -60,10 +88,12 @@ find_path(LIBPNG_INCLUDE_DIR NAMES png.h) if(LIBPNG_LIBRARY) list(APPEND GSKIT_EXTERNAL_LIBS ${LIBPNG_LIBRARY}) - include_directories(${LIBPNG_INCLUDE_DIR}) + list(APPEND GSKIT_EXTERNAL_INCLUDES ${LIBPNG_INCLUDE_DIR}) add_definitions(-DHAVE_LIBPNG) endif() +include_directories(${GSKIT_EXTERNAL_INCLUDES}) + macro (add_object_library_macros objlistvar sourcefile) set(objects_list "") foreach(arg IN ITEMS ${ARGN}) @@ -264,6 +294,18 @@ add_library(gskit_toolkit STATIC target_include_directories(gskit_toolkit PUBLIC ee/toolkit/include) +set(PCKEY_NAME gsKit) +set(PCKEY_DESCRIPTION "gsKit graphics library for Sony Playstation 2") +set(PCKEY_VERSION ${CUR_VERSION}) +set(PCKEY_REQUIRES) +set(PCKEY_LIBS "-L${INSTALL_LIB_DIR} -lgskit -ldmakit -lgskit_toolkit") +foreach(_ITEM ${GSKIT_EXTERNAL_LIBS}) + set(PCKEY_LIBS "${PCKEY_LIBS} ${_ITEM}") +endforeach() +set(PCKEY_CFLAGS "-I${INSTALL_INC_DIR}") +set(GSKIT_PC ${CMAKE_CURRENT_BINARY_DIR}/gsKit.pc) +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/gsKit.pc.cmakein + ${GSKIT_PC} @ONLY) if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) install(TARGETS gskit dmakit gskit_toolkit @@ -277,6 +319,9 @@ if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) FILES_MATCHING PATTERN "*.h" ) endif() +if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) + install(FILES ${GSKIT_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}") +endif() if(NOT SKIP_BUILD_EXAMPLES) set(CMAKE_EXECUTABLE_SUFFIX .elf) diff --git a/gsKit.pc.cmakein b/gsKit.pc.cmakein new file mode 100644 index 0000000..b46b9a3 --- /dev/null +++ b/gsKit.pc.cmakein @@ -0,0 +1,13 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=@INSTALL_LIB_DIR@ +sharedlibdir=@INSTALL_LIB_DIR@ +includedir=@INSTALL_INC_DIR@ + +Name: @PCKEY_NAME@ +Description: @PCKEY_DESCRIPTION@ +Version: @PCKEY_VERSION@ + +Requires: @PCKEY_REQUIRES@ +Libs: @PCKEY_LIBS@ +Cflags: @PCKEY_CFLAGS@