diff --git a/CMakeLists.txt b/CMakeLists.txt index 64803e6..af28c69 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,49 @@ add_library( ${RETROWAVE_PROTOCOL_HEADERS} ) -target_include_directories(RetroWave INTERFACE .) +target_include_directories(RetroWave + INTERFACE + $ + $ +) + +set_target_properties(RetroWave PROPERTIES + VERSION ${LIB_VERSION_STRING} SOVERSION ${LIB_VERSION_MAJOR} + C_VISIBILITY_PRESET hidden +) + +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)