include(CMakeFindDependencyMacro) find_dependency(Boost CONFIG REQUIRED COMPONENTS json) function(modulus_define_bridge target) if(NOT TARGET ${target}) add_library(${target} INTERFACE IMPORTED) endif() endfunction() modulus_define_bridge(modulus::boost_json) set_target_properties(modulus::boost_json PROPERTIES INTERFACE_LINK_LIBRARIES "Boost::boost;Boost::json" ) 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() 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() 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()