Revision: 60543 http://sourceforge.net/p/brlcad/code/60543 Author: starseeker Date: 2014-05-08 12:55:23 +0000 (Thu, 08 May 2014) Log Message: ----------- Generalize the 'check style' mechanism so it can support more tests than just astyle.
Modified Paths: -------------- brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake Added Paths: ----------- brlcad/trunk/misc/CMake/style/ brlcad/trunk/misc/CMake/style/astyle.cmake.in brlcad/trunk/misc/CMake/style/test_list.cmake Removed Paths: ------------- brlcad/trunk/misc/CMake/astyle.cmake.in Modified: brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake =================================================================== --- brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake 2014-05-08 01:34:10 UTC (rev 60542) +++ brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake 2014-05-08 12:55:23 UTC (rev 60543) @@ -153,32 +153,41 @@ endif(NOERROR_FLAG_CXX AND BRLCAD_ENABLE_STRICT) endmacro(CXX_NO_STRICT cxx_srcslist) +macro(ADD_STYLE_TEST srcfile test_name) + # Generated files won't conform to our style guidelines + get_property(IS_GENERATED SOURCE ${srcfile} PROPERTY GENERATED) + if(NOT IS_GENERATED) + get_filename_component(root_name ${srcfile} NAME_WE) + string(MD5 path_md5 "${CMAKE_CURRENT_SOURCE_DIR}/${srcfile}") + set(outfiles_root "${CMAKE_CURRENT_BINARY_DIR}/validation/${root_name}_${path_md5}_${test_name}") + set(srcfile_tmp "${CMAKE_CURRENT_SOURCE_DIR}/${srcfile}") + set(stampfile_tmp "${stampfile}") + configure_file(${BRLCAD_SOURCE_DIR}/misc/CMake/style/${test_name}.cmake.in ${outfiles_root}.cmake @ONLY) + add_custom_command( + OUTPUT ${outfiles_root}.checked + COMMAND ${CMAKE_COMMAND} -P ${outfiles_root}.cmake + DEPENDS ${srcfile} ${${test_name}_test_deps} + COMMENT "Validating style of ${srcfile}" + ) + set_source_files_properties(${srcfile} PROPERTIES OBJECT_DEPENDS ${outfiles_root}.checked) + endif(NOT IS_GENERATED) +endmacro(ADD_STYLE_TEST srcfile test_name) + # BRL-CAD style checking test macro(VALIDATE_STYLE srcslist) if(BRLCAD_STYLE_VALIDATE) + include(${BRLCAD_SOURCE_DIR}/misc/CMake/style/test_list.cmake) make_directory(${CMAKE_CURRENT_BINARY_DIR}/validation) - foreach(srcfile ${srcslist}) - # Generated files won't conform to our style guidelines - get_property(IS_GENERATED SOURCE ${srcfile} PROPERTY GENERATED) - if(NOT IS_GENERATED) - get_filename_component(root_name ${srcfile} NAME_WE) - string(MD5 path_md5 "${CMAKE_CURRENT_SOURCE_DIR}/${srcfile}") - set(outfiles_root "${CMAKE_CURRENT_BINARY_DIR}/validation/${root_name}_${path_md5}") - set(srcfile_tmp "${CMAKE_CURRENT_SOURCE_DIR}/${srcfile}") - set(stampfile_tmp "${stampfile}") - configure_file(${BRLCAD_SOURCE_DIR}/misc/CMake/astyle.cmake.in ${outfiles_root}.cmake @ONLY) - add_custom_command( - OUTPUT ${outfiles_root}.checked - COMMAND ${CMAKE_COMMAND} -P ${outfiles_root}.cmake - DEPENDS ${srcfile} ${ASTYLE_EXECUTABLE_TARGET} - COMMENT "Validating style of ${srcfile}" - ) - set_source_files_properties(${srcfile} PROPERTIES OBJECT_DEPENDS ${outfiles_root}.checked) - endif(NOT IS_GENERATED) - endforeach(srcfile ${srcslist}) + foreach(test_name ${BRLCAD_STYLE_TESTS}) + foreach(srcfile ${srcslist}) + ADD_STYLE_TEST(${srcfile} ${test_name}) + endforeach(srcfile ${srcslist}) + endforeach(test_name ${BRLCAD_STYLE_TESTS}) endif(BRLCAD_STYLE_VALIDATE) endmacro(VALIDATE_STYLE) +# For this to work, any test which can cause the validation to fail must +# create a <some_filename>.invalid stamp file in the appropriate directory. macro(VALIDATE_TARGET_STYLE targetname) if(BRLCAD_STYLE_VALIDATE) configure_file(${BRLCAD_SOURCE_DIR}/misc/CMake/validate_style.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${targetname}_validate.cmake @ONLY) Deleted: brlcad/trunk/misc/CMake/astyle.cmake.in =================================================================== --- brlcad/trunk/misc/CMake/astyle.cmake.in 2014-05-08 01:34:10 UTC (rev 60542) +++ brlcad/trunk/misc/CMake/astyle.cmake.in 2014-05-08 12:55:23 UTC (rev 60543) @@ -1,66 +0,0 @@ -# A S T Y L E . C M A K E . I N -# BRL-CAD -# -# Copyright (c) 2012-2014 United States Government as represented by -# the U.S. Army Research Laboratory. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# 3. The name of the author may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -### -set(outfiles_root @outfiles_root@) -set(stamp_file ${outfiles_root}.checked) -set(stamp_valid ${outfiles_root}.valid) -set(stamp_invalid ${outfiles_root}.invalid) -set(outfile_tmp ${outfiles_root}.tmp) -set(BRLCAD_ENABLE_VERBOSE_PROGRESS @BRLCAD_ENABLE_VERBOSE_PROGRESS@) -execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${stamp_file}") -execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${stamp_valid}") -execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${stamp_invalid}") -execute_process(COMMAND "@CMAKE_COMMAND@" -E copy "@srcfile_tmp@" "${outfile_tmp}") -execute_process(COMMAND "@ASTYLE_EXECUTABLE@" --options=@BRLCAD_SOURCE_DIR@/misc/astyle.opt "${outfile_tmp}" OUTPUT_QUIET ERROR_QUIET) -execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${outfile_tmp}.orig") -execute_process(COMMAND "@CMAKE_COMMAND@" -E compare_files "@srcfile_tmp@" "${outfile_tmp}" RESULT_VARIABLE CMDRESULT OUTPUT_QUIET ERROR_QUIET) -execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "${stamp_file}") -if(CMDRESULT) - if(BRLCAD_ENABLE_VERBOSE_PROGRESS) - message(WARNING "Style failure: compare @srcfile_tmp@ with ${outfile_tmp} to see differences") - endif(BRLCAD_ENABLE_VERBOSE_PROGRESS) - file(WRITE "${stamp_invalid}" "@srcfile_tmp@") -else(CMDRESULT) - execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${outfile_tmp}") - execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "${stamp_valid}") -endif(CMDRESULT) - - -# Local Variables: -# tab-width: 8 -# mode: cmake -# indent-tabs-mode: t -# End: -# ex: shiftwidth=2 tabstop=8 Copied: brlcad/trunk/misc/CMake/style/astyle.cmake.in (from rev 60542, brlcad/trunk/misc/CMake/astyle.cmake.in) =================================================================== --- brlcad/trunk/misc/CMake/style/astyle.cmake.in (rev 0) +++ brlcad/trunk/misc/CMake/style/astyle.cmake.in 2014-05-08 12:55:23 UTC (rev 60543) @@ -0,0 +1,66 @@ +# A S T Y L E . C M A K E . I N +# BRL-CAD +# +# Copyright (c) 2012-2014 United States Government as represented by +# the U.S. Army Research Laboratory. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +### +set(outfiles_root @outfiles_root@) +set(stamp_file ${outfiles_root}.checked) +set(stamp_valid ${outfiles_root}.valid) +set(stamp_invalid ${outfiles_root}.invalid) +set(outfile_tmp ${outfiles_root}.tmp) +set(BRLCAD_ENABLE_VERBOSE_PROGRESS @BRLCAD_ENABLE_VERBOSE_PROGRESS@) +execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${stamp_file}") +execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${stamp_valid}") +execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${stamp_invalid}") +execute_process(COMMAND "@CMAKE_COMMAND@" -E copy "@srcfile_tmp@" "${outfile_tmp}") +execute_process(COMMAND "@ASTYLE_EXECUTABLE@" --options=@BRLCAD_SOURCE_DIR@/misc/astyle.opt "${outfile_tmp}" OUTPUT_QUIET ERROR_QUIET) +execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${outfile_tmp}.orig") +execute_process(COMMAND "@CMAKE_COMMAND@" -E compare_files "@srcfile_tmp@" "${outfile_tmp}" RESULT_VARIABLE CMDRESULT OUTPUT_QUIET ERROR_QUIET) +execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "${stamp_file}") +if(CMDRESULT) + if(BRLCAD_ENABLE_VERBOSE_PROGRESS) + message(WARNING "Style failure: compare @srcfile_tmp@ with ${outfile_tmp} to see differences") + endif(BRLCAD_ENABLE_VERBOSE_PROGRESS) + file(WRITE "${stamp_invalid}" "@srcfile_tmp@") +else(CMDRESULT) + execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${outfile_tmp}") + execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "${stamp_valid}") +endif(CMDRESULT) + + +# Local Variables: +# tab-width: 8 +# mode: cmake +# indent-tabs-mode: t +# End: +# ex: shiftwidth=2 tabstop=8 Added: brlcad/trunk/misc/CMake/style/test_list.cmake =================================================================== --- brlcad/trunk/misc/CMake/style/test_list.cmake (rev 0) +++ brlcad/trunk/misc/CMake/style/test_list.cmake 2014-05-08 12:55:23 UTC (rev 60543) @@ -0,0 +1,12 @@ +set(BRLCAD_STYLE_TESTS + astyle + ) + +set(astyle_test_deps ${ASTYLE_EXECUTABLE_TARGET}) + +# Local Variables: +# tab-width: 8 +# mode: cmake +# indent-tabs-mode: t +# End: +# ex: shiftwidth=2 tabstop=8 Property changes on: brlcad/trunk/misc/CMake/style/test_list.cmake ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Is your legacy SCM system holding you back? Join Perforce May 7 to find out: • 3 signs your SCM is hindering your productivity • Requirements for releasing software faster • Expert tips and advice for migrating your SCM now http://p.sf.net/sfu/perforce _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits