File RetroWave-cmake.patch of Package RetroWave

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 64803e6..c7d0e51 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,32 @@
 cmake_minimum_required(VERSION 3.13.4)
-project(RetroWave)
+project(RetroWave
+LANGUAGES C
+HOMEPAGE_URL https://github.com/SudoMaker/RetroWave
+DESCRIPTION "A library to interface with RetroWave OPL3 (express) devices"
+VERSION 0.1.0)
+
+set(LIB_VERSION_MAJOR 0)
+set(LIB_VERSION_MINOR 1)
+set(LIB_VERSION_PATCH 0)
+set(LIB_VERSION_STRING ${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH})
 
 set(CMAKE_CXX_STANDARD 17)
+include(GNUInstallDirs)
+
+#
+# RetroWaveConfig.cmake File
+#
+include(CMakePackageConfigHelpers)
+configure_package_config_file(
+        cmake/RetroWaveConfig.cmake.in
+        "${CMAKE_CURRENT_BINARY_DIR}/RetroWaveConfig.cmake"
+        INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/RetroWave"
+)
+write_basic_package_version_file(
+        "${CMAKE_CURRENT_BINARY_DIR}/RetroWaveConfigVersion.cmake"
+        VERSION ${PROJECT_VERSION}
+        COMPATIBILITY SameMajorVersion
+)
 
 if(${CMAKE_C_COMPILER} MATCHES "(C|c)lang|Xcode")
     message("-- Omg: you are using clang!")
@@ -28,14 +53,48 @@ add_library(
         ${RETROWAVE_PROTOCOL_HEADERS}
 )
 
-target_include_directories(RetroWave INTERFACE .)
+target_include_directories(RetroWave
+        INTERFACE
+        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+        $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/RetroWaveLib>
+)
+
+set_target_properties(RetroWave PROPERTIES
+        VERSION ${LIB_VERSION_STRING} SOVERSION ${LIB_VERSION_MAJOR}
+)
+
+install(FILES RetroWaveLib/RetroWave.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/RetroWaveLib)
+install(FILES ${RETROWAVE_BOARD_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/RetroWaveLib/Board)
+install(FILES ${RETROWAVE_PLATFORM_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/RetroWaveLib/Platform)
+install(FILES ${RETROWAVE_PROTOCOL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/RetroWaveLib/Protocol)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc"
+        DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
+)
+
+install(TARGETS RetroWave
+        DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        EXPORT RetroWaveTargets
+)
+
+install(
+        EXPORT RetroWaveTargets
+        FILE RetroWaveTargets.cmake
+        DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/RetroWave"
+        NAMESPACE RetroWave::
+)
+
+install(
+        FILES "${CMAKE_CURRENT_BINARY_DIR}/RetroWaveConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/RetroWaveConfigVersion.cmake"
+        DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/RetroWave"
+)
 
-install(FILES RetroWaveLib/RetroWave.h DESTINATION include/RetroWaveLib)
-install(FILES ${RETROWAVE_BOARD_HEADERS} DESTINATION include/RetroWaveLib/Board)
-install(FILES ${RETROWAVE_PLATFORM_HEADERS} DESTINATION include/RetroWaveLib/Platform)
-install(FILES ${RETROWAVE_PROTOCOL_HEADERS} DESTINATION include/RetroWaveLib/Protocol)
+configure_file(
+        "${CMAKE_CURRENT_SOURCE_DIR}/RetroWave.pc.in"
+        "${CMAKE_CURRENT_BINARY_DIR}/RetroWave.pc"
+        @ONLY
+)
 
-install(TARGETS RetroWave DESTINATION lib)
 
 set(RETROWAVE_BUILD_PLAYER -1 CACHE STRING "Set this to 0 to disable the player.")
 
diff --git a/RetroWave.pc.in b/RetroWave.pc.in
new file mode 100644
index 0000000..9d84d28
--- /dev/null
+++ b/RetroWave.pc.in
@@ -0,0 +1,15 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+includedir="${prefix}/include"
+
+Name: @PROJECT_NAME@
+Description: @CMAKE_PROJECT_DESCRIPTION@
+URL: @CMAKE_PROJECT_HOMEPAGE_URL@
+Version: @PROJECT_VERSION@
+Requires:
+Requires.private:
+Conflicts:
+Cflags: -I${includedir}/RetroWave
+Libs: -L${libdir} -lRetroWave
+Libs.private:
diff --git a/cmake/RetroWaveConfig.cmake.in b/cmake/RetroWaveConfig.cmake.in
new file mode 100644
index 0000000..7f135c1
--- /dev/null
+++ b/cmake/RetroWaveConfig.cmake.in
@@ -0,0 +1,5 @@
+@PACKAGE_INIT@
+
+include("${CMAKE_CURRENT_LIST_DIR}/RetroWaveTargets.cmake")
+
+check_required_components(RetroWave)
openSUSE Build Service is sponsored by