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 ()