From: Mathieu Baudier <mbaudier@argeo.org>
Date: Wed, 11 Jun 2025 18:30:05 +0200
Subject: cmake-Install-to-private-directories

Install libraries and public headers to a private directory as they are
not yet stable.
---
 CMakeLists.txt    | 10 +++++++---
 cmake/llama.pc.in |  4 ++--
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c79ccd0..0fd5375 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -213,8 +213,8 @@ endif()
 include(GNUInstallDirs)
 include(CMakePackageConfigHelpers)
 
-set(LLAMA_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header  files")
-set(LLAMA_LIB_INSTALL_DIR     ${CMAKE_INSTALL_LIBDIR}     CACHE PATH "Location of library files")
+set(LLAMA_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}/llama CACHE PATH "Location of header  files")
+set(LLAMA_LIB_INSTALL_DIR     ${CMAKE_INSTALL_LIBDIR}/llama     CACHE PATH "Location of library files")
 set(LLAMA_BIN_INSTALL_DIR     ${CMAKE_INSTALL_BINDIR}     CACHE PATH "Location of binary  files")
 
 set(LLAMA_PUBLIC_HEADERS
@@ -225,7 +225,11 @@ set_target_properties(llama
     PROPERTIES
         PUBLIC_HEADER "${LLAMA_PUBLIC_HEADERS}")
 
-install(TARGETS llama LIBRARY PUBLIC_HEADER)
+install(TARGETS llama
+    # On Debian, we install the library and headers to a private directory "llama"
+    LIBRARY DESTINATION ${LLAMA_LIB_INSTALL_DIR}
+    PUBLIC_HEADER DESTINATION ${LLAMA_INCLUDE_INSTALL_DIR}
+)
 
 configure_package_config_file(
         ${CMAKE_CURRENT_SOURCE_DIR}/cmake/llama-config.cmake.in
diff --git a/cmake/llama.pc.in b/cmake/llama.pc.in
index 6fb58b5..56d46c9 100644
--- a/cmake/llama.pc.in
+++ b/cmake/llama.pc.in
@@ -1,7 +1,7 @@
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=@CMAKE_INSTALL_PREFIX@
-libdir=@CMAKE_INSTALL_FULL_LIBDIR@
-includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
+libdir=${exec_prefix}/@LLAMA_LIB_INSTALL_DIR@
+includedir=${prefix}/@LLAMA_INCLUDE_INSTALL_DIR@
 
 Name: llama
 Description: Port of Facebook's LLaMA model in C/C++
