From b9ece86ffdf6e8fa14c3432e26e126429fffbb17 Mon Sep 17 00:00:00 2001 From: Adam Griffiths Date: Sat, 26 Sep 2020 00:20:49 +1000 Subject: [PATCH] Add join_paths and join prefix with include/lib dirs (#1383) Fixes #1380: incorrect usage of CMake paths which causes issues on some more complicated environments (NixOS especially). --- cmake/JoinPaths.cmake | 26 ++++++++++++++++++++++++++ raylib.pc.in | 4 ++-- src/CMakeLists.txt | 5 +++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 cmake/JoinPaths.cmake diff --git a/cmake/JoinPaths.cmake b/cmake/JoinPaths.cmake new file mode 100644 index 00000000..1de3012e --- /dev/null +++ b/cmake/JoinPaths.cmake @@ -0,0 +1,26 @@ +# This module provides function for joining paths +# known from most languages +# +# Original license: +# SPDX-License-Identifier: (MIT OR CC0-1.0) +# Explicit permission given to distribute this module under +# the terms of the project as described in /LICENSE.rst. +# Copyright 2020 Jan Tojnar +# https://github.com/jtojnar/cmake-snips +# +# Modelled after Python’s os.path.join +# https://docs.python.org/3.7/library/os.path.html#os.path.join +# Windows not supported +function(join_paths joined_path first_path_segment) + set(temp_path "${first_path_segment}") + foreach(current_segment IN LISTS ARGN) + if(NOT ("${current_segment}" STREQUAL "")) + if(IS_ABSOLUTE "${current_segment}") + set(temp_path "${current_segment}") + else() + set(temp_path "${temp_path}/${current_segment}") + endif() + endif() + endforeach() + set(${joined_path} "${temp_path}" PARENT_SCOPE) +endfunction() diff --git a/raylib.pc.in b/raylib.pc.in index 5c2a2ec2..1c6e41b1 100644 --- a/raylib.pc.in +++ b/raylib.pc.in @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=${prefix} -libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ -includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ +libdir=@libdir_for_pc_file@ +includedir=@includedir_for_pc_file@ Name: raylib Description: Simple and easy-to-use library to enjoy videogames programming diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a2289a26..4cfc80f7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,7 @@ # Setup the project and settings project(raylib C) include(GNUInstallDirs) +include(JoinPaths) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake") set(PROJECT_VERSION 3.0.0) @@ -248,6 +249,10 @@ endif(SHARED) if (NOT DEFINED PKG_CONFIG_LIBS_EXTRA) set(PKG_CONFIG_LIBS_EXTRA "${PKG_CONFIG_LIBS_PRIVATE}") endif() + +join_paths(libdir_for_pc_file "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}") +join_paths(includedir_for_pc_file "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") + configure_file(../raylib.pc.in raylib.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/raylib.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") configure_file(../cmake/raylib-config-version.cmake raylib-config-version.cmake @ONLY)