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_ptr
48 eddsa_pk_new eddsa_pk_to_EVP_PKEY
49 es256_pk_new es256_pk_free
50 es256_pk_new es256_pk_from_EC_KEY
51 es256_pk_new es256_pk_from_ptr
52 es256_pk_new es256_pk_to_EVP_PKEY
53 fido_assert_new fido_assert_authdata_len
54 fido_assert_new fido_assert_authdata_ptr
55 fido_assert_new fido_assert_blob_len
56 fido_assert_new fido_assert_blob_ptr
57 fido_assert_new fido_assert_clientdata_hash_len
58 fido_assert_new fido_assert_clientdata_hash_ptr
59 fido_assert_new fido_assert_count
60 fido_assert_new fido_assert_flags
61 fido_assert_new fido_assert_free
62 fido_assert_new fido_assert_hmac_secret_len
63 fido_assert_new fido_assert_hmac_secret_ptr
64 fido_assert_new fido_assert_id_len
65 fido_assert_new fido_assert_id_ptr
66 fido_assert_new fido_assert_largeblob_key_len
67 fido_assert_new fido_assert_largeblob_key_ptr
68 fido_assert_new fido_assert_rp_id
69 fido_assert_new fido_assert_sigcount
70 fido_assert_new fido_assert_sig_len
71 fido_assert_new fido_assert_sig_ptr
72 fido_assert_new fido_assert_user_display_name
73 fido_assert_new fido_assert_user_icon
74 fido_assert_new fido_assert_user_id_len
75 fido_assert_new fido_assert_user_id_ptr
76 fido_assert_new fido_assert_user_name
77 fido_assert_set_authdata fido_assert_set_clientdata
78 fido_assert_set_authdata fido_assert_set_clientdata_hash
79 fido_assert_set_authdata fido_assert_set_count
80 fido_assert_set_authdata fido_assert_set_extensions
81 fido_assert_set_authdata fido_assert_set_hmac_salt
82 fido_assert_set_authdata fido_assert_set_hmac_secret
83 fido_assert_set_authdata fido_assert_set_rp
84 fido_assert_set_authdata fido_assert_set_sig
85 fido_assert_set_authdata fido_assert_set_up
86 fido_assert_set_authdata fido_assert_set_uv
87 fido_bio_dev_get_info fido_bio_dev_enroll_begin
88 fido_bio_dev_get_info fido_bio_dev_enroll_cancel
89 fido_bio_dev_get_info fido_bio_dev_enroll_continue
90 fido_bio_dev_get_info fido_bio_dev_enroll_remove
91 fido_bio_dev_get_info fido_bio_dev_get_template_array
92 fido_bio_dev_get_info fido_bio_dev_set_template_name
93 fido_bio_enroll_new fido_bio_enroll_free
94 fido_bio_enroll_new fido_bio_enroll_last_status
95 fido_bio_enroll_new fido_bio_enroll_remaining_samples
96 fido_bio_info_new fido_bio_info_free
97 fido_bio_info_new fido_bio_info_max_samples
98 fido_bio_info_new fido_bio_info_type
99 fido_bio_template fido_bio_template_array_count
100 fido_bio_template fido_bio_template_array_free
101 fido_bio_template fido_bio_template_array_new
102 fido_bio_template fido_bio_template_free
103 fido_bio_template fido_bio_template_id_len
104 fido_bio_template fido_bio_template_id_ptr
105 fido_bio_template fido_bio_template_name
106 fido_bio_template fido_bio_template_new
107 fido_bio_template fido_bio_template_set_id
108 fido_bio_template fido_bio_template_set_name
109 fido_cbor_info_new fido_cbor_info_aaguid_len
110 fido_cbor_info_new fido_cbor_info_aaguid_ptr
111 fido_cbor_info_new fido_cbor_info_algorithm_cose
112 fido_cbor_info_new fido_cbor_info_algorithm_count
113 fido_cbor_info_new fido_cbor_info_algorithm_type
114 fido_cbor_info_new fido_cbor_info_extensions_len
115 fido_cbor_info_new fido_cbor_info_extensions_ptr
116 fido_cbor_info_new fido_cbor_info_free
117 fido_cbor_info_new fido_cbor_info_maxmsgsiz
118 fido_cbor_info_new fido_cbor_info_maxcredbloblen
119 fido_cbor_info_new fido_cbor_info_maxcredcntlst;
120 fido_cbor_info_new fido_cbor_info_maxcredidlen;
121 fido_cbor_info_new fido_cbor_info_fwversion
122 fido_cbor_info_new fido_cbor_info_options_len
123 fido_cbor_info_new fido_cbor_info_options_name_ptr
124 fido_cbor_info_new fido_cbor_info_options_value_ptr
125 fido_cbor_info_new fido_cbor_info_protocols_len
126 fido_cbor_info_new fido_cbor_info_protocols_ptr
127 fido_cbor_info_new fido_cbor_info_transports_len
128 fido_cbor_info_new fido_cbor_info_transports_ptr
129 fido_cbor_info_new fido_cbor_info_versions_len
130 fido_cbor_info_new fido_cbor_info_versions_ptr
131 fido_cbor_info_new fido_dev_get_cbor_info
132 fido_cred_new fido_cred_authdata_len
133 fido_cred_new fido_cred_authdata_ptr
134 fido_cred_new fido_cred_authdata_raw_len
135 fido_cred_new fido_cred_authdata_raw_ptr
136 fido_cred_new fido_cred_clientdata_hash_len
137 fido_cred_new fido_cred_clientdata_hash_ptr
138 fido_cred_new fido_cred_display_name
139 fido_cred_new fido_cred_flags
140 fido_cred_new fido_cred_sigcount
141 fido_cred_new fido_cred_fmt
142 fido_cred_new fido_cred_free
143 fido_cred_new fido_cred_id_len
144 fido_cred_new fido_cred_id_ptr
145 fido_cred_new fido_cred_aaguid_len
146 fido_cred_new fido_cred_aaguid_ptr
147 fido_cred_new fido_cred_largeblob_key_len
148 fido_cred_new fido_cred_largeblob_key_ptr
149 fido_cred_new fido_cred_prot
150 fido_cred_new fido_cred_pubkey_len
151 fido_cred_new fido_cred_pubkey_ptr
152 fido_cred_new fido_cred_rp_id
153 fido_cred_new fido_cred_rp_name
154 fido_cred_new fido_cred_sig_len
155 fido_cred_new fido_cred_sig_ptr
156 fido_cred_new fido_cred_type
157 fido_cred_new fido_cred_user_name
158 fido_cred_new fido_cred_user_id_len
159 fido_cred_new fido_cred_user_id_ptr
160 fido_cred_new fido_cred_x5c_len
161 fido_cred_new fido_cred_x5c_ptr
162 fido_credman_metadata_new fido_credman_del_dev_rk
163 fido_credman_metadata_new fido_credman_get_dev_metadata
164 fido_credman_metadata_new fido_credman_get_dev_rk
165 fido_credman_metadata_new fido_credman_get_dev_rp
166 fido_credman_metadata_new fido_credman_metadata_free
167 fido_credman_metadata_new fido_credman_rk
168 fido_credman_metadata_new fido_credman_rk_count
169 fido_credman_metadata_new fido_credman_rk_existing
170 fido_credman_metadata_new fido_credman_rk_free
171 fido_credman_metadata_new fido_credman_rk_new
172 fido_credman_metadata_new fido_credman_rk_remaining
173 fido_credman_metadata_new fido_credman_rp_count
174 fido_credman_metadata_new fido_credman_rp_free
175 fido_credman_metadata_new fido_credman_rp_id
176 fido_credman_metadata_new fido_credman_rp_id_hash_len
177 fido_credman_metadata_new fido_credman_rp_id_hash_ptr
178 fido_credman_metadata_new fido_credman_rp_name
179 fido_credman_metadata_new fido_credman_rp_new
180 fido_credman_metadata_new fido_credman_set_dev_rk
181 fido_cred_set_authdata fido_cred_set_authdata_raw
182 fido_cred_set_authdata fido_cred_set_blob
183 fido_cred_set_authdata fido_cred_set_clientdata
184 fido_cred_set_authdata fido_cred_set_clientdata_hash
185 fido_cred_set_authdata fido_cred_set_extensions
186 fido_cred_set_authdata fido_cred_set_fmt
187 fido_cred_set_authdata fido_cred_set_id
188 fido_cred_set_authdata fido_cred_set_prot
189 fido_cred_set_authdata fido_cred_set_rk
190 fido_cred_set_authdata fido_cred_set_rp
191 fido_cred_set_authdata fido_cred_set_sig
192 fido_cred_set_authdata fido_cred_set_type
193 fido_cred_set_authdata fido_cred_set_user
194 fido_cred_set_authdata fido_cred_set_uv
195 fido_cred_set_authdata fido_cred_set_x509
196 fido_dev_enable_entattest fido_dev_toggle_always_uv
197 fido_dev_enable_entattest fido_dev_force_pin_change
198 fido_dev_enable_entattest fido_dev_set_pin_minlen
199 fido_dev_get_touch_begin fido_dev_get_touch_status
200 fido_dev_info_manifest fido_dev_info_free
201 fido_dev_info_manifest fido_dev_info_manufacturer_string
202 fido_dev_info_manifest fido_dev_info_new
203 fido_dev_info_manifest fido_dev_info_path
204 fido_dev_info_manifest fido_dev_info_product
205 fido_dev_info_manifest fido_dev_info_product_string
206 fido_dev_info_manifest fido_dev_info_ptr
207 fido_dev_info_manifest fido_dev_info_vendor
208 fido_dev_open fido_dev_build
209 fido_dev_open fido_dev_cancel
210 fido_dev_open fido_dev_close
211 fido_dev_open fido_dev_flags
212 fido_dev_open fido_dev_force_fido2
213 fido_dev_open fido_dev_force_u2f
214 fido_dev_open fido_dev_free
215 fido_dev_open fido_dev_is_fido2
216 fido_dev_open fido_dev_is_winhello
217 fido_dev_open fido_dev_major
218 fido_dev_open fido_dev_minor
219 fido_dev_open fido_dev_new
220 fido_dev_open fido_dev_protocol
221 fido_dev_open fido_dev_supports_cred_prot
222 fido_dev_open fido_dev_supports_credman
223 fido_dev_open fido_dev_supports_pin
224 fido_dev_open fido_dev_supports_uv
225 fido_dev_open fido_dev_has_uv
226 fido_dev_set_pin fido_dev_get_retry_count
227 fido_dev_set_pin fido_dev_get_uv_retry_count
228 fido_dev_set_pin fido_dev_reset
229 fido_dev_set_io_functions fido_dev_set_sigmask
230 fido_dev_largeblob_get fido_dev_largeblob_set
231 fido_dev_largeblob_get fido_dev_largeblob_remove
232 fido_dev_largeblob_get fido_dev_largeblob_get_array
233 fido_dev_largeblob_get fido_dev_largeblob_set_array
234 rs256_pk_new rs256_pk_free
235 rs256_pk_new rs256_pk_from_ptr
236 rs256_pk_new rs256_pk_from_RSA
237 rs256_pk_new rs256_pk_to_EVP_PKEY
240 list(LENGTH MAN_ALIAS MAN_ALIAS_LEN)
241 math(EXPR MAN_ALIAS_MAX "${MAN_ALIAS_LEN} - 2")
244 foreach(f ${MAN_SOURCES})
245 add_custom_command(OUTPUT ${f}
246 COMMAND cp -f ${CMAKE_SOURCE_DIR}/man/${f} .
248 list(APPEND COPY_FILES ${f})
252 foreach(f ${MAN_SOURCES})
253 add_custom_command(OUTPUT ${f}.lint
254 COMMAND mandoc -T lint -W warning ${f} > ${f}.lint
256 list(APPEND LINT_FILES ${f}.lint)
260 foreach(f ${MAN_SOURCES})
261 string(REGEX REPLACE ".[13]" "" g ${f})
262 add_custom_command(OUTPUT ${g}.html
263 COMMAND mandoc -T html -O man="%N.html",style=style.css -I os="Yubico AB" ${f} > ${g}.html
265 list(APPEND HTML_FILES ${g}.html)
269 foreach(f ${MAN_SOURCES})
270 string(REGEX REPLACE ".[13]" "" g ${f})
271 add_custom_command(OUTPUT ${g}.partial
272 COMMAND cat ${CMAKE_SOURCE_DIR}/man/dyc.css > ${g}.partial
273 COMMAND mandoc -T html -O man="%N.html",fragment ${f} >> ${g}.partial
275 list(APPEND HTML_PARTIAL_FILES ${g}.partial)
279 foreach(f ${MAN_SOURCES})
280 add_custom_command(OUTPUT ${f}.gz
281 COMMAND gzip -cn ${f} > ${f}.gz
283 list(APPEND GZ_FILES ${f}.gz)
286 macro(define_symlink_target NAME EXT)
287 foreach(i RANGE 0 ${MAN_ALIAS_MAX} 2)
288 math(EXPR j "${i} + 1")
289 list(GET MAN_ALIAS ${i} SRC)
290 list(GET MAN_ALIAS ${j} DST)
291 add_custom_command(OUTPUT ${DST}.${EXT}
292 COMMAND ln -sf ${SRC}.${EXT} ${DST}.${EXT})
293 list(APPEND ${NAME}_LINK_FILES ${DST}.${EXT})
295 add_custom_target(${NAME} DEPENDS ${${NAME}_LINK_FILES})
298 add_custom_target(man_copy DEPENDS ${COPY_FILES})
299 add_custom_target(man_lint DEPENDS ${LINT_FILES})
300 add_custom_target(man_html DEPENDS ${HTML_FILES})
301 add_custom_target(man_html_partial DEPENDS ${HTML_PARTIAL_FILES})
302 add_custom_target(man_gzip DEPENDS ${GZ_FILES})
304 define_symlink_target(man_symlink 3)
305 define_symlink_target(man_symlink_html html)
306 define_symlink_target(man_symlink_html_partial partial)
307 define_symlink_target(man_symlink_gzip 3.gz)
309 add_dependencies(man_symlink man_copy)
310 add_dependencies(man_lint man_symlink)
311 add_dependencies(man_html man_lint)
312 add_dependencies(man_symlink_html man_html)
313 add_dependencies(man_html_partial man_lint)
314 add_dependencies(man_symlink_html_partial man_html_partial)
315 add_custom_target(man ALL)
318 add_dependencies(man man_symlink_html)
319 add_dependencies(man_gzip man_lint)
320 install(FILES ${CMAKE_SOURCE_DIR}/man/style.css
321 DESTINATION "${CMAKE_INSTALL_DOCDIR}/html")
322 foreach(f ${MAN_SOURCES})
323 string(REGEX REPLACE ".[13]" "" f ${f})
324 install(FILES ${CMAKE_BINARY_DIR}/man/${f}.html
325 DESTINATION "${CMAKE_INSTALL_DOCDIR}/html")
327 foreach(i RANGE 0 ${MAN_ALIAS_MAX} 2)
328 math(EXPR j "${i} + 1")
329 list(GET MAN_ALIAS ${j} DST)
330 install(FILES ${CMAKE_BINARY_DIR}/man/${DST}.html
331 DESTINATION "${CMAKE_INSTALL_DOCDIR}/html")
336 add_dependencies(man_gzip man_copy)
337 add_dependencies(man_symlink_gzip man_gzip)
338 add_dependencies(man man_symlink_gzip)
339 foreach(f ${MAN_SOURCES})
340 if (${f} MATCHES ".1$")
341 install(FILES ${CMAKE_BINARY_DIR}/man/${f}.gz
342 DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
343 elseif(${f} MATCHES ".3$")
344 install(FILES ${CMAKE_BINARY_DIR}/man/${f}.gz
345 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
348 foreach(i RANGE 0 ${MAN_ALIAS_MAX} 2)
349 math(EXPR j "${i} + 1")
350 list(GET MAN_ALIAS ${j} DST)
351 install(FILES ${CMAKE_BINARY_DIR}/man/${DST}.3.gz
352 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
355 add_dependencies(man man_symlink)
356 foreach(f ${MAN_SOURCES})
357 if (${f} MATCHES ".1$")
358 install(FILES ${CMAKE_BINARY_DIR}/man/${f}
359 DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
360 elseif(${f} MATCHES ".3$")
361 install(FILES ${CMAKE_BINARY_DIR}/man/${f}
362 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
365 foreach(i RANGE 0 ${MAN_ALIAS_MAX} 2)
366 math(EXPR j "${i} + 1")
367 list(GET MAN_ALIAS ${j} DST)
368 install(FILES ${CMAKE_BINARY_DIR}/man/${DST}.3
369 DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")