[brlcad-commits] SF.net SVN: brlcad:[58271] brlcad/trunk/misc/CMake
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <sta...@us...> - 2013-10-23 19:05:55
|
Revision: 58271 http://sourceforge.net/p/brlcad/code/58271 Author: starseeker Date: 2013-10-23 19:05:51 +0000 (Wed, 23 Oct 2013) Log Message: ----------- This is nifty, but probably not what we are going to end up with - we'll need the POST_BUILD trick to do the succeed/fail at the end, but we want to do the astyle validations in parallel... Modified Paths: -------------- brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake brlcad/trunk/misc/CMake/astyle.cmake.in Modified: brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake =================================================================== --- brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake 2013-10-23 18:42:22 UTC (rev 58270) +++ brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake 2013-10-23 19:05:51 UTC (rev 58271) @@ -259,38 +259,24 @@ FLAGS_TO_FILES("${srcslist}" ${libname}) endif(${lib_type} STREQUAL "MIXED") - # BRL-CAD style checking test - if(ENABLE_STYLE_VALIDATION) - set(stampfiles) - make_directory(${CMAKE_CURRENT_BINARY_DIR}/validation) - foreach(srcfile ${srcslist}) - get_filename_component(root_name ${srcfile} NAME_WE) - string(MD5 path_md5 "${CMAKE_CURRENT_SOURCE_DIR}/${srcfile}") - set(stampfile "${CMAKE_CURRENT_BINARY_DIR}/validation/${root_name}_${path_md5}.checked") - set(scriptfile "${CMAKE_CURRENT_BINARY_DIR}/validation/${root_name}_${path_md5}.cmake") - set(srcfile_tmp "${CMAKE_CURRENT_SOURCE_DIR}/${srcfile}") - set(outfile_tmp "${CMAKE_CURRENT_BINARY_DIR}/validation/${path_md5}") - set(stampfile_tmp "${stampfile}") - configure_file(${BRLCAD_SOURCE_DIR}/misc/CMake/astyle.cmake.in ${scriptfile}) - add_custom_command( - OUTPUT ${stampfile} - COMMAND ${CMAKE_COMMAND} -P ${scriptfile} - DEPENDS ${srcfile} ${ASTYLE_EXECUTABLE_TARGET} - COMMENT "Validating style of ${srcfile}" - ) - set(stampfiles ${stampfiles} ${stampfile}) - endforeach(srcfile ${srcslist}) - add_custom_target(validate_${libname} DEPENDS ${stampfiles}) - endif(ENABLE_STYLE_VALIDATION) - - # Handle "shared" libraries (with MSVC, these would be dynamic libraries) if(BUILD_SHARED_LIBS) add_library(${libname} SHARED ${srcslist}) + # BRL-CAD style checking test if(ENABLE_STYLE_VALIDATION) - add_dependencies(${libname} validate_${libname}) + add_dependencies(${libname} ${ASTYLE_EXECUTABLE_TARGET}) + make_directory(${CMAKE_CURRENT_BINARY_DIR}/validation) + set(srcslist_tmp "${srcslist}") + set(target_name "${libname}") + set(scriptfile ${CMAKE_CURRENT_BINARY_DIR}/${libname}_validate.cmake) + configure_file(${BRLCAD_SOURCE_DIR}/misc/CMake/astyle.cmake.in ${scriptfile} @ONLY) + add_custom_command( + TARGET ${libname} POST_BUILD + COMMAND ${CMAKE_COMMAND} -P ${scriptfile} + COMMENT "Validating style of ${libname} srcs" + ) endif(ENABLE_STYLE_VALIDATION) # Make sure we don't end up with outputs named liblib... Modified: brlcad/trunk/misc/CMake/astyle.cmake.in =================================================================== --- brlcad/trunk/misc/CMake/astyle.cmake.in 2013-10-23 18:42:22 UTC (rev 58270) +++ brlcad/trunk/misc/CMake/astyle.cmake.in 2013-10-23 19:05:51 UTC (rev 58271) @@ -33,19 +33,53 @@ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ### -execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "@stampfile_tmp@") -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) -if(CMDRESULT) - message(FATAL_ERROR "Style failure: compare @srcfile_tmp@ with @outfile_tmp@ to see differences") -else(CMDRESULT) - execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "@outfile_tmp@") - execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "@stampfile_tmp@") -endif(CMDRESULT) +set(srcslist @srcslist_tmp@) +set(target_file @lib_outfile@) +set(binary_dir @CMAKE_CURRENT_BINARY_DIR@) +set(src_dir @CMAKE_CURRENT_SOURCE_DIR@) +set(check_srcs) +foreach(srcfile ${srcslist}) + get_filename_component(root_name ${srcfile} NAME_WE) + string(MD5 path_md5 "${src_dir}/${srcfile}") + file(MD5 ${src_dir}/${srcfile} CURR_MD5) + if(EXISTS ${binary_dir}/validation/${root_name}_${path_md5}.md5) + file(READ ${binary_dir}/validation/${root_name}_${path_md5}.md5 OLD_MD5) + string(STRIP "${OLD_MD5}" OLD_MD5) + if(NOT "${CURR_MD5}" STREQUAL "${OLD_MD5}") + file(WRITE ${binary_dir}/validation/${root_name}_${path_md5}.md5 ${CURR_MD5}) + set(check_srcs ${check_srcs} ${srcfile}) + endif(NOT "${CURR_MD5}" STREQUAL "${OLD_MD5}") + else(EXISTS ${binary_dir}/validation/${root_name}_${path_md5}.md5) + file(WRITE ${binary_dir}/validation/${root_name}_${path_md5}.md5 ${CURR_MD5}) + set(check_srcs ${check_srcs} ${srcfile}) + endif(EXISTS ${binary_dir}/validation/${root_name}_${path_md5}.md5) +endforeach(srcfile ${srcslist}) +set(diff_files) +foreach(srcfile ${check_srcs}) + get_filename_component(root_name ${srcfile} NAME_WE) + string(MD5 path_md5 "${src_dir}/${srcfile}") + set(working_file "${binary_dir}/${root_name}_${path_md5}") + execute_process(COMMAND "@CMAKE_COMMAND@" -E copy "${src_dir}/${src_file}" "${working_file}") + execute_process(COMMAND "@ASTYLE_EXECUTABLE@" --options=@BRLCAD_SOURCE_DIR@/misc/astyle.opt "${working_file}" OUTPUT_QUIET ERROR_QUIET) + execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${working_file}.orig") + execute_process(COMMAND "@CMAKE_COMMAND@" -E compare_files "${src_dir}/${srcfile}" "${working_file}" RESULT_VARIABLE CMDRESULT OUTPUT_QUIET ERROR_QUIET) + execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${working_file}") + if(CMDRESULT) + set(diff_files ${diff_files} "${src_dir}/${srcfile}") + endif(CMDRESULT) +endforeach(srcfile ${check_srcs}) + +if(diff_files) + set(out_msg "Style verification failure in the following file(s):\n") + foreach(formatting_diff ${diff_files}) + set(out_msg "${out_msg} ${formatting_diff}\n") + endforeach(formatting_diff ${diff_files}) + execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "${target_file}") + message(FATAL_ERROR "${out_msg}") +endif(diff_files) + # Local Variables: # tab-width: 8 # mode: cmake This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |