Mercurial > code
annotate cmake/FindPandoc.cmake @ 335:486767e1d165
Socket: fix under Windows and add new style
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 11 Mar 2015 09:41:48 +0100 |
parents | 0b576ee64d45 |
children |
rev | line source |
---|---|
334
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # FindPandoc |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 # ---------- |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 # Find Pandoc executable, this modules defines: |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 # Pandoc_EXECUTABLE, where to find pandoc's executable |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 # Pandoc_FOUND, if it is found |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 # Pandoc_VERSION, the version |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 # This module also defines the following macros: |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 # pandoc( |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 # SOURCES file1 [file2 ...] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 # OUTPUT output |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 # [FROM format] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 # [TO format] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 # [TARGET target] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 # [DEPENDS dependency ...] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 # [ALL] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 # [TOC] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 # [STANDALONE] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 # [MAKE_DIRECTORY] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 # [TEMPLATE file] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 # [FILTER filter] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 # [HEADER header ...] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 # [FOOTER footer ...] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 # [BODY body ...] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 # [VARIABLE var ...] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 # [METADATA meta ...] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 # [ARGS argument ...] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 # [WORKING_DIRECTORY directory] |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 # ) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 # The sources files are listed in the parameter SOURCES, all files are passed |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 # in the same order they are passed to that variable. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 # The OUTPUT file is set with OUTPUT. It is generated only if one of the file |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 # has changed. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 # The FROM (-f) and TO (-t) arguments specify respectively the source and |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 # destinations formats. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 # If the parameter TARGET is set, then a target named `target` will be added |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 # with the OUTPUT file as the dependency but not listed as sources files. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 # But the SOURCES files will be added as the target sources in the IDE. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 # Optional dependencies can be added to the output command (not the target) with |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 # the DEPENDS parameter. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 # If ALL is set and TARGET is also set, the target will be added to the ALL_BUILD. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 # If TOC (--toc) is specified, a table of content will be automatically created. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 # If STANDALONE (-s) is set, the compilation will assume that it is standalone |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 # and adds the necessary of the output format. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 # Optional MAKE_DIRECTORY can be set to create the output directory before |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 # pandoc processes the file (recommended). |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 # The TEMPLATE parameter can be used to specify the formate template file. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 # You can set a filter with the parameter FILTER. The filter will be added to |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 # the output dependencies so you can safely use CMake's targets. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 # The HEADER (-H), FOOTER (-A) and BODY (-B) are copied verbatim before, just |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 # after and after the body respectively. They can be set more than once. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 # You can pass variables (-V) and metadata (-M) to the parameters VARIABLE |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 # and METADATA, be sure to pass the same syntax as pandoc. (e.g VARIABLE foo=1) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 # ARGS is an optional list of additional arguments to pass to pandoc. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 # The parameter WORKING_DIRECTORY can be set to change the directory when pandoc |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 # is invoked. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 find_program( |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 Pandoc_EXECUTABLE |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 NAMES pandoc |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 DOC "Pandoc executable" |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 ) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 include(FindPackageHandleStandardArgs) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 include(CMakeParseArguments) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 # Extract the version |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 if (Pandoc_EXECUTABLE) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 execute_process( |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 COMMAND ${Pandoc_EXECUTABLE} --version |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 OUTPUT_VARIABLE _pandoc_version_tmp |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 ) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 if (_pandoc_version_tmp MATCHES "^pandoc[^ ]* ([0-9]+\\.[0-9]+\\.[0-9]+)") |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 set(Pandoc_VERSION "${CMAKE_MATCH_1}") |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 find_package_handle_standard_args( |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 Pandoc |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 FOUND_VAR Pandoc_FOUND |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 VERSION_VAR Pandoc_VERSION |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 REQUIRED_VARS Pandoc_EXECUTABLE |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 ) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 if (Pandoc_FOUND) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 function(pandoc) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 set(options MAKE_DIRECTORY STANDALONE TOC) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 set(oneValueArgs FILTER FROM TARGET TEMPLATE TO OUTPUT WORKING_DIRECTORY) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 set(multiValueArgs ARGS FOOTER HEADER METADATA SOURCES VARIABLE) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 # The following variables will be set in that scope: |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 # _pandoc_arguments - List of all arguments that will passed to pandoc invocation. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 # _pandoc_depends - List of all dependencies attached to the add_custom_command. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 # _pandoc_mkdir - The mkdir command if MAKE_DIRECTORY is set |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 # _pandoc_output_base - The base output directory |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 cmake_parse_arguments(PANDOC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 # Output and sources are mandatory |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 if (NOT PANDOC_OUTPUT) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 message(FATAL_ERROR "Please define OUTPUT") |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 elseif (NOT PANDOC_SOURCES) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 message(FATAL_ERROR "Please defines SOURCES") |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 # Handle the filter with care. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 # 1. If it is a target, depend on it and use a generator |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 # expression to get its full path on the disk. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 # 2. If it is not a target, just use the user provided path. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 if (PANDOC_FILTER) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 # If it is a target, add a dependency so that it is built |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 if (TARGET ${PANDOC_FILTER}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 list(APPEND _pandoc_arguments --filter "$<TARGET_FILE:${PANDOC_FILTER}>") |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 list(APPEND _pandoc_depends ${PANDOC_FILTER}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 else () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 list(APPEND _pandoc_arguments --filter ${PANDOC_FILTER}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
145 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 if (PANDOC_TOC) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 list(APPEND _pandoc_arguments --toc) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 if (PANDOC_STANDALONE) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 list(APPEND _pandoc_arguments -s) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 if (PANDOC_FROM) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 list(APPEND _pandoc_arguments -f ${PANDOC_FROM}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 if (PANDOC_TO) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 list(APPEND _pandoc_arguments -t ${PANDOC_TO}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 if (PANDOC_TEMPLATE) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 list(APPEND _pandoc_arguments --template ${PANDOC_TEMPLATE}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 list(APPEND _pandoc_depends ${PANDOC_TEMPLATE}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
161 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 # Header, footers and body |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 foreach (h ${PANDOC_HEADER}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 list(APPEND _pandoc_arguments -H ${h}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
166 list(APPEND _pandoc_depends ${h}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 endforeach () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
168 foreach (b ${PANDOC_BODY}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 list(APPEND _pandoc_arguments -B ${b}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 list(APPEND _pandoc_depends ${b}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
171 endforeach () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
172 foreach (f ${PANDOC_FOOTER}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 list(APPEND _pandoc_arguments -A ${f}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
174 list(APPEND _pandoc_depends ${f}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
175 endforeach () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
177 # Variables and metadata |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
178 foreach (var ${PANDOC_VARIABLE}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
179 list(APPEND _pandoc_arguments -V ${var}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
180 endforeach () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
181 foreach (meta ${PANDOC_METADATA}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
182 list(APPEND _pandoc_arguments -M ${meta}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
183 endforeach () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
184 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
185 # Optional list of arguments |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
186 foreach (arg ${PANDOC_ARGS}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
187 list(APPEND _pandoc_arguments ${arg}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
188 endforeach () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
189 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
190 # Output and sources |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
191 list(APPEND _pandoc_arguments -o ${PANDOC_OUTPUT}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
192 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
193 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
194 # The following variables are set within the loop: |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
195 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
196 # _pandoc_input - The absolute path to the input file. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
197 # _pandoc_output_base - The base output directory. |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
198 # |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
199 foreach (s ${PANDOC_SOURCES}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
200 get_filename_component(_pandoc_input ${s} ABSOLUTE) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
201 get_filename_component(_pandoc_output_base ${PANDOC_OUTPUT} DIRECTORY) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
202 list(APPEND _pandoc_depends ${_pandoc_input}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
203 list(APPEND _pandoc_arguments ${_pandoc_input}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
204 endforeach () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
205 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
206 # Create the output directory if requested |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
207 if (PANDOC_MAKE_DIRECTORY) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
208 set(_pandoc_mkdir ${CMAKE_COMMAND} -E make_directory ${_pandoc_output_base}) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
209 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
210 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
211 add_custom_command( |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
212 OUTPUT ${PANDOC_OUTPUT} |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
213 COMMAND ${_pandoc_mkdir} |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
214 COMMAND ${Pandoc_EXECUTABLE} ${_pandoc_arguments} |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
215 DEPENDS ${_pandoc_depends} ${PANDOC_DEPENDS} |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
216 WORKING_DIRECTORY ${PANDOC_WORKING_DIRECTORY} |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
217 VERBATIM |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
218 ) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
219 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
220 if (PANDOC_TARGET) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
221 add_custom_target( |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
222 ${PANDOC_TARGET} ${PANDOC_ALL} |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
223 SOURCES ${_pandoc_depends} |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
224 DEPENDS ${PANDOC_OUTPUT} |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
225 WORKING_DIRECTORY ${PANDOC_WORKING_DIRECTORY} |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
226 ) |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
227 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
228 endfunction() |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
229 endif () |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
230 |
0b576ee64d45
* Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
231 mark_as_advanced(Pandoc_EXECUTABLE) |