Warning, /multimedia/kid3/doc/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 set(_languages ca de it nl pt ru sv uk)
0002 
0003 # Use -DDOWNLOAD_POS=ON to download the translations directly from SVN.
0004 if(DOWNLOAD_POS STREQUAL "REMOVE")
0005   message(STATUS "Removing po, docs")
0006   file(REMOVE_RECURSE "${CMAKE_CURRENT_SOURCE_DIR}/po")
0007   file(REMOVE_RECURSE "${CMAKE_CURRENT_SOURCE_DIR}/docs")
0008 elseif(DOWNLOAD_POS)
0009   execute_process(COMMAND ${CMAKE_COMMAND}
0010     -P "${CMAKE_CURRENT_SOURCE_DIR}/download-pos.cmake" "${_languages}"
0011     RESULT_VARIABLE result)
0012   if(NOT "${result}" STREQUAL "0")
0013     message(STATUS "Download failed, removing po, docs")
0014     file(REMOVE_RECURSE "${CMAKE_CURRENT_SOURCE_DIR}/po")
0015     file(REMOVE_RECURSE "${CMAKE_CURRENT_SOURCE_DIR}/docs")
0016   endif()
0017 endif()
0018 
0019 # Create HTML handbook from DocBook file in language directory
0020 macro(kid3_create_handbook _docbook _lang)
0021   get_filename_component(_input ${_docbook} ABSOLUTE)
0022   set(_output ${CMAKE_CURRENT_BINARY_DIR}/${_lang}/kid3_${_lang}.html)
0023   set(_fixdocbook_py ${CMAKE_CURRENT_SOURCE_DIR}/fixdocbook.py)
0024   set(_fixhtml_py ${CMAKE_CURRENT_SOURCE_DIR}/fixhtml.py)
0025   set(_docbook_xsl ${DOCBOOK_XSL_DIR}/xhtml/docbook.xsl)
0026   file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_lang})
0027   if(WIN32)
0028     # The expressions in pipes do not work for Windows,
0029     # so temporary files are used.
0030     set(_tmp_xml ${CMAKE_CURRENT_BINARY_DIR}/${_lang}/tmp.xml)
0031     set(_tmp_html ${CMAKE_CURRENT_BINARY_DIR}/${_lang}/tmp.html)
0032     add_custom_command(OUTPUT ${_tmp_xml}
0033       COMMAND ${PYTHON_EXECUTABLE} ${_fixdocbook_py} ${_input} >${_tmp_xml}
0034       DEPENDS ${_input}
0035     )
0036     add_custom_command(OUTPUT ${_tmp_html}
0037       COMMAND ${XSLTPROC} --novalid --nonet ${_docbook_xsl} ${_tmp_xml} >${_tmp_html}
0038       DEPENDS ${_tmp_xml}
0039     )
0040     add_custom_command(OUTPUT ${_output}
0041       COMMAND ${PYTHON_EXECUTABLE} ${_fixhtml_py} <${_tmp_html} >${_output}
0042       DEPENDS ${_tmp_html}
0043     )
0044   else()
0045     add_custom_command(OUTPUT ${_output}
0046       COMMAND
0047         ${PYTHON_EXECUTABLE} ${_fixdocbook_py} ${_input} |
0048         ${XSLTPROC} --maxdepth 20000 --novalid --nonet ${_docbook_xsl} - |
0049         ${PYTHON_EXECUTABLE} ${_fixhtml_py} >${_output}
0050       DEPENDS ${_input}
0051     )
0052   endif()
0053   add_custom_target("${_lang}-html-handbook" ALL DEPENDS ${_output})
0054   install(FILES ${_output} DESTINATION ${WITH_DOCDIR})
0055 endmacro()
0056 
0057 # Create handbook for KDE 5.
0058 # Replace meinproc5 with wrapper to change DTD version, then generate KDE help.
0059 macro(kf5_create_handbook _docbook _lang)
0060   cmake_minimum_required(VERSION 3.16)
0061   find_package(ECM REQUIRED NO_MODULE)
0062   set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
0063   include(KDEInstallDirs)
0064   find_package(KF${QT_MAJOR_VERSION} REQUIRED COMPONENTS DocTools)
0065   set(KDOCTOOLS_MEINPROC_EXECUTABLE ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/kf5-meinproc-wrapper.py)
0066   if(QT_VERSION_MAJOR EQUAL 6 AND NOT HTML_INSTALL_DIR)
0067     # TODO KF6: If there something defined?
0068     set(HTML_INSTALL_DIR "${WITH_DATAROOTDIR}/doc/HTML")
0069   endif()
0070   kdoctools_create_handbook(${_docbook} INSTALL_DESTINATION ${HTML_INSTALL_DIR}/${_lang} SUBDIR kid3)
0071 endmacro()
0072 
0073 if(UNIX)
0074   if(NOT WITH_NO_MANCOMPRESS)
0075     find_program(GZIP_EXECUTABLE gzip)
0076   endif()
0077 
0078   # Create man page from DocBook file in language directory
0079   macro(kid3_create_manpage _docbook _lang)
0080     get_filename_component(_input ${_docbook} ABSOLUTE)
0081     set(_output ${CMAKE_CURRENT_BINARY_DIR}/${_lang}/kid3.1)
0082     set(_fixdocbook_py ${CMAKE_CURRENT_SOURCE_DIR}/fixmandocbook.py)
0083     set(_docbook_xsl ${DOCBOOK_XSL_DIR}/manpages/docbook.xsl)
0084     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_lang})
0085     add_custom_command(OUTPUT ${_output}
0086       COMMAND
0087         ${PYTHON_EXECUTABLE} ${_fixdocbook_py} ${_input} |
0088         ${XSLTPROC} --maxdepth 20000 --novalid --nonet ${_docbook_xsl} -
0089       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_lang}
0090       DEPENDS ${_input}
0091     )
0092     if(WITH_NO_MANCOMPRESS)
0093       set(_gzExt "")
0094       set(_output_gz ${_output})
0095     else()
0096       set(_gzExt ".gz")
0097       set(_output_gz ${_output}${_gzExt})
0098       add_custom_command(OUTPUT ${_output_gz}
0099         COMMAND ${GZIP_EXECUTABLE} -cn ${_output} >${_output_gz}
0100         DEPENDS ${_output}
0101         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_lang}
0102       )
0103     endif()
0104     add_custom_target("${_lang}-man-handbook" ALL DEPENDS ${_output_gz})
0105     if(_lang STREQUAL "en")
0106       set(_install_dir ${WITH_MANDIR}/man1)
0107     else()
0108       set(_install_dir ${WITH_MANDIR}/${_lang}/man1)
0109     endif()
0110     install(FILES ${_output_gz} DESTINATION ${_install_dir})
0111     if(BUILD_QT_APP)
0112       install(CODE
0113         "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink kid3.1${_gzExt} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_install_dir}/kid3-qt.1${_gzExt}\")")
0114     endif()
0115     if(BUILD_CLI_APP)
0116       install(CODE
0117         "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink kid3.1${_gzExt} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_install_dir}/kid3-cli.1${_gzExt}\")")
0118     endif()
0119   endmacro()
0120 endif()
0121 
0122 if(BUILD_KDE_APP)
0123   file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kf5-meinproc-wrapper.py
0124        CONTENT "#!/usr/bin/env python3
0125 import sys, os, tempfile
0126 args = sys.argv[1:]
0127 docbook = args.pop()
0128 out_fh = tempfile.NamedTemporaryFile(mode='wb')
0129 with open(docbook, 'rb') as in_fh:
0130     for line in in_fh:
0131         line = line.replace(
0132             b'\"-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN\" \"dtd/kdex.dtd\"',
0133             b'\"-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN\" \"dtd/kdedbx45.dtd\"'
0134                   ).replace(
0135             b'<!ENTITY doublehyphen \\'--\\'>',
0136             b'<!ENTITY doublehyphen \\'--\\'>' +
0137             b'\\n  <!ENTITY Debian \\'<acronym><trademark class=\"registered\">Debian</trademark></acronym>\\'>' +
0138             b'\\n  <!ENTITY macOS \\'<trademark class=\"registered\">macOS</trademark>\\'>' +
0139             b'\\n  <!ENTITY JSON \"<acronym>JSON</acronym>\">' +
0140             b'\\n  <!ENTITY javascript \"<application>JavaScript</application>\">' +
0141             b'\\n  <!ENTITY Del \"<keycap>Del</keycap>\">' +
0142             b'\\n  <!ENTITY Up \"<keysym>Up</keysym>\">'
0143             b'\\n  <!ENTITY Down \"<keysym>Down</keysym>\">')
0144         out_fh.write(line)
0145 out_fh.flush()
0146 args.append(out_fh.name)
0147 os.execv('$<TARGET_FILE:KF${QT_MAJOR_VERSION}::meinproc${QT_MAJOR_VERSION}>', args)
0148 ")
0149 endif()
0150 
0151 list(APPEND _languages en)
0152 if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po")
0153   set(_po_dir ${CMAKE_CURRENT_SOURCE_DIR}/po)
0154   message(WARNING "Using custom translations from ${_po_dir}")
0155 else()
0156   set(_po_dir ${CMAKE_SOURCE_DIR}/po)
0157 endif()
0158 foreach(_lang ${_languages})
0159   if(_lang STREQUAL "en")
0160     set(_dir ${CMAKE_CURRENT_SOURCE_DIR}/en)
0161   else()
0162     set(_dir ${_po_dir}/${_lang}/docs/kid3)
0163   endif()
0164 
0165   if(BUILD_KDE_APP)
0166     kf5_create_handbook(${_dir}/index.docbook ${_lang})
0167   endif()
0168 
0169   if(BUILD_QT_APP)
0170     kid3_create_handbook(${_dir}/index.docbook ${_lang})
0171   endif()
0172 
0173   if(UNIX)
0174     kid3_create_manpage(${_dir}/index.docbook ${_lang})
0175   endif()
0176 endforeach()