From c76bab3c1a3e018307d28139db5e3f62e9f07bca Mon Sep 17 00:00:00 2001
From: Adrian Herrera <adrian.herrera02@gmail.com>
Date: Sat, 4 Jun 2016 15:00:33 +1000
Subject: [PATCH] Added ability to auto generate and install a keystone.pc file

This is required for when I get around to writing some Haskell bindings :-)
---
 CMakeLists.txt      | 25 +++++++++++++++++++++++++
 pkg-config.pc.cmake |  7 +++++++
 2 files changed, 32 insertions(+)
 create mode 100644 pkg-config.pc.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index eb45228..2392c2d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,7 @@
 # By Nguyen Anh Quynh, 2016
 
 cmake_minimum_required(VERSION 2.8.7)
+project(keystone)
 
 set(KEYSTONE_VERSION_MAJOR 0)
 set(KEYSTONE_VERSION_MINOR 9)
@@ -46,6 +47,30 @@ else()
     add_subdirectory(kstool)
 endif()
 
+# generate and install pkg-config.pc
+FIND_PACKAGE(PkgConfig)
+SET(PKG_CONFIG_FILE_PATH
+    "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc"
+)
+SET(PKG_CONFIG_LIBDIR
+    "${CMAKE_INSTALL_PREFIX}/lib"
+)
+SET(PKG_CONFIG_INCLUDEDIR
+    "${CMAKE_INSTALL_PREFIX}/include"
+)
+SET(PKG_CONFIG_LIBS
+    "-L\${libdir} -lkeystone"
+)
+SET(PKG_CONFIG_CFLAGS
+    "-I\${includedir}"
+)
+CONFIGURE_FILE(
+    "${CMAKE_CURRENT_SOURCE_DIR}/pkg-config.pc.cmake"
+    "${PKG_CONFIG_FILE_PATH}"
+)
+INSTALL(FILES "${PKG_CONFIG_FILE_PATH}"
+        DESTINATION lib/pkgconfig)
+
 # uninstall target
 configure_file(
     "${CMAKE_CURRENT_SOURCE_DIR}/CMakeUninstall.in"
diff --git a/pkg-config.pc.cmake b/pkg-config.pc.cmake
new file mode 100644
index 0000000..20f6992
--- /dev/null
+++ b/pkg-config.pc.cmake
@@ -0,0 +1,7 @@
+Name: ${PROJECT_NAME}
+Description: Keystone assembler engine
+Version: ${KEYSTONE_VERSION_MAJOR}.${KEYSTONE_VERSION_MINOR}
+libdir=${PKG_CONFIG_LIBDIR}
+includedir=${PKG_CONFIG_INCLUDEDIR}
+Libs: ${PKG_CONFIG_LIBS}
+Cflags: ${PKG_CONFIG_CFLAGS}
-- 
GitLab