|
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.
|