78 lines
2.1 KiB
Plaintext
78 lines
2.1 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
if [ -z $TERMUX_ORIGINAL_CMAKE ]; then
|
||
|
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||
|
TERMUX_ORIGINAL_CMAKE="$SCRIPTPATH/cmake.orig"
|
||
|
fi
|
||
|
|
||
|
# Need to move --build argument to first due to following error:
|
||
|
# CMake Error: Unknown argument --build
|
||
|
# CMake Error: Run 'cmake --help' for all supported options.
|
||
|
HAS_BUILD=false
|
||
|
for arg in "$@"; do
|
||
|
if [ "$arg" == "--build" ]; then
|
||
|
HAS_BUILD=true
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if ! $HAS_BUILD; then
|
||
|
$TERMUX_ORIGINAL_CMAKE "$@"
|
||
|
exit $?
|
||
|
fi
|
||
|
|
||
|
|
||
|
BUILD_FLAG=false
|
||
|
BUILD_VALUE=
|
||
|
NEW_ARGS=()
|
||
|
UPDATE_CMAKE_CACHE=()
|
||
|
for arg in "$@"
|
||
|
do
|
||
|
if [ "$arg" == "--build" ]; then
|
||
|
BUILD_FLAG=true
|
||
|
else
|
||
|
if $BUILD_FLAG; then
|
||
|
BUILD_VALUE="$arg"
|
||
|
BUILD_FLAG=false
|
||
|
else
|
||
|
case "$arg" in
|
||
|
-D*=*)
|
||
|
UPDATE_CMAKE_CACHE+=("${arg:2}")
|
||
|
;;
|
||
|
*)
|
||
|
NEW_ARGS+=("$arg")
|
||
|
;;
|
||
|
esac
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ ! -z $BUILD_VALUE ]; then
|
||
|
NEW_ARGS=(--build "$BUILD_VALUE" "${NEW_ARGS[@]}")
|
||
|
fi
|
||
|
|
||
|
function update_cmake_cache() {
|
||
|
[ ${#UPDATE_CMAKE_CACHE[@]} -eq 0 ] && return
|
||
|
[ -z $BUILD_VALUE ] && return
|
||
|
if [ -f "$BUILD_VALUE/CMakeCache.txt" ]; then
|
||
|
rm -rf "$BUILD_VALUE/.tmp-orig.CMakeCache.tmp"
|
||
|
cp "$BUILD_VALUE/CMakeCache.txt" "$BUILD_VALUE/.tmp-orig.CMakeCache.tmp"
|
||
|
cat "$BUILD_VALUE/.tmp-orig.CMakeCache.tmp" | sed -E "$(python3 -c 'import os, sys
|
||
|
def z(x): return x.replace("/","\\/")
|
||
|
for a in sys.argv[2:]: print("-e s/^"+z(a.split("=",1)[0])+":(.*)=.*$/"+z(a.split("=",1)[0])+":\\1="+z(a.split("=",1)[1])+"/g", end=" ")
|
||
|
' -- "${UPDATE_CMAKE_CACHE[@]}")" > "$BUILD_VALUE/CMakeCache.txt"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
function undo_update_cmake_cache() {
|
||
|
[ ${#UPDATE_CMAKE_CACHE[@]} -eq 0 ] && return
|
||
|
[ -z $BUILD_VALUE ] && return
|
||
|
[ ! -f "$BUILD_VALUE/.tmp-orig.CMakeCache.tmp" ] && return
|
||
|
mv -f "$BUILD_VALUE/.tmp-orig.CMakeCache.tmp" "$BUILD_VALUE/CMakeCache.txt"
|
||
|
}
|
||
|
|
||
|
update_cmake_cache
|
||
|
trap undo_update_cmake_cache EXIT
|
||
|
|
||
|
|
||
|
$TERMUX_ORIGINAL_CMAKE "${NEW_ARGS[@]}"
|