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.
214 lines
4.2 KiB
214 lines
4.2 KiB
14 years ago
|
#!/bin/sh
|
||
|
|
||
|
# simple configure script for user-friendliness
|
||
|
|
||
|
# file to put output into for cmake to read in...
|
||
|
OUTFILE=$(dirname $0)/Makefile.cmake.in
|
||
|
CMAKEOUTFILE=$(dirname $0)/CMakeOptions.txt
|
||
|
|
||
|
# --- FUNCTIONS ---
|
||
|
|
||
|
usage()
|
||
|
{
|
||
|
echo "
|
||
|
|
||
|
Hi there. You can use this script to configure parameters used by cmake.
|
||
|
Currently, understood parameters are as follows:
|
||
|
|
||
|
--prefix=PREFIX install architecture-independent files in PREFIX
|
||
|
--enable-debug=ARG enables debug symbols (yes|no) default=no
|
||
|
--enable-tests=ARG enable test suite (yes|no) default=no
|
||
|
--with-pilot-link=PATH set prefix for pilot-link files [default=check]
|
||
|
--with-mal=PATH set path for libmal files [default=check]
|
||
|
|
||
|
--show show existing configuration values
|
||
|
|
||
|
More obscure options:
|
||
|
|
||
|
--with-simple-builddir=ARG use 'build' instead of longer name (yes|no) default=no
|
||
|
--with-pilot-link-includes=PATH set include directory for pilot-link
|
||
|
--with-pilot-link-lib=PATH set full path to libpisock.so
|
||
|
|
||
|
"
|
||
|
}
|
||
|
|
||
|
getvalue()
|
||
|
{
|
||
|
KEY="$1"
|
||
|
# use dynamic variable...
|
||
|
eval VAL='$'$KEY
|
||
|
|
||
|
ECHO="$2"
|
||
|
|
||
|
if test -n "$VAL"
|
||
|
then
|
||
|
CMAKE_FLAGS="${CMAKE_FLAGS}set(${KEY} \"${VAL}\")
|
||
|
"
|
||
|
if [ "$ECHO" = "y" ]
|
||
|
then
|
||
|
echo "$KEY=\"$VAL\""
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
}
|
||
|
|
||
|
outputCmakeValues()
|
||
|
{
|
||
|
|
||
|
# only include what we're passed
|
||
|
CMAKE_FLAGS=""
|
||
|
|
||
|
getvalue CMAKE_INSTALL_PREFIX n
|
||
|
getvalue CMAKE_BUILD_TYPE n
|
||
|
getvalue ENABLE_TESTS n
|
||
|
#getvalue BUILD_DIR y
|
||
|
getvalue PILOTLINK_BASE n
|
||
|
getvalue MAL_BASE n
|
||
|
getvalue PILOTLINK_INCLUDE_DIR n
|
||
|
getvalue PILOTLINK_LIBRARY n
|
||
|
|
||
|
echo "$CMAKE_FLAGS"
|
||
|
}
|
||
|
|
||
|
outputMakeValues()
|
||
|
{
|
||
|
getvalue BUILD_DIR y
|
||
|
}
|
||
|
|
||
|
# --- MAIN ---
|
||
|
|
||
|
# first, if there's no args, don't lose what we had stored (badness).
|
||
|
# simply show what available arguments are and exit...
|
||
|
if test -z "$1"; then
|
||
|
usage
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
CMAKE_BUILD_TYPE="normal"
|
||
|
ENABLE_TESTS="NO"
|
||
|
BUILD_DIR=build-`uname -sr | tr -d [:space:] | tr -Cs a-zA-Z0-9 _`
|
||
|
|
||
|
while test -n "$1"
|
||
|
do
|
||
|
case "$1" in
|
||
|
--prefix=*)
|
||
|
CMAKE_INSTALL_PREFIX=$(echo $1 | cut -d "=" -f2)
|
||
|
;;
|
||
|
--enable-debug*)
|
||
|
T=$(echo $1 | cut -d "=" -f2 | tr '[A-Z]' '[a-z]')
|
||
|
if test "$T" = "$1" || test "yes" = "$T" || test "full" = "$T" ; then
|
||
|
CMAKE_BUILD_TYPE=debug
|
||
|
else
|
||
|
CMAKE_BUILD_TYPE=normal
|
||
|
fi
|
||
|
;;
|
||
|
--enable-test*)
|
||
|
T=$(echo "$1" | cut -d = -f2 | tr '[A-Z]' '[a-z]')
|
||
|
if test "$T" = "$1" || test "yes" = "$T" ; then
|
||
|
ENABLE_TESTS=YES
|
||
|
else
|
||
|
ENABLE_TESTS=NO
|
||
|
fi
|
||
|
;;
|
||
|
--with-simple-builddir*)
|
||
|
T=$(echo "$1" | cut -d = -f2 | tr '[A-Z]' '[a-z]')
|
||
|
if test "$T" = "$1" || test "yes" = "$T" ; then
|
||
|
BUILD_DIR=build
|
||
|
fi
|
||
|
;;
|
||
|
--with-pilot-link-includes=*)
|
||
|
PILOTLINK_INCLUDE_DIR=$(echo $1 | cut -d = -f2)
|
||
|
;;
|
||
|
--with-pilot-link-lib=*)
|
||
|
PILOTLINK_LIBRARY=$(echo $1 | cut -d = -f2)
|
||
|
;;
|
||
|
--with-pilot-link=*)
|
||
|
PILOTLINK_BASE=$(echo $1 | cut -d "=" -f2)
|
||
|
;;
|
||
|
--with-mal=*)
|
||
|
MAL_BASE=$(echo $1 | cut -d "=" -f2)
|
||
|
;;
|
||
|
--show)
|
||
|
echo "Existing configuration values:"
|
||
|
echo "-----------"
|
||
|
cat "$OUTFILE" 2>/dev/null
|
||
|
sed 's/^set(\([A-Z_]*\) "\(.*\)")/\1="\2"/' "$CMAKEOUTFILE" 2>/dev/null
|
||
|
echo "-----------"
|
||
|
exit
|
||
|
;;
|
||
|
*)
|
||
|
usage
|
||
|
exit
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
shift
|
||
|
|
||
|
done
|
||
|
|
||
|
###
|
||
|
#
|
||
|
# BSD uses gmake for the GNU make which we need ...
|
||
|
#
|
||
|
if uname -s | grep BSD > /dev/null 2>&1 ; then
|
||
|
MAKE=gmake
|
||
|
else
|
||
|
MAKE=make
|
||
|
fi
|
||
|
|
||
|
outputCmakeValues > "$CMAKEOUTFILE.new"
|
||
|
outputMakeValues > "$OUTFILE.new"
|
||
|
|
||
|
|
||
|
###
|
||
|
#
|
||
|
# If the configure values have changed, then we should update the
|
||
|
# CMakeLists.txt in order to prompt a re-run of cmake.
|
||
|
#
|
||
|
update=no
|
||
|
failed=no
|
||
|
if test -f "$CMAKEOUTFILE" ; then
|
||
|
diff -q "$CMAKEOUTFILE" "$CMAKEOUTFILE.new" > /dev/null 2>&1 || update=yes
|
||
|
else
|
||
|
update=yes
|
||
|
fi
|
||
|
|
||
|
if test -f "$OUTFILE" ; then
|
||
|
diff -q "$OUTFILE" "$OUTFILE.new" > /dev/null 2>&1 || update=yes
|
||
|
else
|
||
|
update=yes
|
||
|
fi
|
||
|
|
||
|
if test yes = "$update" ; then
|
||
|
cp "$CMAKEOUTFILE.new" "$CMAKEOUTFILE"
|
||
|
cp "$OUTFILE.new" "$OUTFILE"
|
||
|
touch CMakeLists.txt
|
||
|
$MAKE -f Makefile.cmake build-check || failed=yes
|
||
|
fi
|
||
|
|
||
|
rm -f "$CMAKEOUTFILE.new"
|
||
|
rm -f "$OUTFILE.new"
|
||
|
rm -f build*/CMakeCache.txt
|
||
|
|
||
|
###
|
||
|
#
|
||
|
# Inform user and create settings file.
|
||
|
#
|
||
|
echo "
|
||
|
Thanks. Here are the values I will be using...
|
||
|
|
||
|
$(outputCmakeValues)
|
||
|
|
||
|
$(outputMakeValues)
|
||
|
|
||
|
To compile KPilot, now run GNU make, like so:
|
||
|
|
||
|
$MAKE -f Makefile.cmake
|
||
|
|
||
|
"
|
||
|
|
||
|
if test "yes" = "$failed" ; then
|
||
|
echo "Configuration failed, so take a good look at the build output."
|
||
|
fi
|
||
|
|