#! /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)}
-XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config-1.1 xapian-config}
+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
configure-script calling conventions, but don't do anything yet:
--build=<cpu>-<vendor>-<os> Currently ignored
+ --host=<cpu>-<vendor>-<os> Currently ignored
--infodir=DIR Currently ignored
+ --datadir=DIR Currently ignored
--localstatedir=DIR Currently ignored
--libexecdir=DIR Currently ignored
--disable-maintainer-mode Currently ignored
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: <cpu>-<vendor>-<os>"
+ 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
have_xapian=0
for xapian_config in ${XAPIAN_CONFIG}; do
if ${xapian_config} --version > /dev/null 2>&1; then
- printf "Yes.\n"
+ printf "Yes (%s).\n" $(${xapian_config} --version | sed -e 's/.* //')
have_xapian=1
xapian_cxxflags=$(${xapian_config} --cxxflags)
xapian_ldflags=$(${xapian_config} --libs)
errors=$((errors + 1))
fi
-printf "Checking for GMime 2.4 development files... "
-if pkg-config --modversion gmime-2.4 > /dev/null 2>&1; then
- printf "Yes.\n"
- have_gmime=1
- gmime_cflags=$(pkg-config --cflags gmime-2.4)
- gmime_ldflags=$(pkg-config --libs gmime-2.4)
-else
+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"
- have_gmime=0
errors=$((errors + 1))
fi
have_emacs=0
fi
-printf "Checking for Mac OS X (for shared library)... "
+printf "Checking which platform we are on... "
if [ `uname` = "Darwin" ] ; then
- printf "Yes.\n"
- mac_os_x=1
+ printf "Mac OS X.\n"
+ platform=MACOSX
linker_resolves_library_dependencies=0
-else
- printf "No.\n"
- mac_os_x=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
+else
+ printf "Unknown.\n"
+ cat <<EOF
+
+*** Warning: Unknown platform. Notmuch might or might not build correctly.
+
+EOF
fi
if [ $errors -gt 0 ]; then
# Default FLAGS for C++ compiler (can be overridden by user such as "make CXXFLAGS=-g")
CXXFLAGS = ${CXXFLAGS}
+# Default FLAGS for the linker (can be overridden by user such as "make LDFLAGS=-znow")
+LDFLAGS = ${LDFLAGS}
+
# Flags to enable warnings when using the C++ compiler
WARN_CXXFLAGS=-Wall -Wextra -Wwrite-strings -Wswitch-enum
# build its own version)
HAVE_STRCASESTR = ${have_strcasestr}
-# Whether we are building on OS X. This will affect how we build the
-# shared library.
-MAC_OS_X = ${mac_os_x}
+# Supported platforms (so far) are: LINUX, MACOSX, SOLARIS
+PLATFORM = ${platform}
# Whether the linker will automatically resolve the dependency of one
# library on another (if not, then linking a binary requires linking