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)
|