[brlcad-commits] SF.net SVN: brlcad:[58272] brlcad/trunk/misc/CMake
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <sta...@us...> - 2013-10-23 19:34:13
|
Revision: 58272 http://sourceforge.net/p/brlcad/code/58272 Author: starseeker Date: 2013-10-23 19:34:09 +0000 (Wed, 23 Oct 2013) Log Message: ----------- Use the OBJECT_DEPENDS property of source files to make the astyle check a per-file requirement. 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 19:05:51 UTC (rev 58271) +++ brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake 2013-10-23 19:34:09 UTC (rev 58272) @@ -259,26 +259,34 @@ FLAGS_TO_FILES("${srcslist}" ${libname}) endif(${lib_type} STREQUAL "MIXED") + # BRL-CAD style checking test + if(ENABLE_STYLE_VALIDATION) + 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_source_files_properties(${srcfile} PROPERTIES OBJECT_DEPENDS ${stampfile}) + endforeach(srcfile ${srcslist}) + 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} ${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... if(${libname} MATCHES "^lib*") set_target_properties(${libname} PROPERTIES PREFIX "") Modified: brlcad/trunk/misc/CMake/astyle.cmake.in =================================================================== --- brlcad/trunk/misc/CMake/astyle.cmake.in 2013-10-23 19:05:51 UTC (rev 58271) +++ brlcad/trunk/misc/CMake/astyle.cmake.in 2013-10-23 19:34:09 UTC (rev 58272) @@ -33,53 +33,19 @@ # 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) +execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "@stampfile_tmp@") +if(CMDRESULT) + message(WARNING "Style failure: compare @srcfile_tmp@ with @outfile_tmp@ to see differences") +else(CMDRESULT) + execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "@outfile_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. |