Mercurial > irccd
annotate cmake/function/IrccdDefineHtml.cmake @ 258:c7d4e8c279a9
Misc: get rid of .arcconfig
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 13 Sep 2016 12:58:23 +0200 |
parents | 6635b9187d71 |
children |
rev | line source |
---|---|
0 | 1 # |
2 # IrccdDefineHtml.cmake -- CMake build system for irccd | |
3 # | |
4 # Copyright (c) 2013-2016 David Demelier <markand@malikania.fr> | |
5 # | |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 # | |
20 # irccd_define_html | |
21 # ------------------------------------------------------------------- | |
22 # | |
23 # irccd_define_html( | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
24 # SOURCES the source files |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
25 # DIRECTORY the base directory relative to the WITH_DOCDIR |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
26 # TARGET the target name |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
27 # VARS (Optional) variables to pass |
0 | 28 # ) |
29 # | |
30 # This first signature processes all files and compile them one per one. Files are placed in the same hierarchy where | |
31 # the function is invoked. | |
32 # | |
33 # irccd_define_html( | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
34 # SOURCES the source files |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
35 # OUTPUT the output file |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
36 # TARGET the target name |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
37 # VARS (Optional) variables to pass |
0 | 38 # ) |
39 # | |
40 # This second signature generated only one file from all sources. Usually for a book, guide and such. | |
41 # | |
42 # Note: do not pass an absolute path for the output. | |
43 # | |
44 | |
45 function(irccd_define_html) | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
46 set(options) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
47 set(oneValueArgs DIRECTORY OUTPUT TARGET) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
48 set(multiValueArgs ARGS SOURCES) |
0 | 49 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
50 cmake_parse_arguments(HTML "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
0 | 51 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
52 # Required arguments |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
53 if (NOT HTML_SOURCES) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
54 message(FATAL_ERROR "Please specify source files") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
55 endif () |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
56 if (NOT HTML_TARGET) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
57 message(FATAL_ERROR "Please specify a target") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
58 endif () |
0 | 59 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
60 set(base ${IRCCD_FAKEROOTDIR}/${WITH_DOCDIR}) |
0 | 61 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
62 if (HTML_OUTPUT) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
63 # |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
64 # First signature. |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
65 # |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
66 if (IS_ABSOLUTE) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
67 message(FATAL_ERROR "Do not pass absolute path for OUTPUT") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
68 endif () |
0 | 69 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
70 get_filename_component(directory ${base}/${HTML_OUTPUT} DIRECTORY) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
71 file(RELATIVE_PATH baseurl ${directory} ${base}) |
0 | 72 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
73 if (baseurl STREQUAL "") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
74 set(baseurl "./") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
75 endif () |
0 | 76 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
77 # Configure sources |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
78 foreach (s ${HTML_SOURCES}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
79 file(RELATIVE_PATH basepath ${CMAKE_CURRENT_SOURCE_DIR} ${s}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
80 configure_file(${s} ${CMAKE_CURRENT_BINARY_DIR}/${basepath} @ONLY) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
81 list(APPEND REAL_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${basepath}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
82 endforeach () |
0 | 83 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
84 pandoc( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
85 OUTPUT ${base}/${HTML_OUTPUT} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
86 TARGET ${HTML_TARGET} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
87 SOURCES ${REAL_SOURCES} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
88 TEMPLATE ${resources_SOURCE_DIR}/template.html |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
89 DEPENDS |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
90 ${resources_SOURCE_DIR}/template.html |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
91 docs-resources |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
92 ARGS ${HTML_ARGS} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
93 VARIABLE baseurl:${baseurl} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
94 FROM markdown TO html5 |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
95 STANTALONE MAKE_DIRECTORY |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
96 ) |
0 | 97 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
98 install( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
99 FILES ${base}/${HTML_OUTPUT} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
100 DESTINATION ${WITH_DOCDIR} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
101 ) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
102 else () |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
103 if (NOT HTML_DIRECTORY) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
104 message(FATAL_ERROR "Please specify the directory") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
105 endif () |
0 | 106 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
107 # |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
108 # Second signature. |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
109 # |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
110 foreach (s ${HTML_SOURCES}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
111 file(RELATIVE_PATH input ${CMAKE_CURRENT_SOURCE_DIR} ${s}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
112 string(REGEX REPLACE "^(.*)\\.md$" "\\1.html" filename ${input}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
113 get_filename_component(directory ${base}/${HTML_DIRECTORY}/${filename} DIRECTORY) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
114 file(RELATIVE_PATH baseurl ${directory} ${base}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
115 file(RELATIVE_PATH basepath ${CMAKE_CURRENT_SOURCE_DIR} ${s}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
116 list(APPEND outputs ${base}/${HTML_DIRECTORY}/${filename}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
117 configure_file(${s} ${CMAKE_CURRENT_BINARY_DIR}/${basepath} @ONLY) |
0 | 118 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
119 pandoc( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
120 OUTPUT ${base}/${HTML_DIRECTORY}/${filename} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
121 SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${basepath} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
122 TEMPLATE ${resources_SOURCE_DIR}/template.html |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
123 DEPENDS |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
124 ${resources_SOURCE_DIR}/template.html |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
125 docs-resources |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
126 ARGS ${HTML_ARGS} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
127 VARIABLE baseurl:${baseurl} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
128 FROM markdown TO html5 |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
129 STANTALONE MAKE_DIRECTORY |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
130 ) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
131 endforeach () |
0 | 132 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
133 add_custom_target( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
134 ${HTML_TARGET} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
135 DEPENDS ${outputs} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
136 SOURCES ${HTML_SOURCES} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
137 ) |
0 | 138 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
139 install( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
140 DIRECTORY ${base}/${HTML_DIRECTORY} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
141 DESTINATION ${WITH_DOCDIR} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
142 ) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
143 endif () |
0 | 144 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
138
diff
changeset
|
145 add_dependencies(all-docs ${HTML_TARGET}) |
0 | 146 endfunction() |