| 
      
      
      From: <ai...@us...> - 2013-12-05 10:48:53
      
     | 
| Revision: 12812
          http://sourceforge.net/p/plplot/code/12812
Author:   airwin
Date:     2013-12-05 10:48:48 +0000 (Thu, 05 Dec 2013)
Log Message:
-----------
Commit the changes to move to the new "add_subdirectory" paradigm for
epa_build.
Tested by Alan W. Irwin <ai...@us...> on Linux
using the epa_build -DBUILD_THE_BUILDTOOLS=ON cmake option and
the build_all target (which built and installed cmake, pkg-config, swig, libpcre,
tk(8.6), tcl(8.6), itk(4.0), iwidgets(4.1.0), itcl3(3.4), itk3(3.3), and
iwidgets4.0(4.0.1) without issues in just 11.5 minutes.
N.B. the more normal epa_build with -DBUILD_THE_BUILDTOOLS=OFF (which
builds PLplot and its normal dependencies using the above build tools)
has not been tested yet, and there are presumably a few minor issues
still to straighten out for that case.
Modified Paths:
--------------
    trunk/cmake/epa_build/CMakeLists.txt
    trunk/cmake/epa_build/cairo/CMakeLists.txt
    trunk/cmake/epa_build/cmake/CMakeLists.txt
    trunk/cmake/epa_build/docbook-xml/CMakeLists.txt
    trunk/cmake/epa_build/docbook-xsl/CMakeLists.txt
    trunk/cmake/epa_build/epa_CMakeLists.txt.in
    trunk/cmake/epa_build/fontconfig/CMakeLists.txt
    trunk/cmake/epa_build/glib/CMakeLists.txt
    trunk/cmake/epa_build/gobject-introspection/CMakeLists.txt
    trunk/cmake/epa_build/gperf/CMakeLists.txt
    trunk/cmake/epa_build/gtk-doc/CMakeLists.txt
    trunk/cmake/epa_build/harfbuzz/CMakeLists.txt
    trunk/cmake/epa_build/intltool/CMakeLists.txt
    trunk/cmake/epa_build/itcl3/CMakeLists.txt
    trunk/cmake/epa_build/itk/CMakeLists.txt
    trunk/cmake/epa_build/itk3/CMakeLists.txt
    trunk/cmake/epa_build/itstool/CMakeLists.txt
    trunk/cmake/epa_build/iwidgets/CMakeLists.txt
    trunk/cmake/epa_build/libagg/CMakeLists.txt
    trunk/cmake/epa_build/libffi/CMakeLists.txt
    trunk/cmake/epa_build/libharu/CMakeLists.txt
    trunk/cmake/epa_build/libpcre/CMakeLists.txt
    trunk/cmake/epa_build/libqhull/CMakeLists.txt
    trunk/cmake/epa_build/libxml2/CMakeLists.txt
    trunk/cmake/epa_build/libxslt/CMakeLists.txt
    trunk/cmake/epa_build/ndiff/CMakeLists.txt
    trunk/cmake/epa_build/pango/CMakeLists.txt
    trunk/cmake/epa_build/pixman/CMakeLists.txt
    trunk/cmake/epa_build/pkg-config/CMakeLists.txt
    trunk/cmake/epa_build/plplot/CMakeLists.txt
    trunk/cmake/epa_build/ragel/CMakeLists.txt
    trunk/cmake/epa_build/shapelib/CMakeLists.txt
    trunk/cmake/epa_build/subversion/CMakeLists.txt
    trunk/cmake/epa_build/swig/CMakeLists.txt
    trunk/cmake/epa_build/tcl/CMakeLists.txt
    trunk/cmake/epa_build/wxwidgets/CMakeLists.txt
    trunk/cmake/epa_build/xmlcatalog-wrapper/CMakeLists.txt
    trunk/cmake/epa_build/yelp-tools/CMakeLists.txt
    trunk/cmake/epa_build/yelp-xsl/CMakeLists.txt
Added Paths:
-----------
    trunk/cmake/epa_build/iwidgets4.0/
    trunk/cmake/epa_build/iwidgets4.0/CMakeLists.txt
    trunk/cmake/epa_build/plplot_lite/
    trunk/cmake/epa_build/plplot_lite/CMakeLists.txt
Modified: trunk/cmake/epa_build/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -351,21 +351,22 @@
   endforeach(executable ${executables_LIST})
 
   set(subdirectories_LIST
-    ##cmake
-    #pkg-config
+    cmake
+    pkg-config
     ##subversion
-    #swig
+    swig
     tk
     # itcl version 4 is integrated into tcl
     # itk version 4 is not integrated into tk (or tcl).
-    #itk
+    itk
+    # iwidgets (version 4.1.0)
+    iwidgets
     # itcl version 3 is an independent project
-    #itcl3
+    itcl3
     # itk version 3 is an independent project
-    #itk3
-    # iwidgets subdirectory contains build configurations for both
-    # iwidgets (version 4.1) and iwidgets4.0 (version 4.0).
-    #iwidgets
+    itk3
+    # iwidgets (version 4.0.1)
+    iwidgets4.0
     )
 else(BUILD_THE_BUILDTOOLS)
   # List of all configurations.  Order doesn't matter because multiple
@@ -373,6 +374,7 @@
   set(subdirectories_LIST
     ndiff
     #plplot
+    #plplot_lite
     #wxwidgets
     #pango
     )
@@ -384,11 +386,17 @@
 
 message(STATUS "DEBUG: subdirectories_LIST = ${subdirectories_LIST}")
 
-# Use while loop because each add_subdirectory command can generate others
+# Using a while loop seems obvious here
+# because each add_subdirectory command can generate others
 # so that several elements of the subdirectories list could be knocked
-# off per loop iteration.
+# off per loop iteration.  However, that is not a good idea in
+# practice because it turns out that fatal CMake errors don't stop the
+# loop (which I presume is a bug) so it just continues indefinitely.  Ugh!
+# So use foreach RANGE loop instead with maximum number of loop
+# interations equal to LENGTH_subdirectories_LIST and break out of it 
+# early if necessary if the subdirectories_LIST has become exhausted.
 list(LENGTH subdirectories_LIST LENGTH_subdirectories_LIST)
-while(LENGTH_subdirectories_LIST GREATER 0)
+foreach(idummy RANGE ${LENGTH_subdirectories_LIST})
   list(GET subdirectories_LIST 0 subdirectory)
   # This uses EPA_started_subdirectories_LIST internally to check for
   # circular dependencies, and updates EPA_finished_subdirectories_LIST
@@ -399,7 +407,10 @@
   message(STATUS "DEBUG: visited ${subdirectory}")
   message(STATUS "DEBUG: subdirectories_LIST = ${subdirectories_LIST}")
   list(LENGTH subdirectories_LIST LENGTH_subdirectories_LIST)
-endwhile(LENGTH_subdirectories_LIST GREATER 0)
+  if(LENGTH_subdirectories_LIST EQUAL 0)
+    break()
+  endif(LENGTH_subdirectories_LIST EQUAL 0)
+endforeach(idummy RANGE ${LENGTH_subdirectories_LIST})
 
 add_custom_target(build_all)
 get_property(build_targets_LIST GLOBAL PROPERTY EPA_build_targets_LIST)
Modified: trunk/cmake/epa_build/cairo/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/cairo/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/cairo/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,4 +1,7 @@
 # cairo/CMakeLists.txt
+
+# Configure the build of cairo.
+
 # N.B. this file is generated so if you edit it you will lose all your
 # changes the next time it is generated (typically by running
 # either/both the update_added_packages.sh or update_pango_packages.sh
@@ -6,10 +9,6 @@
 # consider changing their source files (e.g., by editing the files
 # used in those scripts) or add a patch to be run by those scripts.
 
-# The CMake logic in this file should be exercised by the
-# add_subdirectory command that is exercised in the top-level
-# CMakeLists.txt file to configure the build of cairo.
-
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -26,12 +25,6 @@
 # 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 adds this subdirectory should
-# have run "include(ExternalProject)" and set the EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
-
 set(PACKAGE cairo)
 
 # List of dependencies (most of which are build tools) which should be
@@ -39,66 +32,44 @@
 set(ignored_dependencies_LIST pkg-config;bison;flex;python2-devel;libXft ${extra_ignored_dependencies_list})
 
 set(dependencies_LIST fontconfig;gtk-doc;pixman;pkg-config)
-# Remove dependencies that should be ignored.
-if(dependencies_LIST)
-  list(REMOVE_ITEM dependencies_LIST ${ignored_dependencies_LIST})
-endif(dependencies_LIST)
 
-# Add this subdirectory to the list of subdirectories that have
-# already been processed by the top-level CMakeLists.txt logic.
-list(APPEND EPA_processed_subdirectories_LIST ${PACKAGE})
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  ) 
 
-set(dependencies_targets)
-foreach(build_configuration ${dependencies_LIST})
-  if(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    # Add to the list of subdirectories that must be processed by the
-    # top-level CMakeLists.txt logic.
-    list(APPEND EPA_needed_subdirectories_LIST ${build_configuration})
-    list(APPEND dependencies_targets build_${build_configuration})
-  else(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    message(STATUS "Warning: A build_configuration for ${build_configuration} does not exist so it is assumed this dependency of ${PACKAGE} has been installed on your platform by means other than epa_build.")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-endforeach(build_configuration ${dependences_LIST})
-
-list(APPEND EPA_build_target_LIST build_${PACKAGE})
-
-# Propagate list changes to parent scope.
-set(EPA_build_target_LIST ${EPA_build_target_LIST} PARENT_SCOPE)
-set(EPA_processed_subdirectories_LIST ${EPA_processed_subdirectories_LIST} PARENT_SCOPE)
-set(EPA_needed_subdirectories_LIST ${EPA_needed_subdirectories_LIST} PARENT_SCOPE)
-
-# Data that is related to downloads.
-set(URL http://cairographics.org/releases/cairo-1.12.14.tar.xz)
-set(DOWNLOAD_HASH_TYPE SHA256)
-set(DOWNLOAD_HASH 96d0d1e3f9b74d2ca3469ff187c5e5f25649b1ad35cf06f4f3a83847dff4ac13)
-
-# Data that is related to the PATH that must be used.
 if(MSYS_PLATFORM)
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  # Must have all elements of env command in MSYS platform form
-  determine_msys_path(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 else(MSYS_PLATFORM)
-  set(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
 
-set(SET_CXXFLAGS "CXXFLAGS=$ENV{CXXFLAGS}")
+set(CXXFLAGS "$ENV{CXXFLAGS}")
 
 # Drop -fvisibility=hidden since that option does not work for a
 # number of software packages that are configured automatically using
 # this template.
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CFLAGS "${SET_CFLAGS}")
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CXXFLAGS "${SET_CXXFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CFLAGS "${CFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CXXFLAGS "${CXXFLAGS}")
 
+# Data that is related to downloads.
+set(URL http://cairographics.org/releases/cairo-1.12.14.tar.xz)
+set(DOWNLOAD_HASH_TYPE SHA256)
+set(DOWNLOAD_HASH 96d0d1e3f9b74d2ca3469ff187c5e5f25649b1ad35cf06f4f3a83847dff4ac13)
+
 ExternalProject_Add(
   build_${PACKAGE}
   DEPENDS ${dependencies_targets}
   URL ${URL}
   URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
-  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${SET_CFLAGS} ${SET_CXXFLAGS} ${source_PATH}/${EPA_CONFIGURE_COMMAND} --enable-xlib
-  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND} 
+  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} "CFLAGS=${CFLAGS}" "CXXFLAGS=${CXXFLAGS}" ${source_PATH}/${EPA_CONFIGURE_COMMAND} --enable-xlib
+  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND} 
   BUILD_IN_SOURCE OFF
-  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND}  install
+  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND}  install
   )
Modified: trunk/cmake/epa_build/cmake/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/cmake/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/cmake/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,7 +1,7 @@
 # cmake/CMakeLists.txt
-# This file should be included directly or indirectly from a top-level
-# CMakeLists.txt file to configure the build of cmake.
 
+# Configure the build of cmake.
+
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -18,47 +18,59 @@
 # 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 EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
+# An external curl library (see --system-curl option below) is
+# required to build cmake because the cmake internal version of curl
+# is quite lame (no openssl capability, for example).  Also, we
+# haven't yet implemented a curl epa_build configuration because that
+# is going to be somewhat difficult due to the large number of
+# dependencies.  See
+# http://www.linuxfromscratch.org/blfs/view/svn/basicnet/curl.html for
+# a list of those dependencies.  There is some hope because
+# some of those are optional so I may tackle the curl epa_build configuration
+# sooner rather than later.
 
+# For now we are okay on Linux because we can just use the system curl
+# library for the cmake build, but on Windows it is unlikely curl is
+# installed so we will be unable to build a powerful cmake (until a
+# curl epa_build configuration is available).  Note, if the Windows
+# build of cmake fails, then either install curl (if that is possible)
+# or use the workaround of downloading a binary download from kitware
+# that apparently does use a powerful Windows version of curl.
+
 set(PACKAGE cmake)
 
-# Protect against configuring a build twice in one CMake call
-if(configured)
-  return()
-endif(configured)
-set(configured ON)
+# List of dependencies (most of which are build tools) which should be
+# ignored.
+set(ignored_dependencies_LIST curl ${extra_ignored_dependencies_list})
 
+set(dependencies_LIST curl)
+
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  )
+
+set(CFLAGS "$ENV{CFLAGS}")
+set(CXXFLAGS "$ENV{CXXFLAGS}")
+
 # Data that is related to downloads.
-set(EPA_CMAKE_DIR v2.8)
-set(EPA_CMAKE_VERSION 2.8.11.1)
-set(URL http://www.cmake.org/files/${EPA_CMAKE_DIR}/cmake-${EPA_CMAKE_VERSION}.tar.gz)
-set(URL_MD5 df5324a3b203373a9e0a04b924281a43)
+set(DIR v2.8)
+set(VERSION 2.8.12.1)
+set(URL http://www.cmake.org/files/${DIR}/cmake-${VERSION}.tar.gz)
+set(DOWNLOAD_HASH_TYPE MD5)
+set(DOWNLOAD_HASH 9d38cd4e2c94c3cea97d0e2924814acc)
 
-# Data that is related to the PATH that must be used.
-if(MSYS_PLATFORM)
-  set(EPA_PATH_NODLL "${EPA_PATH}")
-  set(EPA_PATH "${EPA_BASE}/Build/build_${PACKAGE}/dll;${EPA_PATH_NODLL}")
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  determine_msys_path(${PACKAGE}_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-else(MSYS_PLATFORM)
-  set(${PACKAGE}_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
-
 ExternalProject_Add(
   build_${PACKAGE}
   URL ${URL}
-  URL_MD5 ${URL_MD5}
-  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} CFLAGS=-O3 CXXFLAGS=-O3 ${SH_EXECUTABLE} ${EPA_BASE}/Source/build_${PACKAGE}/bootstrap --prefix=${${PACKAGE}_INSTALL_PREFIX} --parallel=8
+  URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
+  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} "CFLAGS=${CFLAGS}" "CXXFLAGS=${CXXFLAGS}" ${SH_EXECUTABLE} ${EPA_BASE}/Source/build_${PACKAGE}/bootstrap --prefix=${EPA_CMAKE_INSTALL_PREFIX} --parallel=8 --verbose --system-curl --no-qt-gui
   BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_BUILD_COMMAND}
   INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_BUILD_COMMAND} install
   )
-
-list(APPEND build_target_LIST build_${PACKAGE})
-# Restore EPA_PATH to original state.
-set(EPA_PATH "${EPA_ORIGINAL_NATIVE_PATH}")
-#message(STATUS "${PACKAGE} restored original EPA_PATH = ${EPA_PATH}")
Modified: trunk/cmake/epa_build/docbook-xml/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/docbook-xml/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/docbook-xml/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,7 +1,7 @@
 # docbook-xml/CMakeLists.txt
-# This file should be included directly or indirectly from a top-level
-# CMakeLists.txt file to configure the build of docbook-xml.
 
+# Configure the build of docbook-xml.
+
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -18,65 +18,36 @@
 # 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 EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
 
-# Protect against configuring a build twice in one CMake call
-if(docbook-xml_configured)
-  return()
-endif(docbook-xml_configured)
-set(docbook-xml_configured ON)
+set(PACKAGE docbook-xml)
 
 # List of dependencies (most of which are build tools) which should be
 # ignored.
-set(EPA_ignored_dependencies_LIST pkg-config;bison;flex;python2-devel;libXft ${extra_ignored_dependencies_list})
+set(ignored_dependencies_LIST ${extra_ignored_dependencies_list})
 
-set(docbook-xml_dependencies_LIST libxml2)
-# Remove dependencies that should be ignored.
-if(docbook-xml_dependencies_LIST)
-  list(REMOVE_ITEM docbook-xml_dependencies_LIST ${EPA_ignored_dependencies_LIST})
-endif(docbook-xml_dependencies_LIST)
+set(dependencies_LIST libxml2)
 
-set(docbook-xml_dependencies_targets)
-foreach(build_configuration ${docbook-xml_dependencies_LIST})
-  if(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    include(${build_configuration}/CMakeLists.txt)
-    list(APPEND docbook-xml_dependencies_targets build_${build_configuration})
-  else(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    message(STATUS "Warning: A build_configuration for ${build_configuration} does not exist so it is assumed this dependency of docbook-xml has been installed another way.")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-endforeach(build_configuration ${docbook-xml_dependences_LIST})
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  ) 
 
-# This can be safely done only after above includes.
-set(PACKAGE docbook-xml)
-
 # Data that is related to downloads.
 set(URL http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip)
-set(${PACKAGE}_DOWNLOAD_HASH_TYPE MD5)
-set(${PACKAGE}_DOWNLOAD_HASH 03083e288e87a7e829e437358da7ef9e)
+set(DOWNLOAD_HASH_TYPE MD5)
+set(DOWNLOAD_HASH 03083e288e87a7e829e437358da7ef9e)
 
-# Data that is related to the PATH that must be used.
-if(MSYS_PLATFORM)
-  #set(EPA_PATH_NODLL "${EPA_PATH}")
-  #set(EPA_PATH "${EPA_BASE}/Build/build_${PACKAGE}/dll;${EPA_PATH_NODLL}")
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  # Must have all elements of env command in MSYS platform form
-  determine_msys_path(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(${PACKAGE}_SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
-else(MSYS_PLATFORM)
-  set(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(${PACKAGE}_SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
-endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
-
 ExternalProject_Add(
   build_${PACKAGE}
-  DEPENDS ${${PACKAGE}_dependencies_targets}
+  DEPENDS ${dependencies_targets}
   URL ${URL}
-  URL_HASH ${${PACKAGE}_DOWNLOAD_HASH_TYPE}=${${PACKAGE}_DOWNLOAD_HASH}
+  URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
   CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_CMAKE_COMMAND} ${EPA_BASE}/Source/build_${PACKAGE}
   BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_BUILD_COMMAND}
   BUILD_IN_SOURCE OFF
@@ -95,8 +66,3 @@
   ${CMAKE_SOURCE_DIR}/${PACKAGE}/${PACKAGE}_CMakeLists.txt
   APPEND
   )
-
-list(APPEND build_target_LIST build_${PACKAGE})
-# Restore EPA_PATH to original state.
-set(EPA_PATH "${EPA_ORIGINAL_NATIVE_PATH}")
-#message(STATUS "${PACKAGE} restored original EPA_PATH = ${EPA_PATH}")
Modified: trunk/cmake/epa_build/docbook-xsl/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/docbook-xsl/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/docbook-xsl/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,7 +1,7 @@
 # docbook-xsl/CMakeLists.txt
-# This file should be included directly or indirectly from a top-level
-# CMakeLists.txt file to configure the build of docbook-xsl.
 
+# Configure the build of docbook-xsl.
+
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -18,65 +18,35 @@
 # 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 EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
+set(PACKAGE docbook-xsl)
 
-# Protect against configuring a build twice in one CMake call
-if(docbook-xsl_configured)
-  return()
-endif(docbook-xsl_configured)
-set(docbook-xsl_configured ON)
-
 # List of dependencies (most of which are build tools) which should be
 # ignored.
-set(EPA_ignored_dependencies_LIST pkg-config;bison;flex;python2-devel;libXft ${extra_ignored_dependencies_list})
+set(ignored_dependencies_LIST ${extra_ignored_dependencies_list})
 
-set(docbook-xsl_dependencies_LIST libxml2)
-# Remove dependencies that should be ignored.
-if(docbook-xsl_dependencies_LIST)
-  list(REMOVE_ITEM docbook-xsl_dependencies_LIST ${EPA_ignored_dependencies_LIST})
-endif(docbook-xsl_dependencies_LIST)
+set(dependencies_LIST libxml2)
 
-set(docbook-xsl_dependencies_targets)
-foreach(build_configuration ${docbook-xsl_dependencies_LIST})
-  if(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    include(${build_configuration}/CMakeLists.txt)
-    list(APPEND docbook-xsl_dependencies_targets build_${build_configuration})
-  else(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    message(STATUS "Warning: A build_configuration for ${build_configuration} does not exist so it is assumed this dependency of docbook-xsl has been installed another way.")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-endforeach(build_configuration ${docbook-xsl_dependences_LIST})
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  )
 
-# This can be safely done only after above includes.
-set(PACKAGE docbook-xsl)
-
 # Data that is related to downloads.
-set(URL  http://downloads.sourceforge.net/docbook/docbook-xsl-1.78.1.tar.bz2)
-set(${PACKAGE}_DOWNLOAD_HASH_TYPE MD5)
-set(${PACKAGE}_DOWNLOAD_HASH 6dd0f89131cc35bf4f2ed105a1c17771)
+set(URL http://downloads.sourceforge.net/docbook/docbook-xsl-1.78.1.tar.bz2)
+set(DOWNLOAD_HASH_TYPE MD5)
+set(DOWNLOAD_HASH 6dd0f89131cc35bf4f2ed105a1c17771)
 
-# Data that is related to the PATH that must be used.
-if(MSYS_PLATFORM)
-  #set(EPA_PATH_NODLL "${EPA_PATH}")
-  #set(EPA_PATH "${EPA_BASE}/Build/build_${PACKAGE}/dll;${EPA_PATH_NODLL}")
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  # Must have all elements of env command in MSYS platform form
-  determine_msys_path(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(${PACKAGE}_SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
-else(MSYS_PLATFORM)
-  set(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(${PACKAGE}_SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
-endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
-
 ExternalProject_Add(
   build_${PACKAGE}
-  DEPENDS ${${PACKAGE}_dependencies_targets}
+  DEPENDS ${dependencies_targets}
   URL ${URL}
-  URL_HASH ${${PACKAGE}_DOWNLOAD_HASH_TYPE}=${${PACKAGE}_DOWNLOAD_HASH}
+  URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
   CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_CMAKE_COMMAND} ${EPA_BASE}/Source/build_${PACKAGE}
   BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_BUILD_COMMAND}
   BUILD_IN_SOURCE OFF
@@ -95,8 +65,3 @@
   ${CMAKE_SOURCE_DIR}/${PACKAGE}/${PACKAGE}_CMakeLists.txt
   APPEND
   )
-
-list(APPEND build_target_LIST build_${PACKAGE})
-# Restore EPA_PATH to original state.
-set(EPA_PATH "${EPA_ORIGINAL_NATIVE_PATH}")
-#message(STATUS "${PACKAGE} restored original EPA_PATH = ${EPA_PATH}")
Modified: trunk/cmake/epa_build/epa_CMakeLists.txt.in
===================================================================
--- trunk/cmake/epa_build/epa_CMakeLists.txt.in	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/epa_CMakeLists.txt.in	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,4 +1,7 @@
 # @package@/CMakeLists.txt
+
+# Configure the build of @package@.
+
 # N.B. this file is generated so if you edit it you will lose all your
 # changes the next time it is generated (typically by running
 # either/both the update_added_packages.sh or update_pango_packages.sh
@@ -6,10 +9,6 @@
 # consider changing their source files (e.g., by editing the files
 # used in those scripts) or add a patch to be run by those scripts.
 
-# The CMake logic in this file should be exercised by the
-# add_subdirectory command that is exercised in the top-level
-# CMakeLists.txt file to configure the build of @package@.
-
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -26,12 +25,6 @@
 # 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 adds this subdirectory should
-# have run "include(ExternalProject)" and set the EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
-
 set(PACKAGE @package@)
 
 # List of dependencies (most of which are build tools) which should be
@@ -39,65 +32,43 @@
 set(ignored_dependencies_LIST @ignored_dependencies_LIST@ ${extra_ignored_dependencies_list})
 
 set(dependencies_LIST @dependencies@)
-# Remove dependencies that should be ignored.
-if(dependencies_LIST)
-  list(REMOVE_ITEM dependencies_LIST ${ignored_dependencies_LIST})
-endif(dependencies_LIST)
 
-# Add this subdirectory to the list of subdirectories that have
-# already been processed by the top-level CMakeLists.txt logic.
-list(APPEND EPA_processed_subdirectories_LIST ${PACKAGE})
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  ) 
 
-set(dependencies_targets)
-foreach(build_configuration ${dependencies_LIST})
-  if(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    # Add to the list of subdirectories that must be processed by the
-    # top-level CMakeLists.txt logic.
-    list(APPEND EPA_needed_subdirectories_LIST ${build_configuration})
-    list(APPEND dependencies_targets build_${build_configuration})
-  else(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    message(STATUS "Warning: A build_configuration for ${build_configuration} does not exist so it is assumed this dependency of ${PACKAGE} has been installed on your platform by means other than epa_build.")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-endforeach(build_configuration ${dependences_LIST})
-
-list(APPEND EPA_build_target_LIST build_${PACKAGE})
-
-# Propagate list changes to parent scope.
-set(EPA_build_target_LIST ${EPA_build_target_LIST} PARENT_SCOPE)
-set(EPA_processed_subdirectories_LIST ${EPA_processed_subdirectories_LIST} PARENT_SCOPE)
-set(EPA_needed_subdirectories_LIST ${EPA_needed_subdirectories_LIST} PARENT_SCOPE)
-
-# Data that is related to downloads.
-set(URL @download_href@)
-set(DOWNLOAD_HASH_TYPE @download_hash_type@)
-set(DOWNLOAD_HASH @download_hash@)
-
-# Data that is related to the PATH that must be used.
 if(MSYS_PLATFORM)
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  # Must have all elements of env command in MSYS platform form
-  determine_msys_path(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=@MSYS_EXTRA_CFLAGS@$ENV{CFLAGS}")
+  set(CFLAGS "@MSYS_EXTRA_CFLAGS@$ENV{CFLAGS}")
 else(MSYS_PLATFORM)
-  set(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=@UNIX_EXTRA_CFLAGS@$ENV{CFLAGS}")
+  set(CFLAGS "@UNIX_EXTRA_CFLAGS@$ENV{CFLAGS}")
 endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
 
-set(SET_CXXFLAGS "CXXFLAGS=$ENV{CXXFLAGS}")
+set(CXXFLAGS "$ENV{CXXFLAGS}")
 
 # Drop -fvisibility=hidden since that option does not work for a
 # number of software packages that are configured automatically using
 # this template.
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CFLAGS "${SET_CFLAGS}")
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CXXFLAGS "${SET_CXXFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CFLAGS "${CFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CXXFLAGS "${CXXFLAGS}")
 
+# Data that is related to downloads.
+set(URL @download_href@)
+set(DOWNLOAD_HASH_TYPE @download_hash_type@)
+set(DOWNLOAD_HASH @download_hash@)
+
 ExternalProject_Add(
   build_${PACKAGE}
   DEPENDS ${dependencies_targets}
   URL ${URL}
   URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
-  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${SET_CFLAGS} ${SET_CXXFLAGS} ${source_PATH}/${EPA_CONFIGURE_COMMAND} @config_arguments@
+  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} "CFLAGS=${CFLAGS}" "CXXFLAGS=${CXXFLAGS}" ${source_PATH}/${EPA_CONFIGURE_COMMAND} @config_arguments@
   BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${@BUILD_COMMAND@} @make_arguments@
   BUILD_IN_SOURCE @BUILD_IN_SOURCE@
   INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${@BUILD_COMMAND@} @make_arguments@ install
Modified: trunk/cmake/epa_build/fontconfig/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/fontconfig/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/fontconfig/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,4 +1,7 @@
 # fontconfig/CMakeLists.txt
+
+# Configure the build of fontconfig.
+
 # N.B. this file is generated so if you edit it you will lose all your
 # changes the next time it is generated (typically by running
 # either/both the update_added_packages.sh or update_pango_packages.sh
@@ -6,10 +9,6 @@
 # consider changing their source files (e.g., by editing the files
 # used in those scripts) or add a patch to be run by those scripts.
 
-# The CMake logic in this file should be exercised by the
-# add_subdirectory command that is exercised in the top-level
-# CMakeLists.txt file to configure the build of fontconfig.
-
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -26,12 +25,6 @@
 # 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 adds this subdirectory should
-# have run "include(ExternalProject)" and set the EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
-
 set(PACKAGE fontconfig)
 
 # List of dependencies (most of which are build tools) which should be
@@ -39,66 +32,44 @@
 set(ignored_dependencies_LIST pkg-config;bison;flex;python2-devel;libXft ${extra_ignored_dependencies_list})
 
 set(dependencies_LIST gperf)
-# Remove dependencies that should be ignored.
-if(dependencies_LIST)
-  list(REMOVE_ITEM dependencies_LIST ${ignored_dependencies_LIST})
-endif(dependencies_LIST)
 
-# Add this subdirectory to the list of subdirectories that have
-# already been processed by the top-level CMakeLists.txt logic.
-list(APPEND EPA_processed_subdirectories_LIST ${PACKAGE})
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  ) 
 
-set(dependencies_targets)
-foreach(build_configuration ${dependencies_LIST})
-  if(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    # Add to the list of subdirectories that must be processed by the
-    # top-level CMakeLists.txt logic.
-    list(APPEND EPA_needed_subdirectories_LIST ${build_configuration})
-    list(APPEND dependencies_targets build_${build_configuration})
-  else(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    message(STATUS "Warning: A build_configuration for ${build_configuration} does not exist so it is assumed this dependency of ${PACKAGE} has been installed on your platform by means other than epa_build.")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-endforeach(build_configuration ${dependences_LIST})
-
-list(APPEND EPA_build_target_LIST build_${PACKAGE})
-
-# Propagate list changes to parent scope.
-set(EPA_build_target_LIST ${EPA_build_target_LIST} PARENT_SCOPE)
-set(EPA_processed_subdirectories_LIST ${EPA_processed_subdirectories_LIST} PARENT_SCOPE)
-set(EPA_needed_subdirectories_LIST ${EPA_needed_subdirectories_LIST} PARENT_SCOPE)
-
-# Data that is related to downloads.
-set(URL http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.10.93.tar.bz2)
-set(DOWNLOAD_HASH_TYPE SHA256)
-set(DOWNLOAD_HASH ea901f278848829ed9937d76fb0ce63ad362d7d5b9e75aa6a6b78bfef42e529c)
-
-# Data that is related to the PATH that must be used.
 if(MSYS_PLATFORM)
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  # Must have all elements of env command in MSYS platform form
-  determine_msys_path(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 else(MSYS_PLATFORM)
-  set(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
 
-set(SET_CXXFLAGS "CXXFLAGS=$ENV{CXXFLAGS}")
+set(CXXFLAGS "$ENV{CXXFLAGS}")
 
 # Drop -fvisibility=hidden since that option does not work for a
 # number of software packages that are configured automatically using
 # this template.
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CFLAGS "${SET_CFLAGS}")
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CXXFLAGS "${SET_CXXFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CFLAGS "${CFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CXXFLAGS "${CXXFLAGS}")
 
+# Data that is related to downloads.
+set(URL http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.10.93.tar.bz2)
+set(DOWNLOAD_HASH_TYPE SHA256)
+set(DOWNLOAD_HASH ea901f278848829ed9937d76fb0ce63ad362d7d5b9e75aa6a6b78bfef42e529c)
+
 ExternalProject_Add(
   build_${PACKAGE}
   DEPENDS ${dependencies_targets}
   URL ${URL}
   URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
-  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${SET_CFLAGS} ${SET_CXXFLAGS} ${source_PATH}/${EPA_CONFIGURE_COMMAND} --disable-docs
-  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND} 
+  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} "CFLAGS=${CFLAGS}" "CXXFLAGS=${CXXFLAGS}" ${source_PATH}/${EPA_CONFIGURE_COMMAND} --disable-docs
+  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND} 
   BUILD_IN_SOURCE OFF
-  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND}  install
+  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND}  install
   )
Modified: trunk/cmake/epa_build/glib/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/glib/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/glib/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,4 +1,7 @@
 # glib/CMakeLists.txt
+
+# Configure the build of glib.
+
 # N.B. this file is generated so if you edit it you will lose all your
 # changes the next time it is generated (typically by running
 # either/both the update_added_packages.sh or update_pango_packages.sh
@@ -6,10 +9,6 @@
 # consider changing their source files (e.g., by editing the files
 # used in those scripts) or add a patch to be run by those scripts.
 
-# The CMake logic in this file should be exercised by the
-# add_subdirectory command that is exercised in the top-level
-# CMakeLists.txt file to configure the build of glib.
-
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -26,12 +25,6 @@
 # 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 adds this subdirectory should
-# have run "include(ExternalProject)" and set the EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
-
 set(PACKAGE glib)
 
 # List of dependencies (most of which are build tools) which should be
@@ -39,66 +32,44 @@
 set(ignored_dependencies_LIST pkg-config;bison;flex;python2-devel;libXft ${extra_ignored_dependencies_list})
 
 set(dependencies_LIST gtk-doc;libffi)
-# Remove dependencies that should be ignored.
-if(dependencies_LIST)
-  list(REMOVE_ITEM dependencies_LIST ${ignored_dependencies_LIST})
-endif(dependencies_LIST)
 
-# Add this subdirectory to the list of subdirectories that have
-# already been processed by the top-level CMakeLists.txt logic.
-list(APPEND EPA_processed_subdirectories_LIST ${PACKAGE})
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  ) 
 
-set(dependencies_targets)
-foreach(build_configuration ${dependencies_LIST})
-  if(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    # Add to the list of subdirectories that must be processed by the
-    # top-level CMakeLists.txt logic.
-    list(APPEND EPA_needed_subdirectories_LIST ${build_configuration})
-    list(APPEND dependencies_targets build_${build_configuration})
-  else(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    message(STATUS "Warning: A build_configuration for ${build_configuration} does not exist so it is assumed this dependency of ${PACKAGE} has been installed on your platform by means other than epa_build.")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-endforeach(build_configuration ${dependences_LIST})
-
-list(APPEND EPA_build_target_LIST build_${PACKAGE})
-
-# Propagate list changes to parent scope.
-set(EPA_build_target_LIST ${EPA_build_target_LIST} PARENT_SCOPE)
-set(EPA_processed_subdirectories_LIST ${EPA_processed_subdirectories_LIST} PARENT_SCOPE)
-set(EPA_needed_subdirectories_LIST ${EPA_needed_subdirectories_LIST} PARENT_SCOPE)
-
-# Data that is related to downloads.
-set(URL http://download.gnome.org/sources/glib/2.37/glib-2.37.4.tar.xz)
-set(DOWNLOAD_HASH_TYPE SHA256)
-set(DOWNLOAD_HASH 7e76a32e6ea0ced118aa64f87e46cdf5c3e90527f1f0eb93eabe42a03cebd1e7)
-
-# Data that is related to the PATH that must be used.
 if(MSYS_PLATFORM)
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  # Must have all elements of env command in MSYS platform form
-  determine_msys_path(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=-march=native $ENV{CFLAGS}")
+  set(CFLAGS "-march=native $ENV{CFLAGS}")
 else(MSYS_PLATFORM)
-  set(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
 
-set(SET_CXXFLAGS "CXXFLAGS=$ENV{CXXFLAGS}")
+set(CXXFLAGS "$ENV{CXXFLAGS}")
 
 # Drop -fvisibility=hidden since that option does not work for a
 # number of software packages that are configured automatically using
 # this template.
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CFLAGS "${SET_CFLAGS}")
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CXXFLAGS "${SET_CXXFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CFLAGS "${CFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CXXFLAGS "${CXXFLAGS}")
 
+# Data that is related to downloads.
+set(URL http://download.gnome.org/sources/glib/2.37/glib-2.37.4.tar.xz)
+set(DOWNLOAD_HASH_TYPE SHA256)
+set(DOWNLOAD_HASH 7e76a32e6ea0ced118aa64f87e46cdf5c3e90527f1f0eb93eabe42a03cebd1e7)
+
 ExternalProject_Add(
   build_${PACKAGE}
   DEPENDS ${dependencies_targets}
   URL ${URL}
   URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
-  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${SET_CFLAGS} ${SET_CXXFLAGS} ${source_PATH}/${EPA_CONFIGURE_COMMAND} --enable-installed-tests
-  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND} 
+  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} "CFLAGS=${CFLAGS}" "CXXFLAGS=${CXXFLAGS}" ${source_PATH}/${EPA_CONFIGURE_COMMAND} --enable-installed-tests
+  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND} 
   BUILD_IN_SOURCE OFF
-  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND}  install
+  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND}  install
   )
Modified: trunk/cmake/epa_build/gobject-introspection/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/gobject-introspection/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/gobject-introspection/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,4 +1,7 @@
 # gobject-introspection/CMakeLists.txt
+
+# Configure the build of gobject-introspection.
+
 # N.B. this file is generated so if you edit it you will lose all your
 # changes the next time it is generated (typically by running
 # either/both the update_added_packages.sh or update_pango_packages.sh
@@ -6,10 +9,6 @@
 # consider changing their source files (e.g., by editing the files
 # used in those scripts) or add a patch to be run by those scripts.
 
-# The CMake logic in this file should be exercised by the
-# add_subdirectory command that is exercised in the top-level
-# CMakeLists.txt file to configure the build of gobject-introspection.
-
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -26,12 +25,6 @@
 # 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 adds this subdirectory should
-# have run "include(ExternalProject)" and set the EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
-
 set(PACKAGE gobject-introspection)
 
 # List of dependencies (most of which are build tools) which should be
@@ -39,66 +32,44 @@
 set(ignored_dependencies_LIST pkg-config;bison;flex;python2-devel;libXft ${extra_ignored_dependencies_list})
 
 set(dependencies_LIST bison;cairo;flex;glib;python2-devel)
-# Remove dependencies that should be ignored.
-if(dependencies_LIST)
-  list(REMOVE_ITEM dependencies_LIST ${ignored_dependencies_LIST})
-endif(dependencies_LIST)
 
-# Add this subdirectory to the list of subdirectories that have
-# already been processed by the top-level CMakeLists.txt logic.
-list(APPEND EPA_processed_subdirectories_LIST ${PACKAGE})
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  ) 
 
-set(dependencies_targets)
-foreach(build_configuration ${dependencies_LIST})
-  if(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    # Add to the list of subdirectories that must be processed by the
-    # top-level CMakeLists.txt logic.
-    list(APPEND EPA_needed_subdirectories_LIST ${build_configuration})
-    list(APPEND dependencies_targets build_${build_configuration})
-  else(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    message(STATUS "Warning: A build_configuration for ${build_configuration} does not exist so it is assumed this dependency of ${PACKAGE} has been installed on your platform by means other than epa_build.")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-endforeach(build_configuration ${dependences_LIST})
-
-list(APPEND EPA_build_target_LIST build_${PACKAGE})
-
-# Propagate list changes to parent scope.
-set(EPA_build_target_LIST ${EPA_build_target_LIST} PARENT_SCOPE)
-set(EPA_processed_subdirectories_LIST ${EPA_processed_subdirectories_LIST} PARENT_SCOPE)
-set(EPA_needed_subdirectories_LIST ${EPA_needed_subdirectories_LIST} PARENT_SCOPE)
-
-# Data that is related to downloads.
-set(URL http://download.gnome.org/sources/gobject-introspection/1.37/gobject-introspection-1.37.4.tar.xz)
-set(DOWNLOAD_HASH_TYPE SHA256)
-set(DOWNLOAD_HASH 431dae811626d18f1f02ff3842f291cc21b3c5e4a47b24d52d46e25e93036591)
-
-# Data that is related to the PATH that must be used.
 if(MSYS_PLATFORM)
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  # Must have all elements of env command in MSYS platform form
-  determine_msys_path(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 else(MSYS_PLATFORM)
-  set(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
 
-set(SET_CXXFLAGS "CXXFLAGS=$ENV{CXXFLAGS}")
+set(CXXFLAGS "$ENV{CXXFLAGS}")
 
 # Drop -fvisibility=hidden since that option does not work for a
 # number of software packages that are configured automatically using
 # this template.
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CFLAGS "${SET_CFLAGS}")
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CXXFLAGS "${SET_CXXFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CFLAGS "${CFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CXXFLAGS "${CXXFLAGS}")
 
+# Data that is related to downloads.
+set(URL http://download.gnome.org/sources/gobject-introspection/1.37/gobject-introspection-1.37.4.tar.xz)
+set(DOWNLOAD_HASH_TYPE SHA256)
+set(DOWNLOAD_HASH 431dae811626d18f1f02ff3842f291cc21b3c5e4a47b24d52d46e25e93036591)
+
 ExternalProject_Add(
   build_${PACKAGE}
   DEPENDS ${dependencies_targets}
   URL ${URL}
   URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
-  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${SET_CFLAGS} ${SET_CXXFLAGS} ${source_PATH}/${EPA_CONFIGURE_COMMAND} 
-  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND} 
+  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} "CFLAGS=${CFLAGS}" "CXXFLAGS=${CXXFLAGS}" ${source_PATH}/${EPA_CONFIGURE_COMMAND} 
+  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND} 
   BUILD_IN_SOURCE OFF
-  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND}  install
+  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND}  install
   )
Modified: trunk/cmake/epa_build/gperf/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/gperf/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/gperf/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,4 +1,7 @@
 # gperf/CMakeLists.txt
+
+# Configure the build of gperf.
+
 # N.B. this file is generated so if you edit it you will lose all your
 # changes the next time it is generated (typically by running
 # either/both the update_added_packages.sh or update_pango_packages.sh
@@ -6,10 +9,6 @@
 # consider changing their source files (e.g., by editing the files
 # used in those scripts) or add a patch to be run by those scripts.
 
-# The CMake logic in this file should be exercised by the
-# add_subdirectory command that is exercised in the top-level
-# CMakeLists.txt file to configure the build of gperf.
-
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -26,12 +25,6 @@
 # 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 adds this subdirectory should
-# have run "include(ExternalProject)" and set the EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
-
 set(PACKAGE gperf)
 
 # List of dependencies (most of which are build tools) which should be
@@ -39,66 +32,44 @@
 set(ignored_dependencies_LIST pkg-config;bison;flex;python2-devel;libXft ${extra_ignored_dependencies_list})
 
 set(dependencies_LIST )
-# Remove dependencies that should be ignored.
-if(dependencies_LIST)
-  list(REMOVE_ITEM dependencies_LIST ${ignored_dependencies_LIST})
-endif(dependencies_LIST)
 
-# Add this subdirectory to the list of subdirectories that have
-# already been processed by the top-level CMakeLists.txt logic.
-list(APPEND EPA_processed_subdirectories_LIST ${PACKAGE})
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  ) 
 
-set(dependencies_targets)
-foreach(build_configuration ${dependencies_LIST})
-  if(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    # Add to the list of subdirectories that must be processed by the
-    # top-level CMakeLists.txt logic.
-    list(APPEND EPA_needed_subdirectories_LIST ${build_configuration})
-    list(APPEND dependencies_targets build_${build_configuration})
-  else(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    message(STATUS "Warning: A build_configuration for ${build_configuration} does not exist so it is assumed this dependency of ${PACKAGE} has been installed on your platform by means other than epa_build.")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-endforeach(build_configuration ${dependences_LIST})
-
-list(APPEND EPA_build_target_LIST build_${PACKAGE})
-
-# Propagate list changes to parent scope.
-set(EPA_build_target_LIST ${EPA_build_target_LIST} PARENT_SCOPE)
-set(EPA_processed_subdirectories_LIST ${EPA_processed_subdirectories_LIST} PARENT_SCOPE)
-set(EPA_needed_subdirectories_LIST ${EPA_needed_subdirectories_LIST} PARENT_SCOPE)
-
-# Data that is related to downloads.
-set(URL http://ftp.gnu.org/gnu/gperf/gperf-3.0.4.tar.gz)
-set(DOWNLOAD_HASH_TYPE SHA256)
-set(DOWNLOAD_HASH 767112a204407e62dbc3106647cf839ed544f3cf5d0f0523aaa2508623aad63e)
-
-# Data that is related to the PATH that must be used.
 if(MSYS_PLATFORM)
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  # Must have all elements of env command in MSYS platform form
-  determine_msys_path(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 else(MSYS_PLATFORM)
-  set(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
 
-set(SET_CXXFLAGS "CXXFLAGS=$ENV{CXXFLAGS}")
+set(CXXFLAGS "$ENV{CXXFLAGS}")
 
 # Drop -fvisibility=hidden since that option does not work for a
 # number of software packages that are configured automatically using
 # this template.
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CFLAGS "${SET_CFLAGS}")
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CXXFLAGS "${SET_CXXFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CFLAGS "${CFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CXXFLAGS "${CXXFLAGS}")
 
+# Data that is related to downloads.
+set(URL http://ftp.gnu.org/gnu/gperf/gperf-3.0.4.tar.gz)
+set(DOWNLOAD_HASH_TYPE SHA256)
+set(DOWNLOAD_HASH 767112a204407e62dbc3106647cf839ed544f3cf5d0f0523aaa2508623aad63e)
+
 ExternalProject_Add(
   build_${PACKAGE}
   DEPENDS ${dependencies_targets}
   URL ${URL}
   URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
-  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${SET_CFLAGS} ${SET_CXXFLAGS} ${source_PATH}/${EPA_CONFIGURE_COMMAND} 
-  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND} 
+  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} "CFLAGS=${CFLAGS}" "CXXFLAGS=${CXXFLAGS}" ${source_PATH}/${EPA_CONFIGURE_COMMAND} 
+  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND} 
   BUILD_IN_SOURCE OFF
-  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND}  install
+  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARALLEL_MAKE_COMMAND}  install
   )
Modified: trunk/cmake/epa_build/gtk-doc/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/gtk-doc/CMakeLists.txt	2013-12-05 09:20:44 UTC (rev 12811)
+++ trunk/cmake/epa_build/gtk-doc/CMakeLists.txt	2013-12-05 10:48:48 UTC (rev 12812)
@@ -1,4 +1,7 @@
 # gtk-doc/CMakeLists.txt
+
+# Configure the build of gtk-doc.
+
 # N.B. this file is generated so if you edit it you will lose all your
 # changes the next time it is generated (typically by running
 # either/both the update_added_packages.sh or update_pango_packages.sh
@@ -6,10 +9,6 @@
 # consider changing their source files (e.g., by editing the files
 # used in those scripts) or add a patch to be run by those scripts.
 
-# The CMake logic in this file should be exercised by the
-# add_subdirectory command that is exercised in the top-level
-# CMakeLists.txt file to configure the build of gtk-doc.
-
 # Copyright (C) 2013 Alan W. Irwin
 
 # This file is free software; you can redistribute it and/or
@@ -26,12 +25,6 @@
 # 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 adds this subdirectory should
-# have run "include(ExternalProject)" and set the EPA_BASE variable (and
-# corresponding directory property) as well as various EPA variables
-# used below that configure how the External_Project functions
-# operate.
-
 set(PACKAGE gtk-doc)
 
 # List of dependencies (most of which are build tools) which should be
@@ -39,66 +32,44 @@
 set(ignored_dependencies_LIST pkg-config;bison;flex;python2-devel;libXft ${extra_ignored_dependencies_list})
 
 set(dependencies_LIST docbook-xml;docbook-xsl;libxslt;yelp-tools)
-# Remove dependencies that should be ignored.
-if(dependencies_LIST)
-  list(REMOVE_ITEM dependencies_LIST ${ignored_dependencies_LIST})
-endif(dependencies_LIST)
 
-# Add this subdirectory to the list of subdirectories that have
-# already been processed by the top-level CMakeLists.txt logic.
-list(APPEND EPA_processed_subdirectories_LIST ${PACKAGE})
+# Do boilerplate tasks that must be done for each different project
+# that is configured as part of epa_build.
+epa_boilerplate(
+  ignored_dependencies_LIST
+  PACKAGE
+  dependencies_LIST
+  dependencies_targets
+  EPA_PATH
+  source_PATH
+  ) 
 
-set(dependencies_targets)
-foreach(build_configuration ${dependencies_LIST})
-  if(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    # Add to the list of subdirectories that must be processed by the
-    # top-level CMakeLists.txt logic.
-    list(APPEND EPA_needed_subdirectories_LIST ${build_configuration})
-    list(APPEND dependencies_targets build_${build_configuration})
-  else(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-    message(STATUS "Warning: A build_configuration for ${build_configuration} does not exist so it is assumed this dependency of ${PACKAGE} has been installed on your platform by means other than epa_build.")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
-endforeach(build_configuration ${dependences_LIST})
-
-list(APPEND EPA_build_target_LIST build_${PACKAGE})
-
-# Propagate list changes to parent scope.
-set(EPA_build_target_LIST ${EPA_build_target_LIST} PARENT_SCOPE)
-set(EPA_processed_subdirectories_LIST ${EPA_processed_subdirectories_LIST} PARENT_SCOPE)
-set(EPA_needed_subdirectories_LIST ${EPA_needed_subdirectories_LIST} PARENT_SCOPE)
-
-# Data that is related to downloads.
-set(URL http://download.gnome.org/sources/gtk-doc/1.19/gtk-doc-1.19.tar.xz)
-set(DOWNLOAD_HASH_TYPE SHA256)
-set(DOWNLOAD_HASH 27df247fa828433a9390368e2088cc22f954f2ce1f255ddbd12ab6e027b12e68)
-
-# Data that is related to the PATH that must be used.
 if(MSYS_PLATFORM)
-  determine_msys_path(EPA_PATH "${EPA_PATH}")
-  # Must have all elements of env command in MSYS platform form
-  determine_msys_path(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 else(MSYS_PLATFORM)
-  set(source_PATH "${EPA_BASE}/Source/build_${PACKAGE}")
-  set(SET_CFLAGS "CFLAGS=$ENV{CFLAGS}")
+  set(CFLAGS "$ENV{CFLAGS}")
 endif(MSYS_PLATFORM)
-#message(STATUS "modified EPA_PATH for ${PACKAGE} = ${EPA_PATH}")
 
-set(SET_CXXFLAGS "CXXFLAGS=$ENV{CXXFLAGS}")
+set(CXXFLAGS "$ENV{CXXFLAGS}")
 
 # Drop -fvisibility=hidden since that option does not work for a
 # number of software packages that are configured automatically using
 # this template.
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CFLAGS "${SET_CFLAGS}")
-string(REGEX REPLACE "-fvisibility=hidden" "" SET_CXXFLAGS "${SET_CXXFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CFLAGS "${CFLAGS}")
+string(REGEX REPLACE "-fvisibility=hidden" "" CXXFLAGS "${CXXFLAGS}")
 
+# Data that is related to downloads.
+set(URL http://download.gnome.org/sources/gtk-doc/1.19/gtk-doc-1.19.tar.xz)
+set(DOWNLOAD_HASH_TYPE SHA256)
+set(DOWNLOAD_HASH 27df247fa828433a9390368e2088cc22f954f2ce1f255ddbd12ab6e027b12e68)
+
 ExternalProject_Add(
   build_${PACKAGE}
   DEPENDS ${dependencies_targets}
   URL ${URL}
   URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
-  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${SET_CFLAGS} ${SET_CXXFLAGS} ${source_PATH}/${EPA_CONFIGURE_COMMAND} --with-xml-catalog=${CMAKE_INSTALL_PREFIX}/etc/xml/catalog
-  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${BP_PARALLEL_MAKE_COMMAND} 
+  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} "CFLAGS=${CFLAGS}" "CXXFLAGS=${CXXFLAGS}" ${source_PATH}/${EPA_CONFIGURE_COMMAND} --with-xml-catalog=${CMAKE_INSTALL_PREFIX}/etc/xml/catalog
+  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} ${EPA_PARA...
 
[truncated message content] |