diff options
-rw-r--r-- | BitKeeper/etc/logging_ok | 1 | ||||
-rw-r--r-- | configure.in | 43 | ||||
-rw-r--r-- | heap/Makefile.am | 2 | ||||
-rw-r--r-- | libmysql/Makefile.shared | 5 | ||||
-rw-r--r-- | mysys/Makefile.am | 14 | ||||
-rw-r--r-- | regex/Makefile.am | 1 | ||||
-rw-r--r-- | sql/Makefile.am | 3 | ||||
-rw-r--r-- | strings/Makefile.am | 4 |
8 files changed, 59 insertions, 14 deletions
diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index d139d8a2005..f7dff25bc24 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -1,3 +1,4 @@ mwagner@evoq.mwagner.org jcole@abel.spaceapes.com monty@donna.mysql.fi +sasha@mysql.sashanet.com diff --git a/configure.in b/configure.in index 6b52465df3c..cf399baacfa 100644 --- a/configure.in +++ b/configure.in @@ -390,6 +390,38 @@ then AC_MSG_ERROR([MySQL requiers a ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.]) fi +NOINST_LDFLAGS= + +AC_ARG_WITH(other-libc, + [ --with-other-libc=/path/to/other/libc/dir Link against libc and other standard libraries installed in the specified non-standard location overriding default. Originally added to be able to link against glibc 2.2 without making the user upgrade the standard libc installation ], + [ + other_libc_include="$withval/include" + other_libc_lib="$withval/lib" + with_other_libc="yes" + enable_shared="no" + all_is_static="yes" + CFLAGS="$CFLAGS -I$other_libc_include" + CXXFLAGS="$CXXFLAGS -fpermissive -I$other_libc_include" +#There seems to be a feature in gcc that treats system and libc headers +#leniently when they violatate ANSI C++ standard, but it is strict otherwise +#since gcc cannot now recognize that our headers are libc, we work around +#by telling it to be permissive + LDFLAGS="$LDFLAGS -static -L$other_libc_lib " + with_mysqld_ldflags="-all-static" + with_client_ldflags="-all-static" + NOINST_LDFLAGS="-all-static" +#when linking against custom libc installed separately, we want to force all +#binary builds to be static, including the build done by configure itself +#to test for system features + ], + [ + other_libc_include= + other_libc_lib= + with_other_libc="no" + ] +) +AC_SUBST(NOINST_LDFLAGS) + AC_ARG_WITH(server-suffix, [ --with-server-suffix Append value to the version string.], # I heard that 'cut' isn't portable. Isn't there a better way? @@ -1163,7 +1195,7 @@ fi AC_SUBST(COMPILATION_COMMENT) AC_MSG_CHECKING("need of special linking flags") -if test "$IS_LINUX" = "true" +if test "$IS_LINUX" = "true" -a "$all_is_static" != "yes" then LDFLAGS="$LDFLAGS -rdynamic" AC_MSG_RESULT("-rdynamic") @@ -1318,7 +1350,10 @@ ac_save_CXXFLAGS="$CXXFLAGS" AC_CACHE_CHECK([style of gethost* routines], mysql_cv_gethost_style, AC_LANG_SAVE AC_LANG_CPLUSPLUS -if test "$ac_cv_prog_gxx" = "yes" +#do not treat warnings as errors if we are linking agaist other libc +#this is to work around gcc not being permissive on non-system includes +#with respect to ANSI C++ +if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" then CXXFLAGS="$CXXFLAGS -Werror" fi @@ -1350,7 +1385,7 @@ ac_save_CXXFLAGS="$CXXFLAGS" AC_CACHE_CHECK([style of gethostname_r routines], mysql_cv_gethostname_style, AC_LANG_SAVE AC_LANG_CPLUSPLUS -if test "$ac_cv_prog_gxx" = "yes" +if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" then CXXFLAGS="$CXXFLAGS -Werror" fi @@ -1381,7 +1416,7 @@ ac_save_CXXFLAGS="$CXXFLAGS" AC_CACHE_CHECK([3 argument to gethostname_r routines], mysql_cv_gethostname_arg, AC_LANG_SAVE AC_LANG_CPLUSPLUS -if test "$ac_cv_prog_gxx" = "yes" +if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" then CXXFLAGS="$CXXFLAGS -Werror" fi diff --git a/heap/Makefile.am b/heap/Makefile.am index 14501724e23..2e6682e29d0 100644 --- a/heap/Makefile.am +++ b/heap/Makefile.am @@ -19,6 +19,8 @@ LDADD = libheap.a ../mysys/libmysys.a ../dbug/libdbug.a \ ../strings/libmystrings.a pkglib_LIBRARIES = libheap.a noinst_PROGRAMS = hp_test1 hp_test2 +hp_test1_LDFLAGS = @NOINST_LDFLAGS@ +hp_test2_LDFLAGS = @NOINST_LDFLAGS@ noinst_HEADERS = heapdef.h libheap_a_SOURCES = hp_open.c hp_extra.c hp_close.c hp_panic.c hp_info.c \ hp_rrnd.c hp_scan.c hp_update.c hp_write.c hp_delete.c \ diff --git a/libmysql/Makefile.shared b/libmysql/Makefile.shared index 795a64ba138..c6f2032fd44 100644 --- a/libmysql/Makefile.shared +++ b/libmysql/Makefile.shared @@ -83,6 +83,9 @@ ctype_extra_sources.c: conf_to_src $(srcdir)/ctype_extra_sources.c conf_to_src_SOURCES = conf_to_src.c conf_to_src_LDADD= - +#for --with-other-libc to ensure static linking +#note -all-static rather than -static +#this is needed for libtool to work right +conf_to_src_LDFLAGS=-all-static # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/mysys/Makefile.am b/mysys/Makefile.am index 6674132bdca..bc7720aef74 100644 --- a/mysys/Makefile.am +++ b/mysys/Makefile.am @@ -73,7 +73,7 @@ OMIT_DEPENDENCIES = pthread.h stdio.h __stdio.h stdlib.h __stdlib.h math.h\ cdefs.h machdep.h signal.h __signal.h util.h # I hope this always does the right thing. Otherwise this is only test programs -FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) @NOINST_LDFLAGS@ # # The CP .. RM stuff is to avoid problems with some compilers (like alpha ccc) @@ -81,17 +81,17 @@ FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) # test_thr_alarm: thr_alarm.c $(LIBRARIES) - $(CP) $(srcdir)/thr_alarm.c ./test_thr_alarm.c - $(LINK) $(FLAGS) -DMAIN ./test_thr_alarm.c $(LDADD) $(LIBS) + $(CP) -f $(srcdir)/thr_alarm.c ./test_thr_alarm.c + $(LINK) $(FLAGS) -DMAIN ./test_thr_alarm.c $(LDADD) $(LIBS) $(RM) -f ./test_thr_alarm.* test_thr_lock: thr_lock.c $(LIBRARIES) - $(CP) $(srcdir)/thr_lock.c test_thr_lock.c - $(LINK) $(FLAGS) -DMAIN ./test_thr_lock.c $(LDADD) $(LIBS) + $(CP) -f $(srcdir)/thr_lock.c test_thr_lock.c + $(LINK) $(FLAGS) -DMAIN ./test_thr_lock.c $(LDADD) $(LIBS) $(RM) -f ./test_thr_lock.* test_vsnprintf: my_vsnprintf.c $(LIBRARIES) - $(CP) $(srcdir)/my_vsnprintf.c test_vsnprintf.c + $(CP) -f $(srcdir)/my_vsnprintf.c test_vsnprintf.c $(LINK) $(FLAGS) -DMAIN ./test_vsnprintf.c $(LDADD) $(LIBS) $(RM) -f test_vsnprintf.* @@ -101,7 +101,7 @@ test_dir: test_dir.c $(LIBRARIES) test_charset: test_charset.c $(LIBRARIES) $(LINK) $(FLAGS) -DMAIN $(srcdir)/test_charset.c $(LDADD) $(LIBS) -test_hash: test_hash.c $(LIBRARIES) +testhash: testhash.c $(LIBRARIES) $(LINK) $(FLAGS) -DMAIN $(srcdir)/test_dir.c $(LDADD) $(LIBS) # Don't update the files from bitkeeper diff --git a/regex/Makefile.am b/regex/Makefile.am index ecbbd567600..6492ab0370f 100644 --- a/regex/Makefile.am +++ b/regex/Makefile.am @@ -23,6 +23,7 @@ libregex_a_SOURCES = regerror.c regcomp.c regexec.c regfree.c reginit.c noinst_PROGRAMS = re re_SOURCES = split.c debug.c main.c re_DEPENDENCIES= $(LIBRARIES) +re_LDFLAGS= @NOINST_LDFLAGS@ EXTRA_DIST = tests CHANGES COPYRIGHT WHATSNEW regexp.c \ debug.ih engine.ih main.ih regcomp.ih regerror.ih \ regex.3 regex.7 diff --git a/sql/Makefile.am b/sql/Makefile.am index 7ddb88f26ed..a32383802b1 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -30,6 +30,7 @@ SUBDIRS = share bin_PROGRAMS = mysqlbinlog libexec_PROGRAMS = mysqld noinst_PROGRAMS = gen_lex_hash +gen_lex_hash_LDFLAGS = @NOINST_LDFLAGS@ LDADD = ../isam/libnisam.a \ ../merge/libmerge.a \ ../myisam/libmyisam.a \ @@ -81,7 +82,7 @@ gen_lex_hash_SOURCES = gen_lex_hash.cc gen_lex_hash_LDADD = $(LDADD) $(CXXLDFLAGS) mysqlbinlog_SOURCES = mysqlbinlog.cc mini_client.cc net_serv.cc \ mini_client_errors.c violite.c password.c -mysqlbinlog_LDADD = $(LDADD) $(CXXLDFLAGS) +mysqlbinlog_LDADD = $(LDADD) $(CXXLDFLAGS) $(mysqld_LDADD) DEFS = -DMYSQL_SERVER \ -DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \ diff --git a/strings/Makefile.am b/strings/Makefile.am index 658ea8a2a6d..6bf21d630f3 100644 --- a/strings/Makefile.am +++ b/strings/Makefile.am @@ -39,7 +39,6 @@ endif endif libmystrings_a_SOURCES = @CHARSET_SRCS@ $(ASRCS) $(CSRCS) - noinst_PROGRAMS = conf_to_src # Default charset definitions EXTRA_DIST = ctype-big5.c ctype-czech.c ctype-euc_kr.c \ @@ -71,6 +70,9 @@ ctype_extra_sources.c: conf_to_src $(srcdir)/ctype_extra_sources.c conf_to_src_SOURCES = conf_to_src.c conf_to_src_LDADD= +#force static linking of conf_to_src - essential when linking against +#custom installation of libc +conf_to_src_LDFLAGS= @NOINST_LDFLAGS@ # This is because the dependency tracking misses @FOO@ vars in sources. strtoull.o: @CHARSET_OBJS@ |