blob: 34b4f56590c7141d368013b5fa8fa2fbf4385d5f [file] [log] [blame]
Alexey Samsonov79b36282012-08-31 08:36:36 +00001#!/bin/bash
2
Alexey Samsonov79b36282012-08-31 08:36:36 +00003SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
4
5# Guess path to LLVM_CHECKOUT if not provided
6if [ "${LLVM_CHECKOUT}" == "" ]; then
7 LLVM_CHECKOUT="${SCRIPT_DIR}/../../../../../"
8 echo "LLVM Checkout: ${LLVM_CHECKOUT}"
9fi
10
11# Cpplint setup
12cd ${SCRIPT_DIR}
13if [ ! -d cpplint ]; then
Alexey Samsonov49a32c12013-01-30 07:45:58 +000014 svn co http://google-styleguide.googlecode.com/svn/trunk/cpplint cpplint
15else
16 (cd cpplint && svn up)
Alexey Samsonov79b36282012-08-31 08:36:36 +000017fi
18CPPLINT=${SCRIPT_DIR}/cpplint/cpplint.py
19
20# Filters
21# TODO: remove some of these filters
Alexey Samsonov903c3252013-08-23 07:43:56 +000022LLVM_LINT_FILTER=-,+whitespace
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000023COMMON_LINT_FILTER=-build/include,-build/header_guard,-legal/copyright,-whitespace/comments,-readability/casting,\
24-build/namespaces
Kostya Serebryany5b4267f2013-04-05 14:40:25 +000025ASAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000026ASAN_TEST_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/sizeof,-runtime/int,-runtime/printf
Alexey Samsonov506b97d2012-12-13 12:09:47 +000027ASAN_LIT_TEST_LINT_FILTER=${ASAN_TEST_LINT_FILTER},-whitespace/line_length
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000028TSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
Alexey Samsonov79b36282012-08-31 08:36:36 +000029TSAN_TEST_LINT_FILTER=${TSAN_RTL_LINT_FILTER},-runtime/threadsafe_fn,-runtime/int
Alexey Samsonov84748432012-12-28 10:06:26 +000030TSAN_LIT_TEST_LINT_FILTER=${TSAN_TEST_LINT_FILTER},-whitespace/line_length
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000031MSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
Sergey Matveev48c1d1a2013-05-20 11:09:27 +000032LSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
Sergey Matveev39e8a6d2013-05-27 11:41:46 +000033LSAN_LIT_TEST_LINT_FILTER=${LSAN_RTL_LINT_FILTER},-whitespace/line_length
Evgeniy Stepanov5fa8fb72013-02-12 11:34:52 +000034COMMON_RTL_INC_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int,-runtime/sizeof,-runtime/printf
Evgeniy Stepanov1a2262e2013-04-22 13:28:26 +000035SANITIZER_INCLUDES_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int
Alexey Samsonov79b36282012-08-31 08:36:36 +000036
37cd ${LLVM_CHECKOUT}
38
Alexey Samsonov903c3252013-08-23 07:43:56 +000039EXITSTATUS=0
Timur Iskhodzhanovdd052ce2013-08-13 13:44:02 +000040
Alexey Samsonov903c3252013-08-23 07:43:56 +000041run_lint() {
42 FILTER=$1
43 shift
44 ${CPPLINT} --filter=${FILTER} "$@"
45 if [ "$?" != "0" ]; then
46 EXITSTATUS=1
47 fi
48}
49
50run_lint ${LLVM_LINT_FILTER} --filter=${LLVM_LINT_FILTER} \
51 lib/Transforms/Instrumentation/*Sanitizer.cpp \
52 lib/Transforms/Utils/SpecialCaseList.cpp
Alexey Samsonov79b36282012-08-31 08:36:36 +000053
54COMPILER_RT=projects/compiler-rt
Alexey Samsonov79b36282012-08-31 08:36:36 +000055# Headers
56SANITIZER_INCLUDES=${COMPILER_RT}/include/sanitizer
Alexey Samsonov903c3252013-08-23 07:43:56 +000057run_lint ${SANITIZER_INCLUDES_LINT_FILTER} ${SANITIZER_INCLUDES}/*.h
Alexey Samsonov79b36282012-08-31 08:36:36 +000058
59# Sanitizer_common
60COMMON_RTL=${COMPILER_RT}/lib/sanitizer_common
Alexey Samsonov903c3252013-08-23 07:43:56 +000061run_lint ${COMMON_RTL_INC_LINT_FILTER} ${COMMON_RTL}/*.{cc,h} \
62 ${COMMON_RTL}/tests/*.cc
Alexey Samsonov79b36282012-08-31 08:36:36 +000063
Evgeniy Stepanov83f05bf2012-12-11 12:52:38 +000064# Interception
Alexey Samsonov79b36282012-08-31 08:36:36 +000065INTERCEPTION=${COMPILER_RT}/lib/interception
Alexey Samsonov903c3252013-08-23 07:43:56 +000066run_lint ${ASAN_RTL_LINT_FILTER} ${INTERCEPTION}/*.{cc,h}
Alexey Samsonov79b36282012-08-31 08:36:36 +000067
68# ASan
69ASAN_RTL=${COMPILER_RT}/lib/asan
Alexey Samsonov903c3252013-08-23 07:43:56 +000070run_lint ${ASAN_RTL_LINT_FILTER} ${ASAN_RTL}/*.{cc,h}
71run_lint ${ASAN_TEST_LINT_FILTER} ${ASAN_RTL}/tests/*.{cc,h}
72run_lint ${ASAN_LIT_TEST_LINT_FILTER} ${ASAN_RTL}/lit_tests/*/*.cc
Alexey Samsonov79b36282012-08-31 08:36:36 +000073
74# TSan
75TSAN_RTL=${COMPILER_RT}/lib/tsan
Alexey Samsonov903c3252013-08-23 07:43:56 +000076run_lint ${TSAN_RTL_LINT_FILTER} ${TSAN_RTL}/rtl/*.{cc,h}
77run_lint ${TSAN_TEST_LINT_FILTER} ${TSAN_RTL}/tests/rtl/*.{cc,h} \
78 ${TSAN_RTL}/tests/unit/*.cc
79run_lint ${TSAN_LIT_TEST_LINT_FILTER} ${TSAN_RTL}/lit_tests/*.cc
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000080
Evgeniy Stepanov83f05bf2012-12-11 12:52:38 +000081# MSan
82MSAN_RTL=${COMPILER_RT}/lib/msan
Alexey Samsonov903c3252013-08-23 07:43:56 +000083run_lint ${MSAN_RTL_LINT_FILTER} ${MSAN_RTL}/*.{cc,h}
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000084
Sergey Matveev48c1d1a2013-05-20 11:09:27 +000085# LSan
86LSAN_RTL=${COMPILER_RT}/lib/lsan
Alexey Samsonov903c3252013-08-23 07:43:56 +000087run_lint ${LSAN_RTL_LINT_FILTER} ${LSAN_RTL}/*.{cc,h}
88run_lint ${LSAN_RTL_LINT_FILTER} ${LSAN_RTL}/tests/*.{cc,h}
89run_lint ${LSAN_LIT_TEST_LINT_FILTER} ${LSAN_RTL}/lit_tests/*/*.cc
Evgeniy Stepanov8a3666f2013-01-18 16:24:50 +000090
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000091# Misc files
92FILES=${COMMON_RTL}/*.inc
93for FILE in $FILES; do
Evgeniy Stepanov8a3666f2013-01-18 16:24:50 +000094 TMPFILE=$(mktemp -u ${FILE}.XXXXX).cc
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000095 echo "Checking $FILE"
Evgeniy Stepanov8a3666f2013-01-18 16:24:50 +000096 cp -f $FILE $TMPFILE && \
Alexey Samsonov903c3252013-08-23 07:43:56 +000097 run_lint ${COMMON_RTL_INC_LINT_FILTER} $TMPFILE
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000098 rm $TMPFILE
99done
Alexey Samsonov903c3252013-08-23 07:43:56 +0000100
101exit $EXITSTATUS