1 1.1 joerg # $NetBSD: bsd.clang-analyze.mk,v 1.1 2011/08/27 18:35:20 joerg Exp $ 2 1.1 joerg 3 1.1 joerg .ifndef CLANG_ANALYZE_SRCS 4 1.1 joerg 5 1.1 joerg CLANG_ANALYZE_FLAGS+= -Xclang -analyze \ 6 1.1 joerg -Xclang -analyzer-store=region \ 7 1.1 joerg -Xclang -analyzer-opt-analyze-nested-blocks \ 8 1.1 joerg -Xclang -analyzer-eagerly-assume \ 9 1.1 joerg -Xclang -analyzer-checker=core \ 10 1.1 joerg -Xclang -analyzer-checker=deadcode \ 11 1.1 joerg -Xclang -analyzer-checker=security \ 12 1.1 joerg -Xclang -analyzer-checker=unix \ 13 1.1 joerg -fsyntax-only 14 1.1 joerg 15 1.1 joerg .SUFFIXES: .c .cc .cpp .cxx .C .clang-analyzer 16 1.1 joerg 17 1.1 joerg CLANG_ANALYZE_CFLAGS= ${CFLAGS:N-Wa,--fatal-warnings} 18 1.1 joerg CLANG_ANALYZE_CXXFLAGS= ${CXXFLAGS:N-Wa,--fatal-warnings} 19 1.1 joerg 20 1.1 joerg .c.clang-analyzer: 21 1.1 joerg ${TOOL_CC.clang} ${CLANG_ANALYZE_FLAGS} \ 22 1.1 joerg ${CLANG_ANALYZE_CFLAGS} ${CPPFLAGS} \ 23 1.1 joerg ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} \ 24 1.1 joerg ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} 25 1.1 joerg .cc.clang-analyzer .cpp.clang-analyzer .cxx.clang-analyzer .C.clang-analyzer: 26 1.1 joerg ${TOOL_CXX.clang} ${CLANG_ANALYZE_FLAGS} \ 27 1.1 joerg ${CLANG_ANALYZE_CXXFLAGS} ${CPPFLAGS} \ 28 1.1 joerg ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} \ 29 1.1 joerg ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} 30 1.1 joerg 31 1.1 joerg CLANG_ANALYZE_SRCS= \ 32 1.1 joerg ${SRCS:M*.[cC]} ${SRCS:M*.cc} \ 33 1.1 joerg ${SRCS:M*.cpp} ${SRCS:M*.cxx} \ 34 1.1 joerg ${DPSRCS:M*.[cC]} ${DPSRCS:M*.cc} \ 35 1.1 joerg ${DPSRCS:M*.cpp} ${DPSRCS:M*.cxx} 36 1.1 joerg .if !empty(CLANG_ANALYZE_SRCS) 37 1.1 joerg CLANG_ANALYZE_OUTPUT= ${CLANG_ANALYZE_SRCS:R:S,$,.clang-analyzer,} 38 1.1 joerg .endif 39 1.1 joerg 40 1.1 joerg analyze: ${CLANG_ANALYZE_OUTPUT} 41 1.1 joerg 42 1.1 joerg .endif 43