diff --git a/3rdParty/simpleini/CMakeLists.txt b/3rdParty/simpleini/CMakeLists.txt index 60049f295..705bf1f38 100644 --- a/3rdParty/simpleini/CMakeLists.txt +++ b/3rdParty/simpleini/CMakeLists.txt @@ -9,3 +9,4 @@ FetchContent_MakeAvailableExcludeFromAll(simpleini) add_library(simpleini INTERFACE) target_include_directories(simpleini INTERFACE ${simpleini_SOURCE_DIR}) +add_library(simpleini::simpleini ALIAS simpleini) diff --git a/CMake/finders/Findsimpleini.cmake b/CMake/finders/Findsimpleini.cmake index aed8bdb16..eaa0e51e1 100644 --- a/CMake/finders/Findsimpleini.cmake +++ b/CMake/finders/Findsimpleini.cmake @@ -1,29 +1,48 @@ -find_package(PkgConfig) -pkg_check_modules(PC_simpleini QUIET simpleini) +find_package(PkgConfig QUIET) +if(PKG_CONFIG_FOUND) + pkg_check_modules(PC_simpleini QUIET simpleini) +endif() find_path(simpleini_INCLUDE_DIR SimpleIni.h - HINTS ${PC_simpleini_INCLUDEDIR} ${PC_simpleini_INCLUDE_DIRS}) + HINTS ${PC_simpleini_INCLUDEDIR} ${PC_simpleini_INCLUDE_DIRS} ${SIMPLEINI_INCLUDE_DIRS}) find_library(simpleini_LIBRARY simpleini - HINTS ${PC_simpleini_LIBDIR} ${PC_simpleini_LIBRARY_DIRS}) - + HINTS ${PC_simpleini_LIBDIR} ${PC_simpleini_LIBRARY_DIRS} ${SIMPLEINI_LIBRARY_DIRS}) -if (NOT simpleini_INCLUDE_DIR STREQUAL "simpleini_INCLUDE_DIR-NOTFOUND") +list(APPEND _required_vars "simpleini_INCLUDE_DIR") +if(NOT simpleini_INCLUDE_DIR STREQUAL "simpleini_INCLUDE_DIR-NOTFOUND") file(READ "${simpleini_INCLUDE_DIR}/SimpleIni.h" _version_header_content) if(_version_header_content MATCHES "Version *([0-9.]+)") set(simpleini_VERSION "${CMAKE_MATCH_1}") endif() endif() +# SimpleIni can be distributed as a header-only library, so the library is optional. +if(NOT simpleini_LIBRARY STREQUAL "simpleini_LIBRARY-NOTFOUND") + list(APPEND _required_vars "simpleini_LIBRARY") +endif() + include(FindPackageHandleStandardArgs) find_package_handle_standard_args(simpleini - REQUIRED_VARS simpleini_INCLUDE_DIR simpleini_LIBRARY + REQUIRED_VARS ${_required_vars} VERSION_VAR simpleini_VERSION) +if(simpleini_FOUND AND NOT TARGET simpleini::simpleini) + if(simpleini_LIBRARY STREQUAL "simpleini_LIBRARY-NOTFOUND") + # Header-only distribution. + add_library(simpleini INTERFACE) + target_include_directories(simpleini INTERFACE ${simpleini_INCLUDE_DIR}) + add_library(simpleini::simpleini ALIAS simpleini) + else() + # A distribution with a library. + add_library(simpleini::simpleini UNKNOWN IMPORTED) + set_target_properties(simpleini::simpleini PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${simpleini_INCLUDE_DIR} + IMPORTED_LOCATION ${simpleini_LIBRARY}) + endif() +endif() + if(simpleini_FOUND) - add_library(simpleini INTERFACE) - target_include_directories(simpleini INTERFACE ${simpleini_INCLUDE_DIR}) - target_link_libraries(simpleini INTERFACE ${simpleini_LIBRARY}) mark_as_advanced(simpleini_INCLUDE_DIR simpleini_LIBRARY) set(simpleini_LIBRARIES ${simpleini_LIBRARY}) set(simpleini_INCLUDE_DIRS ${simpleini_INCLUDE_DIR}) diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index ab0ae3784..b9a7813d4 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -229,7 +229,7 @@ target_link_libraries(libdevilutionx PUBLIC PKWare libmpq libsmackerdec - simpleini + simpleini::simpleini hoehrmann_utf8 ) @@ -243,7 +243,7 @@ if(NOT NONET) endif() if(NOT NOSOUND) - target_link_libraries(libdevilutionx PUBLIC SDL_audiolib) + target_link_libraries(libdevilutionx PUBLIC SDL_audiolib::SDL_audiolib) endif() if(NOT NONET AND NOT DISABLE_ZERO_TIER)