SDL_gesture: cmake: install SDL_gesture::SDL_gesture target + create sdl-gesture.pc

From 70dce2d51e846d16a5e3a97dec20fafbe8c8e91f Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sat, 17 Dec 2022 20:47:32 +0100
Subject: [PATCH] cmake: install SDL_gesture::SDL_gesture target + create
 sdl-gesture.pc

---
 CMakeLists.txt                   | 24 ++++++++++++++++++++----
 cmake/SDL_gestureConfig.cmake.in |  8 +-------
 cmake/sdl-gesture.pc.in          |  6 ++++++
 3 files changed, 27 insertions(+), 11 deletions(-)
 create mode 100644 cmake/sdl-gesture.pc.in

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c80a46d..b8e1287 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,10 @@ option(SDLGESTURE_TESTS "Build SDL_gesture tests" ON)
 
 add_library(SDL_gesture INTERFACE)
 add_library(SDL_gesture::SDL_gesture ALIAS SDL_gesture)
-target_include_directories(SDL_gesture INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
+target_include_directories(SDL_gesture INTERFACE
+    "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
+    "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
+)
 
 if(SDLGESTURE_TESTS)
     add_subdirectory(test)
@@ -29,20 +32,33 @@ else()
     set(LICENSES_PREFIX "${CMAKE_INSTALL_DATAROOTDIR}/licenses/SDL_gesture")
 endif()
 
+if(CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+    set(SDLGESTURE_INSTALL_PKGCONFIGDIR "libdata/pkgconfig")
+else()
+    set(SDLGESTURE_INSTALL_PKGCONFIGDIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+endif()
+
 configure_package_config_file(cmake/SDL_gestureConfig.cmake.in SDL_gestureConfig.cmake
     INSTALL_DESTINATION "${SDLGESTURE_INSTALL_CMAKEDIR}"
-    INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}"
-    PATH_VARS "CMAKE_INSTALL_FULL_INCLUDEDIR"
-    NO_SET_AND_CHECK_MACRO
 )
 write_basic_package_version_file(SDL_gestureConfigVersion.cmake
     COMPATIBILITY AnyNewerVersion
 )
 
+install(TARGETS SDL_gesture EXPORT SDLGestureExport)
 install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/SDL_gesture.h"
     DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
 )
+install(EXPORT SDLGestureExport
+    DESTINATION "${SDLGESTURE_INSTALL_CMAKEDIR}"
+    NAMESPACE SDL_gesture::
+    FILE SDL_gestureTargets.cmake
+)
 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SDL_gestureConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/SDL_gestureConfigVersion.cmake"
     DESTINATION "${SDLGESTURE_INSTALL_CMAKEDIR}"
 )
+configure_file(cmake/sdl-gesture.pc.in sdl-gesture.pc @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sdl-gesture.pc"
+    DESTINATION "${SDLGESTURE_INSTALL_PKGCONFIGDIR}"
+)
 install(FILES "LICENSE.txt" DESTINATION "${LICENSES_PREFIX}")
diff --git a/cmake/SDL_gestureConfig.cmake.in b/cmake/SDL_gestureConfig.cmake.in
index c1ab70a..fe619f2 100644
--- a/cmake/SDL_gestureConfig.cmake.in
+++ b/cmake/SDL_gestureConfig.cmake.in
@@ -1,7 +1 @@
-@PACKAGE_INIT@
-
-if(NOT TARGET SDL_gesture::SDL_gesture)
-    add_library(SDL_gesture INTERFACE)
-    target_include_directories(SDL_gesture INTERFACE "@PACKAGE_CMAKE_INSTALL_FULL_INCLUDEDIR@")
-    add_library(SDL_gesture::SDL_gesture ALIAS SDL_gesture)
-endif()
+include("${CMAKE_CURRENT_LIST_DIR}/SDL_gestureTargets.cmake")
diff --git a/cmake/sdl-gesture.pc.in b/cmake/sdl-gesture.pc.in
new file mode 100644
index 0000000..e8bcac5
--- /dev/null
+++ b/cmake/sdl-gesture.pc.in
@@ -0,0 +1,6 @@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
+
+Name: sdl_gesture
+Description: SDL2's gesture API split out into a single-header library
+Version: @PROJECT_VERSION@
+Cflags: -I${includedir}