1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # - Convert XML docBook files to various formats
- # This will convert XML docBook files to various formats like:
- # man html txt dvi ps pdf
- # macro XMLTO(outfiles infiles... MODES modes...)
- find_program ( XMLTO_EXECUTABLE
- NAMES xmlto
- DOC "path to the xmlto docbook xslt frontend"
- )
- include(FindPackageHandleStandardArgs)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XMLTO
- REQUIRED_VARS XMLTO_EXECUTABLE)
- mark_as_advanced( XMLTO_EXECUTABLE )
- macro ( _XMLTO_FILE outfiles mode)
- #special settings
- set ( XMLTO_FILEEXT_man 1 )
- set ( XMLTO_MODE_html xhtml-nochunks )
- if ( NOT XMLTO_MODE_${mode})
- set ( XMLTO_MODE_${mode} ${mode} )
- endif ( NOT XMLTO_MODE_${mode} )
- if ( NOT XMLTO_FILEEXT_${mode} )
- set ( XMLTO_FILEEXT_${mode} ${mode} )
- endif ( NOT XMLTO_FILEEXT_${mode} )
- foreach ( dbFile ${ARGN} )
- #TODO: set XMLTO_FILEEXT_man to value from <manvolnum>
- if ( "${mode}" STREQUAL "man" )
- file ( READ "${dbFile}" _DB_FILE_CONTENTS )
- string ( REGEX MATCH "<manvolnum>[^<]*" XMLTO_FILEEXT_${mode} "${_DB_FILE_CONTENTS}" )
- string ( REGEX REPLACE "^<manvolnum>" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" )
- string ( REGEX REPLACE "[[:space:]]" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" )
- endif ( "${mode}" STREQUAL "man" )
- get_filename_component ( dbFilePath ${CMAKE_CURRENT_BINARY_DIR}/${dbFile} PATH )
- get_filename_component ( dbFileWE ${dbFile} NAME_WE )
- get_filename_component ( dbFileAbsWE ${dbFilePath}/${dbFileWE} ABSOLUTE )
- add_custom_command (
- OUTPUT ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}
- COMMAND ${XMLTO_EXECUTABLE} ${XMLTO_COMMAND_ARGS} -o ${dbFilePath}
- ${XMLTO_MODE_${mode}} "${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}"
- MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}
- DEPENDS ${XMLTO_DEPENDS}
- VERBATIM
- )
- set ( ${outfiles}
- ${${outfiles}}
- ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}
- )
- endforeach ( dbFile )
- endmacro ( _XMLTO_FILE outfiles )
- macro ( XMLTO )
- set ( XMLTO_MODES )
- set ( XMLTO_FILES )
- set ( XMLTO_HAS_MODES false )
- set ( XMLTO_ADD_DEFAULT false )
- foreach ( arg ${ARGN} )
- if ( ${arg} STREQUAL "MODES" )
- set ( XMLTO_HAS_MODES true )
- elseif ( ${arg} STREQUAL "ALL" )
- set ( XMLTO_ADD_DEFAULT true )
- else ( ${arg} STREQUAL "MODES" )
- if ( XMLTO_HAS_MODES )
- set ( XMLTO_MODES ${XMLTO_MODES} ${arg} )
- else ( XMLTO_HAS_MODES )
- set ( XMLTO_FILES ${XMLTO_FILES} ${arg} )
- endif ( XMLTO_HAS_MODES )
- endif ( ${arg} STREQUAL "MODES" )
- endforeach ( arg ${ARGN} )
- if ( NOT XMLTO_MODES )
- set ( XMLTO_MODES html )
- endif ( NOT XMLTO_MODES )
- foreach ( mode ${XMLTO_MODES} )
- _xmlto_file ( XMLTO_FILES_${mode} ${mode} ${XMLTO_FILES} )
- if ( XMLTO_ADD_DEFAULT )
- add_custom_target ( ${mode} ALL
- DEPENDS ${XMLTO_FILES_${mode}}
- VERBATIM
- )
- else ( XMLTO_ADD_DEFAULT )
- add_custom_target ( ${mode}
- DEPENDS ${XMLTO_FILES_${mode}}
- VERBATIM
- )
- endif ( XMLTO_ADD_DEFAULT )
- endforeach ( mode )
- set ( XMLTO_MODES )
- set ( XMLTO_FILES )
- endmacro ( XMLTO )
|