blob: 558bcb1feaf405bc4695501363aed0f30430a231 [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
Alexey Samsonovd875c392013-08-28 11:27:31 +000011CPPLINT=${SCRIPT_DIR}/cpplint.py
Will Dietzf967d1f2013-08-28 15:53:17 +000012if [ "${PYTHON_EXECUTABLE}" != "" ]; then
13 CPPLINT="${PYTHON_EXECUTABLE} ${CPPLINT}"
14fi
Alexey Samsonov79b36282012-08-31 08:36:36 +000015
16# Filters
17# TODO: remove some of these filters
Alexey Samsonov903c3252013-08-23 07:43:56 +000018LLVM_LINT_FILTER=-,+whitespace
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000019COMMON_LINT_FILTER=-build/include,-build/header_guard,-legal/copyright,-whitespace/comments,-readability/casting,\
20-build/namespaces
Kostya Serebryany5b4267f2013-04-05 14:40:25 +000021ASAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000022ASAN_TEST_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/sizeof,-runtime/int,-runtime/printf
Alexey Samsonov506b97d2012-12-13 12:09:47 +000023ASAN_LIT_TEST_LINT_FILTER=${ASAN_TEST_LINT_FILTER},-whitespace/line_length
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000024TSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
Alexey Samsonov79b36282012-08-31 08:36:36 +000025TSAN_TEST_LINT_FILTER=${TSAN_RTL_LINT_FILTER},-runtime/threadsafe_fn,-runtime/int
Alexey Samsonov84748432012-12-28 10:06:26 +000026TSAN_LIT_TEST_LINT_FILTER=${TSAN_TEST_LINT_FILTER},-whitespace/line_length
Evgeniy Stepanov60a8e5b2013-02-08 12:13:43 +000027MSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
Sergey Matveev48c1d1a2013-05-20 11:09:27 +000028LSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
Sergey Matveev39e8a6d2013-05-27 11:41:46 +000029LSAN_LIT_TEST_LINT_FILTER=${LSAN_RTL_LINT_FILTER},-whitespace/line_length
Evgeniy Stepanov5fa8fb72013-02-12 11:34:52 +000030COMMON_RTL_INC_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int,-runtime/sizeof,-runtime/printf
Evgeniy Stepanov1a2262e2013-04-22 13:28:26 +000031SANITIZER_INCLUDES_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int
Alexander Potapenkod1bae722013-09-20 11:29:44 +000032MKTEMP="mktemp -q /tmp/tmp.XXXXXXXXXX"
Alexey Samsonov79b36282012-08-31 08:36:36 +000033cd ${LLVM_CHECKOUT}
34
Alexey Samsonov903c3252013-08-23 07:43:56 +000035EXITSTATUS=0
Alexander Potapenkod1bae722013-09-20 11:29:44 +000036ERROR_LOG=$(${MKTEMP})
Timur Iskhodzhanovdd052ce2013-08-13 13:44:02 +000037
Alexey Samsonov903c3252013-08-23 07:43:56 +000038run_lint() {
39 FILTER=$1
40 shift
Alexander Potapenkod1bae722013-09-20 11:29:44 +000041 TASK_LOG=$(${MKTEMP})
Alexey Samsonov25dc0182013-08-29 11:35:01 +000042 ${CPPLINT} --filter=${FILTER} "$@" 2>$TASK_LOG
Alexey Samsonov903c3252013-08-23 07:43:56 +000043 if [ "$?" != "0" ]; then
Alexey Samsonov25dc0182013-08-29 11:35:01 +000044 cat $TASK_LOG | grep -v "Done processing" | grep -v "Total errors found" \
45 | grep -v "Skipping input" >> $ERROR_LOG
46 fi
47 if [[ "${SILENT}" != "1" ]]; then
48 cat $TASK_LOG
Alexey Samsonov903c3252013-08-23 07:43:56 +000049 fi
50}
51
52run_lint ${LLVM_LINT_FILTER} --filter=${LLVM_LINT_FILTER} \
53 lib/Transforms/Instrumentation/*Sanitizer.cpp \
Alexey Samsonov25dc0182013-08-29 11:35:01 +000054 lib/Transforms/Utils/SpecialCaseList.cpp &
Alexey Samsonov79b36282012-08-31 08:36:36 +000055
56COMPILER_RT=projects/compiler-rt
Alexey Samsonov79b36282012-08-31 08:36:36 +000057# Headers
58SANITIZER_INCLUDES=${COMPILER_RT}/include/sanitizer
Alexey Samsonov25dc0182013-08-29 11:35:01 +000059run_lint ${SANITIZER_INCLUDES_LINT_FILTER} ${SANITIZER_INCLUDES}/*.h &
Alexey Samsonov79b36282012-08-31 08:36:36 +000060
61# Sanitizer_common
62COMMON_RTL=${COMPILER_RT}/lib/sanitizer_common
Alexey Samsonov903c3252013-08-23 07:43:56 +000063run_lint ${COMMON_RTL_INC_LINT_FILTER} ${COMMON_RTL}/*.{cc,h} \
Alexey Samsonov25dc0182013-08-29 11:35:01 +000064 ${COMMON_RTL}/tests/*.cc &
Alexey Samsonov79b36282012-08-31 08:36:36 +000065
Evgeniy Stepanov83f05bf2012-12-11 12:52:38 +000066# Interception
Alexey Samsonov79b36282012-08-31 08:36:36 +000067INTERCEPTION=${COMPILER_RT}/lib/interception
Alexey Samsonov25dc0182013-08-29 11:35:01 +000068run_lint ${ASAN_RTL_LINT_FILTER} ${INTERCEPTION}/*.{cc,h} &
Alexey Samsonov79b36282012-08-31 08:36:36 +000069
70# ASan
71ASAN_RTL=${COMPILER_RT}/lib/asan
Alexey Samsonov25dc0182013-08-29 11:35:01 +000072run_lint ${ASAN_RTL_LINT_FILTER} ${ASAN_RTL}/*.{cc,h} &
73run_lint ${ASAN_TEST_LINT_FILTER} ${ASAN_RTL}/tests/*.{cc,h} &
74run_lint ${ASAN_LIT_TEST_LINT_FILTER} ${ASAN_RTL}/lit_tests/*/*.cc &
Alexey Samsonov79b36282012-08-31 08:36:36 +000075
76# TSan
77TSAN_RTL=${COMPILER_RT}/lib/tsan
Alexey Samsonov25dc0182013-08-29 11:35:01 +000078run_lint ${TSAN_RTL_LINT_FILTER} ${TSAN_RTL}/rtl/*.{cc,h} &
Alexey Samsonov903c3252013-08-23 07:43:56 +000079run_lint ${TSAN_TEST_LINT_FILTER} ${TSAN_RTL}/tests/rtl/*.{cc,h} \
Alexey Samsonov25dc0182013-08-29 11:35:01 +000080 ${TSAN_RTL}/tests/unit/*.cc &
81run_lint ${TSAN_LIT_TEST_LINT_FILTER} ${TSAN_RTL}/lit_tests/*.cc &
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000082
Evgeniy Stepanov83f05bf2012-12-11 12:52:38 +000083# MSan
84MSAN_RTL=${COMPILER_RT}/lib/msan
Alexey Samsonov25dc0182013-08-29 11:35:01 +000085run_lint ${MSAN_RTL_LINT_FILTER} ${MSAN_RTL}/*.{cc,h} &
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000086
Sergey Matveev48c1d1a2013-05-20 11:09:27 +000087# LSan
88LSAN_RTL=${COMPILER_RT}/lib/lsan
Alexey Samsonov25dc0182013-08-29 11:35:01 +000089run_lint ${LSAN_RTL_LINT_FILTER} ${LSAN_RTL}/*.{cc,h} \
90 ${LSAN_RTL}/tests/*.{cc,h} &
91run_lint ${LSAN_LIT_TEST_LINT_FILTER} ${LSAN_RTL}/lit_tests/*/*.cc &
Evgeniy Stepanov8a3666f2013-01-18 16:24:50 +000092
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000093# Misc files
94FILES=${COMMON_RTL}/*.inc
Alexey Samsonov25dc0182013-08-29 11:35:01 +000095TMPFILES=""
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +000096for FILE in $FILES; do
Evgeniy Stepanov8a3666f2013-01-18 16:24:50 +000097 TMPFILE=$(mktemp -u ${FILE}.XXXXX).cc
Alexey Samsonov25dc0182013-08-29 11:35:01 +000098 cp -f $FILE $TMPFILE
99 run_lint ${COMMON_RTL_INC_LINT_FILTER} $TMPFILE &
100 TMPFILES="$TMPFILES $TMPFILE"
Evgeniy Stepanovc8cde8d2013-01-18 15:53:43 +0000101done
Alexey Samsonov903c3252013-08-23 07:43:56 +0000102
Alexey Samsonov25dc0182013-08-29 11:35:01 +0000103wait
104
105for temp in $TMPFILES; do
106 rm -f $temp
107done
108
109if [[ -s $ERROR_LOG ]]; then
110 cat $ERROR_LOG
111 exit 1
Alexey Samsonovd875c392013-08-28 11:27:31 +0000112fi
113
Alexey Samsonov25dc0182013-08-29 11:35:01 +0000114exit 0