Home | History | Annotate | Line # | Download | only in mk
      1  1.3  joerg # $NetBSD: bsd.clang-analyze.mk,v 1.3 2012/04/04 10:37:18 joerg Exp $
      2  1.1  joerg 
      3  1.1  joerg .ifndef CLANG_ANALYZE_SRCS
      4  1.1  joerg 
      5  1.2  joerg CLANG_ANALYZE_FLAGS+=	--analyze
      6  1.1  joerg 
      7  1.3  joerg CLANG_ANALYZE_CHECKERS+=	core deadcode security unix
      8  1.3  joerg 
      9  1.3  joerg .for checker in ${CLANG_ANALYZE_CHECKERS}
     10  1.3  joerg CLANG_ANALYZE_FLAGS+=	-Xanalyzer -analyzer-checker=${checker}
     11  1.3  joerg .endfor
     12  1.3  joerg 
     13  1.1  joerg .SUFFIXES: .c .cc .cpp .cxx .C .clang-analyzer
     14  1.1  joerg 
     15  1.1  joerg CLANG_ANALYZE_CFLAGS=		${CFLAGS:N-Wa,--fatal-warnings}
     16  1.1  joerg CLANG_ANALYZE_CXXFLAGS=	${CXXFLAGS:N-Wa,--fatal-warnings}
     17  1.1  joerg 
     18  1.1  joerg .c.clang-analyzer:
     19  1.1  joerg 	${TOOL_CC.clang} ${CLANG_ANALYZE_FLAGS} \
     20  1.1  joerg 	    ${CLANG_ANALYZE_CFLAGS} ${CPPFLAGS} \
     21  1.1  joerg 	    ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} \
     22  1.1  joerg 	    ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
     23  1.1  joerg .cc.clang-analyzer .cpp.clang-analyzer .cxx.clang-analyzer .C.clang-analyzer:
     24  1.1  joerg 	${TOOL_CXX.clang} ${CLANG_ANALYZE_FLAGS} \
     25  1.1  joerg 	    ${CLANG_ANALYZE_CXXFLAGS} ${CPPFLAGS} \
     26  1.1  joerg 	    ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} \
     27  1.1  joerg 	    ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
     28  1.1  joerg 
     29  1.1  joerg CLANG_ANALYZE_SRCS= \
     30  1.1  joerg 	${SRCS:M*.[cC]} ${SRCS:M*.cc} \
     31  1.1  joerg 	${SRCS:M*.cpp} ${SRCS:M*.cxx} \
     32  1.1  joerg 	${DPSRCS:M*.[cC]} ${DPSRCS:M*.cc} \
     33  1.1  joerg 	${DPSRCS:M*.cpp} ${DPSRCS:M*.cxx}
     34  1.1  joerg .if !empty(CLANG_ANALYZE_SRCS)
     35  1.1  joerg CLANG_ANALYZE_OUTPUT=	${CLANG_ANALYZE_SRCS:R:S,$,.clang-analyzer,}
     36  1.1  joerg .endif
     37  1.1  joerg 
     38  1.1  joerg analyze: ${CLANG_ANALYZE_OUTPUT}
     39  1.1  joerg 
     40  1.1  joerg .endif
     41