diff --git a/CMake/FindLIBMGBA.cmake b/CMake/FindLIBMGBA.cmake new file mode 100644 index 0000000000..21e2c84445 --- /dev/null +++ b/CMake/FindLIBMGBA.cmake @@ -0,0 +1,15 @@ +find_path(LIBMGBA_INCLUDE_DIR flags.h PATH_SUFFIXES mgba) +find_library(LIBMGBA_LIBRARY mgba) +mark_as_advanced(LIBMGBA_INCLUDE_DIR LIBMGBA_LIBRARY) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LIBMGBA DEFAULT_MSG + LIBMGBA_INCLUDE_DIR LIBMGBA_LIBRARY) + +if(LIBMGBA_FOUND AND NOT mGBA::mgba) + add_library(mGBA::mgba UNKNOWN IMPORTED) + set_target_properties(mGBA::mgba PROPERTIES + IMPORTED_LOCATION "${LIBMGBA_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBMGBA_INCLUDE_DIR}" + ) +endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 90650f0d12..d4a68f49f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -945,8 +945,11 @@ if(NOT ENABLE_QT) set(USE_MGBA 0) endif() if(USE_MGBA) - message(STATUS "Using static libmgba from Externals") - add_subdirectory(Externals/mGBA) + find_package(LIBMGBA) + if(NOT LIBMGBA_FOUND) + message(STATUS "Using static libmgba from Externals") + add_subdirectory(Externals/mGBA) + endif() endif() find_package(SYSTEMD)