|
From: <ai...@us...> - 2013-12-05 22:59:37
|
Revision: 12817
http://sourceforge.net/p/plplot/code/12817
Author: airwin
Date: 2013-12-05 22:59:35 +0000 (Thu, 05 Dec 2013)
Log Message:
-----------
Fix dependencies handling bug (the last one found by the complicated
dependencies in the build_plplot case) and comment out the debug
messages that allowed me to debug this issue.
Modified Paths:
--------------
trunk/cmake/epa_build/CMakeLists.txt
Modified: trunk/cmake/epa_build/CMakeLists.txt
===================================================================
--- trunk/cmake/epa_build/CMakeLists.txt 2013-12-05 22:56:28 UTC (rev 12816)
+++ trunk/cmake/epa_build/CMakeLists.txt 2013-12-05 22:59:35 UTC (rev 12817)
@@ -167,7 +167,7 @@
_source_PATH
)
- message(STATUS "DEBUG: entering ${_PACKAGE} = ${${_PACKAGE}}")
+ #message(STATUS "DEBUG DEPENDENCY HANDLING: entering ${_PACKAGE} = ${${_PACKAGE}}")
get_property(saved_started_subdirectories_LIST GLOBAL PROPERTY EPA_started_subdirectories_LIST)
set_property(GLOBAL APPEND PROPERTY EPA_started_subdirectories_LIST ${${_PACKAGE}})
get_property(started_subdirectories_LIST GLOBAL PROPERTY EPA_started_subdirectories_LIST)
@@ -184,26 +184,31 @@
endif(NOT EXISTS ${CMAKE_SOURCE_DIR}/${build_configuration}/CMakeLists.txt)
endforeach(build_configuration ${${_dependences_LIST}})
- # remaining_dependencies_LIST contains the dependencies left over
- # from the above removals that have not already been finished.
- set(remaining_dependencies_LIST ${${_dependencies_LIST}})
+ #message(STATUS "DEBUG DEPENDENCY HANDLING: ${_PACKAGE} = ${${_PACKAGE}} has the following list of expurgated dependencies: ${${_dependencies_LIST}}")
+
+ # Initial value of finished_subdirectories_LIST required for following
+ # loop logic to work correctly.
get_property(finished_subdirectories_LIST GLOBAL PROPERTY EPA_finished_subdirectories_LIST)
- if(remaining_dependencies_LIST AND finished_subdirectories_LIST)
- list(REMOVE_ITEM remaining_dependencies_LIST ${finished_subdirectories_LIST})
- endif(remaining_dependencies_LIST AND finished_subdirectories_LIST)
-
- foreach(build_configuration ${remaining_dependencies_LIST})
+ foreach(build_configuration ${${_dependencies_LIST}})
list(FIND started_subdirectories_LIST ${build_configuration} index)
if(index GREATER -1)
message(FATAL_ERROR "Circular dependency: package ${build_configuration} depends on package ${${_PACKAGE}} which depends on package ${build_configuration}.")
endif(index GREATER -1)
- add_subdirectory(
- ${CMAKE_SOURCE_DIR}/${build_configuration}
- ${CMAKE_BINARY_DIR}/${build_configuration}
- )
- endforeach(build_configuration ${remaining_dependencies_LIST})
- set_property(GLOBAL PROPERTY EPA_started_subdirectories_LIST ${saved_started_subdirectories_LIST})
+ list(FIND finished_subdirectories_LIST ${build_configuration} index)
+ if(index LESS 0)
+ # Only if build_configuration is not in finished_subdirectories_LIST.
+ add_subdirectory(
+ ${CMAKE_SOURCE_DIR}/${build_configuration}
+ ${CMAKE_BINARY_DIR}/${build_configuration}
+ )
+ # GLOBAL property EPA_finished_subdirectories_LIST has the subdirectory
+ # name appended to it for the above add_subdirectory call.
+ # So must update finished_subdirectories_LIST
+ # in order for the next test of build_configuration to be valid.
+ get_property(finished_subdirectories_LIST GLOBAL PROPERTY EPA_finished_subdirectories_LIST)
+ endif(index LESS 0)
+ endforeach(build_configuration ${${_dependencies_LIST}})
set(${_dependencies_targets})
foreach(build_configuration ${${_dependencies_LIST}})
@@ -220,15 +225,22 @@
endif(MSYS_PLATFORM)
#message(STATUS "DEBUG: (modified for ${${_PACKAGE}}) ${_EPA_PATH} = ${${_EPA_PATH}}")
+ # Update global properties consistent with a successful conclusion of this
+ # function call.
+ set_property(GLOBAL PROPERTY EPA_started_subdirectories_LIST ${saved_started_subdirectories_LIST})
+
set_property(GLOBAL APPEND PROPERTY EPA_build_targets_LIST build_${${_PACKAGE}})
set_property(GLOBAL APPEND PROPERTY EPA_finished_subdirectories_LIST ${${_PACKAGE}})
+ # Temporary debugging of dependencies.
+ #get_property(finished_subdirectories_LIST GLOBAL PROPERTY EPA_finished_subdirectories_LIST)
+ #message(STATUS "DEBUG DEPENDENCY HANDLING: finished_subdirectories_LIST = ${finished_subdirectories_LIST}")
# Propagate changed output arguments to parent scope of function.
set(${_dependencies_LIST} ${${_dependencies_LIST}} PARENT_SCOPE)
set(${_dependencies_targets} ${${_dependencies_targets}} PARENT_SCOPE)
set(${_EPA_PATH} ${${_EPA_PATH}} PARENT_SCOPE)
set(${_source_PATH} ${${_source_PATH}} PARENT_SCOPE)
- message(STATUS "DEBUG: leaving ${_PACKAGE} = ${${_PACKAGE}}")
+ #message(STATUS "DEBUG DEPENDENCY HANDLING: leaving ${_PACKAGE} = ${${_PACKAGE}}")
endfunction(epa_boilerplate)
# This gives the full pathname of the associated build tool for at
@@ -350,6 +362,10 @@
endif(NOT ${EXECUTABLE}_EXECUTABLE)
endforeach(executable ${executables_LIST})
+ # List sufficient buildtool configurations so they will suck in
+ # the remaining buildtool configurations via dependencies.
+ # Order does not matter because the dependency logic takes
+ # care of any ordering issues.
set(subdirectories_LIST
cmake
pkg-config
@@ -369,14 +385,16 @@
iwidgets4.0
)
else(BUILD_THE_BUILDTOOLS)
- # List of all configurations. Order doesn't matter because multiple
- # attempts to include the same configuration (via dependencies) are ignored.
+ # List sufficient normal package configurations so they will suck in
+ # the remaining configurations via dependencies.
+ # Order does not matter because the dependency logic takes
+ # care of any ordering issues.
set(subdirectories_LIST
ndiff
- #plplot
- #plplot_lite
- #wxwidgets
- #pango
+ plplot
+ plplot_lite
+ wxwidgets
+ pango
)
endif(BUILD_THE_BUILDTOOLS)
@@ -384,7 +402,7 @@
set_property(GLOBAL PROPERTY EPA_finished_subdirectories_LIST)
set_property(GLOBAL PROPERTY EPA_build_targets_LIST)
-message(STATUS "DEBUG: subdirectories_LIST = ${subdirectories_LIST}")
+#message(STATUS "DEBUG DEPENDENCY HANDLING (for outer subdirectories loop): subdirectories_LIST = ${subdirectories_LIST}")
# Using a while loop seems obvious here
# because each add_subdirectory command can generate others
@@ -404,8 +422,8 @@
add_subdirectory(${subdirectory})
get_property(finished_subdirectories_LIST GLOBAL PROPERTY EPA_finished_subdirectories_LIST)
list(REMOVE_ITEM subdirectories_LIST ${finished_subdirectories_LIST})
- message(STATUS "DEBUG: visited ${subdirectory}")
- message(STATUS "DEBUG: subdirectories_LIST = ${subdirectories_LIST}")
+# message(STATUS "DEBUG DEPENDENCY HANDLING (for outer subdirectories loop): visited ${subdirectory}")
+# message(STATUS "DEBUG DEPENDENCY HANDLING (for outer subdirectories loop): subdirectories_LIST = ${subdirectories_LIST}")
list(LENGTH subdirectories_LIST LENGTH_subdirectories_LIST)
if(LENGTH_subdirectories_LIST EQUAL 0)
break()
@@ -414,4 +432,5 @@
add_custom_target(build_all)
get_property(build_targets_LIST GLOBAL PROPERTY EPA_build_targets_LIST)
+message(STATUS "The target build_all has the following dependent targets: ${build_targets_LIST}")
add_dependencies(build_all ${build_targets_LIST})
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|