annotate cmake/FindPandoc.cmake @ 383:403fa2642e19

Socket: add operator on addresses
author David Demelier <markand@malikania.fr>
date Tue, 23 Jun 2015 14:47:42 +0200
parents 0b576ee64d45
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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)