From 1839f2da342de35de4803f546c60d4bc6047d6fa Mon Sep 17 00:00:00 2001 From: Magnus Bjerke Vik Date: Mon, 7 Nov 2016 10:46:18 +0100 Subject: [PATCH] Check for locale support in CMake --- src/lib_json/CMakeLists.txt | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/lib_json/CMakeLists.txt b/src/lib_json/CMakeLists.txt index acd804b..6e701c7 100644 --- a/src/lib_json/CMakeLists.txt +++ b/src/lib_json/CMakeLists.txt @@ -9,6 +9,34 @@ if( CMAKE_COMPILER_IS_GNUCXX ) endif() endif( CMAKE_COMPILER_IS_GNUCXX ) +include(CheckIncludeFileCXX) +include(CheckTypeSize) +include(CheckStructHasMember) +include(CheckCXXSymbolExists) + +check_include_file_cxx(clocale HAVE_CLOCALE) +check_cxx_symbol_exists(localeconv clocale HAVE_LOCALECONV) + +if(CMAKE_VERSION VERSION_LESS 3.0.0) + # The "LANGUAGE CXX" parameter is not supported in CMake versions below 3, + # so the C compiler and header has to be used. + check_include_file(locale.h HAVE_LOCALE_H) + set(CMAKE_EXTRA_INCLUDE_FILES locale.h) + check_type_size("struct lconv" LCONV_SIZE) + unset(CMAKE_EXTRA_INCLUDE_FILES) + check_struct_has_member("struct lconv" decimal_point locale.h HAVE_DECIMAL_POINT) +else() + set(CMAKE_EXTRA_INCLUDE_FILES clocale) + check_type_size(lconv LCONV_SIZE LANGUAGE CXX) + unset(CMAKE_EXTRA_INCLUDE_FILES) + check_struct_has_member(lconv decimal_point clocale HAVE_DECIMAL_POINT LANGUAGE CXX) +endif() + +if(NOT (HAVE_CLOCALE AND HAVE_LCONV_SIZE AND HAVE_DECIMAL_POINT AND HAVE_LOCALECONV)) + message(WARNING "Locale functionality is not supported") + add_definitions(-DNO_LOCALE_SUPPORT) +endif() + SET( JSONCPP_INCLUDE_DIR ../../include ) SET( PUBLIC_HEADERS