4f34e43116
This also restricts fast-vapi's to Ninja. fast-vapi's improve build performance when multi-threaded, but are bad when single-threaded. Again emphasize that ninja-build should be used.
100 lines
2.1 KiB
Bash
Executable file
100 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
cont() {
|
|
read c
|
|
if [ "$c" != "yes" ] && [ "$c" != "Yes" ] && [ "$c" != "y" ] && [ "$c" != "Y" ]
|
|
then
|
|
exit 3
|
|
fi
|
|
}
|
|
|
|
if [ ! -x "$(which cmake 2>/dev/null)" ]
|
|
then
|
|
echo "-!- CMake required."
|
|
exit 1
|
|
fi
|
|
|
|
ninja_bin="$(which ninja-build 2>/dev/null)"
|
|
if ! [ -x "$ninja_bin" ]; then
|
|
ninja_bin="$(which ninja 2>/dev/null)"
|
|
fi
|
|
if [ -x "$ninja_bin" ]; then
|
|
ninja_version=$($ninja_bin --version 2>/dev/null)
|
|
if [ $? -eq 0 ]; then
|
|
echo "-- Found Ninja: $ninja_bin (found version \"$ninja_version\")"
|
|
cmake_type="Ninja"
|
|
exec_bin="$ninja_bin"
|
|
exec_command="$exec_bin"
|
|
elif [[ "/usr/sbin/ninja" == "$ninja_bin" ]]; then
|
|
echo "-- Ninja at $ninja_bin is not usable. Did you install 'ninja' instead of 'ninja-build'?"
|
|
fi
|
|
fi
|
|
|
|
if ! [ -x "$exec_bin" ]; then
|
|
make_bin="$(which make 2>/dev/null)"
|
|
if [ -x "$make_bin" ]; then
|
|
echo "-- Found Make: $make_bin"
|
|
cmake_type="Unix Makefiles"
|
|
exec_bin="$make_bin"
|
|
exec_command="$exec_bin"
|
|
fi
|
|
fi
|
|
|
|
if ! [ -x "$exec_bin" ]; then
|
|
echo "-!- No compatible build system (Ninja, Make) found."
|
|
exit 4
|
|
fi
|
|
|
|
git submodule update --init --recursive
|
|
|
|
if [ -f ./build ]
|
|
then
|
|
echo "-!- ./build file exists. ./configure can't continue"
|
|
exit 2
|
|
fi
|
|
|
|
if [ -d build ]
|
|
then
|
|
if [ ! -f "build/.cmake_type" ]
|
|
then
|
|
printf "-!- ./build exists but was not created by ./configure script, continue? [y/N] "
|
|
cont
|
|
fi
|
|
last_type=`cat build/.cmake_type`
|
|
if [ "$cmake_type" != "$last_type" ]
|
|
then
|
|
echo "-- Using different build system, cleaning build system files"
|
|
cd build
|
|
rm -r CMakeCache.txt CMakeFiles
|
|
cd ..
|
|
fi
|
|
fi
|
|
|
|
mkdir -p build
|
|
cd build
|
|
|
|
echo "$cmake_type" > .cmake_type
|
|
cmake -G "$cmake_type" ..
|
|
|
|
if [ "$cmake_type" == "Ninja" ]
|
|
then
|
|
cat << EOF > Makefile
|
|
default:
|
|
@sh -c "$exec_command"
|
|
%:
|
|
@sh -c "$exec_command \"\$@\""
|
|
EOF
|
|
fi
|
|
|
|
cd ..
|
|
|
|
cat << EOF > Makefile
|
|
default:
|
|
@sh -c "cd build; $exec_command"
|
|
%:
|
|
@sh -c "cd build; $exec_command \"\$@\""
|
|
EOF
|
|
|
|
if [[ "$exec_bin" == "$make_bin" ]]; then
|
|
echo "-- Running with make. Using Ninja (ninja-build) might improve build experience."
|
|
fi |