people who don't like cmake
This commit is contained in:
parent
b705c07ac8
commit
fd23360c63
2
.configure-custom.sh
Normal file
2
.configure-custom.sh
Normal file
@ -0,0 +1,2 @@
|
||||
ENABLE_VARS="jit|no|WITH_JIT clpbn|yes|WITH_CLPBN cplint|yes|WITH_CPLINT horus|yes|WITH_HORUS docs|no|WITH_DOCS problog|yes|WITH_PROBLOG"
|
||||
WITH_VARS="swig|yes|WITH_SWIG gecode|yes|WITH_GECODE R|yes|WITH_REAL cudd|yes|WITH_BDD python|yes|WITH_PYTHON "
|
315
configure
vendored
Executable file
315
configure
vendored
Executable file
@ -0,0 +1,315 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Autotools-style (./configure) wrapper for CMake
|
||||
# <https://github.com/nemequ/configure-cmake>
|
||||
#
|
||||
# *** IMPORTANT ***
|
||||
#
|
||||
# You must include the GNUInstallDirs module (which comes with
|
||||
# CMake) in your project. Just put "include (GNUInstallDirs)" in
|
||||
# you CMakeLists.txt and you should be good.
|
||||
#
|
||||
# This script was originally written for Squash
|
||||
# <https://quixdb.github.io/squash/> by Evan Nemerson
|
||||
# <evan@nemerson.com>, but has been spun off into a separate
|
||||
# repository. Please feel free to copy it into your own repository,
|
||||
# though I would appreciate it if you would post improvements, bugs,
|
||||
# feature requests, etc. to the issue tracker at
|
||||
# <https://github.com/nemequ/configure-cmake/issues>.
|
||||
#
|
||||
# To the extent possible under law, the author(s) hereby waive all
|
||||
# copyright and related or neighboring rights to this work. For
|
||||
# details, see <https://creativecommons.org/publicdomain/zero/1.0/>
|
||||
|
||||
TOP_SRCDIR="$(dirname $0)"
|
||||
CMAKE_CMD="cmake ${TOP_SRCDIR}"
|
||||
|
||||
BUILD_TYPE="Debug"
|
||||
PREFIX=/usr/local
|
||||
LIBDIR=
|
||||
CMAKE_ARGS=
|
||||
|
||||
if [ -e "${TOP_SRCDIR}/.configure-custom.sh" ]; then
|
||||
. "${TOP_SRCDIR}/.configure-custom.sh"
|
||||
fi
|
||||
|
||||
quote() {
|
||||
echo "$1" | sed -e "s|'|'\\\\''|g; 1s/^/'/; \$s/\$/'/"
|
||||
}
|
||||
|
||||
extract_var_string() {
|
||||
VAR_NAME=$1
|
||||
VAR_NAME=$(echo $1 | sed -e 's/[ \t]*$//')
|
||||
if [ "x$2" != "x" ]; then
|
||||
VAR_VALUE=$2
|
||||
else
|
||||
VAR_VALUE=yes
|
||||
fi
|
||||
|
||||
if [ "x$3" != "x" ]; then
|
||||
VAR_UC_NAME=$3
|
||||
else
|
||||
VAR_UC_NAME=$(echo "$1" | tr '[:lower:]' '[:upper:]' | tr -c '[:alnum:]' '_' | sed 's/_$//g')
|
||||
fi
|
||||
}
|
||||
|
||||
set_config_var() {
|
||||
is_with=n
|
||||
case "$1" in
|
||||
"--enable-"*)
|
||||
name="${1#--enable-}"
|
||||
cfg="${ENABLE_VARS}"
|
||||
;;
|
||||
"--disable-"*)
|
||||
name="${1#--disable-}";
|
||||
cfg="${DISABLE_VARS}";
|
||||
;;
|
||||
"--with-"*)
|
||||
# IFS="=" read -ra WITHARGS <<< "${1}"
|
||||
name="${1#--with-}"
|
||||
cfg="${WITH_VARS}"
|
||||
is_with=y
|
||||
;;
|
||||
esac
|
||||
|
||||
found=n
|
||||
for varstring in $cfg; do
|
||||
extract_var_string $(echo "${varstring}" | tr '|' ' ')
|
||||
if [ "x$VAR_NAME" = "x$name" ]; then
|
||||
found=y
|
||||
break;
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$found" = "y" ]; then
|
||||
if [ "x$is_with" = "xy" ]; then
|
||||
CMAKE_ARGS="$CMAKE_ARGS -D${VAR_UC_NAME}=$(quote "$2")"
|
||||
else
|
||||
CMAKE_ARGS="$CMAKE_ARGS -D${VAR_UC_NAME}=$(quote "${VAR_VALUE}")"
|
||||
fi
|
||||
else
|
||||
echo "Unknown parameter: ${1}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
prefix_to_offset() {
|
||||
expr $(echo "${1}" | awk '{ print length }') + 1
|
||||
}
|
||||
|
||||
print_help() {
|
||||
cat <<EOF >&2
|
||||
-h, --help display this help and exit
|
||||
--disable-debug disable debugging mode
|
||||
--pass-thru pass remaining arguments through to CMake
|
||||
|
||||
--prefix=PREFIX install architecture-independent files in PREFIX
|
||||
[$PREFIX]
|
||||
--bindir=DIR user executables [PREFIX/bin]
|
||||
--sbindir=DIR system admin executables [PREFIX/sbin]
|
||||
--libexecdir=DIR program executables [PREFIX/libexec]
|
||||
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
||||
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
||||
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
||||
--libdir=DIR object code libraries [PREFIX/lib]
|
||||
--includedir=DIR C header files [PREFIX/include]
|
||||
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
||||
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
|
||||
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
|
||||
--infodir=DIR info documentation [DATAROOTDIR/info]
|
||||
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
||||
--mandir=DIR man documentation [DATAROOTDIR/man]
|
||||
--docdir=DIR documentation root [DATAROOTDIR/doc/PROJECT_NAME]
|
||||
EOF
|
||||
|
||||
first=y
|
||||
for varstring in ${ENABLE_VARS}; do
|
||||
if [ $first = 'y' ]; then
|
||||
echo ""
|
||||
first=n
|
||||
fi
|
||||
extract_var_string $(echo "${varstring}" | tr '|' ' ')
|
||||
var_doc_name="ENABLE_${VAR_UC_NAME}_DOC"
|
||||
eval "docstring=\$$var_doc_name"
|
||||
if [ "x${docstring}" = "x" ]; then
|
||||
printf " --enable-%-14s enable %s support\n" "${VAR_NAME}" "$(echo -n "${VAR_NAME}" | tr '-' ' ')"
|
||||
else
|
||||
printf " --enable-%-14s %s\n" "${VAR_NAME}" "$docstring"
|
||||
fi
|
||||
done
|
||||
|
||||
first=y
|
||||
for varstring in ${DISABLE_VARS}; do
|
||||
if [ $first = 'y' ]; then
|
||||
echo ""
|
||||
first=n
|
||||
fi
|
||||
extract_var_string $(echo "${varstring}" | tr '|' ' ')
|
||||
var_doc_name="DISABLE_${VAR_UC_NAME}_DOC"
|
||||
eval "docstring=\$$var_doc_name"
|
||||
if [ "x${docstring}" = "x" ]; then
|
||||
printf " --disable-%-13s disable %s support\n" "${VAR_NAME}" "$(echo -n "${VAR_NAME}" | tr '-' ' ')"
|
||||
else
|
||||
printf " --disable-%-13s %s\n" "${VAR_NAME}" "$docstring"
|
||||
fi
|
||||
done
|
||||
|
||||
first=y
|
||||
for varstring in ${WITH_VARS}; do
|
||||
if [ $first = 'y' ]; then
|
||||
echo ""
|
||||
first=n
|
||||
fi
|
||||
extract_var_string $(echo "${varstring}" | tr '|' ' ')
|
||||
var_doc_name="WITH_${VAR_UC_NAME}_DOC"
|
||||
eval "docstring=\$$var_doc_name"
|
||||
paraminfo="${VAR_NAME}=${VAR_VALUE}"
|
||||
if [ "x${docstring}" = "x" ]; then
|
||||
printf " --with-%-16s enable %s support\n" "$paraminfo" "$(echo -n "${VAR_NAME}" | tr '-' ' ')"
|
||||
else
|
||||
printf " --with-%-16s %s\n" "$paraminfo" "$docstring"
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
while [ $# != 0 ]; do
|
||||
case "$1" in
|
||||
"--prefix="*)
|
||||
PREFIX="${1#*=}";;
|
||||
"--prefix")
|
||||
PREFIX="${2}"; shift;;
|
||||
"--bindir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_BINDIR=$(quote "${1#*=}")";;
|
||||
"--bindir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_BINDIR=$(quote "$2")"; shift;;
|
||||
"--sbindir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SBINDIR=$(quote "${1#*=}")";;
|
||||
"--sbindir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SBINDIR=$(quote "$2")"; shift;;
|
||||
"--libexecdir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LIBEXECDIR=$(quote "${1#*=}")";;
|
||||
"--libexecdir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LIBEXECDIR=$(quote "$2")"; shift;;
|
||||
"--sysconfdir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SYSCONFDIR=$(quote "${1#*=}")";;
|
||||
"--sysconfdir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SYSCONFDIR=$(quote "$2")"; shift;;
|
||||
"--sharedstatedir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SHAREDSTATEDIR=$(quote "${1#*=}")";;
|
||||
"--sharedstatedir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SHAREDSTATEDIR=$(quote "$2")"; shift;;
|
||||
"--localstatedir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALSTATEDIR=$(quote "${1#*=}")";;
|
||||
"--localstatedir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALSTATEDIR=$(quote "$2")"; shift;;
|
||||
"--libdir="*)
|
||||
LIBDIR="${1#*=}";;
|
||||
"--libdir")
|
||||
LIBDIR="${2}"; shift;;
|
||||
"--includedir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INCLUDEDIR=$(quote "${1#*=}")";;
|
||||
"--includedir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INCLUDEDIR=$(quote "$2")"; shift;;
|
||||
"--oldincludedir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_OLDINCLUDEDIR=$(quote "${1#*=}")";;
|
||||
"--oldincludedir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_OLDINCLUDEDIR=$(quote "$2")"; shift;;
|
||||
"--datarootdir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATAROOTDIR=$(quote "${1#*=}")";;
|
||||
"--datarootdir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATAROOTDIR=$(quote "$2")"; shift;;
|
||||
"--datadir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATADIR=$(quote "${1#*=}")";;
|
||||
"--datadir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATADIR=$(quote "$2")"; shift;;
|
||||
"--infodir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INFODIR=$(quote "${1#*=}")";;
|
||||
"--infodir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INFODIR=$(quote "$2")"; shift;;
|
||||
"--localedir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALEDIR=$(quote "${1#*=}")";;
|
||||
"--localedir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALEDIR=$(quote "$2")"; shift;;
|
||||
"--mandir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_MANDIR=$(quote "${1#*=}")";;
|
||||
"--mandir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_MANDIR=$(quote "$2")"; shift;;
|
||||
"--docdir="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DOCDIR=$(quote "${1#*=}")";;
|
||||
"--docdir")
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DOCDIR=$(quote "$2")"; shift;;
|
||||
|
||||
"CC="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_COMPILER=$(quote "${1#*=}")";;
|
||||
"CXX="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_COMPILER=$(quote "${1#*=}")";;
|
||||
"CFLAGS="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_FLAGS=$(quote "${1#*=}")";;
|
||||
"CXXFLAGS="*)
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_FLAGS=$(quote "${1#*=}")";;
|
||||
"LDFLAGS="*)
|
||||
LDFLAGS="$LDFLAGS ${1#*=}";;
|
||||
|
||||
"--help")
|
||||
print_help;;
|
||||
"-h")
|
||||
print_help;;
|
||||
|
||||
# This flag is the only one which may be a bit surprising to
|
||||
# people. Autotools always builds with debugging symbols enabled
|
||||
# (AFAIK), but for cmake you have to do -DCMAKE_BUILD_TYPE=Debug.
|
||||
# Unfortunately this can change other things as well, so although
|
||||
# I realize there is no --disable-debug flag I thought it would be
|
||||
# prudent to support one here.
|
||||
"--disable-debug")
|
||||
BUILD_TYPE="Release";;
|
||||
|
||||
"--pass-thru")
|
||||
shift;
|
||||
while [ $# != 0 ]; do
|
||||
CMAKE_ARGS="$CMAKE_ARGS $(quote "${1}")";
|
||||
shift;
|
||||
done;;
|
||||
|
||||
"--enable-"*)
|
||||
set_config_var "$1"
|
||||
;;
|
||||
|
||||
"--disable-"*)
|
||||
set_config_var "$1"
|
||||
;;
|
||||
|
||||
"--with-"*)
|
||||
name=$(echo "${1#--with-}" | awk '{split($1,v,"="); print v[1]}')
|
||||
case "${1}" in
|
||||
"--with-${name}="*)
|
||||
set_config_var "--with-${name}" "${1#--with-${name}=}";;
|
||||
"--with-${name}")
|
||||
set_config_var "$1" "$2";
|
||||
shift;;
|
||||
esac
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "$0: error: unrecognized option: \`$1'" >&2
|
||||
echo "Try \`$0 --help' for more information" >&2
|
||||
exit -1
|
||||
esac;
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "x${LIBDIR}" = "x" ]; then
|
||||
LIBDIR="${PREFIX}/lib"
|
||||
fi
|
||||
|
||||
# Unlike CFLAGS/CXXFLAGS/CC/CXX, LDFLAGS isn't handled by CMake, so we
|
||||
# need to parse it here.
|
||||
if [ "x${LDFLAGS}" != "x" ]; then
|
||||
for varname in EXE MODULE SHARED STATIC; do
|
||||
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_${varname}_LINKER_FLAGS=$(quote "$LDFLAGS")"
|
||||
done
|
||||
fi
|
||||
|
||||
eval "cmake ${TOP_SRCDIR} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${PREFIX} -DCMAKE_INSTALL_LIBDIR=${LIBDIR} ${CMAKE_ARGS}"
|
Reference in New Issue
Block a user