[Cmake-commits] [cmake-commits] king committed AddExternalProject.cmake 1.11 1.12

cmake-commits at cmake.org cmake-commits at cmake.org
Mon Mar 30 11:35:29 EDT 2009


Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv29353/Modules

Modified Files:
	AddExternalProject.cmake 
Log Message:
ENH: Teach AddExternalProject a 'complete' step

This separates creation of the project completion sentinel file from the
'install' step to allow more steps to be added in between later.


Index: AddExternalProject.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/AddExternalProject.cmake,v
retrieving revision 1.11
retrieving revision 1.12
diff -C 2 -d -r1.11 -r1.12
*** AddExternalProject.cmake	18 Mar 2009 15:01:25 -0000	1.11
--- AddExternalProject.cmake	30 Mar 2009 15:35:22 -0000	1.12
***************
*** 585,589 ****
        OUTPUT ${sentinels_dir}/${name}-install
        COMMAND ${CMAKE_COMMAND} -E touch ${sentinels_dir}/${name}-install
-       COMMAND ${CMAKE_COMMAND} -E touch ${sentinels_dir}/${name}-complete
        WORKING_DIRECTORY ${working_dir}
        COMMENT "No install step for '${name}'"
--- 585,588 ----
***************
*** 598,602 ****
        COMMAND ${cmd}
        COMMAND ${CMAKE_COMMAND} -E touch ${sentinels_dir}/${name}-install
-       COMMAND ${CMAKE_COMMAND} -E touch ${sentinels_dir}/${name}-complete
        WORKING_DIRECTORY ${working_dir}
        COMMENT "Performing install step for '${name}'"
--- 597,600 ----
***************
*** 693,702 ****
  
  
!   # Add a custom target for the external project and make its DEPENDS
!   # the output of the final build step:
!   #
!   add_custom_target(${name} ALL
      DEPENDS ${sentinels_dir}/${name}-install
!   )
    set_target_properties(${name} PROPERTIES AEP_IS_EXTERNAL_PROJECT 1)
    add_dependencies(${name} CMakeExternals)
--- 691,709 ----
  
  
!   # Add a custom target for the external project.  The 'complete' step
!   # depends on all other steps and creates a 'done' mark.  A dependent
!   # external project's 'configure' step depends on the 'done' mark so
!   # that it rebuilds when this project rebuilds.  It is important that
!   # 'done' is not the output of any custom command so that CMake does
!   # not propagate build rules to other external project targets.
!   add_custom_target(${name} ALL DEPENDS ${sentinels_dir}/${name}-complete)
!   add_custom_command(
!     OUTPUT ${sentinels_dir}/${name}-complete
!     COMMENT "Completed '${name}'"
!     COMMAND ${CMAKE_COMMAND} -E touch ${sentinels_dir}/${name}-complete
!     COMMAND ${CMAKE_COMMAND} -E touch ${sentinels_dir}/${name}-done
      DEPENDS ${sentinels_dir}/${name}-install
!     VERBATIM
!     )
    set_target_properties(${name} PROPERTIES AEP_IS_EXTERNAL_PROJECT 1)
    add_dependencies(${name} CMakeExternals)
***************
*** 723,727 ****
        if(NOT arg STREQUAL "")
          add_dependencies(${name} ${arg})
!         set_property(TARGET ${name} APPEND PROPERTY AEP_FILE_DEPENDS "${sentinels_dir}/${arg}-complete")
        else()
          message(AUTHOR_WARNING "empty DEPENDS value in add_external_project")
--- 730,734 ----
        if(NOT arg STREQUAL "")
          add_dependencies(${name} ${arg})
!         set_property(TARGET ${name} APPEND PROPERTY AEP_FILE_DEPENDS "${sentinels_dir}/${arg}-done")
        else()
          message(AUTHOR_WARNING "empty DEPENDS value in add_external_project")



More information about the Cmake-commits mailing list