diff options
-rw-r--r-- | Makefile.in | 7 | ||||
-rw-r--r-- | build/config_vars.sh.in | 2 | ||||
-rw-r--r-- | configure.in | 27 | ||||
-rw-r--r-- | server/Makefile.in | 2 | ||||
-rw-r--r-- | server/main.c | 2 |
5 files changed, 33 insertions, 7 deletions
diff --git a/Makefile.in b/Makefile.in index ab137d1b67..40c025a94c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -4,8 +4,13 @@ CLEAN_SUBDIRS = test PROGRAM_NAME = $(progname) PROGRAM_SOURCES = modules.c -PROGRAM_LDADD = buildmark.o $(HTTPD_LDFLAGS) $(PROGRAM_DEPENDENCIES) $(HTTPD_LIBS) $(EXTRA_LIBS) $(AP_LIBS) $(LIBS) +PROGRAM_LDADD = buildmark.o $(HTTPD_LDFLAGS) $(PROGRAM_LDDEPS) $(HTTPD_LIBS) $(EXTRA_LIBS) $(AP_LIBS) $(LIBS) PROGRAM_PRELINK = $(COMPILE) -c $(top_srcdir)/server/buildmark.c +PROGRAM_LDDEPS = \ + $(BUILTIN_LIBS) \ + $(MPM_LIB) \ + $(LIBMAIN_LIB) \ + os/$(OS_DIR)/libos.la PROGRAM_DEPENDENCIES = \ $(BUILTIN_LIBS) \ $(MPM_LIB) \ diff --git a/build/config_vars.sh.in b/build/config_vars.sh.in index 408e42d2cb..d586ebd4c5 100644 --- a/build/config_vars.sh.in +++ b/build/config_vars.sh.in @@ -84,4 +84,6 @@ exec sed " /^APR_INCLUDEDIR.*$/s,.*,APR_INCLUDEDIR = ${APR_INCLUDEDIR}, /^APU_INCLUDEDIR.*$/s,.*,APU_INCLUDEDIR = ${APU_INCLUDEDIR}, /^LIBTOOL.*$/s,/[^ ]*/libtool \(.*\),${APR_LIBTOOL} @LTFLAGS@, +/^EXPORTS_DOT_C/d +/^LIBMAIN_LIB/d " diff --git a/configure.in b/configure.in index b20aad03f6..ec0336785e 100644 --- a/configure.in +++ b/configure.in @@ -703,6 +703,28 @@ fi APACHE_SUBST(PICFLAGS) APACHE_SUBST(PILDFLAGS) +ap_reduced_exports=no +EXPORTS_DOT_C=exports.c +LIBMAIN_LIB=server/libmain.la +APACHE_SUBST(EXPORTS_DOT_C) +APACHE_SUBST(LIBMAIN_LIB) + +AC_ARG_ENABLE(reduced-exports, +APACHE_HELP_STRING(--enable-reduced-exports,Reduce binary size if using shared APR libraries), +[ + if test "$enableval" = "yes" -a "$GCC" = "yes"; then + ap_reduced_exports=yes + fi +]) + +if test "$ap_reduced_exports" = "yes"; then + EXPORTS_DOT_C= + LIBMAIN_LIB="-Wl,--whole-archive,server/.libs/libmain.a,--no-whole-archive" + AC_MSG_NOTICE([Using reduced symbol exports]) +else + AC_DEFINE(AP_FORCE_EXPORTS, 1, [Force symbol exports for dependent libraries]) +fi + AC_ARG_WITH(valgrind, [ --with-valgrind[[=DIR]] Enable code to reduce valgrind false positives (optionally: set path to valgrind headers) ], @@ -722,7 +744,7 @@ AC_ARG_WITH(valgrind, dnl Enable the unit test executable if Check is installed. dnl TODO: at the moment, only pkg-config discovery is supported. AC_MSG_CHECKING([for Check to enable unit tests]) -if test "x$PKGCONFIG" != "x" && `$PKGCONFIG --atleast-version='0.9.12' check`; then +if test "x$PKGCONFIG" != "x" -a "$AP_FORCE_EXPORTS" = "yes" && `$PKGCONFIG --atleast-version='0.9.12' check`; then UNITTEST_CFLAGS=`$PKGCONFIG --cflags check` UNITTEST_LIBS=`$PKGCONFIG --libs check` other_targets="$other_targets test/httpdunit" @@ -864,9 +886,6 @@ APACHE_SUBST(AP_LIBS) APACHE_SUBST(AP_BUILD_SRCLIB_DIRS) APACHE_SUBST(AP_CLEAN_SRCLIB_DIRS) -AC_DEFINE(AP_USING_AUTOCONF, 1, - [Using autoconf to configure Apache]) - if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, [This platform doesn't suffer from the thundering herd problem]) diff --git a/server/Makefile.in b/server/Makefile.in index e77efbacb9..7786f656be 100644 --- a/server/Makefile.in +++ b/server/Makefile.in @@ -12,7 +12,7 @@ LTLIBRARY_SOURCES = \ connection.c listen.c util_mutex.c \ mpm_common.c mpm_unix.c mpm_fdqueue.c \ util_charset.c util_cookies.c util_debug.c util_xml.c \ - util_filter.c util_pcre.c util_regex.c exports.c \ + util_filter.c util_pcre.c util_regex.c $(EXPORTS_DOT_C) \ scoreboard.c error_bucket.c protocol.c core.c request.c provider.c \ eoc_bucket.c eor_bucket.c core_filters.c \ util_expr_parse.c util_expr_scan.c util_expr_eval.c \ diff --git a/server/main.c b/server/main.c index a88085fe9f..ac9e5dafd2 100644 --- a/server/main.c +++ b/server/main.c @@ -861,7 +861,7 @@ static void usage(process_rec *process) return !OK; } -#ifdef AP_USING_AUTOCONF +#ifdef AP_FORCE_EXPORTS /* This ugly little hack pulls any function referenced in exports.c into * the web server. exports.c is generated during the build, and it * has all of the APR functions specified by the apr/apr.exports and |