| dnl =================================================================== |
| dnl Licensed to the Apache Software Foundation (ASF) under one |
| dnl or more contributor license agreements. See the NOTICE file |
| dnl distributed with this work for additional information |
| dnl regarding copyright ownership. The ASF licenses this file |
| dnl to you under the Apache License, Version 2.0 (the |
| dnl "License"); you may not use this file except in compliance |
| dnl with the License. You may obtain a copy of the License at |
| dnl |
| dnl http://www.apache.org/licenses/LICENSE-2.0 |
| dnl |
| dnl Unless required by applicable law or agreed to in writing, |
| dnl software distributed under the License is distributed on an |
| dnl "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| dnl KIND, either express or implied. See the License for the |
| dnl specific language governing permissions and limitations |
| dnl under the License. |
| dnl =================================================================== |
| dnl |
| # Miscellaneous additional macros for Subversion's own use. |
| |
| # SVN_CONFIG_NICE(FILENAME) |
| # Write a shell script to FILENAME (typically 'config.nice') which reinvokes |
| # configure with all of the arguments. Reserves use of the filename |
| # FILENAME.old for its own use. |
| # This is different from 'config.status --recheck' in that it does add implicit |
| # --no-create --no-recursion options, and stores _just_ the configure |
| # invocation, instead of the entire configured state. |
| AC_DEFUN([SVN_CONFIG_NICE], [ |
| AC_MSG_NOTICE([creating $1]) |
| # This little dance satisfies Cygwin, which cannot overwrite in-use files. |
| if test -f "$1"; then |
| mv "$1" "$1.old" |
| fi |
| |
| cat >"$1" <<EOF |
| #! /bin/sh |
| # |
| # Created by configure |
| |
| '[$]0' $ac_configure_args "\[$]@" |
| EOF |
| |
| chmod +x "$1" |
| rm -f "$1.old" |
| ]) |
| |
| |
| # SVN_EXTERNAL_PROJECT_SETUP() |
| # Internal helper for SVN_EXTERNAL_PROJECT. |
| AC_DEFUN([SVN_EXTERNAL_PROJECT_SETUP], [ |
| do_subdir_config="yes" |
| AC_ARG_ENABLE([subdir-config], |
| AS_HELP_STRING([--disable-subdir-config], |
| [do not reconfigure packages in subdirectories]), |
| [if test "$enableval" = "no"; then do_subdir_config="no"; fi]) |
| AC_SUBST([SVN_EXTERNAL_PROJECT_SUBDIRS], [""]) |
| ]) |
| |
| # SVN_EXTERNAL_PROJECT(SUBDIR [, ADDITIONAL-CONFIGURE-ARGS]) |
| # Setup SUBDIR as an external project. This means: |
| # - Execute the configure script immediately at the point of macro invocation. |
| # - Add SUBDIR to the substitution variable SVN_EXTERNAL_PROJECT_SUBDIRS, |
| # for the Makefile.in to arrange to execute make in the subdir. |
| # |
| # Derived from APR_SUBDIR_CONFIG |
| AC_DEFUN([SVN_EXTERNAL_PROJECT], [ |
| AC_REQUIRE([SVN_EXTERNAL_PROJECT_SETUP]) |
| SVN_EXTERNAL_PROJECT_SUBDIRS="$SVN_EXTERNAL_PROJECT_SUBDIRS $1" |
| if test "$do_subdir_config" = "yes" ; then |
| # save our work to this point; this allows the sub-package to use it |
| AC_CACHE_SAVE |
| |
| AC_MSG_NOTICE([configuring package in $1 now]) |
| ac_popdir=`pwd` |
| ac_abs_srcdir=`(cd $srcdir/$1 && pwd)` |
| apr_config_subdirs="$1" |
| test -d $1 || $MKDIR $1 |
| cd $1 |
| |
| # A "../" for each directory in /$config_subdirs. |
| ac_dots=[`echo $apr_config_subdirs| $SED -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`] |
| |
| # Make the cache file name correct relative to the subdirectory. |
| case "$cache_file" in |
| /*) ac_sub_cache_file=$cache_file ;; |
| *) # Relative path. |
| ac_sub_cache_file="$ac_dots$cache_file" ;; |
| esac |
| |
| # The eval makes quoting arguments work. |
| if eval $SHELL $ac_abs_srcdir/configure $ac_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_abs_srcdir $2 |
| then : |
| echo "$1 configured properly" |
| else |
| echo "configure failed for $1" |
| exit 1 |
| fi |
| cd $ac_popdir |
| |
| # grab any updates from the sub-package |
| AC_CACHE_LOAD |
| else |
| AC_MSG_WARN([not running configure in $1]) |
| fi |
| ]) |
| |
| dnl |
| dnl SVN_CONFIG_SCRIPT(path) |
| dnl |
| dnl Make AC_OUTPUT create an executable file. |
| dnl Accumulate filenames in $SVN_CONFIG_SCRIPT_FILES for AC_SUBSTing to |
| dnl use in, for example, Makefile distclean rules. |
| dnl |
| AC_DEFUN(SVN_CONFIG_SCRIPT, [ |
| SVN_CONFIG_SCRIPT_FILES="$SVN_CONFIG_SCRIPT_FILES $1" |
| AC_CONFIG_FILES([$1], [chmod +x $1])]) |
| |
| dnl Iteratively interpolate the contents of the second argument |
| dnl until interpolation offers no new result. Then assign the |
| dnl final result to $1. |
| dnl |
| dnl Based on APR_EXPAND_VAR macro |
| dnl |
| dnl Example: |
| dnl |
| dnl foo=1 |
| dnl bar='${foo}/2' |
| dnl baz='${bar}/3' |
| dnl SVN_EXPAND_VAR(fraz, $baz) |
| dnl $fraz is now "1/2/3" |
| dnl |
| AC_DEFUN(SVN_EXPAND_VAR,[ |
| svn_last= |
| svn_cur="$2" |
| while test "x${svn_cur}" != "x${svn_last}"; |
| do |
| svn_last="${svn_cur}" |
| svn_cur=`eval "echo ${svn_cur}"` |
| done |
| $1="${svn_cur}" |
| ]) |
| |
| dnl SVN_MAYBE_ADD_TO_CFLAGS(option) |
| dnl |
| dnl Attempt to compile a trivial C program to test if the option passed |
| dnl is valid. If it is, then add it to CFLAGS. with the passed in option |
| dnl and see if it was successfully compiled. |
| dnl |
| dnl This macro is usually used for stricter syntax checking flags. |
| dnl Therefore we include certain headers which may in turn include system |
| dnl headers, as system headers on some platforms may fail strictness checks |
| dnl we wish to use on other platforms. |
| |
| AC_DEFUN(SVN_MAYBE_ADD_TO_CFLAGS, |
| [ |
| option="$1" |
| svn_maybe_add_to_cflags_saved_flags="$CFLAGS" |
| CFLAGS="$CFLAGS $option" |
| AC_MSG_CHECKING([if $CC accepts $option]) |
| AC_COMPILE_IFELSE([AC_LANG_PROGRAM( |
| [[#include <apr_portable.h>]], |
| [[]])], |
| [svn_maybe_add_to_cflags_ok="yes"], |
| [svn_maybe_add_to_cflags_ok="no"] |
| ) |
| if test "$svn_maybe_add_to_cflags_ok" = "yes"; then |
| AC_MSG_RESULT([yes, will use it]) |
| else |
| AC_MSG_RESULT([no]) |
| CFLAGS="$svn_maybe_add_to_cflags_saved_flags" |
| fi |
| ]) |
| |
| dnl SVN_REMOVE_STANDARD_LIB_DIRS(OPTIONS) |
| dnl |
| dnl Remove standard library search directories. |
| dnl OPTIONS is a list of compiler/linker options. |
| dnl This macro prints input options except -L options whose arguments are |
| dnl standard library search directories (e.g. /usr/lib). |
| dnl |
| dnl This macro is used to avoid linking against Subversion libraries |
| dnl potentially placed in standard library search directories. |
| AC_DEFUN([SVN_REMOVE_STANDARD_LIB_DIRS], |
| [ |
| input_flags="$1" |
| output_flags="" |
| filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" |
| for flag in $input_flags; do |
| filter="no" |
| for dir in $filtered_dirs; do |
| if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then |
| filter="yes" |
| break |
| fi |
| done |
| if test "$filter" = "no"; then |
| output_flags="$output_flags $flag" |
| fi |
| done |
| if test -n "$output_flags"; then |
| printf "%s" "${output_flags# }" |
| fi |
| ]) |