diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000000..71d1de6c6e --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,220 @@ +#!/bin/sh +echo "bootstrap: checking installation..." + +BASEDIR=`pwd`; +LIBDIR=${BASEDIR}/libs; +SUBDIRS="apr-util apr-util/xml/expat codec/g7xx codec/g726 codec/gsm codec/ilbc codec/lpc10 curl iax iksemel \ + js js/nsprpub libdingaling libetpan libresample libsndfile libteletone pcre sofia-sip \ + speex sqlite srtp xmlrpc-c"; + +# autoconf 2.59 or newer +ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;q'` +if test -z "$ac_version"; then +echo "bootstrap: autoconf not found." +echo " You need autoconf version 2.59 or newer installed" +echo " to build FreeSWITCH from SVN." +exit 1 +fi +IFS=.; set $ac_version; IFS=' ' +if test "$1" = "2" -a "$2" -lt "59" || test "$1" -lt "2"; then +echo "bootstrap: autoconf version $ac_version found." +echo " You need autoconf version 2.59 or newer installed" +echo " to build FreeSWITCH from SVN." +exit 1 +else +echo "bootstrap: autoconf version $ac_version (ok)" +fi + +# Sample libtool --version outputs: +# ltmain.sh (GNU libtool) 1.3.3 (1.385.2.181 1999/07/02 15:49:11) +# ltmain.sh (GNU libtool 1.1361 2004/01/02 23:10:52) 1.5a +# output is multiline from 1.5 onwards + +# Require libtool 1.4 or newer +libtool=`${LIBDIR}/apr/build/PrintPath glibtool libtool libtool15 libtool14` +lt_pversion=`$libtool --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'` +if test -z "$lt_pversion"; then +echo "bootstrap: libtool not found." +echo " You need libtool version 1.4 or newer installed" +echo " to build FreeSWITCH from SVN." +exit 1 +fi +lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'` +IFS=.; set $lt_version; IFS=' ' +lt_status="good" +if test "$1" = "1"; then + if test "$2" -lt "4"; then + lt_status="bad" + fi +fi +if test $lt_status = "good"; then + echo "bootstrap: libtool version $lt_pversion (ok)" +else +echo "bootstrap: libtool version $lt_pversion found." +echo " You need libtool version 1.4 or newer installed" +echo " to build FreeSWITCH from SVN." + +exit 1 +fi + + +echo "Entering directory ${LIBDIR}/apr" +cd ${LIBDIR}/apr + +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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. +# +# + +# bootstrap: Build the support scripts needed to compile from a +# checked-out version of the source code. + + +libtoolize=`build/PrintPath glibtoolize libtoolize15 libtoolize14 libtoolize` +if [ "x$libtoolize" = "x" ]; then + echo "libtoolize not found in path" + exit 1 +fi + +# Create the libtool helper files +# +# Note: we copy (rather than link) them to simplify distribution. +# Note: APR supplies its own config.guess and config.sub -- we do not +# rely on libtool's versions +# +echo "Copying libtool helper files ..." + +# Remove any libtool files so one can switch between libtool 1.3 +# and libtool 1.4 by simply rerunning the bootstrap script. +(cd build ; rm -f ltconfig ltmain.sh libtool.m4) + +$libtoolize --copy --automake + +if [ -f libtool.m4 ]; then + ltfile=`pwd`/libtool.m4 +else + ltfindcmd="`sed -n \"/=[^\\\`]/p;/libtool_m4=/{s/.*=/echo /p;q;}\" \ + < $libtoolize`" + ltfile=${LIBTOOL_M4-`eval "$ltfindcmd"`} + # Expecting the code above to be very portable, but just in case... + if [ -z "$ltfile" -o ! -f "$ltfile" ]; then + ltpath=`dirname $libtoolize` + ltfile=`cd $ltpath/../share/aclocal ; pwd`/libtool.m4 + fi +fi + +if [ ! -f $ltfile ]; then + echo "$ltfile not found" + exit 1 +fi + +echo "bootstrap: Using libtool.m4 at ${ltfile}." + +cat $ltfile | sed -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' > build/libtool.m4 + +# libtool.m4 from 1.6 requires ltsugar.m4 +if [ -f ltsugar.m4 ]; then + rm -f build/ltsugar.m4 + mv ltsugar.m4 build/ltsugar.m4 +fi + +# Clean up any leftovers +rm -f aclocal.m4 libtool.m4 + +# +# Generate the autoconf header and ./configure +# +echo "Creating include/arch/unix/apr_private.h.in ..." +${AUTOHEADER:-autoheader} + +echo "Creating configure ..." +### do some work to toss config.cache? +${AUTOCONF:-autoconf} + +# Remove autoconf 2.5x's cache directory +rm -rf autom4te*.cache + +# fix for FreeBSD (at least): +# libtool.m4 is in share/aclocal, while e.g. aclocal19 only looks in share/aclocal19 +# get aclocal's default directory and include the libtool.m4 directory via -I if +# it's in a different location + +aclocal_dir="`${ACLOCAL:-aclocal} --print-ac-dir`" + +if [ -n "${aclocal_dir}" -a -n "${ltfile}" -a "`dirname ${ltfile}`" != "${aclocal_dir}" ] ; then + ACLOCAL_OPTS="-I `dirname ${ltfile}`" +fi + + +for i in ${SUBDIRS} +do + echo "Entering directory ${LIBDIR}/${i}" + cd ${LIBDIR}/${i} + rm -f aclocal.m4 + CFFILE= + if [ -f ${LIBDIR}/${i}/configure.in ] ; then + CFFILE="${LIBDIR}/${i}/configure.in" + else + if [ -f ${LIBDIR}/${i}/configure.ac ] ; then + CFFILE="${LIBDIR}/${i}/configure.ac" + fi + fi + + if [ ! -z ${CFFILE} ] ; then + + LTTEST=`grep "AC_PROG_LIBTOOL" ${CFFILE}` + LTTEST2=`grep "AM_PROG_LIBTOOL" ${CFFILE}` + AMTEST=`grep "AM_INIT_AUTOMAKE" ${CFFILE}` + AHTEST=`grep "AC_CONFIG_HEADERS" ${CFFILE}` + + echo "Creating aclocal.m4" + ${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} ${ACLOCAL_FLAGS} + +#only run if AC_PROG_LIBTOOL is in configure.in/configure.ac + if [ ! -z "${LTTEST}" -o "${LTTEST2}" ] ; then + echo "Running libtoolize..." + ${LIBTOOLIZE:-libtoolize} --force --copy ; + fi + + echo "Creating configure" + ${AUTOCONF:-autoconf} + +#only run if AC_CONFIG_HEADERS is found in configure.in/configure.ac + if [ ! -z "${AHTEST}" ] ; then + echo "Running autoheader..." + ${AUTOHEADER:-autoheader} ; + fi + +#only run if AM_INIT_AUTOMAKE is in configure.in/configure.ac + if [ ! -z "${AMTEST}" ] ; then + if [ -f ${LIBDIR}/${i}/Makefile.am ] ; then + echo "Creating Makefile.in" + ${AUTOMAKE:-automake} --no-force --add-missing ; + fi + fi + rm -rf autom4te*.cache + fi +done + +cd ${BASEDIR} + +rm -f aclocal.m4 +${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} +${LIBTOOLIZE:-libtoolize} --copy --automake +${AUTOCONF:-autoconf} +${AUTOHEADER:-autoheader} +${AUTOMAKE:-automake} --no-force --add-missing +rm -rf autom4te*.cache +