From: Pablo Sanabria Date: Sat, 25 Mar 2017 19:31:22 +0000 (-0300) Subject: Fix CMake Build process for MinGW and MSYS2 X-Git-Tag: json-c-0.13-20171207~84^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2cda677d06c43b9405e42cc6cc96589941b1e210;p=thirdparty%2Fjson-c.git Fix CMake Build process for MinGW and MSYS2 This fix includes some fixes for config.h.win32 that was generating some compiling errors on MinGW64 and also fix CMakeLists.txt in order to give better support to MinGW and MSYS2 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ae09504..4cd9e2ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,21 @@ if(MSVC) file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/include/config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/config.h) file(COPY ./json_config.h.win32 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/) file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h) +elseif(MINGW) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -D_GNU_SOURCE=1") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -D_GNU_SOURCE=1") + if (MSYS OR CMAKE_GENERATOR STREQUAL "Unix Makefiles") + execute_process(COMMAND echo ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + execute_process(COMMAND sh autogen.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + execute_process(COMMAND sh ./configure WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + file(COPY ./config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/) + file(COPY ./json_config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/) + else() + file(COPY ./config.h.win32 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/) + file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/include/config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/config.h) + file(COPY ./json_config.h.win32 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/) + file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h) + endif() elseif(UNIX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") diff --git a/config.h.win32 b/config.h.win32 index e721aaf7..2a70a9cc 100644 --- a/config.h.win32 +++ b/config.h.win32 @@ -8,24 +8,24 @@ /* Define to 1 if you have the declaration of `INFINITY', and to 0 if you don't. */ -#if defined(_MSC_VER) && _MSC_VER >= 1800 +#if (defined(_MSC_VER) && _MSC_VER >= 1800) || defined(__MINGW32__) #define HAVE_DECL_INFINITY 1 #endif /* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. */ -#if defined(_MSC_VER) && _MSC_VER >= 1800 +#if (defined(_MSC_VER) && _MSC_VER >= 1800) || defined(__MINGW32__) #define HAVE_DECL_ISINF 1 #endif /* Define to 1 if you have the declaration of `isnan', and to 0 if you don't. */ -#if defined(_MSC_VER) && _MSC_VER >= 1800 +#if (defined(_MSC_VER) && _MSC_VER >= 1800) || defined(__MINGW32__) #define HAVE_DECL_ISNAN 1 #endif /* Define to 1 if you have the declaration of `nan', and to 0 if you don't. */ -#if defined(_MSC_VER) && _MSC_VER >= 1800 +#if (defined(_MSC_VER) && _MSC_VER >= 1800) || defined(__MINGW32__) #define HAVE_DECL_NAN 1 #endif @@ -76,7 +76,11 @@ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `snprintf' function. */ +#if defined(__MINGW32__) +#define HAVE_SNPRINTF 1 +#else #undef HAVE_SNPRINTF +#endif /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 @@ -103,7 +107,11 @@ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strncasecmp' function. */ +#if defined(__MINGW32__) +#define HAVE_STRNCASECMP 1 +#else #undef HAVE_STRNCASECMP +#endif /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H @@ -112,7 +120,11 @@ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file. */ +#if defined(__MINGW32__) +#define HAVE_SYS_PARAM_H 1 +#else #undef HAVE_SYS_PARAM_H +#endif /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 @@ -121,10 +133,18 @@ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ +#if defined(__MINGW32__) +#define HAVE_UNISTD_H 1 +#else #undef HAVE_UNISTD_H +#endif /* Define to 1 if you have the `vasprintf' function. */ +#if defined(__MINGW32__) +#define HAVE_VASPRINTF 1 +#else #undef HAVE_VASPRINTF +#endif /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1