diff --git a/CMakeLists.txt b/CMakeLists.txt index 11befca65..f5fedcc4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -150,6 +150,9 @@ if("${SRB2_CONFIG_SYSTEM_LIBRARIES}") if("${SRB2_CONFIG_USE_GME}") find_package(libgme QUIET) endif() +if("${SRB2_CONFIG_UPNP}") + find_package(miniupnpc REQUIRED) +endif() endif() if(${PROJECT_SOURCE_DIR} MATCHES ${PROJECT_BINARY_DIR}) diff --git a/cmake/Modules/Findminiupnpc.cmake b/cmake/Modules/Findminiupnpc.cmake new file mode 100644 index 000000000..f4931ad83 --- /dev/null +++ b/cmake/Modules/Findminiupnpc.cmake @@ -0,0 +1,39 @@ +include(LibFindMacros) + +libfind_pkg_check_modules(libminiupnpc_PKGCONF miniupnpc libminiupnpc) + +find_path(libminiupnpc_INCLUDE_DIR + NAMES miniupnpc.h + PATHS + ${libminiupnpc_PKGCONF_INCLUDE_DIRS} + "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include" + "/usr/include" + "/usr/local/include" + PATH_SUFFIXES + miniupnpc +) + +find_library(libminiupnpc_LIBRARY + NAMES miniupnpc + PATHS + ${libminiupnpc_PKGCONF_LIBRARY_DIRS} + "/usr/lib" + "/usr/local/lib" +) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(miniupnpc + REQUIRED_VARS libminiupnpc_LIBRARY libminiupnpc_INCLUDE_DIR) + +if(miniupnpc_FOUND AND NOT TARGET miniupnpc) + add_library(miniupnpc UNKNOWN IMPORTED) + set_target_properties( + miniupnpc + PROPERTIES + IMPORTED_LOCATION "${libminiupnpc_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${libminiupnpc_INCLUDE_DIR}" + ) + add_library(miniupnpc::miniupnpc ALIAS miniupnpc) +endif() + +mark_as_advanced(libminiupnpc_LIBRARY libminiupnpc_INCLUDE_DIR)