QortalOS Brooklyn for Raspberry Pi 4
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

240 lines
5.6 KiB

#!/bin/sh
# ==========================(LICENSE BEGIN)============================
#
# Copyright (c) 2007-2010 Projet RNRT SAPHIR
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# ===========================(LICENSE END)=============================
#
# @author Thomas Pornin <[email protected]>
#
#
# This script tries to autodetect the make utility, C compiler and
# library archiver. These parameters can be overridden with command-line
# arguments.
#
#
# For Solaris, we need to switch to a more POSIX-compliant /bin/sh binary.
#
if [ -z "$SPH_SCRIPT_LOOP" ] ; then
SPH_SCRIPT_LOOP=yes
export SPH_SCRIPT_LOOP
if [ -x /usr/xpg6/bin/sh ] ; then
exec /usr/xpg6/bin/sh "$0" "$@"
fi
if [ -x /usr/xpg4/bin/sh ] ; then
exec /usr/xpg4/bin/sh "$0" "$@"
fi
fi
#
# Exit on first error.
#
set -e
#
# Go to the directory hosting the file.
#
cd "$(dirname "$0")"
#
# Print out usage (on stderr) and exit with an error status.
#
usage() {
cat >&2 <<EOHELP
usage: build.sh [ options ]
options:
-h | --help print this help
-q | --quiet do not print out configuration information
-i | --install also install
-c | --clean do not build; instead, clean directory
--disable-tests do not build unit tests
--disable-runtests build but do not run the tests (for cross-compilation)
--prefix=dir use 'dir' as prefix [/usr/local]
--installdir-bin=dir install executable tools in 'dir' [prefix/bin]
--installdir-lib=dir install compiled static library in 'dir' [prefix/lib]
--installdir-inc=dir install library headers in 'dir' [prefix/include]
--with-make=cmd use 'cmd' as 'make' command
--with-cc=cmd use 'cmd' as C compiler
--with-cflags=flags use 'flags' as C compiler flags
--with-ar=cmd use 'cmd' as library archiver
EOHELP
exit 1
}
#
# Print out the argument (on stderr) and exit with an error status.
#
die() {
echo "error: $1" >&2
exit 1
}
#
# Find out an executable by trying the provided possibilities.
#
findexe() {
varname="$1"
shift
while [ "$#" -gt 0 ]; do
exename="${1%% *}"
if type "$exename" > /dev/null 2> /dev/null ; then
eval "$varname='$1'"
return
fi
shift
done
}
#
# Find an executable to fill a variable, unless already specified. Exit
# if no executable is found.
#
checkexe() {
varname="$1"
shift
if [ '!' -z "$(eval echo \$$varname)" ]; then
return
fi
cmddisplay="$1"
shift
findexe "$varname" "$@"
if [ -z "$(eval echo \$$varname)" ]; then
die "no suitable \"$cmddisplay\" command found"
fi
}
verbose=yes
install=no
clean=no
buildtests=yes
runtests=yes
prefix=/usr/local
cflags="SPH_UNSET"
#
# Parse arguments
#
while [ "$#" -gt 0 ]; do
case "$1" in
-h | --help )
usage ;;
-q | --quiet )
verbose=no ;;
-c | --clean )
clean=yes ;;
-i | --install )
install=yes ;;
--disable-tests )
buildtests=no
runtests=no ;;
--disable-runtests )
runtests=no ;;
--prefix=* )
prefix=${1#*=} ;;
--installdir-bin=* )
installdirbin=${1#*=} ;;
--installdir-lib=* )
installdirlib=${1#*=} ;;
--installdir-inc=* )
installdirinc=${1#*=} ;;
--with-make=* )
makecmd=${1#*=} ;;
--with-cc=* )
cccmd=${1#*=} ;;
--with-cflags=* )
cflags=${1#*=} ;;
--with-ar=* )
arcmd=${1#*=} ;;
* )
usage ;;
esac
shift
done
if [ -z "$installdirbin" ]; then
installdirbin="$prefix/bin"
fi
if [ -z "$installdirlib" ]; then
installdirlib="$prefix/lib"
fi
if [ -z "$installdirinc" ]; then
installdirinc="$prefix/include"
fi
checkexe makecmd make gmake make /usr/ccs/bin/make
checkexe cccmd cc gcc c99 cc /usr/ccs/bin/cc
checkexe arcmd ar "ar rcs"
if $cccmd -v 2>&1 | grep "gcc version" > /dev/null ; then
cclass=gcc
fi
#
# If the machine is Ultrasparc, we somewhat assume that
#
case "$(uname -m)" in
sun4u )
esac
case "$cflags" in
SPH_UNSET )
case "$cclass" in
gcc )
cflags="-W -Wall -O1 -fomit-frame-pointer" ;;
* )
cflags="-O" ;;
esac ;;
esac
if [ "$clean" = "yes" ]; then
mtarget="clean"
else
mtarget="compile"
case "$buildtests" in
yes )
mtarget="$mtarget build-tests" ;;
esac
case "$runtests" in
yes )
mtarget="$mtarget run-tests" ;;
esac
fi
if [ "$install" = "yes" ]; then
mtarget="$mtarget install"
fi
case "$verbose" in
yes )
echo "=============================================="
uname -a
echo "make: $makecmd"
echo "cc: $cccmd $cflags"
echo "ar: $arcmd"
echo "targets: $mtarget"
echo "=============================================="
;;
esac
$makecmd CC="$cccmd" CFLAGS="$cflags" AR="$arcmd" INSTALLBIN="$installdirbin" INSTALLLIB="$installdirlib" INSTALLINC="$installdirinc" -f Makefile.unix $mtarget