From: <ai...@us...> - 2013-06-12 19:09:51
|
Revision: 12378 http://sourceforge.net/p/plplot/code/12378 Author: airwin Date: 2013-06-12 19:09:48 +0000 (Wed, 12 Jun 2013) Log Message: ----------- Use the APPEND signature of add_custom_command for custom steps in updating the software for each of the build configurations. This change greatly simplifies the CMake logic and satisfies the stringent dependency checks done by the CMake "Ninja" generator. Use the env command for all configuration, build, test, and install steps. Reorganize the CMake logic for the overall project including a build_all target to build all configured projects. Tested by: Alan W. Irwin <ai...@us...> using the build_all target for "Unix Makefiles" and "Ninja" generators on Linux and the "MSYS Makefiles", "MinGW Makefiles", and "Ninja" generators on the Wine version of Windows. Modified Paths: -------------- trunk/cmake/build_projects/CMakeLists.txt trunk/cmake/build_projects/libagg/ep.cmake trunk/cmake/build_projects/libharu/ep.cmake trunk/cmake/build_projects/libqhull/ep.cmake trunk/cmake/build_projects/ndiff/ep.cmake trunk/cmake/build_projects/plplot/ep.cmake trunk/cmake/build_projects/shapelib/ep.cmake Modified: trunk/cmake/build_projects/CMakeLists.txt =================================================================== --- trunk/cmake/build_projects/CMakeLists.txt 2013-06-12 18:51:28 UTC (rev 12377) +++ trunk/cmake/build_projects/CMakeLists.txt 2013-06-12 19:09:48 UTC (rev 12378) @@ -22,6 +22,7 @@ message(STATUS "CMake version = ${CMAKE_VERSION}") message(STATUS "CMAKE_SYSTEM = ${CMAKE_SYSTEM}") +message(STATUS "CMAKE_GENERATOR = ${CMAKE_GENERATOR}") message(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}") cmake_minimum_required(VERSION 2.8.10.2 FATAL_ERROR) @@ -99,24 +100,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}) include(ExternalProject) -# Propagate the overall CMake generator and install prefix to all CMake-based -# software project builds. -set(BP_CMAKE_COMMAND cmake "-G${CMAKE_GENERATOR}" -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}) - -# The non-parallel versions are for build systems that -# apparently have race conditions for parallel builds. -if(CMAKE_GENERATOR STREQUAL "MinGW Makefiles") - set(BP_BUILD_COMMAND mingw32-make) -else(CMAKE_GENERATOR STREQUAL "MinGW Makefiles") - set(BP_BUILD_COMMAND make) -endif(CMAKE_GENERATOR STREQUAL "MinGW Makefiles") -set(BP_PARALLEL_BUILD_COMMAND ${BP_BUILD_COMMAND} -j4) -set(BP_CTEST_COMMAND ctest) -set(BP_PARALLEL_CTEST_COMMAND ctest -j4) - -set(BP_ORIGINAL_NATIVE_PATH "$ENV{PATH}") -set(BP_PATH "${BP_ORIGINAL_NATIVE_PATH}") - if(MSYS_PLATFORM) # Useful function to convert Windows list of semicolon-delimited # PATHs to the equivalent list of MSYS PATHs (exactly like the @@ -135,13 +118,65 @@ endfunction(determine_msys_path) endif(MSYS_PLATFORM) +# This works for at least Linux make, ninja, MinGW mingw32_make, MSYS make, +# and jom. +set(BP_BUILD_COMMAND "${CMAKE_MAKE_PROGRAM}") + +set(BP_CTEST_COMMAND "${CMAKE_CTEST_COMMAND}") + +if(MSYS_PLATFORM) + # On the MSYS platform, the env command (used to set relevant + # environment variables for the commands below in the */ep.cmake + # scripts) requires all full paths be in the MSYS platform form. + determine_msys_path(BP_CMAKE_COMMAND "${BP_CMAKE_COMMAND}") + determine_msys_path(BP_BUILD_COMMAND "${BP_BUILD_COMMAND}") + determine_msys_path(BP_CTEST_COMMAND "${BP_CTEST_COMMAND}") + determine_msys_path(MSYS_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + determine_msys_path(MSYS_CMAKE_COMMAND "${CMAKE_COMMAND}") + # Propagate the overall CMake generator and install prefix to all CMake-based + # software project builds. + set(BP_CMAKE_COMMAND ${MSYS_CMAKE_COMMAND} "-G${CMAKE_GENERATOR}" -DCMAKE_INSTALL_PREFIX:PATH=${MSYS_CMAKE_INSTALL_PREFIX}) +else(MSYS_PLATFORM) + # Propagate the overall CMake generator and install prefix to all CMake-based + # software project builds. + set(BP_CMAKE_COMMAND ${CMAKE_COMMAND} "-G${CMAKE_GENERATOR}" -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}) +endif(MSYS_PLATFORM) + + +# The parallel versions are for software packages that +# do not have race conditions for parallel builds or tests. +set(BP_PARALLEL_BUILD_COMMAND "${BP_BUILD_COMMAND}" -j4) +set(BP_PARALLEL_CTEST_COMMAND "${BP_CTEST_COMMAND}" -j4) + +message(STATUS "BP_CMAKE_COMMAND = ${BP_CMAKE_COMMAND}") +message(STATUS "BP_BUILD_COMMAND = ${BP_BUILD_COMMAND}") +message(STATUS "BP_PARALLEL_BUILD_COMMAND = ${BP_PARALLEL_BUILD_COMMAND}") +message(STATUS "BP_CTEST_COMMAND = ${BP_CTEST_COMMAND}") +message(STATUS "BP_PARALLEL_CTEST_COMMAND = ${BP_PARALLEL_CTEST_COMMAND}") + + +set(BP_ORIGINAL_NATIVE_PATH "$ENV{PATH}") +set(BP_PATH "${BP_ORIGINAL_NATIVE_PATH}") + # Now include the build configurations for certain targets and their # dependencies. +# Each (directly or indirectly) included build configuration +# that is judged to be working should append its target to build_target_LIST +# so that in the logic below we can creat a "build_all" target that depends +# on those individual build targets +set(build_target_LIST) + # Configure a build of ndiff. The ndiff application is not a a PLplot # dependency, but still this fuzzy diff is quite useful for PLplot # developers. include(ndiff/ep.cmake) +# Configure wxwidgets, a soft (optional) PLplot dependency +#include(wxwidgets/ep.cmake) + # Configure a build of PLplot and its dependencies. -include(plplot/ep.cmake) \ No newline at end of file +include(plplot/ep.cmake) + +add_custom_target(build_all) +add_dependencies(build_all ${build_target_LIST}) Modified: trunk/cmake/build_projects/libagg/ep.cmake =================================================================== --- trunk/cmake/build_projects/libagg/ep.cmake 2013-06-12 18:51:28 UTC (rev 12377) +++ trunk/cmake/build_projects/libagg/ep.cmake 2013-06-12 19:09:48 UTC (rev 12378) @@ -41,34 +41,26 @@ ExternalProject_Add( build_${BP_PACKAGE} URL ${${BP_PACKAGE}_URL} - URL_MD5 ${${BP_PACKAGE}_URL_MD5} + URL_MD5 ${${BP_PACKAGE}_URL_MD5} CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} ${EP_BASE}/Source/build_${BP_PACKAGE} - BUILD_COMMAND ${BP_PARALLEL_BUILD_COMMAND} - INSTALL_COMMAND ${BP_PARALLEL_BUILD_COMMAND} install - STEP_TARGETS download update_build_system configure build install + BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} + INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} install ) -# Use custom command approach to generate real file dependencies -# rather than time stamps alone. +# Add custom commands to the current no-command update step. add_custom_command( OUTPUT - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt + ${EP_BASE}/Stamp/build_${BP_PACKAGE}/build_${BP_PACKAGE}-update COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - COMMENT "Updating of ${BP_PACKAGE} build system" + COMMENT "Custom updating of ${BP_PACKAGE}" DEPENDS ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt + APPEND ) -ExternalProject_Add_Step(build_${BP_PACKAGE} update_build_system - COMMENT "Updated ${BP_PACKAGE} build system" - DEPENDEES download - DEPENDERS configure - DEPENDS - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - ALWAYS OFF - ) +list(APPEND build_target_LIST build_${BP_PACKAGE}) # Restore BP_PATH to original state. set(BP_PATH "${BP_ORIGINAL_NATIVE_PATH}") #message(STATUS "${BP_PACKAGE} restored original BP_PATH = ${BP_PATH}") Modified: trunk/cmake/build_projects/libharu/ep.cmake =================================================================== --- trunk/cmake/build_projects/libharu/ep.cmake 2013-06-12 18:51:28 UTC (rev 12377) +++ trunk/cmake/build_projects/libharu/ep.cmake 2013-06-12 19:09:48 UTC (rev 12378) @@ -44,62 +44,49 @@ URL_MD5 ${${BP_PACKAGE}_URL_MD5} # Note -DPOST_2.1.0=OFF is essential for the 2.1.0 version, but you # should drop this option for anything after 2.1.0. Also note that - # -D${BP_PACKAGE}_EXAMPLES=ON builds the demos, but does not test them. - CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} -DPOST_2.1.0=OFF -D${BP_PACKAGE}_EXAMPLES=ON ${EP_BASE}/Source/build_${BP_PACKAGE} - BUILD_COMMAND ${BP_PARALLEL_BUILD_COMMAND} - INSTALL_COMMAND ${BP_PARALLEL_BUILD_COMMAND} install - STEP_TARGETS download update_build_system configure build install test + # -DLIBHARU_EXAMPLES=ON builds the demos, but does not test them. + CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} -DPOST_2.1.0=OFF -DLIBHARU_EXAMPLES=ON ${EP_BASE}/Source/build_${BP_PACKAGE} + BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} + INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} install ) -# Use custom command approach to generate real file dependencies -# rather than time stamps alone. +# Add custom commands to the current no-command update step. add_custom_command( OUTPUT - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/demo/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/hpdf_page_operator.c - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/cmake/modules/haru.cmake - ${EP_BASE}/Source/build_${BP_PACKAGE}/cmake/modules/summary.cmake - ${EP_BASE}/Source/build_${BP_PACKAGE}/include/hpdf_consts.h - ${EP_BASE}/Source/build_${BP_PACKAGE}/include/hpdf_config.h.cmake - ${EP_BASE}/Source/build_${BP_PACKAGE}/include/hpdf.h - ${EP_BASE}/Source/build_${BP_PACKAGE}/include/CMakeLists.txt - # File that is patched. - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/hpdf_streams.c + ${EP_BASE}/Stamp/build_${BP_PACKAGE}/build_${BP_PACKAGE}-update COMMAND ${CMAKE_COMMAND} -E make_directory ${EP_BASE}/Source/build_${BP_PACKAGE}/cmake/modules - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/demo/CMakeLists.txt ${EP_BASE}/Source/build_${BP_PACKAGE}/demo/CMakeLists.txt - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/hpdf_page_operator.c ${EP_BASE}/Source/build_${BP_PACKAGE}/src/hpdf_page_operator.c - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/CMakeLists.txt ${EP_BASE}/Source/build_${BP_PACKAGE}/src/CMakeLists.txt - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/cmake/modules/haru.cmake ${EP_BASE}/Source/build_${BP_PACKAGE}/cmake/modules/haru.cmake - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/cmake/modules/summary.cmake ${EP_BASE}/Source/build_${BP_PACKAGE}/cmake/modules/summary.cmake - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/include/hpdf_consts.h ${EP_BASE}/Source/build_${BP_PACKAGE}/include/hpdf_consts.h - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/include/hpdf_config.h.cmake ${EP_BASE}/Source/build_${BP_PACKAGE}/include/hpdf_config.h.cmake - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/include/hpdf.h ${EP_BASE}/Source/build_${BP_PACKAGE}/include/hpdf.h - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/include/CMakeLists.txt ${EP_BASE}/Source/build_${BP_PACKAGE}/include/CMakeLists.txt COMMAND ${PATCH_EXECUTABLE} -d ${EP_BASE}/Source/build_${BP_PACKAGE} -p1 < ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/include_hpdf_config.h.patch - COMMENT "Updating of ${BP_PACKAGE} build system" + COMMENT "Custom updating of ${BP_PACKAGE}" DEPENDS ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/demo/CMakeLists.txt @@ -112,26 +99,10 @@ ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/include/hpdf.h ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/include/CMakeLists.txt ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/include_hpdf_config.h.patch + APPEND ) -ExternalProject_Add_Step(build_${BP_PACKAGE} update_build_system - COMMENT "Updated ${BP_PACKAGE} build system" - DEPENDEES download - DEPENDERS configure - DEPENDS - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/demo/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/hpdf_page_operator.c - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/cmake/modules/haru.cmake - ${EP_BASE}/Source/build_${BP_PACKAGE}/cmake/modules/summary.cmake - ${EP_BASE}/Source/build_${BP_PACKAGE}/include/hpdf_consts.h - ${EP_BASE}/Source/build_${BP_PACKAGE}/include/hpdf_config.h.cmake - ${EP_BASE}/Source/build_${BP_PACKAGE}/include/hpdf.h - ${EP_BASE}/Source/build_${BP_PACKAGE}/include/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/hpdf_streams.c - ALWAYS OFF - ) +list(APPEND build_target_LIST build_${BP_PACKAGE}) # Restore BP_PATH to original state. set(BP_PATH "${BP_ORIGINAL_NATIVE_PATH}") #message(STATUS "${BP_PACKAGE} restored original BP_PATH = ${BP_PATH}") Modified: trunk/cmake/build_projects/libqhull/ep.cmake =================================================================== --- trunk/cmake/build_projects/libqhull/ep.cmake 2013-06-12 18:51:28 UTC (rev 12377) +++ trunk/cmake/build_projects/libqhull/ep.cmake 2013-06-12 19:09:48 UTC (rev 12378) @@ -41,27 +41,21 @@ ExternalProject_Add( build_${BP_PACKAGE} URL ${${BP_PACKAGE}_URL} - URL_MD5 ${${BP_PACKAGE}_URL_MD5} + URL_MD5 ${${BP_PACKAGE}_URL_MD5} CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} ${EP_BASE}/Source/build_${BP_PACKAGE} - BUILD_COMMAND ${BP_PARALLEL_BUILD_COMMAND} - INSTALL_COMMAND ${BP_PARALLEL_BUILD_COMMAND} install - STEP_TARGETS download update_build_system configure build install test + BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} + INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} install ) -# Use custom command approach to generate real file dependencies -# rather than time stamps alone. +# Add custom commands to the current no-command update step. add_custom_command( OUTPUT - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/${BP_PACKAGE}.h - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/mem.h - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/unix.c - COMMAND ${CMAKE_COMMAND} -E copy + ${EP_BASE}/Stamp/build_${BP_PACKAGE}/build_${BP_PACKAGE}-update + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/CMakeLists.txt + ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/CMakeLists.txt ${EP_BASE}/Source/build_${BP_PACKAGE}/src/CMakeLists.txt COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/${BP_PACKAGE}.h @@ -72,27 +66,17 @@ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/unix.c ${EP_BASE}/Source/build_${BP_PACKAGE}/src/unix.c - COMMENT "Updating of ${BP_PACKAGE} build system" + COMMENT "Custom updating of ${BP_PACKAGE}" DEPENDS ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/CMakeLists.txt ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/${BP_PACKAGE}.h ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/mem.h ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/src/unix.c + APPEND ) -ExternalProject_Add_Step(build_${BP_PACKAGE} update_build_system - COMMENT "Updated ${BP_PACKAGE} build system" - DEPENDEES download - DEPENDERS configure - DEPENDS - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/${BP_PACKAGE}.h - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/mem.h - ${EP_BASE}/Source/build_${BP_PACKAGE}/src/unix.c - ALWAYS OFF - ) +list(APPEND build_target_LIST build_${BP_PACKAGE}) # Restore BP_PATH to original state. set(BP_PATH "${BP_ORIGINAL_NATIVE_PATH}") #message(STATUS "${BP_PACKAGE} restored original BP_PATH = ${BP_PATH}") Modified: trunk/cmake/build_projects/ndiff/ep.cmake =================================================================== --- trunk/cmake/build_projects/ndiff/ep.cmake 2013-06-12 18:51:28 UTC (rev 12377) +++ trunk/cmake/build_projects/ndiff/ep.cmake 2013-06-12 19:09:48 UTC (rev 12378) @@ -45,42 +45,32 @@ ExternalProject_Add( build_${BP_PACKAGE} URL ${${BP_PACKAGE}_URL} - URL_MD5 ${${BP_PACKAGE}_URL_MD5} + URL_MD5 ${${BP_PACKAGE}_URL_MD5} CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} ${EP_BASE}/Source/build_${BP_PACKAGE} - BUILD_COMMAND ${BP_PARALLEL_BUILD_COMMAND} + BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} TEST_BEFORE_INSTALL ON - TEST_COMMAND ${BP_PARALLEL_CTEST_COMMAND} - INSTALL_COMMAND ${BP_PARALLEL_BUILD_COMMAND} install - STEP_TARGETS download update_build_system configure build install test + TEST_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_CTEST_COMMAND} + INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} install ) -# Use custom command approach to generate real file dependencies -# rather than time stamps alone. +# Add custom commands to the current no-command update step. add_custom_command( OUTPUT - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/config.h.cmake - COMMAND ${CMAKE_COMMAND} -E copy + ${EP_BASE}/Stamp/build_${BP_PACKAGE}/build_${BP_PACKAGE}-update + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - COMMAND ${CMAKE_COMMAND} -E copy + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/config.h.cmake ${EP_BASE}/Source/build_${BP_PACKAGE}/config.h.cmake - COMMENT "Updating of ${BP_PACKAGE} build system" + COMMENT "Custom updating of ${BP_PACKAGE}" DEPENDS ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/config.h.cmake + APPEND ) -ExternalProject_Add_Step(build_${BP_PACKAGE} update_build_system - COMMENT "Updated ${BP_PACKAGE} build system" - DEPENDEES download - DEPENDERS configure - DEPENDS - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/config.h.cmake - ALWAYS OFF - ) +list(APPEND build_target_LIST build_${BP_PACKAGE}) # Restore BP_PATH to original state. set(BP_PATH "${BP_ORIGINAL_NATIVE_PATH}") #message(STATUS "${BP_PACKAGE} restored original BP_PATH = ${BP_PATH}") Modified: trunk/cmake/build_projects/plplot/ep.cmake =================================================================== --- trunk/cmake/build_projects/plplot/ep.cmake 2013-06-12 18:51:28 UTC (rev 12377) +++ trunk/cmake/build_projects/plplot/ep.cmake 2013-06-12 19:09:48 UTC (rev 12378) @@ -34,7 +34,7 @@ # (Not implemented yet, but create empty custom target with correct # target dependencies as if that target were actually a PLplot build). add_custom_target(build_plplot) -add_dependencies(build_plplot +add_dependencies(build_plplot build_shapelib build_libqhull build_libharu Modified: trunk/cmake/build_projects/shapelib/ep.cmake =================================================================== --- trunk/cmake/build_projects/shapelib/ep.cmake 2013-06-12 18:51:28 UTC (rev 12377) +++ trunk/cmake/build_projects/shapelib/ep.cmake 2013-06-12 19:09:48 UTC (rev 12378) @@ -50,47 +50,28 @@ TEST_BEFORE_INSTALL ON TEST_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_CTEST_COMMAND} INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} install - STEP_TARGETS download update_build_system get_eg_data configure build install test ) -# Use custom command approach to allow more than one COMMAND and/or -# generate real file dependencies rather than time stamps alone. +# Add custom commands to the current no-command update step. add_custom_command( OUTPUT - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt - ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - COMMENT "Updating of ${BP_PACKAGE} build system" - DEPENDS + ${EP_BASE}/Stamp/build_${BP_PACKAGE}/build_${BP_PACKAGE}-update + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt - ) -ExternalProject_Add_Step(build_${BP_PACKAGE} update_build_system - COMMENT "Updated ${BP_PACKAGE} build system" - DEPENDEES download - DEPENDERS configure - DEPENDS ${EP_BASE}/Source/build_${BP_PACKAGE}/CMakeLists.txt - ALWAYS OFF - ) - -add_custom_command( - OUTPUT - ${EP_BASE}/Download/build_${BP_PACKAGE}/shape_eg_data.zip COMMAND ${CMAKE_COMMAND} -DURL:STRING=${shape_eg_data_URL} -DFILE:FILEPATH=${EP_BASE}/Download/build_${BP_PACKAGE}/shape_eg_data.zip -DMD5:STRING=${shape_eg_data_URL_MD5} -P ${CMAKE_SOURCE_DIR}/download_check.cmake COMMAND ${CMAKE_COMMAND} -E remove_directory ${EP_BASE}/Source/build_${BP_PACKAGE}/eg_data COMMAND ${UNZIP_EXECUTABLE} -q ${EP_BASE}/Download/build_${BP_PACKAGE}/shape_eg_data.zip -d ${EP_BASE}/Source/build_${BP_PACKAGE}/eg_data - COMMENT "getting eg_data for ${BP_PACKAGE} test" - ) -ExternalProject_Add_Step(build_${BP_PACKAGE} get_eg_data - COMMENT "got eg_data for ${BP_PACKAGE} test" - DEPENDEES download - DEPENDERS configure + COMMENT "Custom updating of ${BP_PACKAGE}" DEPENDS - ${EP_BASE}/Download/build_${BP_PACKAGE}/shape_eg_data.zip - ALWAYS OFF + ${CMAKE_SOURCE_DIR}/${BP_PACKAGE}/CMakeLists.txt + ${CMAKE_SOURCE_DIR}/download_check.cmake + # N.B. no file dependencies are worthwhile for the eg_data + # chain above since it all starts with a download. + APPEND ) +list(APPEND build_target_LIST build_${BP_PACKAGE}) # Restore BP_PATH to original state. set(BP_PATH "${BP_ORIGINAL_NATIVE_PATH}") #message(STATUS "${BP_PACKAGE} restored original BP_PATH = ${BP_PATH}") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |