blob: 7269425d08831e98d8c8b6e088c2109d366e01ce [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}/../../../../../"
Alexey Samsonov79b36282012-08-31 08:36:36 +00008fi
9
10# Cpplint setup
11cd ${SCRIPT_DIR}
Alexey Samsonovd875c392013-08-28 11:27:31 +000012CPPLINT=${SCRIPT_DIR}/cpplint.py
Alexey Samsonov79b36282012-08-31 08:36:36 +000013
14# Filters
15# TODO: remove some of these filters
Alexey Samsonov903c3252013-08-23 07:43:56 +000016LLVM_LINT_FILTER=-,+whitespace
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000017COMMON_LINT_FILTER=-build/include,-build/header_guard,-legal/copyright,-whitespace/comments,-readability/casting,\
18-build/namespaces
Kostya Serebryany5b4267f2013-04-05 14:40:25 +000019ASAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000020ASAN_TEST_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/sizeof,-runtime/int,-runtime/printf
Alexey Samsonov506b97d2012-12-13 12:09:47 +000021ASAN_LIT_TEST_LINT_FILTER=${ASAN_TEST_LINT_FILTER},-whitespace/line_length
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000022TSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
Alexey Samsonov79b36282012-08-31 08:36:36 +000023TSAN_TEST_LINT_FILTER=${TSAN_RTL_LINT_FILTER},-runtime/threadsafe_fn,-runtime/int
Alexey Samsonov84748432012-12-28 10:06:26 +000024TSAN_LIT_TEST_LINT_FILTER=${TSAN_TEST_LINT_FILTER},-whitespace/line_length
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000025MSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
Sergey Matveev48c1d1a2013-05-20 11:09:27 +000026LSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
Sergey Matveev39e8a6d2013-05-27 11:41:46 +000027LSAN_LIT_TEST_LINT_FILTER=${LSAN_RTL_LINT_FILTER},-whitespace/line_length
Evgeniy Stepanov5fa8fb72013-02-12 11:34:52 +000028COMMON_RTL_INC_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int,-runtime/sizeof,-runtime/printf
Evgeniy Stepanov1a2262e2013-04-22 13:28:26 +000029SANITIZER_INCLUDES_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int
Alexey Samsonov79b36282012-08-31 08:36:36 +000030
31cd ${LLVM_CHECKOUT}
32
Alexey Samsonov903c3252013-08-23 07:43:56 +000033EXITSTATUS=0
Alexey Samsonovd875c392013-08-28 11:27:31 +000034LOG=$(mktemp)
Timur Iskhodzhanovdd052ce2013-08-13 13:44:02 +000035
Alexey Samsonov903c3252013-08-23 07:43:56 +000036run_lint() {
37 FILTER=$1
38 shift
Alexey Samsonovd875c392013-08-28 11:27:31 +000039 if [ "${SILENT}" == "1" ]; then
40 ${CPPLINT} --filter=${FILTER} "$@" 2>>$LOG
41 else
42 ${CPPLINT} --filter=${FILTER} "$@"
43 fi
Alexey Samsonov903c3252013-08-23 07:43:56 +000044 if [ "$?" != "0" ]; then
45 EXITSTATUS=1
46 fi
47}
48
49run_lint ${LLVM_LINT_FILTER} --filter=${LLVM_LINT_FILTER} \
50 lib/Transforms/Instrumentation/*Sanitizer.cpp \
51 lib/Transforms/Utils/SpecialCaseList.cpp
Alexey Samsonov79b36282012-08-31 08:36:36 +000052
53COMPILER_RT=projects/compiler-rt
Alexey Samsonov79b36282012-08-31 08:36:36 +000054# Headers
55SANITIZER_INCLUDES=${COMPILER_RT}/include/sanitizer
Alexey Samsonov903c3252013-08-23 07:43:56 +000056run_lint ${SANITIZER_INCLUDES_LINT_FILTER} ${SANITIZER_INCLUDES}/*.h
Alexey Samsonov79b36282012-08-31 08:36:36 +000057
58# Sanitizer_common
59COMMON_RTL=${COMPILER_RT}/lib/sanitizer_common
Alexey Samsonov903c3252013-08-23 07:43:56 +000060run_lint ${COMMON_RTL_INC_LINT_FILTER} ${COMMON_RTL}/*.{cc,h} \
61 ${COMMON_RTL}/tests/*.cc
Alexey Samsonov79b36282012-08-31 08:36:36 +000062
Evgeniy Stepanov83f05bf2012-12-11 12:52:38 +000063# Interception
Alexey Samsonov79b36282012-08-31 08:36:36 +000064INTERCEPTION=${COMPILER_RT}/lib/interception
Alexey Samsonov903c3252013-08-23 07:43:56 +000065run_lint ${ASAN_RTL_LINT_FILTER} ${INTERCEPTION}/*.{cc,h}
Alexey Samsonov79b36282012-08-31 08:36:36 +000066
67# ASan
68ASAN_RTL=${COMPILER_RT}/lib/asan
Alexey Samsonov903c3252013-08-23 07:43:56 +000069run_lint ${ASAN_RTL_LINT_FILTER} ${ASAN_RTL}/*.{cc,h}
70run_lint ${ASAN_TEST_LINT_FILTER} ${ASAN_RTL}/tests/*.{cc,h}
71run_lint ${ASAN_LIT_TEST_LINT_FILTER} ${ASAN_RTL}/lit_tests/*/*.cc
Alexey Samsonov79b36282012-08-31 08:36:36 +000072
73# TSan
74TSAN_RTL=${COMPILER_RT}/lib/tsan
Alexey Samsonov903c3252013-08-23 07:43:56 +000075run_lint ${TSAN_RTL_LINT_FILTER} ${TSAN_RTL}/rtl/*.{cc,h}
76run_lint ${TSAN_TEST_LINT_FILTER} ${TSAN_RTL}/tests/rtl/*.{cc,h} \
77 ${TSAN_RTL}/tests/unit/*.cc
78run_lint ${TSAN_LIT_TEST_LINT_FILTER} ${TSAN_RTL}/lit_tests/*.cc
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000079
Evgeniy Stepanov83f05bf2012-12-11 12:52:38 +000080# MSan
81MSAN_RTL=${COMPILER_RT}/lib/msan
Alexey Samsonov903c3252013-08-23 07:43:56 +000082run_lint ${MSAN_RTL_LINT_FILTER} ${MSAN_RTL}/*.{cc,h}
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000083
Sergey Matveev48c1d1a2013-05-20 11:09:27 +000084# LSan
85LSAN_RTL=${COMPILER_RT}/lib/lsan
Alexey Samsonov903c3252013-08-23 07:43:56 +000086run_lint ${LSAN_RTL_LINT_FILTER} ${LSAN_RTL}/*.{cc,h}
87run_lint ${LSAN_RTL_LINT_FILTER} ${LSAN_RTL}/tests/*.{cc,h}
88run_lint ${LSAN_LIT_TEST_LINT_FILTER} ${LSAN_RTL}/lit_tests/*/*.cc
Evgeniy Stepanov8a3666f2013-01-18 16:24:50 +000089
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000090# Misc files
91FILES=${COMMON_RTL}/*.inc
92for FILE in $FILES; do
Evgeniy Stepanov8a3666f2013-01-18 16:24:50 +000093 TMPFILE=$(mktemp -u ${FILE}.XXXXX).cc
Evgeniy Stepanov8a3666f2013-01-18 16:24:50 +000094 cp -f $FILE $TMPFILE && \
Alexey Samsonov903c3252013-08-23 07:43:56 +000095 run_lint ${COMMON_RTL_INC_LINT_FILTER} $TMPFILE
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000096 rm $TMPFILE
97done
Alexey Samsonov903c3252013-08-23 07:43:56 +000098
Alexey Samsonovd875c392013-08-28 11:27:31 +000099if [ "$EXITSTATUS" != "0" ]; then
100 cat $LOG | grep -v "Done processing" | grep -v "Total errors found"
101fi
102
Alexey Samsonov903c3252013-08-23 07:43:56 +0000103exit $EXITSTATUS