diff options
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Formula/gdal.rb | 154 |
1 files changed, 151 insertions, 3 deletions
diff --git a/Library/Formula/gdal.rb b/Library/Formula/gdal.rb index 0cc2863c9..78023fb75 100644 --- a/Library/Formula/gdal.rb +++ b/Library/Formula/gdal.rb @@ -182,9 +182,8 @@ class Gdal < Formula end def patches - # Prevent build failure on 10.6 / 10.7 - # TODO: Remove when 1.10.2 releases - # http://trac.osgeo.org/gdal/ticket/5197 + # Prevent build failure on 10.6 / 10.7: http://trac.osgeo.org/gdal/ticket/5197 + # Fix build against MySQL 5.6.x: http://trac.osgeo.org/gdal/ticket/5284 DATA end @@ -245,6 +244,155 @@ class Gdal < Formula end __END__ +diff --git a/GDALmake.opt.in b/GDALmake.opt.in +index d7273aa..2fcbd53 100644 +--- a/GDALmake.opt.in ++++ b/GDALmake.opt.in +@@ -123,6 +123,7 @@ INGRES_INC = @INGRES_INC@ + HAVE_MYSQL = @HAVE_MYSQL@ + MYSQL_LIB = @MYSQL_LIB@ + MYSQL_INC = @MYSQL_INC@ ++MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION = @MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION@ + LIBS += $(MYSQL_LIB) + + # +diff --git a/configure b/configure +index 1c4f8fb..120b17f 100755 +--- a/configure ++++ b/configure +@@ -700,6 +700,7 @@ INGRES_INC + INGRES_LIB + II_SYSTEM + HAVE_INGRES ++MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION + MYSQL_LIB + MYSQL_INC + HAVE_MYSQL +@@ -23045,6 +23046,34 @@ $as_echo "no, mysql is pre-4.x" >&6; } + MYSQL_INC="`$MYSQL_CONFIG --include`" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } ++ ++ # Check if mysql headers declare load_defaults ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking load_defaults() in MySQL" >&5 ++$as_echo_n "checking load_defaults() in MySQL... " >&6; } ++ rm -f testmysql.* ++ echo '#include "my_global.h"' > testmysql.cpp ++ echo '#include "my_sys.h"' >> testmysql.cpp ++ echo 'int main(int argc, char** argv) { load_defaults(0, 0, 0, 0); return 0; } ' >> testmysql.cpp ++ if test -z "`${CXX} ${CXXFLAGS} ${MYSQL_INC} -o testmysql testmysql.cpp ${MYSQL_LIB} 2>&1`" ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, found in my_sys.h" >&5 ++$as_echo "yes, found in my_sys.h" >&6; } ++ else ++ echo 'extern "C" void load_defaults(const char *conf_file, const char **groups, int *argc, char ***argv);' > testmysql.cpp ++ echo 'int main(int argc, char** argv) { load_defaults(0, 0, 0, 0); return 0; } ' >> testmysql.cpp ++ if test -z "`${CXX} ${CXXFLAGS} ${MYSQL_INC} -o testmysql testmysql.cpp ${MYSQL_LIB} 2>&1`" ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, found in library but not in header" >&5 ++$as_echo "yes, found in library but not in header" >&6; } ++ MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION=yes ++ else ++ HAVE_MYSQL=no ++ MYSQL_LIB= ++ MYSQL_INC= ++ as_fn_error $? "Cannot find load_defaults()" "$LINENO" 5 ++ fi ++ fi ++ rm -f testmysql.* ++ rm -f testmysql ++ + ;; + esac + fi +@@ -23055,6 +23084,8 @@ MYSQL_INC=$MYSQL_INC + + MYSQL_LIB=$MYSQL_LIB + ++MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION=$MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION ++ + + + +diff --git a/configure.in b/configure.in +index 481e8ea..d83797f 100644 +--- a/configure.in ++++ b/configure.in +@@ -2294,6 +2294,31 @@ else + MYSQL_LIB="`$MYSQL_CONFIG --libs`" + MYSQL_INC="`$MYSQL_CONFIG --include`" + AC_MSG_RESULT([yes]) ++ ++ # Check if mysql headers declare load_defaults ++ AC_MSG_CHECKING([load_defaults() in MySQL]) ++ rm -f testmysql.* ++ echo '#include "my_global.h"' > testmysql.cpp ++ echo '#include "my_sys.h"' >> testmysql.cpp ++ echo 'int main(int argc, char** argv) { load_defaults(0, 0, 0, 0); return 0; } ' >> testmysql.cpp ++ if test -z "`${CXX} ${CXXFLAGS} ${MYSQL_INC} -o testmysql testmysql.cpp ${MYSQL_LIB} 2>&1`" ; then ++ AC_MSG_RESULT([yes, found in my_sys.h]) ++ else ++ echo 'extern "C" void load_defaults(const char *conf_file, const char **groups, int *argc, char ***argv);' > testmysql.cpp ++ echo 'int main(int argc, char** argv) { load_defaults(0, 0, 0, 0); return 0; } ' >> testmysql.cpp ++ if test -z "`${CXX} ${CXXFLAGS} ${MYSQL_INC} -o testmysql testmysql.cpp ${MYSQL_LIB} 2>&1`" ; then ++ AC_MSG_RESULT([yes, found in library but not in header]) ++ MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION=yes ++ else ++ HAVE_MYSQL=no ++ MYSQL_LIB= ++ MYSQL_INC= ++ AC_MSG_ERROR([Cannot find load_defaults()]) ++ fi ++ fi ++ rm -f testmysql.* ++ rm -f testmysql ++ + ;; + esac + fi +@@ -2301,6 +2326,7 @@ fi + AC_SUBST(HAVE_MYSQL,$HAVE_MYSQL) + AC_SUBST(MYSQL_INC,$MYSQL_INC) + AC_SUBST(MYSQL_LIB,$MYSQL_LIB) ++AC_SUBST(MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION,$MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION) + + dnl --------------------------------------------------------------------------- + dnl INGRES support. +diff --git a/ogr/ogrsf_frmts/mysql/GNUmakefile b/ogr/ogrsf_frmts/mysql/GNUmakefile +index 292ae45..e78398d 100644 +--- a/ogr/ogrsf_frmts/mysql/GNUmakefile ++++ b/ogr/ogrsf_frmts/mysql/GNUmakefile +@@ -7,6 +7,11 @@ OBJ = ogrmysqldriver.o ogrmysqldatasource.o \ + + CPPFLAGS := -I.. -I../.. $(GDAL_INCLUDE) $(MYSQL_INC) $(CPPFLAGS) + ++ifeq ($(MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION),yes) ++CPPFLAGS += -DMYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION ++endif ++ ++ + default: $(O_OBJ:.o=.$(OBJ_EXT)) + + clean: +diff --git a/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp b/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp +index 65c275b..447e374 100644 +--- a/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp ++++ b/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp +@@ -36,6 +36,16 @@ + #include "cpl_conv.h" + #include "cpl_string.h" + ++/* Recent versions of mysql no longer declare load_defaults() in my_sys.h */ ++/* but they still have it in the lib. Very fragile... */ ++#ifdef MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION ++extern "C" { ++int load_defaults(const char *conf_file, const char **groups, ++ int *argc, char ***argv); ++void free_defaults(char **argv); ++} ++#endif ++ + CPL_CVSID("$Id: ogrmysqldatasource.cpp 24947 2012-09-22 09:54:23Z rouault $"); + /************************************************************************/ + /* OGRMySQLDataSource() */ diff --git a/port/cpl_spawn.cpp b/port/cpl_spawn.cpp index d702594..69ea3c2 100644 --- a/port/cpl_spawn.cpp |
