This will add one new custom target per DB file.
Each target will run xmllint on one specific XML file.
If xmllint fails - xml is not valid - the target fails,
and the whole build fails - so if there is an issue,
it will be noticeable.
---
CMakeLists.txt | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b85656c..0bfaaa2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -45,6 +45,7 @@ OPTION(BUILD_FOR_SSE "Build with support for SSE" ${X86_ON})
OPTION(BUILD_FOR_SSE2 "Build with support for SSE2" ${X86_ON})
OPTION(BUILD_DOC "Build documentation with doxygen" OFF)
OPTION(INSTALL_HELPER_SCRIPTS "Install various helper scripts" ON)
+option(USE_XMLLINT "Run xmllint to test if data/db/*.xml are valid" ON)
IF(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug CACHE STRING
@@ -142,6 +143,17 @@ IF(WIN32)
ENDIF(MSVC)
ENDIF(WIN32)
+# do we have xmllint?
+if(USE_XMLLINT)
+ find_program(Xmllint_BIN xmllint)
+ if(${Xmllint_BIN} STREQUAL "Xmllint_BIN-NOTFOUND")
+ message(STATUS "Missing xmllint")
+ set(USE_XMLLINT OFF)
+ else(${Xmllint_BIN} STREQUAL "Xmllint_BIN-NOTFOUND")
+ message(STATUS "Found xmllint")
+ endif(${Xmllint_BIN} STREQUAL "Xmllint_BIN-NOTFOUND")
+endif(USE_XMLLINT)
+
# create config.h file
CONFIGURE_FILE(include/lensfun/config.h.in.cmake ${CMAKE_BINARY_DIR}/config.h)
# create lensfun.h file
@@ -167,9 +179,26 @@ ENDIF()
# install db files
FILE(GLOB DATABASE_FILES data/db/*.xml)
+
+if(USE_XMLLINT)
+ foreach(database ${DATABASE_FILES})
+ get_filename_component(DBNAME ${database} NAME_WE)
+ add_custom_target(
+ validate_${DBNAME} ALL
+ COMMAND ${Xmllint_BIN} --valid --noout ${database}
+ DEPENDS ${database}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/
+ COMMENT "Checking validity of ${database}"
+ )
+ endforeach(database)
+endif(USE_XMLLINT)
+
INSTALL(FILES ${DATABASE_FILES} DESTINATION
${CMAKE_INSTALL_DATAROOTDIR}/lensfun/version_${LENSFUN_DB_VERSION})
INSTALL(FILES data/db/timestamp.txt DESTINATION
${CMAKE_INSTALL_DATAROOTDIR}/lensfun/version_${LENSFUN_DB_VERSION})
+FILE(GLOB DATABASE_DTD data/db/*.dtd)
+INSTALL(FILES ${DATABASE_DTD} DESTINATION
${CMAKE_INSTALL_DATAROOTDIR}/lensfun/version_${LENSFUN_DB_VERSION})
+
# build documentation
IF(BUILD_DOC)
ADD_SUBDIRECTORY(docs)
--
2.7.0
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Lensfun-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lensfun-users