From 92fa2500a6f7679edd178977951b87793db7713d Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Mon, 20 Jun 2022 23:02:19 +0100 Subject: [PATCH] Fix finding SimpleIni The version in Ubuntu 22.04 comes without `ConvertUTF.{h,c}`. We actually do not need `ConvertUTF.{h,c}` and starting from v4.19 it is possible to tell SimpleIni to not include it by setting `SI_NO_CONVERSION`. Sets `SI_NO_CONVERSION` and raises the minimum required SimpleIni version to 4.19. --- CMake/Dependencies.cmake | 6 ++---- CMake/finders/Findsimpleini.cmake | 13 +++++++++++-- Source/options.cpp | 1 + 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/CMake/Dependencies.cmake b/CMake/Dependencies.cmake index 134040209..3d389d949 100644 --- a/CMake/Dependencies.cmake +++ b/CMake/Dependencies.cmake @@ -168,7 +168,7 @@ if(WIN32 AND NOT UWP_LIB) endif() if(NOT DEFINED DEVILUTIONX_SYSTEM_SIMPLEINI) - find_package(simpleini QUIET) + find_package(simpleini 4.19 QUIET) if(simpleini_FOUND) message("-- Found simpleini") else() @@ -178,9 +178,7 @@ if(NOT DEFINED DEVILUTIONX_SYSTEM_SIMPLEINI) endif() dependency_options("simpleini" DEVILUTIONX_SYSTEM_SIMPLEINI ON DEVILUTIONX_STATIC_SIMPLEINI) if(DEVILUTIONX_SYSTEM_SIMPLEINI) - if(NOT simpleini_FOUND) - find_package(simpleini REQUIRED) - endif() + find_package(simpleini 4.19 REQUIRED) else() add_subdirectory(3rdParty/simpleini) endif() diff --git a/CMake/finders/Findsimpleini.cmake b/CMake/finders/Findsimpleini.cmake index 8cf026f25..aed8bdb16 100644 --- a/CMake/finders/Findsimpleini.cmake +++ b/CMake/finders/Findsimpleini.cmake @@ -7,9 +7,18 @@ find_path(simpleini_INCLUDE_DIR SimpleIni.h find_library(simpleini_LIBRARY simpleini HINTS ${PC_simpleini_LIBDIR} ${PC_simpleini_LIBRARY_DIRS}) + +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() + include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(simpleini DEFAULT_MSG - simpleini_INCLUDE_DIR simpleini_LIBRARY) +find_package_handle_standard_args(simpleini + REQUIRED_VARS simpleini_INCLUDE_DIR simpleini_LIBRARY + VERSION_VAR simpleini_VERSION) if(simpleini_FOUND) add_library(simpleini INTERFACE) diff --git a/Source/options.cpp b/Source/options.cpp index 9e03df042..a416cf28d 100644 --- a/Source/options.cpp +++ b/Source/options.cpp @@ -8,6 +8,7 @@ #include #define SI_SUPPORT_IOSTREAMS +#define SI_NO_CONVERSION #include #include "control.h"