From e465f9d7d2ec9a320c327824d26cd4c468fabd21 Mon Sep 17 00:00:00 2001
From: EfesX <pilsnr@mail.ru>
Date: Wed, 5 Feb 2025 00:14:37 +0500
Subject: [PATCH] CMakeLists: add pkgconfig support

---
 cmake/EIPScannerConfig.cmake.in |  6 +++++
 src/CMakeLists.txt              | 40 +++++++++++++++++++++++++++++----
 2 files changed, 42 insertions(+), 4 deletions(-)
 create mode 100644 cmake/EIPScannerConfig.cmake.in

diff --git a/cmake/EIPScannerConfig.cmake.in b/cmake/EIPScannerConfig.cmake.in
new file mode 100644
index 0000000..3e16bd1
--- /dev/null
+++ b/cmake/EIPScannerConfig.cmake.in
@@ -0,0 +1,6 @@
+@PACKAGE_INIT@
+
+include("${CMAKE_CURRENT_LIST_DIR}/EIPScannerTargets.cmake")
+
+check_required_components(EIPScanner)
+
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6a58194..cdf0808 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -50,12 +50,14 @@ if(ENABLE_VENDOR_SRC)
 	add_subdirectory(vendor)
 endif()
 
-add_library(EIPScanner SHARED ${SOURCE_FILES} ${VENDOR_FILES})
-add_library(EIPScannerS STATIC ${SOURCE_FILES} ${VENDOR_FILES})
+if(BUILD_SHARED_LIBS)
+        add_library(EIPScanner SHARED ${SOURCE_FILES} ${VENDOR_FILES})
+else()
+        add_library(EIPScanner STATIC ${SOURCE_FILES} ${VENDOR_FILES})
+endif()
 
 if(WIN32)
 	target_link_libraries(EIPScanner ws2_32)
-	target_link_libraries(EIPScannerS ws2_32)
 endif()
 
 set_target_properties(
@@ -64,7 +66,10 @@ set_target_properties(
         VERSION ${EIPSCANNER_FULL_VERSION}
         SOVERSION ${EIPSCANNER_MAJOR_VERSION})
 
-install(TARGETS EIPScanner EIPScannerS
+set_target_properties(EIPScanner PROPERTIES EXPORT_NAME eipscanner)
+
+install(TARGETS EIPScanner
+        EXPORT EIPScanner
         LIBRARY
             DESTINATION lib
         ARCHIVE
@@ -73,3 +78,30 @@ install(TARGETS EIPScanner EIPScannerS
 install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/
         DESTINATION include/EIPScanner
         FILES_MATCHING PATTERN "*.h*")
+
+
+include(CMakePackageConfigHelpers)
+configure_package_config_file(
+        ../cmake/EIPScannerConfig.cmake.in
+        ${CMAKE_CURRENT_BINARY_DIR}/EIPScannerConfig.cmake
+        INSTALL_DESTINATION lib/cmake/eipscanner
+)
+
+write_basic_package_version_file(
+        ${CMAKE_CURRENT_BINARY_DIR}/EIPScannerConfigVersion.cmake
+        VERSION ${PROJECT_VERSION}
+        COMPATIBILITY SameMajorVersion
+)
+
+install(FILES
+        ${CMAKE_CURRENT_BINARY_DIR}/EIPScannerConfig.cmake
+        ${CMAKE_CURRENT_BINARY_DIR}/EIPScannerConfigVersion.cmake
+        DESTINATION lib/cmake/eipscanner
+)
+
+install(EXPORT EIPScanner
+        FILE EIPScannerTargets.cmake
+        NAMESPACE eipscanner::
+        DESTINATION lib/cmake/eipscanner
+)
+        
\ No newline at end of file