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:
parent
78ecc0f754
commit
b87fe2967a
4 changed files with 135 additions and 6 deletions
10
.gitignore
vendored
10
.gitignore
vendored
|
|
@ -1,10 +1,10 @@
|
|||
*~
|
||||
.lock-wafbuild
|
||||
.valencia
|
||||
.waf-*
|
||||
/Makefile
|
||||
/.stamp
|
||||
build/
|
||||
/console
|
||||
/geary
|
||||
/norman
|
||||
/theseus
|
||||
/gearyd
|
||||
/geary-mailer
|
||||
/geary-console
|
||||
|
||||
|
|
|
|||
|
|
@ -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
29
Makefile.in
Normal 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
100
configure
vendored
Executable 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"
|
||||
Loading…
Add table
Add a link
Reference in a new issue