@@ -3,4 +3,32 @@
|
||||
include(CMakeFindDependencyMacro)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/modulus_third_party.cmake")
|
||||
if(NOT TARGET Boost::json)
|
||||
set(modulus_FOUND FALSE)
|
||||
set(modulus_NOT_FOUND_MESSAGE "Modulus requires Boost.JSON")
|
||||
return()
|
||||
endif()
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/modulus-targets.cmake")
|
||||
foreach(_modulus_component IN LISTS modulus_FIND_COMPONENTS)
|
||||
set(modulus_${_modulus_component}_FOUND FALSE)
|
||||
if(_modulus_component STREQUAL "modulus" OR _modulus_component STREQUAL "boost_json")
|
||||
set(modulus_${_modulus_component}_FOUND TRUE)
|
||||
continue()
|
||||
elseif(_modulus_component STREQUAL "openssl")
|
||||
set(_modulus_dependency OpenSSL)
|
||||
elseif(_modulus_component STREQUAL "sqlite")
|
||||
set(_modulus_dependency SQLite3)
|
||||
elseif(_modulus_component STREQUAL "raylib")
|
||||
set(_modulus_dependency raylib)
|
||||
elseif(_modulus_component STREQUAL "miniaudio")
|
||||
set(_modulus_dependency miniaudio)
|
||||
else()
|
||||
continue()
|
||||
endif()
|
||||
find_package(${_modulus_dependency} CONFIG QUIET)
|
||||
if(${_modulus_dependency}_FOUND)
|
||||
cmake_language(CALL modulus_require_${_modulus_component})
|
||||
set(modulus_${_modulus_component}_FOUND TRUE)
|
||||
endif()
|
||||
endforeach()
|
||||
check_required_components(modulus)
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
include(CMakeFindDependencyMacro)
|
||||
|
||||
find_dependency(Boost CONFIG REQUIRED COMPONENTS json)
|
||||
find_dependency(OpenSSL CONFIG REQUIRED)
|
||||
find_dependency(SQLite3 CONFIG REQUIRED)
|
||||
find_dependency(raylib CONFIG REQUIRED)
|
||||
find_dependency(miniaudio CONFIG REQUIRED)
|
||||
|
||||
function(modulus_define_bridge target)
|
||||
if(NOT TARGET ${target})
|
||||
@@ -17,54 +13,74 @@ set_target_properties(modulus::boost_json PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "Boost::boost;Boost::json"
|
||||
)
|
||||
|
||||
modulus_define_bridge(modulus::openssl)
|
||||
set_target_properties(modulus::openssl PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "OpenSSL::SSL;OpenSSL::Crypto"
|
||||
)
|
||||
function(modulus_require_openssl)
|
||||
find_dependency(OpenSSL CONFIG REQUIRED)
|
||||
modulus_define_bridge(modulus::openssl)
|
||||
set_target_properties(modulus::openssl PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "OpenSSL::SSL;OpenSSL::Crypto"
|
||||
)
|
||||
endfunction()
|
||||
|
||||
modulus_define_bridge(modulus::sqlite)
|
||||
set_target_properties(modulus::sqlite PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "SQLite::SQLite3"
|
||||
)
|
||||
function(modulus_require_sqlite)
|
||||
find_dependency(SQLite3 CONFIG REQUIRED)
|
||||
modulus_define_bridge(modulus::sqlite)
|
||||
set_target_properties(modulus::sqlite PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "SQLite::SQLite3"
|
||||
)
|
||||
endfunction()
|
||||
|
||||
set(_modulus_raylib_target "")
|
||||
if(TARGET raylib)
|
||||
set(_modulus_raylib_target raylib)
|
||||
elseif(TARGET raylib::raylib)
|
||||
set(_modulus_raylib_target raylib::raylib)
|
||||
function(modulus_require_raylib)
|
||||
find_dependency(raylib CONFIG REQUIRED)
|
||||
|
||||
set(_modulus_raylib_target "")
|
||||
if(TARGET raylib)
|
||||
set(_modulus_raylib_target raylib)
|
||||
elseif(TARGET raylib::raylib)
|
||||
set(_modulus_raylib_target raylib::raylib)
|
||||
endif()
|
||||
|
||||
if(NOT _modulus_raylib_target)
|
||||
message(FATAL_ERROR "raylib package did not define a supported CMake target")
|
||||
endif()
|
||||
|
||||
set(_modulus_raylib_link_libraries ${_modulus_raylib_target})
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
list(APPEND _modulus_raylib_link_libraries EGL GLESv2 drm gbm atomic dl)
|
||||
endif()
|
||||
|
||||
modulus_define_bridge(modulus::raylib)
|
||||
set_target_properties(modulus::raylib PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "${_modulus_raylib_link_libraries}"
|
||||
)
|
||||
|
||||
unset(_modulus_raylib_link_libraries)
|
||||
unset(_modulus_raylib_target)
|
||||
endfunction()
|
||||
|
||||
function(modulus_require_miniaudio)
|
||||
find_dependency(miniaudio CONFIG REQUIRED)
|
||||
|
||||
set(_modulus_miniaudio_target "")
|
||||
if(TARGET miniaudio::miniaudio)
|
||||
set(_modulus_miniaudio_target miniaudio::miniaudio)
|
||||
elseif(TARGET miniaudio)
|
||||
set(_modulus_miniaudio_target miniaudio)
|
||||
endif()
|
||||
|
||||
if(NOT _modulus_miniaudio_target)
|
||||
message(FATAL_ERROR "miniaudio package did not define a supported CMake target")
|
||||
endif()
|
||||
|
||||
modulus_define_bridge(modulus::miniaudio)
|
||||
set_target_properties(modulus::miniaudio PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "${_modulus_miniaudio_target}"
|
||||
)
|
||||
|
||||
unset(_modulus_miniaudio_target)
|
||||
endfunction()
|
||||
|
||||
# CMakeDeps creates enabled bridges before including this build module. Keep
|
||||
# raylib's system libraries after its static archive, as in installed packages.
|
||||
if(TARGET modulus::raylib)
|
||||
modulus_require_raylib()
|
||||
endif()
|
||||
|
||||
if(NOT _modulus_raylib_target)
|
||||
message(FATAL_ERROR "raylib package did not define a supported CMake target")
|
||||
endif()
|
||||
|
||||
set(_modulus_raylib_link_libraries ${_modulus_raylib_target})
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
list(APPEND _modulus_raylib_link_libraries EGL GLESv2 drm gbm atomic dl)
|
||||
endif()
|
||||
|
||||
modulus_define_bridge(modulus::raylib)
|
||||
set_target_properties(modulus::raylib PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "${_modulus_raylib_link_libraries}"
|
||||
)
|
||||
|
||||
unset(_modulus_raylib_link_libraries)
|
||||
unset(_modulus_raylib_target)
|
||||
|
||||
set(_modulus_miniaudio_target "")
|
||||
if(TARGET miniaudio::miniaudio)
|
||||
set(_modulus_miniaudio_target miniaudio::miniaudio)
|
||||
elseif(TARGET miniaudio)
|
||||
set(_modulus_miniaudio_target miniaudio)
|
||||
endif()
|
||||
|
||||
if(NOT _modulus_miniaudio_target)
|
||||
message(FATAL_ERROR "miniaudio package did not define a supported CMake target")
|
||||
endif()
|
||||
|
||||
modulus_define_bridge(modulus::miniaudio)
|
||||
set_target_properties(modulus::miniaudio PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "${_modulus_miniaudio_target}"
|
||||
)
|
||||
|
||||
unset(_modulus_miniaudio_target)
|
||||
|
||||
Reference in New Issue
Block a user