Add local HLS dev setup: clangd, pragma highlighting + linting, local C-sim
This commit is contained in:
39
Practicals/hlsdev/lint.sh
Executable file
39
Practicals/hlsdev/lint.sh
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Run the HLS pragma linter over the practicals.
|
||||
#
|
||||
# Usage:
|
||||
# ./lint.sh # every source under Practicals/
|
||||
# ./lint.sh path/to/file.cpp [more.cpp ...] # just these
|
||||
#
|
||||
# Exits non-zero if anything is wrong, so it also works as a pre-commit or CI
|
||||
# check. For inline diagnostics inside nvim, see nvim/plugin/hls_pragma_lint.lua
|
||||
#
|
||||
set -euo pipefail
|
||||
|
||||
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
if [ "$#" -gt 0 ]; then
|
||||
exec python3 "$here/hls_pragma_lint.py" "$@"
|
||||
fi
|
||||
|
||||
# Resolve the parent properly: find returns the path as given, and
|
||||
# ".../hlsdev/.." would contain "/hlsdev/" and defeat the exclusions below.
|
||||
root="$(cd "$here/.." && pwd)"
|
||||
|
||||
# Every hand-written source, skipping generated HLS build output and our own
|
||||
# tooling. Paths in the practicals never contain spaces (Vitis requires it).
|
||||
files="$(find "$root" -type f \( \
|
||||
-name '*.cpp' -o -name '*.cc' -o -name '*.cxx' -o -name '*.c' \
|
||||
-o -name '*.h' -o -name '*.hpp' \) \
|
||||
-not -path '*/hls/*' -not -path '*/hlsdev/*' | sort)"
|
||||
|
||||
if [ -z "$files" ]; then
|
||||
echo "no source files found" >&2
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "$files" | sed "s|^$root/| |"
|
||||
echo
|
||||
# shellcheck disable=SC2086
|
||||
exec python3 "$here/hls_pragma_lint.py" $files
|
||||
Reference in New Issue
Block a user