Mercurial > irccd
annotate cmake/function/IrccdDefineHtml.cmake @ 75:f8160d515a76
Irccd: rework a lot the JavaScript library
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 30 Mar 2016 13:52:47 +0200 |
parents | b3e0050463bf |
children | 113d909fdfe1 |
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( | |
24 # SOURCES the source files | |
25 # DIRECTORY the base directory relative to the WITH_DOCDIR | |
26 # TARGET the target name | |
27 # VARS (Optional) variables to pass | |
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( | |
34 # SOURCES the source files | |
35 # OUTPUT the output file | |
36 # TARGET the target name | |
37 # VARS (Optional) variables to pass | |
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) | |
46 set(options) | |
47 set(oneValueArgs DIRECTORY OUTPUT TARGET) | |
48 set(multiValueArgs ARGS SOURCES) | |
49 | |
50 cmake_parse_arguments(HTML "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | |
51 | |
52 # Required arguments | |
53 if (NOT HTML_SOURCES) | |
54 message(FATAL_ERROR "Please specify source files") | |
55 endif () | |
56 if (NOT HTML_TARGET) | |
57 message(FATAL_ERROR "Please specify a target") | |
58 endif () | |
59 | |
60 if (IRCCD_RELOCATABLE) | |
61 set(base ${CMAKE_BINARY_DIR}/fakeroot/${WITH_DOCDIR}) | |
62 else () | |
63 set(base ${CMAKE_BINARY_DIR}/docs) | |
64 endif () | |
65 | |
66 if (HTML_OUTPUT) | |
67 # | |
68 # First signature. | |
69 # | |
70 if (IS_ABSOLUTE) | |
71 message(FATAL_ERROR "Do not pass absolute path for OUTPUT") | |
72 endif () | |
73 | |
74 get_filename_component(directory ${base}/${HTML_OUTPUT} DIRECTORY) | |
75 file(RELATIVE_PATH baseurl ${directory} ${base}) | |
76 | |
77 if (baseurl STREQUAL "") | |
78 set(baseurl "./") | |
79 endif () | |
80 | |
81 # Configure sources | |
82 foreach (s ${HTML_SOURCES}) | |
83 file(RELATIVE_PATH basepath ${CMAKE_CURRENT_SOURCE_DIR} ${s}) | |
84 configure_file(${s} ${CMAKE_CURRENT_BINARY_DIR}/${basepath} @ONLY) | |
85 list(APPEND REAL_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${basepath}) | |
86 endforeach () | |
87 | |
88 pandoc( | |
89 OUTPUT ${base}/${HTML_OUTPUT} | |
90 TARGET ${HTML_TARGET} | |
91 SOURCES ${REAL_SOURCES} | |
92 TEMPLATE ${resources_SOURCE_DIR}/template.html | |
93 DEPENDS | |
94 ${resources_SOURCE_DIR}/template.html | |
95 docs-resources | |
96 ARGS ${HTML_ARGS} | |
39
b3e0050463bf
Docs: remove irccd-web related stuff
David Demelier <markand@malikania.fr>
parents:
6
diff
changeset
|
97 VARIABLE baseurl:${baseurl} |
0 | 98 FROM markdown TO html5 |
99 STANTALONE MAKE_DIRECTORY | |
100 ) | |
101 | |
102 install( | |
103 FILES ${base}/${HTML_OUTPUT} | |
104 DESTINATION ${WITH_DOCDIR} | |
105 ) | |
106 else () | |
107 if (NOT HTML_DIRECTORY) | |
108 message(FATAL_ERROR "Please specify the directory") | |
109 endif () | |
110 | |
111 # | |
112 # Second signature. | |
113 # | |
114 foreach (s ${HTML_SOURCES}) | |
115 file(RELATIVE_PATH input ${CMAKE_CURRENT_SOURCE_DIR} ${s}) | |
116 string(REGEX REPLACE "^(.*)\\.md$" "\\1.html" filename ${input}) | |
117 get_filename_component(directory ${base}/${HTML_DIRECTORY}/${filename} DIRECTORY) | |
118 file(RELATIVE_PATH baseurl ${directory} ${base}) | |
119 file(RELATIVE_PATH basepath ${CMAKE_CURRENT_SOURCE_DIR} ${s}) | |
120 list(APPEND outputs ${base}/${HTML_DIRECTORY}/${filename}) | |
121 configure_file(${s} ${CMAKE_CURRENT_BINARY_DIR}/${basepath} @ONLY) | |
122 | |
123 pandoc( | |
124 OUTPUT ${base}/${HTML_DIRECTORY}/${filename} | |
125 SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${basepath} | |
126 TEMPLATE ${resources_SOURCE_DIR}/template.html | |
127 DEPENDS | |
128 ${resources_SOURCE_DIR}/template.html | |
129 docs-resources | |
130 ARGS ${HTML_ARGS} | |
39
b3e0050463bf
Docs: remove irccd-web related stuff
David Demelier <markand@malikania.fr>
parents:
6
diff
changeset
|
131 VARIABLE baseurl:${baseurl} |
0 | 132 FROM markdown TO html5 |
133 STANTALONE MAKE_DIRECTORY | |
134 ) | |
135 endforeach () | |
136 | |
137 add_custom_target( | |
138 ${HTML_TARGET} | |
139 DEPENDS ${outputs} | |
140 SOURCES ${HTML_SOURCES} | |
141 ) | |
142 | |
143 install( | |
144 DIRECTORY ${base}/${HTML_DIRECTORY} | |
145 DESTINATION ${WITH_DOCDIR} | |
146 ) | |
147 endif () | |
148 | |
149 add_dependencies(docs ${HTML_TARGET}) | |
150 endfunction() |