1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
#!/bin/bash
#----------------------------------------------------------------------------------------------------------------------
# configure is part of Brewtarget, and is copyright the following authors 2009-2024:
# • Matt Young <mfsy@yahoo.com>
# • Philip Greggory Lee <rocketman768@gmail.com>
#
# Brewtarget is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# Brewtarget is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with this program. If not, see
# <http://www.gnu.org/licenses/>.
#----------------------------------------------------------------------------------------------------------------------
#
# This script can be used to help set up the build directory for doing CMake builds.
#
# ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
# NB: Meson and the `bt` build tool Python script are now the primary way of building and packaging the software. You
# can also still CMake to compile the product and install it locally, but we no longer support using CMake to do
# packaging.
# ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
#
# Stop when something failed
set -e
PREFIX=""
CMAKEOPTIONS="-DDO_RELEASE_BUILD=ON"
function printUsageAndExit {
echo -e "Usage\n" \
" Options:\n" \
" -m T Set mac arch (\"i386;ppc\" for universal binary)\n" \
" -p T Set prefix to T.\n" \
" -t Update translation files (*.ts).\n" \
" -v Verbose compilation.\n" \
" -h Print this help message.\n"
exit 0
}
# Ensures cmake exists.
function findCMake {
if [ -z $(which cmake) ]
then
echo "ERROR: cmake not installed"
exit 1
fi
}
findCMake
# Get options.
while getopts "m:p:t:h:v" option
do
case $option in
m) CMAKEOPTIONS="$CMAKEOPTIONS -DCMAKE_OSX_ARCHITECTURES=$OPTARG";;
p) PREFIX="$OPTARG";;
t) CMAKEOPTIONS="$CMAKEOPTIONS -DUPDATE_TRANSLATIONS=ON";;
v) CMAKEOPTIONS="$CMAKEOPTIONS -DCMAKE_VERBOSE_MAKEFILE=TRUE";;
h) printUsageAndExit ;;
esac
done
# Cmake defaults CMAKE_INSTALL_PREFIX=/usr/local.
# This is not good for debian, so try to detect debian/ubuntu.
if [ `uname` == 'Linux' ]
then
if grep -q -s -i -E -e 'ubuntu|debian' /etc/issue
then
PREFIX=/usr
fi
fi
echo "Prefix: $PREFIX"
# If we have a prefix...
if [ -n "$PREFIX" ]
then
#...define the prefix.
CMAKEOPTIONS="$CMAKEOPTIONS -DCMAKE_INSTALL_PREFIX=$PREFIX"
fi
echo "CMAKEOPTIONS: $CMAKEOPTIONS"
# When a git repository is cloned, the submodules don't get cloned until you specifically ask for it
if [ ! -d third-party ]
then
echo "Pulling in submodules"
mkdir -p third-party
git submodule init
git submodule update
fi
# Create dir only if needed
mkdir -p build
# Do all the building in build/
cd build/
cmake $CMAKEOPTIONS ../
# Tell the user what to do (if everything went well...)
echo -e "\n\n\tNow, cd to build/ and run \"make\" (or \"cmake --build .\" on Windows)\n"
|