Revision: 54022
http://brlcad.svn.sourceforge.net/brlcad/?rev=54022&view=rev
Author: starseeker
Date: 2012-12-07 15:58:56 +0000 (Fri, 07 Dec 2012)
Log Message:
-----------
Try a non-build-target based approach to the XML validation.
Modified Paths:
--------------
brlcad/trunk/CMakeLists.txt
brlcad/trunk/misc/CMake/DocBook.cmake
brlcad/trunk/misc/CMake/msv.cmake.in
brlcad/trunk/misc/CMake/rnv.cmake.in
brlcad/trunk/misc/CMake/xmllint.cmake.in
Modified: brlcad/trunk/CMakeLists.txt
===================================================================
--- brlcad/trunk/CMakeLists.txt 2012-12-07 05:51:27 UTC (rev 54021)
+++ brlcad/trunk/CMakeLists.txt 2012-12-07 15:58:56 UTC (rev 54022)
@@ -1339,14 +1339,7 @@
# unless build target counts >1800 are beyond MSVC's practical
# limit. Until we either find a resolution or a way to reduce
# the target count on MSVC, disable validation there.
-if(NOT MSVC)
- CMAKE_DEPENDENT_OPTION(BRLCAD_EXTRADOCS_VALIDATE "Perform validation for
DocBook documentation" OFF "BRLCAD_EXTRADOCS;BRLCAD_ENABLE_STRICT" OFF)
-else(NOT MSVC)
- if(BRLCAD_EXTRADOCS_VALIDATE)
- message("Visual Studio appears to be having trouble with the number of
build targets generated by the addition of DocBook validation - disabling.")
- endif(BRLCAD_EXTRADOCS_VALIDATE)
- set(BRLCAD_EXTRADOCS_VALIDATE OFF)
-endif(NOT MSVC)
+CMAKE_DEPENDENT_OPTION(BRLCAD_EXTRADOCS_VALIDATE "Perform validation for
DocBook documentation" ON "BRLCAD_EXTRADOCS;BRLCAD_ENABLE_STRICT" OFF)
mark_as_advanced(BRLCAD_EXTRADOCS_VALIDATE)
Modified: brlcad/trunk/misc/CMake/DocBook.cmake
===================================================================
--- brlcad/trunk/misc/CMake/DocBook.cmake 2012-12-07 05:51:27 UTC (rev
54021)
+++ brlcad/trunk/misc/CMake/DocBook.cmake 2012-12-07 15:58:56 UTC (rev
54022)
@@ -129,37 +129,36 @@
endif(NOT CMAKE_CONFIGURATION_TYPES OR "${CMAKE_CFG_INTDIR}" STREQUAL ".")
endmacro(DB_SCRIPT)
-# Macro to define individual validation build targets and generate the script
files
+# Macro to define individual validation commands generate the script files
# used to run the validation step during build
-macro(DB_VALIDATE_TARGET targetname targetdir filename_root)
- # Man page root names are not unique (and other documents' root names are
not guaranteed to be
- # unique) - incorporate the two parent dirs into things like target names
for uniqueness
- get_filename_component(root1 ${CMAKE_CURRENT_SOURCE_DIR} NAME)
- get_filename_component(path1 ${CMAKE_CURRENT_SOURCE_DIR} PATH)
- get_filename_component(root2 ${path1} NAME)
- set(validate_target ${root2}_${root1}_${filename_root}_validate)
- set(db_outfile
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${filename_root}.valid)
- # If we're already set up, no need to do it twice (CMake doesn't like it
anyway)
- # Handle this by getting a TARGET_NAME property on the target that we set
when
- # creating the target. If the target doesn't exist yet, the get returns
NOTFOUND
- # and we know to create the target. Otherwise, the target exists and this
xml
- # file has handled - skip it.
- get_target_property(tarprop ${validate_target} TARGET_NAME)
- if("${tarprop}" MATCHES "NOTFOUND")
- DB_SCRIPT("${validate_target}" "${DOC_DIR}/${targetdir}"
"${VALIDATE_EXECUTABLE}")
+
+define_property(GLOBAL PROPERTY DB_VALIDATION_FILE_LIST BRIEF_DOCS "DocBook
files to validate" FULL_DOCS "List used to track which files already have a
validation command set up.")
+
+macro(DB_VALIDATE_TARGET targetdir filename filename_root)
+
+ # Regardless of whether the command is defined or not, we'll need
xml_valid_stamp set
+ set(xml_valid_stamp
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${filename_root}.valid)
+ # If we have already added a validation command for this file, don't add
another one. Otherwise,
+ # proceed to add a new custom command
+ get_property(DB_VALIDATION_FILE_LIST GLOBAL PROPERTY DB_VALIDATION_FILE_LIST)
+ set(IN_LIST)
+ list(FIND DB_VALIDATION_FILE_LIST "${CMAKE_CURRENT_SOURCE_DIR}/${filename}"
IN_LIST)
+ if("${IN_LIST}" STREQUAL "-1")
+ set_property(GLOBAL APPEND PROPERTY DB_VALIDATION_FILE_LIST
"${CMAKE_CURRENT_SOURCE_DIR}/${filename}")
+
+ DB_SCRIPT("${filename_root}_validate" "${DOC_DIR}/${targetdir}"
"${VALIDATE_EXECUTABLE}")
add_custom_command(
- OUTPUT ${db_outfile}
+ OUTPUT ${xml_valid_stamp}
COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}
${XMLLINT_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES}
COMMENT "Validating DocBook source with ${VALIDATE_EXECUTABLE}:"
)
- add_custom_target(${validate_target} ALL DEPENDS ${db_outfile})
- set_target_properties(${validate_target} PROPERTIES TARGET_NAME
${validate_target})
- endif("${tarprop}" MATCHES "NOTFOUND")
+ endif("${IN_LIST}" STREQUAL "-1")
endmacro(DB_VALIDATE_TARGET)
# HTML output, the format used by BRL-CAD's graphical help systems
macro(DOCBOOK_TO_HTML targetname_suffix xml_files targetdir deps_list)
+ set(xml_valid_stamp)
if(BRLCAD_EXTRADOCS_HTML)
foreach(filename ${${xml_files}})
string(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" filename_root
"${filename}")
@@ -175,27 +174,17 @@
endforeach(extra_out ${EXTRA_OUTPUTS})
if(BRLCAD_EXTRADOCS_VALIDATE)
- DB_VALIDATE_TARGET(${targetname} ${targetdir} ${filename_root})
+ DB_VALIDATE_TARGET(${targetdir} "${filename}" ${filename_root})
+ endif(BRLCAD_EXTRADOCS_VALIDATE)
- # Generate the script that will be used to run the XSLT executable
- DB_SCRIPT("${targetname}" "${DOC_DIR}/${targetdir}"
"${XSLT_EXECUTABLE}")
+ # Generate the script that will be used to run the XSLT executable
+ DB_SCRIPT("${targetname}" "${DOC_DIR}/${targetdir}" "${XSLT_EXECUTABLE}")
- add_custom_command(
- OUTPUT ${outfile} ${EXTRAS}
- COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename} ${db_outfile}
${XSLTPROC_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES} ${XSL_XHTML_STYLESHEET}
${deps_list}
- )
- else(BRLCAD_EXTRADOCS_VALIDATE)
-
- # Generate the script that will be used to run the XSLT executable
- DB_SCRIPT("${targetname}" "${DOC_DIR}/${targetdir}"
"${XSLT_EXECUTABLE}")
-
- add_custom_command(
- OUTPUT ${outfile} ${EXTRAS}
- COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}
${XSLTPROC_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES} ${XSL_XHTML_STYLESHEET}
${deps_list}
- )
- endif(BRLCAD_EXTRADOCS_VALIDATE)
+ add_custom_command(
+ OUTPUT ${outfile} ${EXTRAS}
+ COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename} ${xml_valid_stamp}
${XSLTPROC_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES} ${XSL_XHTML_STYLESHEET}
${deps_list}
+ )
add_custom_target(${targetname} ALL DEPENDS ${outfile})
# CMAKE_CFG_INTDIR can't be used in installation rules:
@@ -211,6 +200,17 @@
get_property(BRLCAD_EXTRADOCS_HTML_TARGETS GLOBAL PROPERTY
BRLCAD_EXTRADOCS_HTML_TARGETS)
set(BRLCAD_EXTRADOCS_HTML_TARGETS ${BRLCAD_EXTRADOCS_HTML_TARGETS}
${targetname})
set_property(GLOBAL PROPERTY BRLCAD_EXTRADOCS_HTML_TARGETS
"${BRLCAD_EXTRADOCS_HTML_TARGETS}")
+
+ # If multiple outputs are being generated from the same file, make sure
+ # one of them is run to completion before the others to avoid multiple
+ # triggerings of the XML valiation command.
+ get_property(1ST_TARGET SOURCE ${filename} PROPERTY 1ST_TARGET)
+ if(1ST_TARGET)
+ add_dependencies(${targetname} ${1ST_TARGET})
+ else(1ST_TARGET)
+ set_property(SOURCE ${filename} PROPERTY 1ST_TARGET "${targetname}")
+ endif(1ST_TARGET)
+
endforeach(filename ${${xml_files}})
endif(BRLCAD_EXTRADOCS_HTML)
@@ -219,6 +219,7 @@
# This macro produces Unix-style manual or "man" pages
macro(DOCBOOK_TO_MAN targetname_suffix xml_files mannum manext targetdir
deps_list)
+ set(xml_valid_stamp)
if(BRLCAD_EXTRADOCS_MAN)
foreach(filename ${${xml_files}})
string(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" filename_root
"${filename}")
@@ -234,27 +235,17 @@
endforeach(extra_out ${EXTRA_OUTPUTS})
if(BRLCAD_EXTRADOCS_VALIDATE)
- DB_VALIDATE_TARGET(${targetname} ${targetdir} ${filename_root})
+ DB_VALIDATE_TARGET(${targetdir} "${filename}" ${filename_root})
+ endif(BRLCAD_EXTRADOCS_VALIDATE)
- # Generate the script that will be used to run the XSLT executable
- DB_SCRIPT("${targetname}" "${MAN_DIR}/${targetdir}"
"${XSLT_EXECUTABLE}")
+ # Generate the script that will be used to run the XSLT executable
+ DB_SCRIPT("${targetname}" "${MAN_DIR}/${targetdir}" "${XSLT_EXECUTABLE}")
- add_custom_command(
- OUTPUT ${outfile} ${EXTRAS}
- COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename} ${db_outfile}
${XSLTPROC_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES} ${XSL_MAN_STYLESHEET}
${deps_list}
- )
- else(BRLCAD_EXTRADOCS_VALIDATE)
-
- # Generate the script that will be used to run the XSLT executable
- DB_SCRIPT("${targetname}" "${MAN_DIR}/${targetdir}"
"${XSLT_EXECUTABLE}")
-
- add_custom_command(
- OUTPUT ${outfile} ${EXTRAS}
- COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}
${XSLTPROC_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES} ${XSL_MAN_STYLESHEET}
${deps_list}
- )
- endif(BRLCAD_EXTRADOCS_VALIDATE)
+ add_custom_command(
+ OUTPUT ${outfile} ${EXTRAS}
+ COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename} ${xml_valid_stamp}
${XSLTPROC_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES} ${XSL_MAN_STYLESHEET}
${deps_list}
+ )
add_custom_target(${targetname} ALL DEPENDS ${outfile})
# CMAKE_CFG_INTDIR can't be used in installation rules:
@@ -272,6 +263,16 @@
set(BRLCAD_EXTRADOCS_MAN_TARGETS ${BRLCAD_EXTRADOCS_MAN_TARGETS}
${targetname})
set_property(GLOBAL PROPERTY BRLCAD_EXTRADOCS_MAN_TARGETS
"${BRLCAD_EXTRADOCS_MAN_TARGETS}")
+ # If multiple outputs are being generated from the same file, make sure
+ # one of them is run to completion before the others to avoid multiple
+ # triggerings of the XML valiation command.
+ get_property(1ST_TARGET SOURCE ${filename} PROPERTY 1ST_TARGET)
+ if(1ST_TARGET)
+ add_dependencies(${targetname} ${1ST_TARGET})
+ else(1ST_TARGET)
+ set_property(SOURCE ${filename} PROPERTY 1ST_TARGET "${targetname}")
+ endif(1ST_TARGET)
+
endforeach(filename ${${xml_files}})
endif(BRLCAD_EXTRADOCS_MAN)
# Mark files for distcheck
@@ -281,6 +282,7 @@
# PDF output is generated in a two stage process - the XML file is first
# converted to an "FO" file, and the FO file is in turn translated to PDF.
macro(DOCBOOK_TO_PDF targetname_suffix xml_files targetdir deps_list)
+ set(xml_valid_stamp)
if(BRLCAD_EXTRADOCS_PDF)
foreach(filename ${${xml_files}})
string(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" filename_root
"${filename}")
@@ -294,21 +296,14 @@
set(fo_outfile ${outfile})
set(CURRENT_XSL_STYLESHEET ${XSL_FO_STYLESHEET})
if(BRLCAD_EXTRADOCS_VALIDATE)
- DB_VALIDATE_TARGET(${targetname} ${targetdir} ${filename_root})
- DB_SCRIPT("${targetname}" "${DOC_DIR}/${targetdir}"
"${XSLT_EXECUTABLE}")
- add_custom_command(
- OUTPUT ${outfile}
- COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename} ${db_outfile}
${XSLTPROC_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES} ${XSL_FO_STYLESHEET}
${deps_list}
- )
- else(BRLCAD_EXTRADOCS_VALIDATE)
- DB_SCRIPT("${targetname}" "${DOC_DIR}/${targetdir}"
"${XSLT_EXECUTABLE}")
- add_custom_command(
- OUTPUT ${outfile}
- COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}
${XSLTPROC_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES} ${XSL_FO_STYLESHEET}
${deps_list}
- )
+ DB_VALIDATE_TARGET(${targetdir} "${filename}" ${filename_root})
endif(BRLCAD_EXTRADOCS_VALIDATE)
+ DB_SCRIPT("${targetname}" "${DOC_DIR}/${targetdir}" "${XSLT_EXECUTABLE}")
+ add_custom_command(
+ OUTPUT ${outfile}
+ COMMAND ${CMAKE_COMMAND} -P ${scriptfile}
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${filename} ${xml_valid_stamp}
${XSLTPROC_EXECUTABLE_TARGET} ${DOCBOOK_RESOURCE_FILES} ${XSL_FO_STYLESHEET}
${deps_list}
+ )
set(targetname ${filename_root}_${targetname_suffix}_pdf)
set(outfile ${bin_root}/${DOC_DIR}/${targetdir}/${filename_root}.pdf)
DB_SCRIPT("${targetname}_pdf" "${DOC_DIR}/${targetdir}"
"${PDF_CONV_EXECUTABLE}")
@@ -327,6 +322,17 @@
get_property(BRLCAD_EXTRADOCS_PDF_TARGETS GLOBAL PROPERTY
BRLCAD_EXTRADOCS_PDF_TARGETS)
set(BRLCAD_EXTRADOCS_PDF_TARGETS ${BRLCAD_EXTRADOCS_PDF_TARGETS}
${targetname})
set_property(GLOBAL PROPERTY BRLCAD_EXTRADOCS_PDF_TARGETS
"${BRLCAD_EXTRADOCS_PDF_TARGETS}")
+
+ # If multiple outputs are being generated from the same file, make sure
+ # one of them is run to completion before the others to avoid multiple
+ # triggerings of the XML valiation command.
+ get_property(1ST_TARGET SOURCE ${filename} PROPERTY 1ST_TARGET)
+ if(1ST_TARGET)
+ add_dependencies(${targetname} ${1ST_TARGET})
+ else(1ST_TARGET)
+ set_property(SOURCE ${filename} PROPERTY 1ST_TARGET "${targetname}")
+ endif(1ST_TARGET)
+
endforeach(filename ${${xml_files}})
endif(BRLCAD_EXTRADOCS_PDF)
CMAKEFILES(${${xml_files}})
Modified: brlcad/trunk/misc/CMake/msv.cmake.in
===================================================================
--- brlcad/trunk/misc/CMake/msv.cmake.in 2012-12-07 05:51:27 UTC (rev
54021)
+++ brlcad/trunk/misc/CMake/msv.cmake.in 2012-12-07 15:58:56 UTC (rev
54022)
@@ -33,12 +33,12 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###
-execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "@db_outfile@")
+execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "@xml_valid_stamp@")
execute_process(COMMAND msv -warning
"@BRLCAD_BINARY_DIR@/doc/docbook/resources/other/docbook-schema/rng/docbookxi.rng"
"@CMAKE_CURRENT_SOURCE_DIR@/@filename@" RESULT_VARIABLE CMDRESULT)
if(CMDRESULT)
message(FATAL_ERROR "msv failure: ${CMDRESULT}")
else(CMDRESULT)
- execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "@db_outfile@")
+ execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "@xml_valid_stamp@")
endif(CMDRESULT)
Modified: brlcad/trunk/misc/CMake/rnv.cmake.in
===================================================================
--- brlcad/trunk/misc/CMake/rnv.cmake.in 2012-12-07 05:51:27 UTC (rev
54021)
+++ brlcad/trunk/misc/CMake/rnv.cmake.in 2012-12-07 15:58:56 UTC (rev
54022)
@@ -33,12 +33,12 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###
-execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "@db_outfile@")
+execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "@xml_valid_stamp@")
execute_process(COMMAND rnv
"@BRLCAD_BINARY_DIR@/doc/docbook/resources/other/docbook-schema/rng/docbookxi.rnc"
"@CMAKE_CURRENT_SOURCE_DIR@/@filename@" RESULT_VARIABLE CMDRESULT)
if(CMDRESULT)
message(FATAL_ERROR "rnv failure: ${CMDRESULT}")
else(CMDRESULT)
- execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "@db_outfile@")
+ execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "@xml_valid_stamp@")
endif(CMDRESULT)
Modified: brlcad/trunk/misc/CMake/xmllint.cmake.in
===================================================================
--- brlcad/trunk/misc/CMake/xmllint.cmake.in 2012-12-07 05:51:27 UTC (rev
54021)
+++ brlcad/trunk/misc/CMake/xmllint.cmake.in 2012-12-07 15:58:56 UTC (rev
54022)
@@ -33,12 +33,12 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###
-execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "@db_outfile@")
+execute_process(COMMAND "@CMAKE_COMMAND@" -E remove -f "@xml_valid_stamp@")
execute_process(COMMAND "@XMLLINT_EXECUTABLE@" --xinclude --schema
"@BRLCAD_BINARY_DIR@/doc/docbook/resources/other/docbook-schema/xsd/docbook.xsd"
--noout --nonet "@CMAKE_CURRENT_SOURCE_DIR@/@filename@" RESULT_VARIABLE
CMDRESULT)
if(CMDRESULT)
message(FATAL_ERROR "xmllint failure: ${CMDRESULT}")
else(CMDRESULT)
- execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "@db_outfile@")
+ execute_process(COMMAND "@CMAKE_COMMAND@" -E touch "@xml_valid_stamp@")
endif(CMDRESULT)
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits