1 # Copyright (c) 2018 Yubico AB. All rights reserved.
2 # Use of this source code is governed by a BSD-style
3 # license that can be found in the LICENSE file.
5 find_program(MANDOC_PATH mandoc)
6 find_program(GZIP_PATH gzip)
8 message(STATUS "MANDOC_PATH: ${MANDOC_PATH}")
9 message(STATUS "GZIP_PATH: ${GZIP_PATH}")
11 list(APPEND MAN_SOURCES
19 fido_assert_allow_cred.3
20 fido_assert_set_authdata.3
22 fido_bio_dev_get_info.3
29 fido_credman_metadata_new.3
30 fido_cred_set_authdata.3
32 fido_dev_enable_entattest.3
34 fido_dev_get_touch_begin.3
35 fido_dev_info_manifest.3
36 fido_dev_largeblob_get.3
39 fido_dev_set_io_functions.3
46 eddsa_pk_new eddsa_pk_free
47 eddsa_pk_new eddsa_pk_from_EVP_PKEY
48 eddsa_pk_new eddsa_pk_from_ptr
49 eddsa_pk_new eddsa_pk_to_EVP_PKEY
50 es256_pk_new es256_pk_free
51 es256_pk_new es256_pk_from_EC_KEY
52 es256_pk_new es256_pk_from_EVP_PKEY
53 es256_pk_new es256_pk_from_ptr
54 es256_pk_new es256_pk_to_EVP_PKEY
55 fido_assert_new fido_assert_authdata_len
56 fido_assert_new fido_assert_authdata_ptr
57 fido_assert_new fido_assert_blob_len
58 fido_assert_new fido_assert_blob_ptr
59 fido_assert_new fido_assert_clientdata_hash_len
60 fido_assert_new fido_assert_clientdata_hash_ptr
61 fido_assert_new fido_assert_count
62 fido_assert_new fido_assert_flags
63 fido_assert_new fido_assert_free
64 fido_assert_new fido_assert_hmac_secret_len
65 fido_assert_new fido_assert_hmac_secret_ptr
66 fido_assert_new fido_assert_id_len
67 fido_assert_new fido_assert_id_ptr
68 fido_assert_new fido_assert_largeblob_key_len
69 fido_assert_new fido_assert_largeblob_key_ptr
70 fido_assert_new fido_assert_rp_id
71 fido_assert_new fido_assert_sigcount
72 fido_assert_new fido_assert_sig_len
73 fido_assert_new fido_assert_sig_ptr
74 fido_assert_new fido_assert_user_display_name
75 fido_assert_new fido_assert_user_icon
76 fido_assert_new fido_assert_user_id_len
77 fido_assert_new fido_assert_user_id_ptr
78 fido_assert_new fido_assert_user_name
79 fido_assert_set_authdata fido_assert_set_authdata_raw
80 fido_assert_set_authdata fido_assert_set_clientdata
81 fido_assert_set_authdata fido_assert_set_clientdata_hash
82 fido_assert_set_authdata fido_assert_set_count
83 fido_assert_set_authdata fido_assert_set_extensions
84 fido_assert_set_authdata fido_assert_set_hmac_salt
85 fido_assert_set_authdata fido_assert_set_hmac_secret
86 fido_assert_set_authdata fido_assert_set_rp
87 fido_assert_set_authdata fido_assert_set_sig
88 fido_assert_set_authdata fido_assert_set_up
89 fido_assert_set_authdata fido_assert_set_uv
90 fido_bio_dev_get_info fido_bio_dev_enroll_begin
91 fido_bio_dev_get_info fido_bio_dev_enroll_cancel
92 fido_bio_dev_get_info fido_bio_dev_enroll_continue
93 fido_bio_dev_get_info fido_bio_dev_enroll_remove
94 fido_bio_dev_get_info fido_bio_dev_get_template_array
95 fido_bio_dev_get_info fido_bio_dev_set_template_name
96 fido_bio_enroll_new fido_bio_enroll_free
97 fido_bio_enroll_new fido_bio_enroll_last_status
98 fido_bio_enroll_new fido_bio_enroll_remaining_samples
99 fido_bio_info_new fido_bio_info_free
100 fido_bio_info_new fido_bio_info_max_samples
101 fido_bio_info_new fido_bio_info_type
102 fido_bio_template fido_bio_template_array_count
103 fido_bio_template fido_bio_template_array_free
104 fido_bio_template fido_bio_template_array_new
105 fido_bio_template fido_bio_template_free
106 fido_bio_template fido_bio_template_id_len
107 fido_bio_template fido_bio_template_id_ptr
108 fido_bio_template fido_bio_template_name
109 fido_bio_template fido_bio_template_new
110 fido_bio_template fido_bio_template_set_id
111 fido_bio_template fido_bio_template_set_name
112 fido_cbor_info_new fido_cbor_info_aaguid_len
113 fido_cbor_info_new fido_cbor_info_aaguid_ptr
114 fido_cbor_info_new fido_cbor_info_algorithm_cose
115 fido_cbor_info_new fido_cbor_info_algorithm_count
116 fido_cbor_info_new fido_cbor_info_algorithm_type
117 fido_cbor_info_new fido_cbor_info_extensions_len
118 fido_cbor_info_new fido_cbor_info_extensions_ptr
119 fido_cbor_info_new fido_cbor_info_free
120 fido_cbor_info_new fido_cbor_info_maxmsgsiz
121 fido_cbor_info_new fido_cbor_info_maxcredbloblen
122 fido_cbor_info_new fido_cbor_info_maxcredcntlst
123 fido_cbor_info_new fido_cbor_info_maxcredidlen
124 fido_cbor_info_new fido_cbor_info_fwversion
125 fido_cbor_info_new fido_cbor_info_options_len
126 fido_cbor_info_new fido_cbor_info_options_name_ptr
127 fido_cbor_info_new fido_cbor_info_options_value_ptr
128 fido_cbor_info_new fido_cbor_info_protocols_len
129 fido_cbor_info_new fido_cbor_info_protocols_ptr
130 fido_cbor_info_new fido_cbor_info_transports_len
131 fido_cbor_info_new fido_cbor_info_transports_ptr
132 fido_cbor_info_new fido_cbor_info_versions_len
133 fido_cbor_info_new fido_cbor_info_versions_ptr
134 fido_cbor_info_new fido_dev_get_cbor_info
135 fido_cred_new fido_cred_aaguid_len
136 fido_cred_new fido_cred_aaguid_ptr
137 fido_cred_new fido_cred_attstmt_len
138 fido_cred_new fido_cred_attstmt_ptr
139 fido_cred_new fido_cred_authdata_len
140 fido_cred_new fido_cred_authdata_ptr
141 fido_cred_new fido_cred_authdata_raw_len
142 fido_cred_new fido_cred_authdata_raw_ptr
143 fido_cred_new fido_cred_clientdata_hash_len
144 fido_cred_new fido_cred_clientdata_hash_ptr
145 fido_cred_new fido_cred_display_name
146 fido_cred_new fido_cred_flags
147 fido_cred_new fido_cred_fmt
148 fido_cred_new fido_cred_free
149 fido_cred_new fido_cred_id_len
150 fido_cred_new fido_cred_id_ptr
151 fido_cred_new fido_cred_largeblob_key_len
152 fido_cred_new fido_cred_largeblob_key_ptr
153 fido_cred_new fido_cred_pin_minlen
154 fido_cred_new fido_cred_prot
155 fido_cred_new fido_cred_pubkey_len
156 fido_cred_new fido_cred_pubkey_ptr
157 fido_cred_new fido_cred_rp_id
158 fido_cred_new fido_cred_rp_name
159 fido_cred_new fido_cred_sigcount
160 fido_cred_new fido_cred_sig_len
161 fido_cred_new fido_cred_sig_ptr
162 fido_cred_new fido_cred_type
163 fido_cred_new fido_cred_user_id_len
164 fido_cred_new fido_cred_user_id_ptr
165 fido_cred_new fido_cred_user_name
166 fido_cred_new fido_cred_x5c_len
167 fido_cred_new fido_cred_x5c_ptr
168 fido_cred_verify fido_cred_verify_self
169 fido_credman_metadata_new fido_credman_del_dev_rk
170 fido_credman_metadata_new fido_credman_get_dev_metadata
171 fido_credman_metadata_new fido_credman_get_dev_rk
172 fido_credman_metadata_new fido_credman_get_dev_rp
173 fido_credman_metadata_new fido_credman_metadata_free
174 fido_credman_metadata_new fido_credman_rk
175 fido_credman_metadata_new fido_credman_rk_count
176 fido_credman_metadata_new fido_credman_rk_existing
177 fido_credman_metadata_new fido_credman_rk_free
178 fido_credman_metadata_new fido_credman_rk_new
179 fido_credman_metadata_new fido_credman_rk_remaining
180 fido_credman_metadata_new fido_credman_rp_count
181 fido_credman_metadata_new fido_credman_rp_free
182 fido_credman_metadata_new fido_credman_rp_id
183 fido_credman_metadata_new fido_credman_rp_id_hash_len
184 fido_credman_metadata_new fido_credman_rp_id_hash_ptr
185 fido_credman_metadata_new fido_credman_rp_name
186 fido_credman_metadata_new fido_credman_rp_new
187 fido_credman_metadata_new fido_credman_set_dev_rk
188 fido_cred_set_authdata fido_cred_set_attstmt
189 fido_cred_set_authdata fido_cred_set_authdata_raw
190 fido_cred_set_authdata fido_cred_set_blob
191 fido_cred_set_authdata fido_cred_set_clientdata
192 fido_cred_set_authdata fido_cred_set_clientdata_hash
193 fido_cred_set_authdata fido_cred_set_extensions
194 fido_cred_set_authdata fido_cred_set_fmt
195 fido_cred_set_authdata fido_cred_set_id
196 fido_cred_set_authdata fido_cred_set_pin_minlen
197 fido_cred_set_authdata fido_cred_set_prot
198 fido_cred_set_authdata fido_cred_set_rk
199 fido_cred_set_authdata fido_cred_set_rp
200 fido_cred_set_authdata fido_cred_set_sig
201 fido_cred_set_authdata fido_cred_set_type
202 fido_cred_set_authdata fido_cred_set_user
203 fido_cred_set_authdata fido_cred_set_uv
204 fido_cred_set_authdata fido_cred_set_x509
205 fido_dev_enable_entattest fido_dev_toggle_always_uv
206 fido_dev_enable_entattest fido_dev_force_pin_change
207 fido_dev_enable_entattest fido_dev_set_pin_minlen
208 fido_dev_enable_entattest fido_dev_set_pin_minlen_rpid
209 fido_dev_get_touch_begin fido_dev_get_touch_status
210 fido_dev_info_manifest fido_dev_info_free
211 fido_dev_info_manifest fido_dev_info_manufacturer_string
212 fido_dev_info_manifest fido_dev_info_new
213 fido_dev_info_manifest fido_dev_info_path
214 fido_dev_info_manifest fido_dev_info_product
215 fido_dev_info_manifest fido_dev_info_product_string
216 fido_dev_info_manifest fido_dev_info_ptr
217 fido_dev_info_manifest fido_dev_info_set
218 fido_dev_info_manifest fido_dev_info_vendor
219 fido_dev_open fido_dev_build
220 fido_dev_open fido_dev_cancel
221 fido_dev_open fido_dev_close
222 fido_dev_open fido_dev_flags
223 fido_dev_open fido_dev_force_fido2
224 fido_dev_open fido_dev_force_u2f
225 fido_dev_open fido_dev_free
226 fido_dev_open fido_dev_has_pin
227 fido_dev_open fido_dev_has_uv
228 fido_dev_open fido_dev_is_fido2
229 fido_dev_open fido_dev_is_winhello
230 fido_dev_open fido_dev_major
231 fido_dev_open fido_dev_minor
232 fido_dev_open fido_dev_new
233 fido_dev_open fido_dev_new_with_info
234 fido_dev_open fido_dev_open_with_info
235 fido_dev_open fido_dev_protocol
236 fido_dev_open fido_dev_supports_cred_prot
237 fido_dev_open fido_dev_supports_credman
238 fido_dev_open fido_dev_supports_permissions
239 fido_dev_open fido_dev_supports_pin
240 fido_dev_open fido_dev_supports_uv
241 fido_dev_set_pin fido_dev_get_retry_count
242 fido_dev_set_pin fido_dev_get_uv_retry_count
243 fido_dev_set_pin fido_dev_reset
244 fido_dev_set_io_functions fido_dev_io_handle
245 fido_dev_set_io_functions fido_dev_set_sigmask
246 fido_dev_set_io_functions fido_dev_set_timeout
247 fido_dev_set_io_functions fido_dev_set_transport_functions
248 fido_dev_largeblob_get fido_dev_largeblob_set
249 fido_dev_largeblob_get fido_dev_largeblob_remove
250 fido_dev_largeblob_get fido_dev_largeblob_get_array
251 fido_dev_largeblob_get fido_dev_largeblob_set_array
252 fido_init fido_set_log_handler
253 rs256_pk_new rs256_pk_free
254 rs256_pk_new rs256_pk_from_ptr
255 rs256_pk_new rs256_pk_from_EVP_PKEY
256 rs256_pk_new rs256_pk_from_RSA
257 rs256_pk_new rs256_pk_to_EVP_PKEY
260 list(LENGTH MAN_ALIAS MAN_ALIAS_LEN)
261 math(EXPR MAN_ALIAS_MAX "${MAN_ALIAS_LEN} - 2")
264 foreach(f ${MAN_SOURCES})
265 add_custom_command(OUTPUT ${f}
266 COMMAND cp -f ${CMAKE_SOURCE_DIR}/man/${f} .
268 list(APPEND COPY_FILES ${f})
272 foreach(f ${MAN_SOURCES})
273 add_custom_command(OUTPUT ${f}.lint
274 COMMAND mandoc -T lint -W warning ${f} > ${f}.lint
276 list(APPEND LINT_FILES ${f}.lint)
280 foreach(f ${MAN_SOURCES})
281 string(REGEX REPLACE ".[13]" "" g ${f})
282 add_custom_command(OUTPUT ${g}.html
283 COMMAND mandoc -T html -O man="%N.html",style=style.css -I os="Yubico AB" ${f} > ${g}.html
285 list(APPEND HTML_FILES ${g}.html)
289 foreach(f ${MAN_SOURCES})
290 string(REGEX REPLACE ".[13]" "" g ${f})
291 add_custom_command(OUTPUT ${g}.partial
292 COMMAND cat ${CMAKE_SOURCE_DIR}/man/dyc.css > ${g}.partial
293 COMMAND mandoc -T html -O man="%N.html",fragment ${f} >> ${g}.partial
295 list(APPEND HTML_PARTIAL_FILES ${g}.partial)
299 foreach(f ${MAN_SOURCES})
300 add_custom_command(OUTPUT ${f}.gz
301 COMMAND gzip -cn ${f} > ${f}.gz
303 list(APPEND GZ_FILES ${f}.gz)
306 macro(define_symlink_target NAME EXT)
307 foreach(i RANGE 0 ${MAN_ALIAS_MAX} 2)
308 math(EXPR j "${i} + 1")
309 list(GET MAN_ALIAS ${i} SRC)
310 list(GET MAN_ALIAS ${j} DST)
311 add_custom_command(OUTPUT ${DST}.${EXT}
312 COMMAND ln -sf ${SRC}.${EXT} ${DST}.${EXT})
313 list(APPEND ${NAME}_LINK_FILES ${DST}.${EXT})
315 add_custom_target(${NAME} DEPENDS ${${NAME}_LINK_FILES})
318 add_custom_target(man_copy DEPENDS ${COPY_FILES})
319 add_custom_target(man_lint DEPENDS ${LINT_FILES})
320 add_custom_target(man_html DEPENDS ${HTML_FILES})
321 add_custom_target(man_html_partial DEPENDS ${HTML_PARTIAL_FILES})
322 add_custom_target(man_gzip DEPENDS ${GZ_FILES})
324 define_symlink_target(man_symlink 3)
325 define_symlink_target(man_symlink_html html)
326 define_symlink_target(man_symlink_html_partial partial)
327 define_symlink_target(man_symlink_gzip 3.gz)
329 add_dependencies(man_symlink man_copy)
330 add_dependencies(man_lint man_symlink)
331 add_dependencies(man_html man_lint)
332 add_dependencies(man_symlink_html man_html)
333 add_dependencies(man_html_partial man_lint)
334 add_dependencies(man_symlink_html_partial man_html_partial)
335 add_custom_target(man ALL)
338 add_dependencies(man man_symlink_html)
339 add_dependencies(man_gzip man_lint)
340 install(FILES ${CMAKE_SOURCE_DIR}/man/style.css
341 DESTINATION "${CMAKE_INSTALL_DOCDIR}/html")
342 foreach(f ${MAN_SOURCES})
343 string(REGEX REPLACE ".[13]" "" f ${f})
344 install(FILES ${CMAKE_BINARY_DIR}/man/${f}.html
345 DESTINATION "${CMAKE_INSTALL_DOCDIR}/html")
347 foreach(i RANGE 0 ${MAN_ALIAS_MAX} 2)
348 math(EXPR j "${i} + 1")
349 list(GET MAN_ALIAS ${j} DST)
350 install(FILES ${CMAKE_BINARY_DIR}/man/${DST}.html
351 DESTINATION "${CMAKE_INSTALL_DOCDIR}/html")
356 add_dependencies(man_gzip man_copy)
357 add_dependencies(man_symlink_gzip man_gzip)
358 add_dependencies(man man_symlink_gzip)
359 foreach(f ${MAN_SOURCES})
360 if (${f} MATCHES ".1$")
361 install(FILES ${CMAKE_BINARY_DIR}/man/${f}.gz
362 DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
363 elseif(${f} MATCHES ".3$")
364 install(FILES ${CMAKE_BINARY_DIR}/man/${f}.gz
365 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
368 foreach(i RANGE 0 ${MAN_ALIAS_MAX} 2)
369 math(EXPR j "${i} + 1")
370 list(GET MAN_ALIAS ${j} DST)
371 install(FILES ${CMAKE_BINARY_DIR}/man/${DST}.3.gz
372 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
375 add_dependencies(man man_symlink)
376 foreach(f ${MAN_SOURCES})
377 if (${f} MATCHES ".1$")
378 install(FILES ${CMAKE_BINARY_DIR}/man/${f}
379 DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
380 elseif(${f} MATCHES ".3$")
381 install(FILES ${CMAKE_BINARY_DIR}/man/${f}
382 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
385 foreach(i RANGE 0 ${MAN_ALIAS_MAX} 2)
386 math(EXPR j "${i} + 1")
387 list(GET MAN_ALIAS ${j} DST)
388 install(FILES ${CMAKE_BINARY_DIR}/man/${DST}.3
389 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")