configure wrapper script and top-level Makefile: closes #5143

This introduces a configure script that automates the basic task
of setting up a CMake build directory.  It also uses a top-level
Makefile (which the configure script generates, to prevent running
it until configure has executed) which does the build and copies
the final executables into the root of the source tree.
This commit is contained in:
Jim Nelson 2012-04-27 19:46:39 -07:00
parent 78ecc0f754
commit b87fe2967a
4 changed files with 135 additions and 6 deletions

10
.gitignore vendored
View file

@ -1,10 +1,10 @@
*~
.lock-wafbuild
.valencia
.waf-*
/Makefile
/.stamp
build/
/console
/geary
/norman
/theseus
/gearyd
/geary-mailer
/geary-console

View file

@ -14,7 +14,7 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake )
# Base bits
#
set(GETTEXT_PACKAGE "geary")
set(RELEASE_NAME "Lightweight email client for Gnome.")
set(RELEASE_NAME "Lightweight email client for GNOME.")
set(VERSION "0.0.0+trunk")
set(VERSION_INFO "Release")

29
Makefile.in Normal file
View file

@ -0,0 +1,29 @@
# Makefile.in
#
# Copyright 2012 Yorba Foundation
BUILD_DIR := build
BINARIES := geary gearyd geary-console geary-mailer
BUILD_BINARIES := $(addprefix $(BUILD_DIR)/,$(BINARIES))
.PHONY: all
all:
@$(MAKE) -C $(BUILD_DIR)
@cp $(BUILD_BINARIES) .
.PHONY: install uninstall
install uninstall:
@$(MAKE) -C $(BUILD_DIR) $@
.PHONY: clean
clean:
@-$(MAKE) -C $(BUILD_DIR) clean
@-rm -f $(BINARIES)
@-rm -f .stamp
.PHONY: distclean
distclean: clean
@-rm -rf $(BUILD_DIR)
@-rm -f Makefile

100
configure vendored Executable file
View file

@ -0,0 +1,100 @@
#!/usr/bin/env bash
#
# Copyright 2012 Yorba Foundation
#
# This software is licensed under the GNU LGPL (version 2.1 or later).
# See the COPYING file in this distribution.
DEFAULT_PREFIX="/usr/local"
PREFIX=$DEFAULT_PREFIX
configure_help() {
printf "Usage:\n"
printf "\t./configure [OPTIONS]...\n"
printf "\n"
printf "Options:\n"
printf "\t-h, --help\t\tPrint this help and exit.\n"
printf "\t--prefix=PREFIX\t\tPrepend PREFIX to program installation paths.\n"
printf "\t\t\t\t[%s]\n" $DEFAULT_PREFIX
printf "\n"
}
abort() {
printf "%s: Invalid argument %s\n" $0 $1
configure_help
exit 1
}
while [ $# != 0 ]
do
option=`echo $1 | sed 's/=.*//'`
if [ `echo $1 | grep '='` ]
then
value=`echo $1 | sed 's/.*=//'`
fi
case $option in
-h | --help) configure_help
exit 0
;;
--prefix) if [ ! $value ]
then
abort $1
fi
CMDLINE="${CMDLINE}-DCMAKE_INSTALL_PREFIX=${value} "
;;
*) abort $option
;;
esac
shift
done
# Verify cmake is installed
# TODO: Check for minimum version number
if ! cmake --version
then
printf "cmake must be installed to configure and build.\n"
exit 1
fi
# Simple check to verify this script is running in the root of the source tree
if ! [ -e Makefile.in ]
then
printf "configure script must be executed in source directory (Makefile.in not found).\n"
exit 1
fi
# Remove existing Makefile so it's not left around if configure fails
rm -f Makefile
if ! mkdir -p build
then
printf "Unable to create build directory.\n"
exit 1
fi
cd build
if ! cmake $CMDLINE ..
then
printf "Unable to prepare build directory.\n"
exit 1
fi
cd ..
if ! cp -f Makefile.in Makefile
then
printf "Unable to prepare Makefile.\n"
exit 1
fi
printf "Configured. Type 'make' to build, 'make install' to install.\n"