1
# FIXME: Tell CMake to cache the pdf files so they are not regenerated each time.
2
cmake_minimum_required(VERSION 2.6)
5
add_custom_target(usermanual ALL)
7
add_custom_target(usermanual)
8
endif(BUILD_USERMANUAL)
10
set(can_build_usermanual ON)
12
find_program(Fop_BIN fop)
13
find_program(Xsltproc_BIN xsltproc)
14
find_program(Xml2po_BIN xml2po)
16
if(${Fop_BIN} STREQUAL "Fop_BIN-NOTFOUND")
17
message("Missing fop")
18
set(can_build_usermanual OFF)
21
if(${Xsltproc_BIN} STREQUAL "Xsltproc_BIN-NOTFOUND")
22
message("Missing xsltproc")
23
set(can_build_usermanual OFF)
26
if(${Xml2po_BIN} STREQUAL "Xml2po_BIN-NOTFOUND")
27
message("Missing xml2po. No localized usermanuals are build")
28
# set(can_build_usermanual OFF)
31
if(can_build_usermanual)
35
OUTPUT darktable-usermanual.pdf
36
COMMAND xsltproc --output ${CMAKE_CURRENT_BINARY_DIR}/darktable-usermanual.fo xsl/darktable_fo.xsl darktable.xml
37
COMMAND fop -c fopconfig.xml ${CMAKE_CURRENT_BINARY_DIR}/darktable-usermanual.fo -pdf darktable-usermanual.pdf
38
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
40
COMMENT "Building usermanual" VERBATIM
42
add_custom_target(darktable-usermanual DEPENDS darktable-usermanual.pdf)
43
add_dependencies(usermanual darktable-usermanual)
44
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/darktable-usermanual.pdf DESTINATION ./share/doc/darktable/usermanual OPTIONAL)
48
OUTPUT darktable-usermanual-final.pdf
49
COMMAND xsltproc --output ${CMAKE_CURRENT_BINARY_DIR}/darktable-usermanual_profiled_final.xml xsl/darktable_profile.xsl darktable.xml
50
COMMAND xsltproc --output ${CMAKE_CURRENT_BINARY_DIR}/darktable-usermanual_profiled_final.fo xsl/darktable_fo.xsl ${CMAKE_CURRENT_BINARY_DIR}/darktable-usermanual_profiled_final.xml
51
COMMAND fop -c fopconfig.xml ${CMAKE_CURRENT_BINARY_DIR}/darktable-usermanual_profiled_final.fo -pdf darktable-usermanual-final.pdf
52
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
54
COMMENT "Building final usermanual" VERBATIM
56
add_custom_target(darktable-usermanual-final DEPENDS darktable-usermanual-final.pdf)
57
add_dependencies(usermanual darktable-usermanual-final)
58
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/darktable-usermanual-final.pdf DESTINATION ./share/doc/darktable/usermanual OPTIONAL)
60
if(NOT ${Xml2po_BIN} STREQUAL "Xml2po_BIN-NOTFOUND")
61
# localized final usermanuals
62
file(GLOB LANGUAGES po/*.po)
63
foreach(language ${LANGUAGES})
64
set(pofile ${language})
65
string(REGEX REPLACE "(.+(\\\\|/))+" "" language ${language})
66
string(REGEX REPLACE "\\.po$" "" language ${language})
67
set(pdffile "darktable-usermanual-${language}.pdf")
68
set(fofile "${CMAKE_CURRENT_BINARY_DIR}/darktable-usermanual-${language}.fo")
69
set(xmlfile "${CMAKE_CURRENT_BINARY_DIR}/darktable-usermanual_profiled_final.xml")
70
set(xmllangfile "${CMAKE_CURRENT_BINARY_DIR}/darktable-usermanual_profiled_final-${language}.xml")
73
COMMAND xsltproc --output ${xmlfile} xsl/darktable_profile.xsl darktable.xml
74
COMMAND xml2po -e -p ${pofile} -l ${language} ${xmlfile} > ${xmllangfile}
75
COMMAND xsltproc --output ${fofile} xsl/darktable_fo.xsl ${xmllangfile}
76
COMMAND fop -c fopconfig.xml ${fofile} -pdf ${pdffile}
77
DEPENDS ${pofile} darktable.xml
78
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
79
COMMENT "Building ${language} usermanual" VERBATIM
81
add_custom_target(darktable-usermanual-${language} DEPENDS ${pdffile})
82
add_dependencies(usermanual darktable-usermanual-${language})
83
install(FILES ${pdffile} DESTINATION ./share/doc/darktable/usermanual OPTIONAL)
87
else(can_build_usermanual)
88
message("Can NOT build usermanual")
89
endif(can_build_usermanual)