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