From: <ai...@us...> - 2013-06-06 20:05:09
|
Revision: 12370 http://sourceforge.net/p/plplot/code/12370 Author: airwin Date: 2013-06-06 20:05:05 +0000 (Thu, 06 Jun 2013) Log Message: ----------- Make builds more platform independent. As a result of these changes, "MinGW Makefiles" now works as well as "MSYS Makefiles" for build_projects. Tested by: Alan W. Irwin <ai...@us...> for the "Unix Makefiles" default generator on Linux, and the "MinGW Makefiles" and "MSYS Makefiles" generators on the Wine version of Windows. Modified Paths: -------------- trunk/cmake/build_projects/CMakeLists.txt trunk/cmake/build_projects/ExternalProject.cmake 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-06 15:09:05 UTC (rev 12369) +++ trunk/cmake/build_projects/CMakeLists.txt 2013-06-06 20:05:05 UTC (rev 12370) @@ -26,11 +26,6 @@ cmake_minimum_required(VERSION 2.8.10.2 FATAL_ERROR) -# Use modified version of ExternalProject where cmake -E touch has -# been replaced with the touch command (to work around cmake bug 14020) -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}) -include(ExternalProject) - set(EP_BASE ${CMAKE_BINARY_DIR}/build_projects) message(STATUS "EP_BASE = ${EP_BASE}") set_directory_properties(PROPERTIES EP_BASE ${EP_BASE}) @@ -48,14 +43,13 @@ # making sure unzip (necessary for some build configurations to unpack # their packages) is installed (using mingw-get). -set(MSYS_PLATFORM) find_program(MINGW_GET_EXECUTABLE mingw-get) -if(MINGW_GET_EXECUTABLE) - find_program(BASH_EXECUTABLE bash) - if(BASH_EXECUTABLE) - set(MSYS_PLATFORM ON) - endif(BASH_EXECUTABLE) -endif(MINGW_GET_EXECUTABLE) +find_program(BASH_EXECUTABLE bash) +if(MINGW_GET_EXECUTABLE AND BASH_EXECUTABLE) + set(MSYS_PLATFORM ON) +else(MINGW_GET_EXECUTABLE AND BASH_EXECUTABLE) + set(MSYS_PLATFORM OFF) +endif(MINGW_GET_EXECUTABLE AND BASH_EXECUTABLE) message(STATUS "WIN32 = ${WIN32}") message(STATUS "MINGW = ${MINGW}") message(STATUS "MSYS = ${MSYS}") @@ -70,14 +64,41 @@ message(FATAL_ERROR "build_projects does not work correctly on Windows without the MSYS platform. Install the MSYS platform (perhaps without sh.exe depending on CMake generator) on Windows.") endif(WIN32 AND NOT MSYS_PLATFORM) -find_program(UNZIP_EXECUTABLE unzip) -if(NOT UNZIP_EXECUTABLE) - if(MSYS_PLATFORM) - message(STATUS "unzip missing from your MSYS platform. Use mingw-get to install it.") - endif(MSYS_PLATFORM) - message(FATAL_ERROR "unzip must be on your PATH in order for build_projects to work correctly") -endif(NOT UNZIP_EXECUTABLE) +# List of executables required by build_projects CMake logic. +set(executables_LIST + # ExternalProject + touch + # Unpacking + unzip + # Updating + mkdir + cp + patch + # General + env + # Not specifically required by build_projects (yet), but some + # individual project configurations will not work unless this is + # available so might as well check it here. + bash + ) +foreach(executable ${executables_LIST}) + string(TOUPPER ${executable} EXECUTABLE) + find_program(${EXECUTABLE}_EXECUTABLE ${executable}) + if(NOT ${EXECUTABLE}_EXECUTABLE) + if(MSYS_PLATFORM) + message(STATUS "${executable} missing from your MSYS platform. Use mingw-get to install it.") + endif(MSYS_PLATFORM) + message(FATAL_ERROR "${executable} must be on your PATH in order for build_projects to work correctly") + endif(NOT ${EXECUTABLE}_EXECUTABLE) +endforeach(executable ${executables_LIST}) + +# Use modified version of ExternalProject where cmake -E touch has +# been replaced with the TOUCH_EXECUTABLE command (to work around +# cmake bug 14020) +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}) Modified: trunk/cmake/build_projects/ExternalProject.cmake =================================================================== --- trunk/cmake/build_projects/ExternalProject.cmake 2013-06-06 15:09:05 UTC (rev 12369) +++ trunk/cmake/build_projects/ExternalProject.cmake 2013-06-06 20:05:05 UTC (rev 12370) @@ -1020,7 +1020,7 @@ set_property(SOURCE ${stamp_file} PROPERTY SYMBOLIC 1) set(touch) else() - set(touch touch ${stamp_file}) + set(touch ${TOUCH_EXECUTABLE} ${stamp_file}) endif() # Wrap with log script? @@ -1676,8 +1676,8 @@ OUTPUT ${complete_outputs} COMMENT "Completed '${name}'" COMMAND ${CMAKE_COMMAND} -E make_directory ${cmf_dir}${cfgdir} - COMMAND touch ${complete_stamp_file} - COMMAND touch ${done_stamp_file} + COMMAND ${TOUCH_EXECUTABLE} ${complete_stamp_file} + COMMAND ${TOUCH_EXECUTABLE} ${done_stamp_file} DEPENDS ${install_stamp_file} VERBATIM ) Modified: trunk/cmake/build_projects/libagg/ep.cmake =================================================================== --- trunk/cmake/build_projects/libagg/ep.cmake 2013-06-06 15:09:05 UTC (rev 12369) +++ trunk/cmake/build_projects/libagg/ep.cmake 2013-06-06 20:05:05 UTC (rev 12370) @@ -40,7 +40,7 @@ build_libagg URL ${libagg_URL} URL_MD5 ${libagg_URL_MD5} - CONFIGURE_COMMAND env PATH=${BP_PATH} ${BP_CMAKE_COMMAND} ${EP_BASE}/Source/build_libagg + CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} ${EP_BASE}/Source/build_libagg BUILD_COMMAND ${BP_PARALLEL_BUILD_COMMAND} INSTALL_COMMAND ${BP_PARALLEL_BUILD_COMMAND} install STEP_TARGETS download update_build_system configure build install @@ -51,8 +51,9 @@ add_custom_command( OUTPUT ${EP_BASE}/Source/build_libagg/CMakeLists.txt - COMMAND cp -f ${CMAKE_SOURCE_DIR}/libagg/CMakeLists.txt - ${EP_BASE}/Source/build_libagg + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/libagg/CMakeLists.txt + ${EP_BASE}/Source/build_libagg/CMakeLists.txt COMMENT "Updating of libagg build system" DEPENDS ${CMAKE_SOURCE_DIR}/libagg/CMakeLists.txt Modified: trunk/cmake/build_projects/libharu/ep.cmake =================================================================== --- trunk/cmake/build_projects/libharu/ep.cmake 2013-06-06 15:09:05 UTC (rev 12369) +++ trunk/cmake/build_projects/libharu/ep.cmake 2013-06-06 20:05:05 UTC (rev 12370) @@ -43,7 +43,7 @@ # 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 # -DLIBHARU_EXAMPLES=ON builds the demos, but does not test them. - CONFIGURE_COMMAND env PATH=${BP_PATH} ${BP_CMAKE_COMMAND} -DPOST_2.1.0=OFF -DLIBHARU_EXAMPLES=ON ${EP_BASE}/Source/build_libharu + CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} -DPOST_2.1.0=OFF -DLIBHARU_EXAMPLES=ON ${EP_BASE}/Source/build_libharu BUILD_COMMAND ${BP_PARALLEL_BUILD_COMMAND} INSTALL_COMMAND ${BP_PARALLEL_BUILD_COMMAND} install STEP_TARGETS download update_build_system configure build install test @@ -65,28 +65,38 @@ ${EP_BASE}/Source/build_libharu/include/CMakeLists.txt # File that is patched. ${EP_BASE}/Source/build_libharu/src/hpdf_streams.c - COMMAND mkdir -p ${EP_BASE}/Source/build_libharu/cmake/modules - COMMAND cp -f + COMMAND ${CMAKE_COMMAND} -E make_directory ${EP_BASE}/Source/build_libharu/cmake/modules + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/CMakeLists.txt - ${EP_BASE}/Source/build_libharu - COMMAND cp -f + ${EP_BASE}/Source/build_libharu/CMakeLists.txt + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/demo/CMakeLists.txt - ${EP_BASE}/Source/build_libharu/demo - COMMAND cp -f + ${EP_BASE}/Source/build_libharu/demo/CMakeLists.txt + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/src/hpdf_page_operator.c + ${EP_BASE}/Source/build_libharu/src/hpdf_page_operator.c + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/src/CMakeLists.txt - ${EP_BASE}/Source/build_libharu/src - COMMAND cp -f + ${EP_BASE}/Source/build_libharu/src/CMakeLists.txt + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/cmake/modules/haru.cmake + ${EP_BASE}/Source/build_libharu/cmake/modules/haru.cmake + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/cmake/modules/summary.cmake - ${EP_BASE}/Source/build_libharu/cmake/modules - COMMAND cp -f + ${EP_BASE}/Source/build_libharu/cmake/modules/summary.cmake + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/include/hpdf_consts.h + ${EP_BASE}/Source/build_libharu/include/hpdf_consts.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/include/hpdf_config.h.cmake + ${EP_BASE}/Source/build_libharu/include/hpdf_config.h.cmake + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/include/hpdf.h + ${EP_BASE}/Source/build_libharu/include/hpdf.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libharu/include/CMakeLists.txt - ${EP_BASE}/Source/build_libharu/include - COMMAND patch -d ${EP_BASE}/Source/build_libharu -p1 < ${CMAKE_SOURCE_DIR}/libharu/include_hpdf_config.h.patch + ${EP_BASE}/Source/build_libharu/include/CMakeLists.txt + COMMAND ${PATCH_EXECUTABLE} -d ${EP_BASE}/Source/build_libharu -p1 < ${CMAKE_SOURCE_DIR}/libharu/include_hpdf_config.h.patch COMMENT "Updating of libharu build system" DEPENDS ${CMAKE_SOURCE_DIR}/libharu/CMakeLists.txt Modified: trunk/cmake/build_projects/libqhull/ep.cmake =================================================================== --- trunk/cmake/build_projects/libqhull/ep.cmake 2013-06-06 15:09:05 UTC (rev 12369) +++ trunk/cmake/build_projects/libqhull/ep.cmake 2013-06-06 20:05:05 UTC (rev 12370) @@ -40,7 +40,7 @@ build_libqhull URL ${libqhull_URL} URL_MD5 ${libqhull_URL_MD5} - CONFIGURE_COMMAND env PATH=${BP_PATH} ${BP_CMAKE_COMMAND} ${EP_BASE}/Source/build_libqhull + CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} ${EP_BASE}/Source/build_libqhull BUILD_COMMAND ${BP_PARALLEL_BUILD_COMMAND} INSTALL_COMMAND ${BP_PARALLEL_BUILD_COMMAND} install STEP_TARGETS download update_build_system configure build install test @@ -55,8 +55,21 @@ ${EP_BASE}/Source/build_libqhull/src/libqhull.h ${EP_BASE}/Source/build_libqhull/src/mem.h ${EP_BASE}/Source/build_libqhull/src/unix.c - COMMAND cp -f ${CMAKE_SOURCE_DIR}/libqhull/CMakeLists.txt ${EP_BASE}/Source/build_libqhull - COMMAND cp -f ${CMAKE_SOURCE_DIR}/libqhull/src/CMakeLists.txt ${CMAKE_SOURCE_DIR}/libqhull/src/libqhull.h ${CMAKE_SOURCE_DIR}/libqhull/src/mem.h ${CMAKE_SOURCE_DIR}/libqhull/src/unix.c ${EP_BASE}/Source/build_libqhull/src + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/libqhull/CMakeLists.txt + ${EP_BASE}/Source/build_libqhull/CMakeLists.txt + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/libqhull/src/CMakeLists.txt + ${EP_BASE}/Source/build_libqhull/src/CMakeLists.txt + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/libqhull/src/libqhull.h + ${EP_BASE}/Source/build_libqhull/src/libqhull.h + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/libqhull/src/mem.h + ${EP_BASE}/Source/build_libqhull/src/mem.h + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/libqhull/src/unix.c + ${EP_BASE}/Source/build_libqhull/src/unix.c COMMENT "Updating of libqhull build system" DEPENDS ${CMAKE_SOURCE_DIR}/libqhull/CMakeLists.txt Modified: trunk/cmake/build_projects/ndiff/ep.cmake =================================================================== --- trunk/cmake/build_projects/ndiff/ep.cmake 2013-06-06 15:09:05 UTC (rev 12369) +++ trunk/cmake/build_projects/ndiff/ep.cmake 2013-06-06 20:05:05 UTC (rev 12370) @@ -44,7 +44,7 @@ build_ndiff URL ${ndiff_URL} URL_MD5 ${ndiff_URL_MD5} - CONFIGURE_COMMAND env PATH=${BP_PATH} ${BP_CMAKE_COMMAND} ${EP_BASE}/Source/build_ndiff + CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} ${EP_BASE}/Source/build_ndiff BUILD_COMMAND ${BP_PARALLEL_BUILD_COMMAND} TEST_BEFORE_INSTALL ON TEST_COMMAND ${BP_PARALLEL_CTEST_COMMAND} @@ -58,7 +58,12 @@ OUTPUT ${EP_BASE}/Source/build_ndiff/CMakeLists.txt ${EP_BASE}/Source/build_ndiff/config.h.cmake - COMMAND cp -f ${CMAKE_SOURCE_DIR}/ndiff/CMakeLists.txt ${CMAKE_SOURCE_DIR}/ndiff/config.h.cmake ${EP_BASE}/Source/build_ndiff + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/ndiff/CMakeLists.txt + ${EP_BASE}/Source/build_ndiff/CMakeLists.txt + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/ndiff/config.h.cmake + ${EP_BASE}/Source/build_ndiff/config.h.cmake COMMENT "Updating of ndiff build system" DEPENDS ${CMAKE_SOURCE_DIR}/ndiff/CMakeLists.txt Modified: trunk/cmake/build_projects/plplot/ep.cmake =================================================================== --- trunk/cmake/build_projects/plplot/ep.cmake 2013-06-06 15:09:05 UTC (rev 12369) +++ trunk/cmake/build_projects/plplot/ep.cmake 2013-06-06 20:05:05 UTC (rev 12370) @@ -1,3 +1,28 @@ +# plplot/ep.cmake +# This file should be included directly or indirectly from a top-level +# CMakeLists.txt file to configure the build and test of PLplot. + +# Copyright (C) 2013 Alan W. Irwin + +# This file is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with this file; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# The top-level CMakeLists.txt file that includes this file should +# have run "include(ExternalProject)" and set EP_BASE variable (and +# corresponding directory property) as well as various BP variables +# used below that configure how the External_Project functions +# operate. # Configure build of PLplot dependencies. include(shapelib/ep.cmake) Modified: trunk/cmake/build_projects/shapelib/ep.cmake =================================================================== --- trunk/cmake/build_projects/shapelib/ep.cmake 2013-06-06 15:09:05 UTC (rev 12369) +++ trunk/cmake/build_projects/shapelib/ep.cmake 2013-06-06 20:05:05 UTC (rev 12370) @@ -43,11 +43,11 @@ build_shapelib URL ${shapelib_URL} URL_MD5 ${shapelib_URL_MD5} - CONFIGURE_COMMAND env PATH=${BP_PATH} ${BP_CMAKE_COMMAND} -DEG_DATA:PATH=${EP_BASE}/Source/build_shapelib/eg_data ${EP_BASE}/Source/build_shapelib - BUILD_COMMAND env PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} + CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_CMAKE_COMMAND} -DEG_DATA:PATH=${EP_BASE}/Source/build_shapelib/eg_data ${EP_BASE}/Source/build_shapelib + BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} TEST_BEFORE_INSTALL ON - TEST_COMMAND env PATH=${BP_PATH} ${BP_PARALLEL_CTEST_COMMAND} - INSTALL_COMMAND env PATH=${BP_PATH} ${BP_PARALLEL_BUILD_COMMAND} install + 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 ) @@ -56,7 +56,9 @@ add_custom_command( OUTPUT ${EP_BASE}/Source/build_shapelib/CMakeLists.txt - COMMAND cp -f ${CMAKE_SOURCE_DIR}/shapelib/CMakeLists.txt ${EP_BASE}/Source/build_shapelib + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/shapelib/CMakeLists.txt + ${EP_BASE}/Source/build_shapelib/CMakeLists.txt COMMENT "Updating of shapelib build system" DEPENDS ${CMAKE_SOURCE_DIR}/shapelib/CMakeLists.txt @@ -75,7 +77,7 @@ ${EP_BASE}/Download/build_shapelib/shape_eg_data.zip COMMAND ${CMAKE_COMMAND} -DURL:STRING=${shape_eg_data_URL} -DFILE:FILEPATH=${EP_BASE}/Download/build_shapelib/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_shapelib/eg_data - COMMAND unzip -q ${EP_BASE}/Download/build_shapelib/shape_eg_data.zip -d ${EP_BASE}/Source/build_shapelib/eg_data + COMMAND ${UNZIP_EXECUTABLE} -q ${EP_BASE}/Download/build_shapelib/shape_eg_data.zip -d ${EP_BASE}/Source/build_shapelib/eg_data COMMENT "getting eg_data for shapelib test" ) ExternalProject_Add_Step(build_shapelib get_eg_data This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |