Mercurial > irccd
comparison cmake/function/IrccdBuildHtml.cmake @ 818:49fa22f0b4b9
windows: support for VS2017
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 23 Nov 2018 21:50:20 +0100 |
parents | ebe561276c33 |
children | 06cc2f95f479 |
comparison
equal
deleted
inserted
replaced
817:ebe561276c33 | 818:49fa22f0b4b9 |
---|---|
69 else () | 69 else () |
70 set(IRCCD_WITH_HTML_MSG "No (disabled by user)") | 70 set(IRCCD_WITH_HTML_MSG "No (disabled by user)") |
71 endif () | 71 endif () |
72 | 72 |
73 macro(irccd_build_html) | 73 macro(irccd_build_html) |
74 if (NOT IRCCD_HAVE_HTML) | 74 if (IRCCD_HAVE_HTML) |
75 return () | 75 set(options "") |
76 endif () | 76 set(oneValueArgs "COMPONENT;OUTPUT_DIR;OUTPUT_VAR;SOURCE;TEMPLATE") |
77 set(multiValueArgs "VARIABLES") | |
77 | 78 |
78 set(options "") | 79 cmake_parse_arguments(HTML "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
79 set(oneValueArgs "COMPONENT;OUTPUT_DIR;OUTPUT_VAR;SOURCE;TEMPLATE") | |
80 set(multiValueArgs "VARIABLES") | |
81 | 80 |
82 cmake_parse_arguments(HTML "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | 81 if (NOT HTML_SOURCE) |
82 message(FATAL_ERROR "Missing SOURCE parameter") | |
83 endif () | |
84 if (NOT HTML_TEMPLATE) | |
85 message(FATAL_ERROR "Missing TEMPLATE parameter") | |
86 endif () | |
87 if (IS_ABSOLUTE ${HTML_OUTPUT_DIR}) | |
88 message(FATAL_ERROR "OUTPUT_DIR variable must not be absolute") | |
89 endif () | |
83 | 90 |
84 if (NOT HTML_SOURCE) | 91 # |
85 message(FATAL_ERROR "Missing SOURCE parameter") | 92 # Get the basename, use string REGEX REPLACE because |
86 endif () | 93 # get_filename_component will remove all extensions while we only want |
87 if (NOT HTML_TEMPLATE) | 94 # to remove md. (e.g. irccd.conf.md becomes irccd.conf). |
88 message(FATAL_ERROR "Missing TEMPLATE parameter") | 95 # |
89 endif () | 96 get_filename_component(filename ${HTML_SOURCE} NAME) |
90 if (IS_ABSOLUTE ${HTML_OUTPUT_DIR}) | 97 string(REGEX REPLACE "^(.*)\\.md$" "\\1" filename ${filename}) |
91 message(FATAL_ERROR "OUTPUT_DIR variable must not be absolute") | |
92 endif () | |
93 | 98 |
94 # | 99 # Compute baseurl. |
95 # Get the basename, use string REGEX REPLACE because | 100 file( |
96 # get_filename_component will remove all extensions while we only want | 101 RELATIVE_PATH |
97 # to remove md. (e.g. irccd.conf.md becomes irccd.conf). | 102 baseurl |
98 # | 103 ${CMAKE_BINARY_DIR}/html/${HTML_OUTPUT_DIR} |
99 get_filename_component(filename ${HTML_SOURCE} NAME) | 104 ${CMAKE_BINARY_DIR}/html |
100 string(REGEX REPLACE "^(.*)\\.md$" "\\1" filename ${filename}) | 105 ) |
101 | 106 |
102 # Compute baseurl. | 107 if (baseurl STREQUAL "") |
103 file( | 108 set(baseurl "./") |
104 RELATIVE_PATH | 109 endif () |
105 baseurl | 110 if (NOT HTML_OUTPUT_DIR OR HTML_OUTPUT_DIR STREQUAL "") |
106 ${CMAKE_BINARY_DIR}/html/${HTML_OUTPUT_DIR} | 111 set(HTML_OUTPUT_DIR ".") |
107 ${CMAKE_BINARY_DIR}/html | 112 endif () |
108 ) | |
109 | 113 |
110 if (baseurl STREQUAL "") | 114 # Filname path to output directory and files. |
111 set(baseurl "./") | 115 set(outputdir ${CMAKE_BINARY_DIR}/html/${HTML_OUTPUT_DIR}) |
112 endif () | 116 set(output ${outputdir}/${filename}.html) |
113 if (NOT HTML_OUTPUT_DIR OR HTML_OUTPUT_DIR STREQUAL "") | |
114 set(HTML_OUTPUT_DIR ".") | |
115 endif () | |
116 | 117 |
117 # Filname path to output directory and files. | 118 # Build arguments. |
118 set(outputdir ${CMAKE_BINARY_DIR}/html/${HTML_OUTPUT_DIR}) | 119 if (HTML_TEMPLATE) |
119 set(output ${outputdir}/${filename}.html) | 120 set(args -t ${HTML_TEMPLATE} -v baseurl="${baseurl}") |
121 endif () | |
120 | 122 |
121 # Build arguments. | 123 add_custom_command( |
122 if (HTML_TEMPLATE) | 124 OUTPUT ${output} |
123 set(args -t ${HTML_TEMPLATE} -v baseurl="${baseurl}") | 125 COMMAND |
124 endif () | 126 ${CMAKE_COMMAND} -E make_directory ${outputdir} |
127 COMMAND | |
128 $<TARGET_FILE:marker::marker> ${args} ${HTML_VARIABLES} | |
129 $<TARGET_FILE:marker::libmarker-bulma> ${output} ${HTML_SOURCE} | |
130 DEPENDS | |
131 ${HTML_SOURCE} | |
132 ${HTML_TEMPLATE} | |
133 ) | |
125 | 134 |
126 add_custom_command( | 135 # Install the documentation file as component if provided. |
127 OUTPUT ${output} | 136 if (HTML_COMPONENT) |
128 COMMAND | 137 install( |
129 ${CMAKE_COMMAND} -E make_directory ${outputdir} | 138 FILES ${output} |
130 COMMAND | 139 COMPONENT ${HTML_COMPONENT} |
131 $<TARGET_FILE:marker::marker> ${args} ${HTML_VARIABLES} | 140 DESTINATION ${CMAKE_INSTALL_DOCDIR}/${HTML_OUTPUT_DIR} |
132 $<TARGET_FILE:marker::libmarker-bulma> ${output} ${HTML_SOURCE} | 141 ) |
133 DEPENDS | 142 endif () |
134 ${HTML_SOURCE} | |
135 ${HTML_TEMPLATE} | |
136 ) | |
137 | 143 |
138 # Install the documentation file as component if provided. | 144 if (HTML_OUTPUT_VAR) |
139 if (HTML_COMPONENT) | 145 set(${HTML_OUTPUT_VAR} ${output}) |
140 install( | 146 endif () |
141 FILES ${output} | |
142 COMPONENT ${HTML_COMPONENT} | |
143 DESTINATION ${CMAKE_INSTALL_DOCDIR}/${HTML_OUTPUT_DIR} | |
144 ) | |
145 endif () | |
146 | |
147 if (HTML_OUTPUT_VAR) | |
148 set(${HTML_OUTPUT_VAR} ${output}) | |
149 endif () | 147 endif () |
150 endmacro () | 148 endmacro () |