annotate cmake/packages/FindPandoc.cmake @ 0:1158cffe5a5e

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