Handle relative vs absolute paths for .pc file variables
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0aaea9d..096a5c1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -607,6 +607,17 @@
)
endif()
+ # Handle both relative and absolute paths (e.g. NixOS) for a relocatable package
+ if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
+ set(PC_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}")
+ else()
+ set(PC_INCLUDEDIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
+ endif()
+ if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
+ set(PC_LIBDIR "${CMAKE_INSTALL_LIBDIR}")
+ else()
+ set(PC_LIBDIR "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
+ endif()
configure_file(libavif.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libavif.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libavif.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()
diff --git a/libavif.pc.cmake b/libavif.pc.cmake
index f87d289..c091443 100644
--- a/libavif.pc.cmake
+++ b/libavif.pc.cmake
@@ -1,7 +1,7 @@
prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=@CMAKE_INSTALL_PREFIX@
-libdir=@CMAKE_INSTALL_FULL_LIBDIR@
-includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
+exec_prefix=${prefix}
+libdir=@PC_LIBDIR@
+includedir=@PC_INCLUDEDIR@
Name: @PROJECT_NAME@
Description: Library for encoding and decoding .avif files