Commit 20a627e7 authored by Philip M. Gollucci's avatar Philip M. Gollucci
Browse files

move build system files over from apr-build-system branch in apreq

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1200464 13f79535-47bb-0310-9956-ffa450edef68
parent 843f17b2
Loading
Loading
Loading
Loading
+218 −0
Original line number Diff line number Diff line
#!/bin/sh

##
##  Copyright 2003-2006  The Apache Software Foundation
##
##  Licensed under the Apache License, Version 2.0 (the "License");
##  you may not use this file except in compliance with the License.
##  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
##  Unless required by applicable law or agreed to in writing, software
##  distributed under the License is distributed on an "AS IS" BASIS,
##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
##  See the License for the specific language governing permissions and
##  limitations under the License.
##

# apreq2-config- based on apu-config:
# APR-util script designed to allow easy command line access to APR-util
# configuration parameters.

prefix="@prefix@"
exec_prefix="@exec_prefix@"
bindir="@bindir@"
libdir="@libdir@"
includedir="@includedir@"

LIBS="@APREQ_LIBS@"
LDFLAGS="@APREQ_LDFLAGS@"
INCLUDES="@APREQ_INCLUDES@"

APREQ_LIBNAME="@APREQ_LIBNAME@"

APREQ_SOURCE_DIR="@abs_srcdir@"
APREQ_BUILD_DIR="@abs_builddir@"

show_usage()
{
    cat << EOF
Usage: apreq2-config [OPTION]

Known values for OPTION are:
  --prefix[=DIR]    change prefix to DIR
  --bindir          print location where binaries are installed
  --includes        print include information
  --includedir      print location where headers are installed
  --ldflags         print linker flags
  --libs            print library information
  --srcdir          print apreq2 source directory
  --link-ld         print link switch(es) for linking to libapreq2
  --link-libtool    print the libtool inputs for linking to libapreq2
  --la-file         print the path to the library's .la file, if available
  --library-version print the API version as a dotted triple
  --libtool-version print the ABI version in a libtool-compatible format
  --package-version print the version number of the distribution
  --help            print this help

When linking with libtool, an application should do something like:
  APREQ_LIBS="\`apreq2-config --link-libtool --libs\`"
or when linking directly:
  APREQ_LIBS="\`apreq2-config --link-ld --ldflags --libs\`"

An application should use the results of --includes, and --ldflags in
their build process.
EOF
}

if test $# -eq 0; then
    show_usage
    exit 1
fi

thisdir="`dirname $0`"
thisdir="`cd $thisdir && pwd`"
if test -d $bindir; then
    tmpbindir="`cd $bindir && pwd`"
else
    tmpbindir=""
fi
# If we have the realpath program, use it to resolve symlinks.
# Otherwise, being in a symlinked dir may result in incorrect output.
if test -x "`which realpath 2>/dev/null`"; then
    thisdir="`realpath $thisdir`"
    if test -d "$APREQ_SOURCE_DIR"; then
        APREQ_SOURCE_DIR="`realpath $APREQ_SOURCE_DIR`"
    fi
    if test -n "$tmpbindir"; then
        tmpbindir="`realpath $tmpbindir`"
    fi
fi
if test "$tmpbindir" = "$thisdir"; then
    location=installed
elif test "$APREQ_SOURCE_DIR" = "$thisdir"; then
    location=source
else
    location=build
fi


if test "$location" = "installed"; then
    LA_FILE="$libdir/lib${APREQ_LIBNAME}.la"
else
    LA_FILE="$thisdir/lib${APREQ_LIBNAME}.la"
fi

flags=""

while test $# -gt 0; do
    # Normalize the prefix.
    case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
    esac

    case "$1" in
    # It is possible for the user to override our prefix.
    --prefix=*)
    prefix=$optarg
    ;;
    --prefix)
    echo $prefix
    exit 0
    ;;
    --bindir)
    echo $bindir
    exit 0
    ;;
    --libs)
    flags="$flags $LIBS"
    ;;
    --includedir)
    if test "$location" = "installed"; then
        flags="$includedir"
    elif test "$location" = "source"; then
        flags="$APREQ_SOURCE_DIR/include"
    else
        # this is for VPATH builds
        flags="$thisdir/include $APREQ_SOURCE_DIR/include"
    fi
    echo $flags
    exit 0
    ;;
    --includes)
    if test "$location" = "installed"; then
        flags="$flags -I$includedir $INCLUDES"
    elif test "$location" = "source"; then
        flags="$flags -I$APREQ_SOURCE_DIR/include $INCLUDES"
    else
        # this is for VPATH builds
        flags="$flags -I$thisdir/include -I$APREQ_SOURCE_DIR/include $INCLUDES"
    fi
    ;;
    --ldflags)
    flags="$flags $LDFLAGS"
    ;;
    --srcdir)
    echo $APREQ_SOURCE_DIR
    exit 0
    ;;
    --library-version)
    echo @APREQ_DOTTED_VERSION@
    exit 0
    ;;
    --libtool-version)
    echo @APREQ_LIBTOOL_VERSION@
    exit 0
    ;;
    --package-version)
    echo "@VERSION@"
    exit 0
    ;;
    --link-ld)
    if test "$location" = "installed"; then
        ### avoid using -L if libdir is a "standard" location like /usr/lib
        flags="$flags -L$libdir -l$APREQ_LIBNAME"
    else
        flags="$flags -L$thisdir/library/.libs -l$APREQ_LIBNAME"
    fi
    ;;
    --link-libtool)
    # If the LA_FILE exists where we think it should be, use it.  If we're
    # installed and the LA_FILE does not exist, assume to use -L/-l
    # (the LA_FILE may not have been installed).  If we're building ourselves,
    # we'll assume that at some point the .la file be created.
    if test -f "$LA_FILE"; then
        flags="$flags $LA_FILE"
    elif test "$location" = "installed"; then
        ### avoid using -L if libdir is a "standard" location like /usr/lib
        flags="$flags -L$libdir -l$APREQ_LIBNAME $apreq_libs"
    else
        flags="$flags $LA_FILE"
    fi
    ;;
    --la-file)
    if test -f "$LA_FILE"; then
        flags="$flags $LA_FILE"
    fi
    ;;
    --help)
    show_usage
    exit 0
    ;;
    *)
    show_usage
    exit 1
    ;;
    esac

    # Next please.
    shift
done

if test -n "$flags"; then
  echo "$flags"
fi

exit 0
+19 −0
Original line number Diff line number Diff line
#
# Configuration file for APREQ. Used by APR/build/gen-build.py
#

[options]

# the platform-independent .c files
paths =
  library/*.c
# we have no platform-specific subdirs
platform_dirs =

# the public headers
headers = include/*.h

# gen_uri_delim.c

# we have a recursive makefile for the test files (for now)
# test/*.c
+72 −0
Original line number Diff line number Diff line
dnl -------------------------------------------------------- -*- autoconf -*-
dnl Copyright 2000-2005 The Apache Software Foundation or its licensors, as
dnl applicable.
dnl
dnl Licensed under the Apache License, Version 2.0 (the "License");
dnl you may not use this file except in compliance with the License.
dnl 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, software
dnl distributed under the License is distributed on an "AS IS" BASIS,
dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dnl See the License for the specific language governing permissions and
dnl limitations under the License.


dnl
dnl custom autoconf rules for APRUTIL
dnl

dnl
dnl APU_FIND_APR: figure out where APR is located
dnl
AC_DEFUN([APREQ_FIND_APR], [

  dnl use the find_apr.m4 script to locate APR. sets apr_found and apr_config
  APR_FIND_APR(,,,[1])
  if test "$apr_found" = "no"; then
    AC_MSG_ERROR(APR could not be located. Please use the --with-apr option.)
  fi

  APR_BUILD_DIR="`$apr_config --installbuilddir`"

  dnl make APR_BUILD_DIR an absolute directory (we'll need it in the
  dnl sub-projects in some cases)
  APR_BUILD_DIR="`cd $APR_BUILD_DIR && pwd`"

  APR_INCLUDES="`$apr_config --includes`"
  APR_LIBS="`$apr_config --link-libtool --libs`"
  APR_SO_EXT="`$apr_config --apr-so-ext`"
  APR_LIB_TARGET="`$apr_config --apr-lib-target`"

  AC_SUBST(APR_INCLUDES)
  AC_SUBST(APR_LIBS)
  AC_SUBST(APR_BUILD_DIR)
])


AC_DEFUN([APREQ_FIND_APU], [

  dnl use the find_apr.m4 script to locate APR. sets apr_found and apu_config
  APR_FIND_APU(,,,[1])
  if test "$apu_found" = "no"; then
    AC_MSG_ERROR(APR could not be located. Please use the --with-apr-util option.)
  fi

  APU_BUILD_DIR="`$apu_config --installbuilddir`"

  dnl make APR_BUILD_DIR an absolute directory (we'll need it in the
  dnl sub-projects in some cases)
  APU_BUILD_DIR="`cd $APR_BUILD_DIR && pwd`"

  APU_INCLUDES="`$apu_config --includes`"
  APU_LIBS="`$apu_config --link-libtool --libs`"

  AC_SUBST(APU_INCLUDES)
  AC_SUBST(APU_LIBS)
  AC_SUBST(APU_BUILD_DIR)
])

+61 −0
Original line number Diff line number Diff line
dnl -------------------------------------------------------- -*- autoconf -*-
dnl Copyright 2003-2005 The Apache Software Foundation or its licensors, as
dnl applicable.
dnl
dnl Licensed under the Apache License, Version 2.0 (the "License");
dnl you may not use this file except in compliance with the License.
dnl 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, software
dnl distributed under the License is distributed on an "AS IS" BASIS,
dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dnl See the License for the specific language governing permissions and
dnl limitations under the License.

dnl -----------------------------------------------------------------
dnl apu-hints.m4: apr-util's autoconf macros for platform-specific hints
dnl
dnl  We preload various configure settings depending
dnl  on previously obtained platform knowledge.
dnl  We allow all settings to be overridden from
dnl  the command-line.

dnl
dnl APU_PRELOAD
dnl
dnl  Preload various build parameters based on outside knowledge.
dnl
AC_DEFUN([APREQ_PRELOAD], [
if test "x$apreq_preload_done" != "xyes" ; then
    apreq_preload_done="yes"

    echo "Applying apr-util hints file rules for $host"

    case "$host" in
    *-dec-osf*)
        APR_SETIFNULL(apreq_crypt_threadsafe, [1])
        ;;
    *-hp-hpux11.*)
        APR_SETIFNULL(apreq_crypt_threadsafe, [1])
        ;;
    *-ibm-aix4*|*-ibm-aix5.1*)
        APR_SETIFNULL(apreq_iconv_inbuf_const, [1])
        ;;
    *-ibm-os390)
        APR_SETIFNULL(apreq_crypt_threadsafe, [1])
        ;;
    *-solaris2*)
        APR_SETIFNULL(apreq_iconv_inbuf_const, [1])
        APR_SETIFNULL(apreq_crypt_threadsafe, [1])
        ;;
    *-sco3.2v5*)
	APR_SETIFNULL(apreq_db_xtra_libs, [-lsocket])
	;;
    esac

fi
])

+176 −0
Original line number Diff line number Diff line
dnl -------------------------------------------------------- -*- autoconf -*-
dnl Copyright 2002-2006 The Apache Software Foundation or its licensors, as
dnl applicable.
dnl
dnl Licensed under the Apache License, Version 2.0 (the "License");
dnl you may not use this file except in compliance with the License.
dnl 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, software
dnl distributed under the License is distributed on an "AS IS" BASIS,
dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dnl See the License for the specific language governing permissions and
dnl limitations under the License.

dnl
dnl find_apu.m4 : locate the APR-util (APU) include files and libraries
dnl
dnl This macro file can be used by applications to find and use the APU
dnl library. It provides a standardized mechanism for using APU. It supports
dnl embedding APU into the application source, or locating an installed
dnl copy of APU.
dnl
dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors)
dnl
dnl   where srcdir is the location of the bundled APU source directory, or
dnl   empty if source is not bundled.
dnl
dnl   where builddir is the location where the bundled APU will be built,
dnl   or empty if the build will occur in the srcdir.
dnl
dnl   where implicit-install-check set to 1 indicates if there is no
dnl   --with-apr-util option specified, we will look for installed copies.
dnl
dnl   where acceptable-majors is a space separated list of acceptable major
dnl   version numbers. Often only a single major version will be acceptable.
dnl   If multiple versions are specified, and --with-apr-util=PREFIX or the
dnl   implicit installed search are used, then the first (leftmost) version
dnl   in the list that is found will be used.  Currently defaults to [0 1].
dnl
dnl Sets the following variables on exit:
dnl
dnl   apu_found : "yes", "no", "reconfig"
dnl
dnl   apu_config : If the apu-config tool exists, this refers to it.  If
dnl                apu_found is "reconfig", then the bundled directory
dnl                should be reconfigured *before* using apu_config.
dnl
dnl Note: this macro file assumes that apr-config has been installed; it
dnl       is normally considered a required part of an APR installation.
dnl
dnl Note: At this time, we cannot find *both* a source dir and a build dir.
dnl       If both are available, the build directory should be passed to
dnl       the --with-apr-util switch.
dnl
dnl Note: the installation layout is presumed to follow the standard
dnl       PREFIX/lib and PREFIX/include pattern. If the APU config file
dnl       is available (and can be found), then non-standard layouts are
dnl       possible, since it will be described in the config file.
dnl
dnl If a bundled source directory is available and needs to be (re)configured,
dnl then apu_found is set to "reconfig". The caller should reconfigure the
dnl (passed-in) source directory, placing the result in the build directory,
dnl as appropriate.
dnl
dnl If apu_found is "yes" or "reconfig", then the caller should use the
dnl value of apu_config to fetch any necessary build/link information.
dnl

AC_DEFUN([APR_FIND_APREQ], [
  apreq_found="no"

  if test "$target_os" = "os2-emx"; then
    # Scripts don't pass test -x on OS/2
    TEST_X="test -f"
  else
    TEST_X="test -x"
  fi

  ifelse([$4], [],
  [
    ifdef(AC_WARNING,([$0: missing argument 4 (acceptable-majors): Defaulting to APREQ 0.x then APREQ 1.x]))
    acceptable_majors="0 1"
  ], [acceptable_majors="$4"])

  apreq_temp_acceptable_apreq_config=""
  for apreq_temp_major in $acceptable_majors
  do
    case $apreq_temp_major in
      0)
      apreq_temp_acceptable_apreq_config="$apreq_temp_acceptable_apreq_config apreq-config"
      ;;
      *)
      apreq_temp_acceptable_apreq_config="$apreq_temp_acceptable_apreq_config apreq$apreq_temp_major-config"
      ;;
    esac
  done

  AC_MSG_CHECKING(for APREQ)
  AC_ARG_WITH(apreq,
  [  --with-apreq=PATH    prefix for installed APREQ, path to APREQ build tree,
                          or the full path to apreq-config],
  [
    if test "$withval" = "no" || test "$withval" = "yes"; then
      AC_MSG_ERROR([--with-apreq requires a directory or file to be provided])
    fi

    for apreq_temp_apreq_config_file in $apreq_temp_acceptable_apreq_config
    do
      for lookdir in "$withval/bin" "$withval"
      do
        if $TEST_X "$lookdir/$apreq_temp_apreq_config_file"; then
          apreq_found="yes"
          apreq_config="$lookdir/$apreq_temp_apreq_config_file"
          break 2
        fi
      done
    done

    if test "$apreq_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then
      apreq_found="yes"
      apreq_config="$withval"
    fi

    dnl if --with-apreq is used, it is a fatal error for its argument
    dnl to be invalid
    if test "$apreq_found" != "yes"; then
      AC_MSG_ERROR([the --with-apreq parameter is incorrect. It must specify an install prefix, a build directory, or an apreq-config file.])
    fi
  ],[
    if test -n "$3" && test "$3" = "1"; then
      for apreq_temp_apreq_config_file in $apreq_temp_acceptable_apreq_config
      do
        if $apreq_temp_apreq_config_file --help > /dev/null 2>&1 ; then
          apreq_found="yes"
          apreq_config="$apreq_temp_apreq_config_file"
          break
        else
          dnl look in some standard places (apparently not in builtin/default)
          for lookdir in /usr /usr/local /usr/local/apr /opt/apr /usr/local/apache2 ; do
            if $TEST_X "$lookdir/bin/$apreq_temp_apreq_config_file"; then
              apreq_found="yes"
              apreq_config="$lookdir/bin/$apreq_temp_apreq_config_file"
              break 2
            fi
          done
        fi
      done
    fi
    dnl if we have not found anything yet and have bundled source, use that
    if test "$apreq_found" = "no" && test -d "$1"; then
      apreq_temp_abs_srcdir="`cd $1 && pwd`"
      apreq_found="reconfig"
      apreq_bundled_major="`sed -n '/#define.*APREQ_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apreq_version.h\"`"
      case $apreq_bundled_major in
        "")
          AC_MSG_ERROR([failed to find major version of bundled APREQ])
        ;;
        0)
          apreq_temp_apreq_config_file="apreq-config"
        ;;
        *)
          apreq_temp_apreq_config_file="apreq$apreq_bundled_major-config"
        ;;
      esac
      if test -n "$2"; then
        apreq_config="$2/$apreq_temp_apreq_config_file"
      else
        apreq_config="$1/$apreq_temp_apreq_config_file"
      fi
    fi
  ])

  AC_MSG_RESULT($apreq_found)
])
Loading