From 3832bda1ba9f31294d57b565030ea3f5d35e6a82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Thu, 7 May 2015 14:00:14 +0300 Subject: [PATCH] Fix compiler error if compiler does not support c99 style initializers. --- .../suite/innodb/t/innodb_skip_innodb_is_tables.test | 1 + storage/innobase/CMakeLists.txt | 2 ++ storage/innobase/handler/i_s.h | 7 +++++-- storage/xtradb/CMakeLists.txt | 2 ++ storage/xtradb/handler/i_s.h | 7 +++++-- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/mysql-test/suite/innodb/t/innodb_skip_innodb_is_tables.test b/mysql-test/suite/innodb/t/innodb_skip_innodb_is_tables.test index 0ba0e055954..73cd8a26f6f 100644 --- a/mysql-test/suite/innodb/t/innodb_skip_innodb_is_tables.test +++ b/mysql-test/suite/innodb/t/innodb_skip_innodb_is_tables.test @@ -1,3 +1,4 @@ +--source include/not_embedded.inc select * from information_schema.innodb_trx; select * from information_schema.innodb_locks; diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt index 94a913cbe4c..ee637f7ea3f 100644 --- a/storage/innobase/CMakeLists.txt +++ b/storage/innobase/CMakeLists.txt @@ -210,6 +210,8 @@ IF(HAVE_IB_ATOMIC_PTHREAD_T_GCC) ADD_DEFINITIONS(-DHAVE_IB_ATOMIC_PTHREAD_T_GCC=1) ENDIF() +CHECK_C_SOURCE_COMPILES("struct t1{ int a; char *b; }; struct t1 c= { .a=1, .b=0 }; main() { }" HAVE_C99_INITIALIZERS) + ENDIF(NOT MSVC) CHECK_FUNCTION_EXISTS(asprintf HAVE_ASPRINTF) diff --git a/storage/innobase/handler/i_s.h b/storage/innobase/handler/i_s.h index 8d0b2042b24..979d9d80a7f 100644 --- a/storage/innobase/handler/i_s.h +++ b/storage/innobase/handler/i_s.h @@ -85,10 +85,13 @@ do { \ } \ } while (0) -#if !defined __STRICT_ANSI__ && defined __GNUC__ && (__GNUC__) > 2 && \ - !defined __INTEL_COMPILER && !defined __clang__ +#if !defined __STRICT_ANSI__ && defined __GNUC__ && (__GNUC__) > 2 && !defined __INTEL_COMPILER && !defined __clang__ +#ifdef HAVE_C99_INITIALIZERS #define STRUCT_FLD(name, value) .name = value #else +#define STRUCT_FLD(name, value) name: value +#endif /* HAVE_C99_INITIALIZERS */ +#else #define STRUCT_FLD(name, value) value #endif diff --git a/storage/xtradb/CMakeLists.txt b/storage/xtradb/CMakeLists.txt index 33815de5793..a6e2014e679 100644 --- a/storage/xtradb/CMakeLists.txt +++ b/storage/xtradb/CMakeLists.txt @@ -219,6 +219,8 @@ IF(HAVE_IB_ATOMIC_PTHREAD_T_GCC) ADD_DEFINITIONS(-DHAVE_IB_ATOMIC_PTHREAD_T_GCC=1) ENDIF() +CHECK_C_SOURCE_COMPILES("struct t1{ int a; char *b; }; struct t1 c= { .a=1, .b=0 }; main() { }" HAVE_C99_INITIALIZERS) + ENDIF(NOT MSVC) CHECK_FUNCTION_EXISTS(asprintf HAVE_ASPRINTF) diff --git a/storage/xtradb/handler/i_s.h b/storage/xtradb/handler/i_s.h index 1e50d2e06f8..e6e342e4357 100644 --- a/storage/xtradb/handler/i_s.h +++ b/storage/xtradb/handler/i_s.h @@ -89,10 +89,13 @@ do { \ } \ } while (0) -#if !defined __STRICT_ANSI__ && defined __GNUC__ && (__GNUC__) > 2 && \ - !defined __INTEL_COMPILER && !defined __clang__ +#if !defined __STRICT_ANSI__ && defined __GNUC__ && (__GNUC__) > 2 && !defined __INTEL_COMPILER && !defined __clang__ +#ifdef HAVE_C99_INITIALIZERS #define STRUCT_FLD(name, value) .name = value #else +#define STRUCT_FLD(name, value) name: value +#endif /* HAVE_C99_INITIALIZERS */ +#else #define STRUCT_FLD(name, value) value #endif