Commit d42b1ce3 authored by Davi Arnaut's avatar Davi Arnaut

Bug#52514: mysql 5.1 do_abi_check does not compile w/ gcc4.5

           due to GCC preprocessor change
      
The problem is that newer GCC versions treats missing headers
as fatal errors. The solution is to use a guard macro to prevent
the inclusion of system headers when checking the ABI with the
C Preprocessor.

Reference: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15638
           http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44836

Makefile.am:
  Define guard macro.
configure.in:
  Remove workaround.
include/mysql.h:
  Guard the header inclusion.
include/mysql.h.pp:
  Header is not included anymore.
parent 6c79155d
......@@ -314,7 +314,7 @@ abi_check_all: $(TEST_PREPROCESSOR_HEADER)
do_abi_check:
set -ex; \
for file in $(abi_headers); do \
@CC@ -E -nostdinc -dI \
@CC@ -E -nostdinc -dI -DMYSQL_ABI_CHECK \
-I$(top_srcdir)/include \
-I$(top_srcdir)/include/mysql \
-I$(top_srcdir)/sql \
......
......@@ -444,16 +444,7 @@ if test "$GCC" != "yes" || expr "$CC" : ".*icc.*"
then
ABI_CHECK=""
else
# Workaround GCC >= 4.5 - See Bug#52514
case `$CC -dumpversion` in
[[4-9]].[[5-9]]*)
AC_MSG_WARN([ABI check disabled (GCC >= 4.5)])
ABI_CHECK=""
;;
*)
ABI_CHECK="abi_check"
;;
esac
ABI_CHECK="abi_check"
fi
AC_SUBST(ABI_CHECK)
......
......@@ -44,7 +44,9 @@ extern "C" {
#endif
#ifndef _global_h /* If not standard header */
#ifndef MYSQL_ABI_CHECK
#include <sys/types.h>
#endif
#ifdef __LCC__
#include <winsock2.h> /* For windows */
#endif
......
#include <sys/types.h>
typedef char my_bool;
typedef int my_socket;
#include "mysql_version.h"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment