#! /bin/sh # Removing space from IFS makes it much easier to support filenames # with spaces. See http://www.dwheeler.com/essays/filenames-in-shell.html # for gory details. IFS="$(printf '\n\t')" # Since we don't have space in IFS we use tab to separate things in lists tab="$(printf '\t')" # Set several defaults (optionally specified by the user in # environemnt variables) CC=${CC:-gcc} CXX=${CXX:-g++} CFLAGS=${CFLAGS:--O2} CXXFLAGS=${CXXFLAGS:-\$(CFLAGS)} LDFLAGS=${LDFLAGS:-} XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config-1.1${tab}xapian-config} # We don't allow the EMACS or GZIP Makefile variables inherit values # from the environment as we do with CC and CXX above. The reason is # that these names as environment variables have existing uses other # than the program name that we want. (EMACS is set to 't' when a # shell is running within emacs and GZIP specifies arguments to pass # on the gzip command line). # Set the defaults for values the user can specify with command-line # options. PREFIX=/usr/local LIBDIR= usage () { cat <-- Currently ignored --host=-- Currently ignored --infodir=DIR Currently ignored --datadir=DIR Currently ignored --localstatedir=DIR Currently ignored --libexecdir=DIR Currently ignored --disable-maintainer-mode Currently ignored --disable-dependency-tracking Currently ignored EOF } # Parse command-line options for option; do if [ "${option}" = '--help' ] ; then usage exit 0 elif [ "${option%%=*}" = '--prefix' ] ; then PREFIX="${option#*=}" elif [ "${option%%=*}" = '--libdir' ] ; then LIBDIR="${option#*=}" elif [ "${option%%=*}" = '--includedir' ] ; then INCLUDEDIR="${option#*=}" elif [ "${option%%=*}" = '--mandir' ] ; then MANDIR="${option#*=}" elif [ "${option%%=*}" = '--sysconfdir' ] ; then SYSCONFDIR="${option#*=}" elif [ "${option%%=*}" = '--emacslispdir' ] ; then EMACSLISPDIR="${option#*=}" elif [ "${option%%=*}" = '--build' ] ; then build_option="${option#*=}" case ${build_option} in *-*-*) ;; *) echo "Unrecognized value for --build option: ${build_option}" echo "Should be: --" echo "See:" echo " $0 --help" echo "" exit 1 esac build_cpu=${build_option%%-*} build_option=${build_option#*-} build_vendor=${build_option%%-*} build_os=${build_option#*-} elif [ "${option%%=*}" = '--host' ] ; then host_option="${option#*=}" case ${host_option} in *-*-*) ;; *) echo "Unrecognized value for --host option: ${host_option}" echo "Should be: --" echo "See:" echo " $0 --help" echo "" exit 1 esac host_cpu=${host_option%%-*} host_option=${host_option#*-} host_vendor=${host_option%%-*} host_os=${host_option#*-} elif [ "${option%%=*}" = '--infodir' ] ; then true elif [ "${option%%=*}" = '--datadir' ] ; then true elif [ "${option%%=*}" = '--localstatedir' ] ; then true elif [ "${option%%=*}" = '--libexecdir' ] ; then true elif [ "${option}" = '--disable-maintainer-mode' ] ; then true elif [ "${option}" = '--disable-dependency-tracking' ] ; then true else echo "Unrecognized option: ${option}" echo "See:" echo " $0 --help" echo "" exit 1 fi done # We set this value early, (rather than just while printing the # Makefile.config file later like most values), because we need to # actually investigate this value compared to the ldconfig_paths value # below. libdir_expanded=${LIBDIR:-${PREFIX}/lib} cat < /dev/null 2>&1; then have_pkg_config=1 else have_pkg_config=0 fi printf "Checking for Xapian development files... " have_xapian=0 for xapian_config in ${XAPIAN_CONFIG}; do if ${xapian_config} --version > /dev/null 2>&1; then printf "Yes (%s).\n" $(${xapian_config} --version | sed -e 's/.* //') have_xapian=1 xapian_cxxflags=$(${xapian_config} --cxxflags) xapian_ldflags=$(${xapian_config} --libs) break fi done if [ ${have_xapian} = "0" ]; then printf "No.\n" errors=$((errors + 1)) fi printf "Checking for GMime development files... " have_gmime=0 for gmimepc in gmime-2.6 gmime-2.4; do if pkg-config --modversion $gmimepc > /dev/null 2>&1; then printf "Yes ($gmimepc).\n" have_gmime=1 gmime_cflags=$(pkg-config --cflags $gmimepc) gmime_ldflags=$(pkg-config --libs $gmimepc) fi done if [ "$have_gmime" = "0" ]; then printf "No.\n" errors=$((errors + 1)) fi printf "Checking for talloc development files... " if pkg-config --modversion talloc > /dev/null 2>&1; then printf "Yes.\n" have_talloc=1 talloc_cflags=$(pkg-config --cflags talloc) talloc_ldflags=$(pkg-config --libs talloc) else printf "No.\n" have_talloc=0 talloc_cflags= errors=$((errors + 1)) fi printf "Checking for valgrind development files... " if pkg-config --modversion valgrind > /dev/null 2>&1; then printf "Yes.\n" have_valgrind=1 valgrind_cflags=$(pkg-config --cflags valgrind) else printf "No (but that's fine).\n" have_valgrind=0 fi if [ -z "${EMACSLISPDIR}" ]; then if pkg-config --modversion emacs > /dev/null 2>&1; then EMACSLISPDIR=$(pkg-config emacs --variable sitepkglispdir) else EMACSLISPDIR='$(prefix)/share/emacs/site-lisp' fi fi printf "Checking if emacs is available... " if emacs --quick --batch > /dev/null 2>&1; then printf "Yes.\n" have_emacs=1 else printf "No (so will not byte-compile emacs code)\n" have_emacs=0 fi libdir_in_ldconfig=0 printf "Checking which platform we are on... " if [ `uname` = "Darwin" ] ; then printf "Mac OS X.\n" platform=MACOSX linker_resolves_library_dependencies=0 elif [ `uname` = "SunOS" ] ; then printf "Solaris.\n" platform=SOLARIS linker_resolves_library_dependencies=0 elif [ `uname` = "Linux" ] ; then printf "Linux\n" platform=LINUX linker_resolves_library_dependencies=1 ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p') for path in $ldconfig_paths; do echo "Checking $path compared to $libdir_expanded" if [ "$path" = "$libdir_expanded" ]; then libdir_in_ldconfig=1 fi done else printf "Unknown.\n" cat < /dev/null 2>&1 then printf "Yes.\n" have_getline=1 else printf "No (will use our own instead).\n" have_getline=0 fi rm -f compat/have_getline printf "Checking for strcasestr... " if ${CC} -o compat/have_strcasestr compat/have_strcasestr.c > /dev/null 2>&1 then printf "Yes.\n" have_strcasestr=1 else printf "No (will use our own instead).\n" have_strcasestr=0 fi rm -f compat/have_strcasestr cat < Makefile.config <