Browse Source

CMake: Fix SimpleIni on vcpkg

pull/4775/head
Gleb Mazovetskiy 4 years ago
parent
commit
c6e107433a
  1. 1
      3rdParty/simpleini/CMakeLists.txt
  2. 39
      CMake/finders/Findsimpleini.cmake
  3. 4
      Source/CMakeLists.txt

1
3rdParty/simpleini/CMakeLists.txt vendored

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

39
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 "<th>Version *<td>([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})

4
Source/CMakeLists.txt

@ -234,7 +234,7 @@ target_link_libraries(libdevilutionx PUBLIC
PKWare
libmpq
libsmackerdec
simpleini
simpleini::simpleini
hoehrmann_utf8
)
@ -248,7 +248,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)

Loading…
Cancel
Save