You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							68 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
	
	
							68 lines
						
					
					
						
							2.2 KiB
						
					
					
				# util to check C++ file style
 | 
						|
# * it basically use google cpplint.py.
 | 
						|
# * It provide "add_style_check_target" for cmake.
 | 
						|
#   Usage see add_style_check_target's document
 | 
						|
#
 | 
						|
# TODO(yuyang18): Add python style check.
 | 
						|
 | 
						|
set(STYLE_FILTER)
 | 
						|
 | 
						|
# diable unwanted filters
 | 
						|
 | 
						|
# paddle do not indent public/potected/private in class
 | 
						|
set(STYLE_FILTER "${STYLE_FILTER}-whitespace/indent,")
 | 
						|
# paddle use mutable reference. BUT IT IS NOT RECOMMANDED
 | 
						|
set(STYLE_FILTER "${STYLE_FILTER}-runtime/references,")
 | 
						|
# paddle use relative path for include.
 | 
						|
set(STYLE_FILTER "${STYLE_FILTER}-build/include,")
 | 
						|
# paddle use <thread>, <mutex>, etc.
 | 
						|
set(STYLE_FILTER "${STYLE_FILTER}-build/c++11,")
 | 
						|
# paddle use c style casting. BUT IT IS NOT RECOMMANDED
 | 
						|
set(STYLE_FILTER "${STYLE_FILTER}-readability/casting")
 | 
						|
 | 
						|
 | 
						|
# IGNORE SOME FILES
 | 
						|
set(IGNORE_PATTERN
 | 
						|
    .*ImportanceSampler.*
 | 
						|
    .*cblas\\.h.*
 | 
						|
    .*\\.pb\\.txt
 | 
						|
    .*LtrDataProvider.*
 | 
						|
    .*MultiDataProvider.*
 | 
						|
    .*pb.*)
 | 
						|
 | 
						|
# add_style_check_target
 | 
						|
#
 | 
						|
# attach check code style step for target.
 | 
						|
#
 | 
						|
# first argument: target name to attach
 | 
						|
# rest arguments: source list to check code style.
 | 
						|
#
 | 
						|
# NOTE: If WITH_STYLE_CHECK is OFF, then this macro just do nothing.
 | 
						|
macro(add_style_check_target TARGET_NAME)
 | 
						|
    if(WITH_STYLE_CHECK)
 | 
						|
        set(SOURCES_LIST ${ARGN})
 | 
						|
        list(REMOVE_DUPLICATES SOURCES_LIST)
 | 
						|
        list(SORT SOURCES_LIST)
 | 
						|
 | 
						|
        foreach(filename ${SOURCES_LIST})
 | 
						|
            set(LINT ON)
 | 
						|
            foreach(pattern ${IGNORE_PATTERN})
 | 
						|
                if(filename MATCHES ${pattern})
 | 
						|
                    message(STATUS "DROP LINT ${filename}")
 | 
						|
                    set(LINT OFF)
 | 
						|
                endif()
 | 
						|
            endforeach()
 | 
						|
            if(LINT MATCHES ON)
 | 
						|
                # cpplint code style
 | 
						|
                get_filename_component(base_filename ${filename} NAME)
 | 
						|
                set(CUR_GEN ${CMAKE_CURRENT_BINARY_DIR}/${base_filename}.cpplint)
 | 
						|
                add_custom_command(TARGET ${TARGET_NAME} PRE_BUILD
 | 
						|
                    COMMAND "${PYTHON_EXECUTABLE}" "${PROJ_ROOT}/paddle/scripts/cpplint.py"
 | 
						|
                            "--filter=${STYLE_FILTER}"
 | 
						|
                            "--write-success=${CUR_GEN}" ${filename}
 | 
						|
                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
 | 
						|
            endif()
 | 
						|
        endforeach()
 | 
						|
    endif()
 | 
						|
endmacro()
 |