191 lines
4.8 KiB
Bash
Executable File
191 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script to configure apostol web service.
|
|
#
|
|
# Script options:
|
|
# --help Display usage, overriding script execution.
|
|
#
|
|
|
|
# Initialize the build environment.
|
|
#==============================================================================
|
|
# Exit this script on the first build error.
|
|
#------------------------------------------------------------------------------
|
|
set -e
|
|
|
|
PROJECT_NAME=apostol-dm
|
|
BUILD_TYPE=Release
|
|
PULL_SELF=yes
|
|
PULL_GITHUB=yes
|
|
|
|
pop_directory()
|
|
{
|
|
popd >/dev/null
|
|
}
|
|
|
|
push_directory()
|
|
{
|
|
local DIRECTORY="$1"
|
|
|
|
pushd "$DIRECTORY" >/dev/null
|
|
}
|
|
|
|
create_directory()
|
|
{
|
|
local DIRECTORY="$1"
|
|
|
|
rm -rf "$DIRECTORY"
|
|
mkdir "$DIRECTORY"
|
|
}
|
|
|
|
display_heading_message()
|
|
{
|
|
echo
|
|
echo "********************** $@ **********************"
|
|
echo
|
|
}
|
|
|
|
display_message()
|
|
{
|
|
echo "$@"
|
|
}
|
|
|
|
display_error()
|
|
{
|
|
>&2 echo "$@"
|
|
}
|
|
|
|
display_help()
|
|
{
|
|
display_message "Usage: ./configure [OPTION]..."
|
|
display_message "Manage the configure."
|
|
display_message "Script options:"
|
|
display_message " --build-dir=<path> Location of build files (default: $BUILD_DIR)."
|
|
display_message " --release Release build (default)."
|
|
display_message " --debug Debug build."
|
|
display_message " --update Update build."
|
|
display_message " --not-pull-self Not pull self."
|
|
display_message " --not-pull-github Not pull from GitHub."
|
|
display_message " --help Display usage, overriding script execution."
|
|
display_message ""
|
|
}
|
|
|
|
display_configuration()
|
|
{
|
|
display_message "Configuration."
|
|
display_message "--------------------------------------------------------------------"
|
|
display_message "PROJECT_NAME : $PROJECT_NAME"
|
|
display_message "BUILD_TYPE : $BUILD_TYPE"
|
|
display_message "BUILD_DIR : $BUILD_DIR"
|
|
display_message "--------------------------------------------------------------------"
|
|
}
|
|
|
|
# Download from github.
|
|
download_from_github()
|
|
{
|
|
local DIRECTORY=$1
|
|
local ACCOUNT=$2
|
|
local REPO=$3
|
|
local BRANCH=$4
|
|
local DIR=$5
|
|
shift 5
|
|
|
|
push_directory "$DIRECTORY"
|
|
|
|
FORK="$ACCOUNT/$REPO"
|
|
|
|
if ! [ -d $DIR ]; then
|
|
# Clone the repository locally.
|
|
display_heading_message "Download: $FORK/$BRANCH"
|
|
git clone --depth 1 --branch $BRANCH --single-branch "https://github.com/$FORK" $DIR
|
|
else
|
|
push_directory "$DIR"
|
|
display_heading_message "Updating: $FORK/$BRANCH"
|
|
git pull
|
|
pop_directory
|
|
fi
|
|
|
|
pop_directory
|
|
}
|
|
|
|
github()
|
|
{
|
|
display_heading_message "Updating the current project"
|
|
|
|
if [[ $PULL_SELF == yes ]]; then
|
|
git pull
|
|
fi
|
|
|
|
download_from_github src/lib ufocomp libdelphi master delphi
|
|
download_from_github src apostoldevel apostol-core master core
|
|
}
|
|
|
|
Success()
|
|
{
|
|
display_message ""
|
|
echo -e "********************** \e[32;1mSUCCESS\e[0m **********************"
|
|
echo -e "\e[32m-- To build the $PROJECT_NAME run:\e[0m"
|
|
display_message "--------------------------------------------------------------------"
|
|
echo -e "\e[1m$ cd $BUILD_DIR \e[0m"
|
|
echo -e "\e[1m$ make \e[0m"
|
|
display_message "--------------------------------------------------------------------"
|
|
echo -e "\e[32m-- To install the $PROJECT_NAME run:\e[0m"
|
|
display_message "--------------------------------------------------------------------"
|
|
echo -e "\e[1m$ sudo make install\e[0m"
|
|
display_message "--------------------------------------------------------------------"
|
|
}
|
|
|
|
make_configuration()
|
|
{
|
|
if ! [[ $BUILD_UPDATE ]]; then
|
|
create_directory $BUILD_DIR
|
|
fi
|
|
|
|
echo '#define AUTO_VERSION _T("1.0.e00000-b0")' > version.h
|
|
|
|
if [[ $PULL_GITHUB == yes ]]; then
|
|
github
|
|
fi
|
|
|
|
display_heading_message "Make: $PROJECT_NAME"
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE . -B $BUILD_DIR
|
|
|
|
Success
|
|
}
|
|
|
|
# Parse command line options that are handled by this script.
|
|
#------------------------------------------------------------------------------
|
|
for OPTION in "$@"; do
|
|
case $OPTION in
|
|
# Standard script options.
|
|
(--help) DISPLAY_HELP="yes";;
|
|
|
|
(--release) BUILD_TYPE="Release";;
|
|
(--debug) BUILD_TYPE="Debug";;
|
|
|
|
(--update) BUILD_UPDATE="yes";;
|
|
(--not-pull-self) PULL_SELF="no";;
|
|
(--not-pull-github) PULL_GITHUB="no";;
|
|
|
|
# Unique script options.
|
|
(--build-dir=*) BUILD_DIR="${OPTION#*=}";;
|
|
esac
|
|
done
|
|
|
|
if ! [[ $BUILD_DIR ]]; then
|
|
if [[ $BUILD_TYPE == Debug ]]; then
|
|
BUILD_DIR=cmake-build-debug
|
|
else
|
|
BUILD_DIR=cmake-build-release
|
|
fi
|
|
fi
|
|
|
|
# Configure.
|
|
#==============================================================================
|
|
if [[ $DISPLAY_HELP ]]; then
|
|
display_help
|
|
else
|
|
display_configuration
|
|
make_configuration
|
|
fi
|