mirror of
https://github.com/neovim/neovim.git
synced 2025-09-08 20:38:18 +00:00

This achieves several goals: * Less reliance on scripts so we have better portability to Windows (though we still have a ways to go for proper Windows support). Luajit, luarocks, moonscript, and busted are all installed via CMake now. * Trying to make use of pkg-config to get the correct libraries. The latest libuv is still broken in this regard, but we'll at least be in a position to use it. * Allow the use of Ninja or make. The former runs faster in many environments, and automatically makes use of parallel builds. This also allows for system installed dependencies--though not through the Makefile just yet--and adds support for FreeBSD. This also make us build libuv and luajit as static libraries only, since we're only concerned about having static libraries for our bundled dependencies.
62 lines
1.4 KiB
Bash
Executable File
62 lines
1.4 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
check_and_report() {
|
|
(
|
|
cd $tmpdir
|
|
set -- [*]san.[*] *san.*
|
|
case $1$2 in
|
|
'[*]san.[*]*san.*')
|
|
;;
|
|
*)
|
|
shift
|
|
cat "$@"
|
|
echo "Runtime errors detected"
|
|
exit 1
|
|
;;
|
|
esac
|
|
)
|
|
}
|
|
|
|
# Travis reports back that it has 32-cores via /proc/cpuinfo, but it's not
|
|
# what we really have available. According to their documentation, it only has
|
|
# 1.5 virtual cores.
|
|
# See:
|
|
# http://docs.travis-ci.com/user/speeding-up-the-build/#Paralellizing-your-build-on-one-VM
|
|
# for more information.
|
|
alias make="make -j2"
|
|
|
|
if [ "$CC" = "clang" ]; then
|
|
# force using the version installed by 'travis-setup.sh'
|
|
export CC=/usr/bin/clang
|
|
|
|
install_dir="$(pwd)/dist"
|
|
# temporary directory for writing sanitizer logs
|
|
tmpdir="$(pwd)/tmp"
|
|
rm -rf "$tmpdir"
|
|
mkdir -p "$tmpdir"
|
|
|
|
# need the symbolizer path for stack traces with source information
|
|
symbolizer=/usr/bin/llvm-symbolizer-3.4
|
|
|
|
export SKIP_UNITTEST=1
|
|
export SANITIZE=1
|
|
export ASAN_SYMBOLIZER_PATH=$symbolizer
|
|
export ASAN_OPTIONS="detect_leaks=1:log_path=$tmpdir/asan"
|
|
export TSAN_OPTIONS="external_symbolizer_path=$symbolizer:log_path=$tmpdir/tsan"
|
|
export UBSAN_OPTIONS="log_path=$tmpdir/ubsan" # not sure if this works
|
|
|
|
make cmake CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX=$install_dir"
|
|
make
|
|
if ! make test; then
|
|
reset
|
|
check_and_report
|
|
fi
|
|
check_and_report
|
|
make install
|
|
else
|
|
export SKIP_EXEC=1
|
|
make CMAKE_EXTRA_FLAGS="-DBUSTED_OUTPUT_TYPE=TAP"
|
|
make cmake
|
|
make unittest
|
|
fi
|