From 0ffef5d2a72bad8fe0cb72b78e426f4f50a29bf2 Mon Sep 17 00:00:00 2001
From: Sergei Golubchik <serg@mariadb.org>
Date: Wed, 3 Jun 2015 09:54:56 +0200
Subject: [PATCH] MDEV-8052 abi detection incorrect with clang

don't include #include directives into .pp files
---
 cmake/do_abi_check.cmake           |  2 +-
 include/mysql.h.pp                 |  7 -------
 include/mysql/client_plugin.h.pp   |  2 --
 include/mysql/plugin_audit.h.pp    | 12 ------------
 include/mysql/plugin_auth.h.pp     | 13 -------------
 include/mysql/plugin_ftparser.h.pp | 11 -----------
 include/mysql/psi/psi_abi_v1.h.pp  |  1 -
 include/mysql/psi/psi_abi_v2.h.pp  |  1 -
 8 files changed, 1 insertion(+), 48 deletions(-)

diff --git a/cmake/do_abi_check.cmake b/cmake/do_abi_check.cmake
index c831aaf8b52..c0ffce353f3 100644
--- a/cmake/do_abi_check.cmake
+++ b/cmake/do_abi_check.cmake
@@ -58,7 +58,7 @@ FOREACH(file ${ABI_HEADERS})
 
   EXECUTE_PROCESS(
     COMMAND ${COMPILER} 
-      -E -nostdinc -dI -DMYSQL_ABI_CHECK -I${SOURCE_DIR}/include
+      -E -nostdinc -DMYSQL_ABI_CHECK -I${SOURCE_DIR}/include
       -I${BINARY_DIR}/include -I${SOURCE_DIR}/include/mysql -I${SOURCE_DIR}/sql
       ${file} 
       ERROR_QUIET OUTPUT_FILE ${tmpfile})
diff --git a/include/mysql.h.pp b/include/mysql.h.pp
index f6be582c0da..4f7407095c9 100644
--- a/include/mysql.h.pp
+++ b/include/mysql.h.pp
@@ -1,7 +1,5 @@
 typedef char my_bool;
 typedef int my_socket;
-#include "mysql_version.h"
-#include "mysql_com.h"
 enum enum_server_command
 {
   COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST,
@@ -142,7 +140,6 @@ void get_tty_password_buff(const char *opt_message, char *to, size_t length);
 const char *mysql_errno_to_sqlstate(unsigned int mysql_errno);
 my_bool my_thread_init(void);
 void my_thread_end(void);
-#include "mysql_time.h"
 enum enum_mysql_timestamp_type
 {
   MYSQL_TIMESTAMP_NONE= -2, MYSQL_TIMESTAMP_ERROR= -1,
@@ -155,7 +152,6 @@ typedef struct st_mysql_time
   my_bool neg;
   enum enum_mysql_timestamp_type time_type;
 } MYSQL_TIME;
-#include "my_list.h"
 typedef struct st_list {
   struct st_list *prev,*next;
   void *data;
@@ -197,8 +193,6 @@ typedef struct st_mysql_field {
 typedef char **MYSQL_ROW;
 typedef unsigned int MYSQL_FIELD_OFFSET;
 typedef unsigned long long my_ulonglong;
-#include "typelib.h"
-#include "my_alloc.h"
 typedef struct st_used_mem
 {
   struct st_used_mem *next;
@@ -242,7 +236,6 @@ typedef struct st_mysql_rows {
   unsigned long length;
 } MYSQL_ROWS;
 typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;
-#include "my_alloc.h"
 typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
 typedef struct st_mysql_data {
   MYSQL_ROWS *data;
diff --git a/include/mysql/client_plugin.h.pp b/include/mysql/client_plugin.h.pp
index f3a0b5769df..b6ba9cf08ad 100644
--- a/include/mysql/client_plugin.h.pp
+++ b/include/mysql/client_plugin.h.pp
@@ -3,7 +3,6 @@ struct st_mysql_client_plugin
   int type; unsigned int interface_version; const char *name; const char *author; const char *desc; unsigned int version[3]; const char *license; void *mysql_api; int (*init)(char *, size_t, int, va_list); int (*deinit)(); int (*options)(const char *option, const void *);
 };
 struct st_mysql;
-#include <mysql/plugin_auth_common.h>
 typedef struct st_plugin_vio_info
 {
   enum { MYSQL_VIO_INVALID, MYSQL_VIO_TCP, MYSQL_VIO_SOCKET,
@@ -24,7 +23,6 @@ struct st_mysql_client_plugin_AUTHENTICATION
   int type; unsigned int interface_version; const char *name; const char *author; const char *desc; unsigned int version[3]; const char *license; void *mysql_api; int (*init)(char *, size_t, int, va_list); int (*deinit)(); int (*options)(const char *option, const void *);
   int (*authenticate_user)(MYSQL_PLUGIN_VIO *vio, struct st_mysql *mysql);
 };
-#include <mysql/auth_dialog_client.h>
 struct st_mysql;
 typedef char *(*mysql_authentication_dialog_ask_t)(struct st_mysql *mysql,
                       int type, const char *prompt, char *buf, int buf_len);
diff --git a/include/mysql/plugin_audit.h.pp b/include/mysql/plugin_audit.h.pp
index b0ace08cdaa..74903fd74e3 100644
--- a/include/mysql/plugin_audit.h.pp
+++ b/include/mysql/plugin_audit.h.pp
@@ -1,13 +1,9 @@
-#include "plugin.h"
-#include <mysql/services.h>
-#include <mysql/service_my_snprintf.h>
 extern struct my_snprintf_service_st {
   size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
   size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
 } *my_snprintf_service;
 size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
 size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
-#include <mysql/service_thd_alloc.h>
 struct st_mysql_lex_string
 {
   char *str;
@@ -31,7 +27,6 @@ void *thd_memdup(void* thd, const void* str, unsigned int size);
 MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
                                       const char *str, unsigned int size,
                                       int allocate_lex_string);
-#include <mysql/service_thd_wait.h>
 typedef enum _thd_wait_type_e {
   THD_WAIT_SLEEP= 1,
   THD_WAIT_DISKIO= 2,
@@ -51,7 +46,6 @@ extern struct thd_wait_service_st {
 } *thd_wait_service;
 void thd_wait_begin(void* thd, int wait_type);
 void thd_wait_end(void* thd);
-#include <mysql/service_thread_scheduler.h>
 struct scheduler_functions;
 extern struct my_thread_scheduler_service {
   int (*set)(struct scheduler_functions *scheduler);
@@ -59,7 +53,6 @@ extern struct my_thread_scheduler_service {
 } *my_thread_scheduler_service;
 int my_thread_scheduler_set(struct scheduler_functions *scheduler);
 int my_thread_scheduler_reset();
-#include <mysql/service_progress_report.h>
 extern struct progress_report_service_st {
   void (*thd_progress_init_func)(void* thd, unsigned int max_stage);
   void (*thd_progress_report_func)(void* thd,
@@ -80,9 +73,7 @@ void thd_progress_next_stage(void* thd);
 void thd_progress_end(void* thd);
 const char *set_thd_proc_info(void*, const char * info, const char *func,
                               const char *file, unsigned int line);
-#include <mysql/service_debug_sync.h>
 extern void (*debug_sync_C_callback_ptr)(void*, const char *, size_t);
-#include <mysql/service_kill_statement.h>
 enum thd_kill_levels {
   THD_IS_NOT_KILLED=0,
   THD_ABORT_SOFTLY=50,
@@ -92,7 +83,6 @@ extern struct kill_statement_service_st {
   enum thd_kill_levels (*thd_kill_level_func)(const void*);
 } *thd_kill_statement_service;
 enum thd_kill_levels thd_kill_level(const void*);
-#include <mysql/service_logger.h>
 typedef struct logger_handle_st LOGGER_HANDLE;
 extern struct logger_service_st {
   void (*logger_init_mutexes)();
@@ -175,8 +165,6 @@ struct st_maria_plugin
   const char *version_info;
   unsigned int maturity;
 };
-#include "plugin_ftparser.h"
-#include "plugin.h"
 enum enum_ftparser_mode
 {
   MYSQL_FTPARSER_SIMPLE_MODE= 0,
diff --git a/include/mysql/plugin_auth.h.pp b/include/mysql/plugin_auth.h.pp
index 7a01a337647..84b2434a125 100644
--- a/include/mysql/plugin_auth.h.pp
+++ b/include/mysql/plugin_auth.h.pp
@@ -1,13 +1,9 @@
-#include <mysql/plugin.h>
-#include <mysql/services.h>
-#include <mysql/service_my_snprintf.h>
 extern struct my_snprintf_service_st {
   size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
   size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
 } *my_snprintf_service;
 size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
 size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
-#include <mysql/service_thd_alloc.h>
 struct st_mysql_lex_string
 {
   char *str;
@@ -31,7 +27,6 @@ void *thd_memdup(void* thd, const void* str, unsigned int size);
 MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
                                       const char *str, unsigned int size,
                                       int allocate_lex_string);
-#include <mysql/service_thd_wait.h>
 typedef enum _thd_wait_type_e {
   THD_WAIT_SLEEP= 1,
   THD_WAIT_DISKIO= 2,
@@ -51,7 +46,6 @@ extern struct thd_wait_service_st {
 } *thd_wait_service;
 void thd_wait_begin(void* thd, int wait_type);
 void thd_wait_end(void* thd);
-#include <mysql/service_thread_scheduler.h>
 struct scheduler_functions;
 extern struct my_thread_scheduler_service {
   int (*set)(struct scheduler_functions *scheduler);
@@ -59,7 +53,6 @@ extern struct my_thread_scheduler_service {
 } *my_thread_scheduler_service;
 int my_thread_scheduler_set(struct scheduler_functions *scheduler);
 int my_thread_scheduler_reset();
-#include <mysql/service_progress_report.h>
 extern struct progress_report_service_st {
   void (*thd_progress_init_func)(void* thd, unsigned int max_stage);
   void (*thd_progress_report_func)(void* thd,
@@ -80,9 +73,7 @@ void thd_progress_next_stage(void* thd);
 void thd_progress_end(void* thd);
 const char *set_thd_proc_info(void*, const char * info, const char *func,
                               const char *file, unsigned int line);
-#include <mysql/service_debug_sync.h>
 extern void (*debug_sync_C_callback_ptr)(void*, const char *, size_t);
-#include <mysql/service_kill_statement.h>
 enum thd_kill_levels {
   THD_IS_NOT_KILLED=0,
   THD_ABORT_SOFTLY=50,
@@ -92,7 +83,6 @@ extern struct kill_statement_service_st {
   enum thd_kill_levels (*thd_kill_level_func)(const void*);
 } *thd_kill_statement_service;
 enum thd_kill_levels thd_kill_level(const void*);
-#include <mysql/service_logger.h>
 typedef struct logger_handle_st LOGGER_HANDLE;
 extern struct logger_service_st {
   void (*logger_init_mutexes)();
@@ -175,8 +165,6 @@ struct st_maria_plugin
   const char *version_info;
   unsigned int maturity;
 };
-#include "plugin_ftparser.h"
-#include "plugin.h"
 enum enum_ftparser_mode
 {
   MYSQL_FTPARSER_SIMPLE_MODE= 0,
@@ -266,7 +254,6 @@ void mysql_query_cache_invalidate4(void* thd,
 void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
 void thd_set_ha_data(void* thd, const struct handlerton *hton,
                      const void *ha_data);
-#include <mysql/plugin_auth_common.h>
 typedef struct st_plugin_vio_info
 {
   enum { MYSQL_VIO_INVALID, MYSQL_VIO_TCP, MYSQL_VIO_SOCKET,
diff --git a/include/mysql/plugin_ftparser.h.pp b/include/mysql/plugin_ftparser.h.pp
index a41c4788af2..8cb6348b24d 100644
--- a/include/mysql/plugin_ftparser.h.pp
+++ b/include/mysql/plugin_ftparser.h.pp
@@ -1,13 +1,9 @@
-#include "plugin.h"
-#include <mysql/services.h>
-#include <mysql/service_my_snprintf.h>
 extern struct my_snprintf_service_st {
   size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
   size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
 } *my_snprintf_service;
 size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
 size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
-#include <mysql/service_thd_alloc.h>
 struct st_mysql_lex_string
 {
   char *str;
@@ -31,7 +27,6 @@ void *thd_memdup(void* thd, const void* str, unsigned int size);
 MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
                                       const char *str, unsigned int size,
                                       int allocate_lex_string);
-#include <mysql/service_thd_wait.h>
 typedef enum _thd_wait_type_e {
   THD_WAIT_SLEEP= 1,
   THD_WAIT_DISKIO= 2,
@@ -51,7 +46,6 @@ extern struct thd_wait_service_st {
 } *thd_wait_service;
 void thd_wait_begin(void* thd, int wait_type);
 void thd_wait_end(void* thd);
-#include <mysql/service_thread_scheduler.h>
 struct scheduler_functions;
 extern struct my_thread_scheduler_service {
   int (*set)(struct scheduler_functions *scheduler);
@@ -59,7 +53,6 @@ extern struct my_thread_scheduler_service {
 } *my_thread_scheduler_service;
 int my_thread_scheduler_set(struct scheduler_functions *scheduler);
 int my_thread_scheduler_reset();
-#include <mysql/service_progress_report.h>
 extern struct progress_report_service_st {
   void (*thd_progress_init_func)(void* thd, unsigned int max_stage);
   void (*thd_progress_report_func)(void* thd,
@@ -80,9 +73,7 @@ void thd_progress_next_stage(void* thd);
 void thd_progress_end(void* thd);
 const char *set_thd_proc_info(void*, const char * info, const char *func,
                               const char *file, unsigned int line);
-#include <mysql/service_debug_sync.h>
 extern void (*debug_sync_C_callback_ptr)(void*, const char *, size_t);
-#include <mysql/service_kill_statement.h>
 enum thd_kill_levels {
   THD_IS_NOT_KILLED=0,
   THD_ABORT_SOFTLY=50,
@@ -92,7 +83,6 @@ extern struct kill_statement_service_st {
   enum thd_kill_levels (*thd_kill_level_func)(const void*);
 } *thd_kill_statement_service;
 enum thd_kill_levels thd_kill_level(const void*);
-#include <mysql/service_logger.h>
 typedef struct logger_handle_st LOGGER_HANDLE;
 extern struct logger_service_st {
   void (*logger_init_mutexes)();
@@ -175,7 +165,6 @@ struct st_maria_plugin
   const char *version_info;
   unsigned int maturity;
 };
-#include "plugin_ftparser.h"
 struct st_mysql_daemon
 {
   int interface_version;
diff --git a/include/mysql/psi/psi_abi_v1.h.pp b/include/mysql/psi/psi_abi_v1.h.pp
index adb3010469b..9f8252473a6 100644
--- a/include/mysql/psi/psi_abi_v1.h.pp
+++ b/include/mysql/psi/psi_abi_v1.h.pp
@@ -1,4 +1,3 @@
-#include "mysql/psi/psi.h"
 C_MODE_START
 struct PSI_mutex;
 struct PSI_rwlock;
diff --git a/include/mysql/psi/psi_abi_v2.h.pp b/include/mysql/psi/psi_abi_v2.h.pp
index 63f8c52c50a..9da270e6f8c 100644
--- a/include/mysql/psi/psi_abi_v2.h.pp
+++ b/include/mysql/psi/psi_abi_v2.h.pp
@@ -1,4 +1,3 @@
-#include "mysql/psi/psi.h"
 C_MODE_START
 struct PSI_mutex;
 struct PSI_rwlock;