CMake: Fix build without double-conversion on macOS

Change-Id: I5102e93141eec95044df44884dcf6ecd1b9e8dd0
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Mikhail Svetkin 2019-01-07 15:22:24 +01:00
parent ca1113728e
commit 885494c50f
3 changed files with 21 additions and 9 deletions

View File

@ -1,5 +1,15 @@
include(CheckCXXSourceCompiles)
add_library(WrapDoubleConversion INTERFACE)
find_package(double-conversion)
if (double-conversion_FOUND)
set_package_properties(double-conversion PROPERTIES TYPE REQUIRED)
target_link_libraries(WrapDoubleConversion INTERFACE double-conversion::double-conversion)
set(WrapDoubleConversion_FOUND 1)
return()
endif()
check_cxx_source_compiles("
#include <stdio.h>
#include <locale.h>
@ -25,12 +35,9 @@ int main(int argc, char *argv[]) {
return 0;
}" HAVE_SPRINTF_L)
add_library(WrapDoubleConversion INTERFACE)
if (NOT HAVE__SPRINTF_L AND NOT HAVE_SPRINTF_L)
find_package(double-conversion)
set_package_properties(double-conversion PROPERTIES TYPE REQUIRED)
target_link_libraries(WrapDoubleConversion INTERFACE double-conversion::double-conversion)
if (HAVE__SPRINTF_L OR HAVE_SPRINTF_L)
target_compile_definitions(WrapDoubleConversion INTERFACE QT_NO_DOUBLECONVERSION)
set(WrapDoubleConversion_FOUND 1)
else()
set(WrapDoubleConversion_FOUND 0)
endif()
set(WrapDoubleConversion_FOUND 1)

View File

@ -1,6 +1,11 @@
find_package(Threads)
find_package(WrapDoubleConversion REQUIRED)
if (NOT WrapDoubleConversion_FOUND)
message(FATAL_ERROR "Your C library does not provide sscanf_l/snprintf_l _snprintf_l/_sscanf_l. \
You need to use libdouble-conversion for double/string conversion.")
endif()
find_library(FWAppKit AppKit)
find_library(FWApplicationServices ApplicationServices)
find_library(FWCoreFoundation CoreFoundation)

View File

@ -50,7 +50,7 @@ def map_library(lib: str) -> Union[str, LibraryMapping, List[str]]:
'atspi': 'ATSPI2',
'corewlan': None, # Framework
'cups': 'Cups',
'double-conversion': 'WrapDoubleConversion',
'double-conversion': None,
'drm': 'Libdrm',
'egl': 'EGL',
'fontconfig': LibraryMapping(package='Fontconfig', resultVariable="FONTCONFIG"),