1dnl Functions for libfdata 2dnl 3dnl Version: 20201130 4 5dnl Function to detect if libfdata is available 6dnl ac_libfdata_dummy is used to prevent AC_CHECK_LIB adding unnecessary -l<library> arguments 7AC_DEFUN([AX_LIBFDATA_CHECK_LIB], 8 [AS_IF( 9 [test "x$ac_cv_enable_shared_libs" = xno || test "x$ac_cv_with_libfdata" = xno], 10 [ac_cv_libfdata=no], 11 [ac_cv_libfdata=check 12 dnl Check if the directory provided as parameter exists 13 AS_IF( 14 [test "x$ac_cv_with_libfdata" != x && test "x$ac_cv_with_libfdata" != xauto-detect], 15 [AS_IF( 16 [test -d "$ac_cv_with_libfdata"], 17 [CFLAGS="$CFLAGS -I${ac_cv_with_libfdata}/include" 18 LDFLAGS="$LDFLAGS -L${ac_cv_with_libfdata}/lib"], 19 [AC_MSG_FAILURE( 20 [no such directory: $ac_cv_with_libfdata], 21 [1]) 22 ]) 23 ], 24 [dnl Check for a pkg-config file 25 AS_IF( 26 [test "x$cross_compiling" != "xyes" && test "x$PKGCONFIG" != "x"], 27 [PKG_CHECK_MODULES( 28 [libfdata], 29 [libfdata >= 20201129], 30 [ac_cv_libfdata=yes], 31 [ac_cv_libfdata=check]) 32 ]) 33 AS_IF( 34 [test "x$ac_cv_libfdata" = xyes], 35 [ac_cv_libfdata_CPPFLAGS="$pkg_cv_libfdata_CFLAGS" 36 ac_cv_libfdata_LIBADD="$pkg_cv_libfdata_LIBS"]) 37 ]) 38 39 AS_IF( 40 [test "x$ac_cv_libfdata" = xcheck], 41 [dnl Check for headers 42 AC_CHECK_HEADERS([libfdata.h]) 43 44 AS_IF( 45 [test "x$ac_cv_header_libfdata_h" = xno], 46 [ac_cv_libfdata=no], 47 [dnl Check for the individual functions 48 ac_cv_libfdata=yes 49 50 AC_CHECK_LIB( 51 fdata, 52 libfdata_get_version, 53 [ac_cv_libfdata_dummy=yes], 54 [ac_cv_libfdata=no]) 55 56 dnl Area functions 57 AC_CHECK_LIB( 58 fdata, 59 libfdata_area_initialize, 60 [ac_cv_libfdata_dummy=yes], 61 [ac_cv_libfdata=no]) 62 AC_CHECK_LIB( 63 fdata, 64 libfdata_area_free, 65 [ac_cv_libfdata_dummy=yes], 66 [ac_cv_libfdata=no]) 67 AC_CHECK_LIB( 68 fdata, 69 libfdata_area_clone, 70 [ac_cv_libfdata_dummy=yes], 71 [ac_cv_libfdata=no]) 72 AC_CHECK_LIB( 73 fdata, 74 libfdata_area_empty, 75 [ac_cv_libfdata_dummy=yes], 76 [ac_cv_libfdata=no]) 77 AC_CHECK_LIB( 78 fdata, 79 libfdata_area_resize, 80 [ac_cv_libfdata_dummy=yes], 81 [ac_cv_libfdata=no]) 82 AC_CHECK_LIB( 83 fdata, 84 libfdata_area_get_number_of_segments, 85 [ac_cv_libfdata_dummy=yes], 86 [ac_cv_libfdata=no]) 87 AC_CHECK_LIB( 88 fdata, 89 libfdata_area_get_segment_by_index, 90 [ac_cv_libfdata_dummy=yes], 91 [ac_cv_libfdata=no]) 92 AC_CHECK_LIB( 93 fdata, 94 libfdata_area_set_segment_by_index, 95 [ac_cv_libfdata_dummy=yes], 96 [ac_cv_libfdata=no]) 97 AC_CHECK_LIB( 98 fdata, 99 libfdata_area_prepend_segment, 100 [ac_cv_libfdata_dummy=yes], 101 [ac_cv_libfdata=no]) 102 AC_CHECK_LIB( 103 fdata, 104 libfdata_area_append_segment, 105 [ac_cv_libfdata_dummy=yes], 106 [ac_cv_libfdata=no]) 107 AC_CHECK_LIB( 108 fdata, 109 libfdata_area_get_element_data_size, 110 [ac_cv_libfdata_dummy=yes], 111 [ac_cv_libfdata=no]) 112 AC_CHECK_LIB( 113 fdata, 114 libfdata_area_get_element_value_at_offset, 115 [ac_cv_libfdata_dummy=yes], 116 [ac_cv_libfdata=no]) 117 AC_CHECK_LIB( 118 fdata, 119 libfdata_area_set_element_value_at_offset, 120 [ac_cv_libfdata_dummy=yes], 121 [ac_cv_libfdata=no]) 122 AC_CHECK_LIB( 123 fdata, 124 libfdata_area_get_size, 125 [ac_cv_libfdata_dummy=yes], 126 [ac_cv_libfdata=no]) 127 128 dnl Balanced tree functions 129 dnl TODO: add functions 130 131 dnl List functions 132 AC_CHECK_LIB( 133 fdata, 134 libfdata_list_initialize, 135 [ac_cv_libfdata_dummy=yes], 136 [ac_cv_libfdata=no]) 137 AC_CHECK_LIB( 138 fdata, 139 libfdata_list_free, 140 [ac_cv_libfdata_dummy=yes], 141 [ac_cv_libfdata=no]) 142 AC_CHECK_LIB( 143 fdata, 144 libfdata_list_clone, 145 [ac_cv_libfdata_dummy=yes], 146 [ac_cv_libfdata=no]) 147 AC_CHECK_LIB( 148 fdata, 149 libfdata_list_empty, 150 [ac_cv_libfdata_dummy=yes], 151 [ac_cv_libfdata=no]) 152 AC_CHECK_LIB( 153 fdata, 154 libfdata_list_resize, 155 [ac_cv_libfdata_dummy=yes], 156 [ac_cv_libfdata=no]) 157 158 AC_CHECK_LIB( 159 fdata, 160 libfdata_list_reverse, 161 [ac_cv_libfdata_dummy=yes], 162 [ac_cv_libfdata=no]) 163 164 AC_CHECK_LIB( 165 fdata, 166 libfdata_list_get_number_of_elements, 167 [ac_cv_libfdata_dummy=yes], 168 [ac_cv_libfdata=no]) 169 AC_CHECK_LIB( 170 fdata, 171 libfdata_list_get_list_element_by_index, 172 [ac_cv_libfdata_dummy=yes], 173 [ac_cv_libfdata=no]) 174 AC_CHECK_LIB( 175 fdata, 176 libfdata_list_get_element_by_index, 177 [ac_cv_libfdata_dummy=yes], 178 [ac_cv_libfdata=no]) 179 AC_CHECK_LIB( 180 fdata, 181 libfdata_list_set_element_by_index, 182 [ac_cv_libfdata_dummy=yes], 183 [ac_cv_libfdata=no]) 184 AC_CHECK_LIB( 185 fdata, 186 libfdata_list_prepend_element, 187 [ac_cv_libfdata_dummy=yes], 188 [ac_cv_libfdata=no]) 189 AC_CHECK_LIB( 190 fdata, 191 libfdata_list_append_element, 192 [ac_cv_libfdata_dummy=yes], 193 [ac_cv_libfdata=no]) 194 AC_CHECK_LIB( 195 fdata, 196 libfdata_list_append_list, 197 [ac_cv_libfdata_dummy=yes], 198 [ac_cv_libfdata=no]) 199 AC_CHECK_LIB( 200 fdata, 201 libfdata_list_is_element_set, 202 [ac_cv_libfdata_dummy=yes], 203 [ac_cv_libfdata=no]) 204 205 AC_CHECK_LIB( 206 fdata, 207 libfdata_list_get_element_mapped_range, 208 [ac_cv_libfdata_dummy=yes], 209 [ac_cv_libfdata=no]) 210 AC_CHECK_LIB( 211 fdata, 212 libfdata_list_get_mapped_offset, 213 [ac_cv_libfdata_dummy=yes], 214 [ac_cv_libfdata=no]) 215 AC_CHECK_LIB( 216 fdata, 217 libfdata_list_set_mapped_offset, 218 [ac_cv_libfdata_dummy=yes], 219 [ac_cv_libfdata=no]) 220 221 AC_CHECK_LIB( 222 fdata, 223 libfdata_list_get_mapped_size_by_index, 224 [ac_cv_libfdata_dummy=yes], 225 [ac_cv_libfdata=no]) 226 AC_CHECK_LIB( 227 fdata, 228 libfdata_list_set_mapped_size_by_index, 229 [ac_cv_libfdata_dummy=yes], 230 [ac_cv_libfdata=no]) 231 AC_CHECK_LIB( 232 fdata, 233 libfdata_list_get_element_by_index_with_mapped_size, 234 [ac_cv_libfdata_dummy=yes], 235 [ac_cv_libfdata=no]) 236 AC_CHECK_LIB( 237 fdata, 238 libfdata_list_set_element_by_index_with_mapped_size, 239 [ac_cv_libfdata_dummy=yes], 240 [ac_cv_libfdata=no]) 241 AC_CHECK_LIB( 242 fdata, 243 libfdata_list_append_element_with_mapped_size, 244 [ac_cv_libfdata_dummy=yes], 245 [ac_cv_libfdata=no]) 246 247 AC_CHECK_LIB( 248 fdata, 249 libfdata_list_get_element_index_at_offset, 250 [ac_cv_libfdata_dummy=yes], 251 [ac_cv_libfdata=no]) 252 AC_CHECK_LIB( 253 fdata, 254 libfdata_list_get_list_element_at_offset, 255 [ac_cv_libfdata_dummy=yes], 256 [ac_cv_libfdata=no]) 257 AC_CHECK_LIB( 258 fdata, 259 libfdata_list_get_element_at_offset, 260 [ac_cv_libfdata_dummy=yes], 261 [ac_cv_libfdata=no]) 262 263 AC_CHECK_LIB( 264 fdata, 265 libfdata_list_cache_element_value, 266 [ac_cv_libfdata_dummy=yes], 267 [ac_cv_libfdata=no]) 268 AC_CHECK_LIB( 269 fdata, 270 libfdata_list_get_element_value_by_index, 271 [ac_cv_libfdata_dummy=yes], 272 [ac_cv_libfdata=no]) 273 AC_CHECK_LIB( 274 fdata, 275 libfdata_list_get_element_value_at_offset, 276 [ac_cv_libfdata_dummy=yes], 277 [ac_cv_libfdata=no]) 278 AC_CHECK_LIB( 279 fdata, 280 libfdata_list_set_element_value_by_index, 281 [ac_cv_libfdata_dummy=yes], 282 [ac_cv_libfdata=no]) 283 284 AC_CHECK_LIB( 285 fdata, 286 libfdata_list_set_element_value_at_offset, 287 [ac_cv_libfdata_dummy=yes], 288 [ac_cv_libfdata=no]) 289 AC_CHECK_LIB( 290 fdata, 291 libfdata_list_get_size, 292 [ac_cv_libfdata_dummy=yes], 293 [ac_cv_libfdata=no]) 294 295 AC_CHECK_LIB( 296 fdata, 297 libfdata_list_element_get_mapped_size, 298 [ac_cv_libfdata_dummy=yes], 299 [ac_cv_libfdata=no]) 300 AC_CHECK_LIB( 301 fdata, 302 libfdata_list_element_set_mapped_size, 303 [ac_cv_libfdata_dummy=yes], 304 [ac_cv_libfdata=no]) 305 AC_CHECK_LIB( 306 fdata, 307 libfdata_list_element_get_element_value, 308 [ac_cv_libfdata_dummy=yes], 309 [ac_cv_libfdata=no]) 310 AC_CHECK_LIB( 311 fdata, 312 libfdata_list_element_set_element_value, 313 [ac_cv_libfdata_dummy=yes], 314 [ac_cv_libfdata=no]) 315 316 dnl List element functions 317 AC_CHECK_LIB( 318 fdata, 319 libfdata_list_element_get_mapped_size, 320 [ac_cv_libfdata_dummy=yes], 321 [ac_cv_libfdata=no]) 322 AC_CHECK_LIB( 323 fdata, 324 libfdata_list_element_set_mapped_size, 325 [ac_cv_libfdata_dummy=yes], 326 [ac_cv_libfdata=no]) 327 AC_CHECK_LIB( 328 fdata, 329 libfdata_list_element_get_element_value, 330 [ac_cv_libfdata_dummy=yes], 331 [ac_cv_libfdata=no]) 332 AC_CHECK_LIB( 333 fdata, 334 libfdata_list_element_set_element_value, 335 [ac_cv_libfdata_dummy=yes], 336 [ac_cv_libfdata=no]) 337 338 dnl Range list functions 339 dnl TODO: add functions 340 341 dnl Stream functions 342 AC_CHECK_LIB( 343 fdata, 344 libfdata_stream_initialize, 345 [ac_cv_libfdata_dummy=yes], 346 [ac_cv_libfdata=no]) 347 AC_CHECK_LIB( 348 fdata, 349 libfdata_stream_free, 350 [ac_cv_libfdata_dummy=yes], 351 [ac_cv_libfdata=no]) 352 AC_CHECK_LIB( 353 fdata, 354 libfdata_stream_clone, 355 [ac_cv_libfdata_dummy=yes], 356 [ac_cv_libfdata=no]) 357 358 AC_CHECK_LIB( 359 fdata, 360 libfdata_stream_empty, 361 [ac_cv_libfdata_dummy=yes], 362 [ac_cv_libfdata=no]) 363 AC_CHECK_LIB( 364 fdata, 365 libfdata_stream_resize, 366 [ac_cv_libfdata_dummy=yes], 367 [ac_cv_libfdata=no]) 368 AC_CHECK_LIB( 369 fdata, 370 libfdata_stream_reverse, 371 [ac_cv_libfdata_dummy=yes], 372 [ac_cv_libfdata=no]) 373 374 AC_CHECK_LIB( 375 fdata, 376 libfdata_stream_get_number_of_segments, 377 [ac_cv_libfdata_dummy=yes], 378 [ac_cv_libfdata=no]) 379 AC_CHECK_LIB( 380 fdata, 381 libfdata_stream_get_segment_by_index, 382 [ac_cv_libfdata_dummy=yes], 383 [ac_cv_libfdata=no]) 384 AC_CHECK_LIB( 385 fdata, 386 libfdata_stream_set_segment_by_index, 387 [ac_cv_libfdata_dummy=yes], 388 [ac_cv_libfdata=no]) 389 AC_CHECK_LIB( 390 fdata, 391 libfdata_stream_prepend_segment, 392 [ac_cv_libfdata_dummy=yes], 393 [ac_cv_libfdata=no]) 394 AC_CHECK_LIB( 395 fdata, 396 libfdata_stream_append_segment, 397 [ac_cv_libfdata_dummy=yes], 398 [ac_cv_libfdata=no]) 399 AC_CHECK_LIB( 400 fdata, 401 libfdata_stream_set_mapped_size, 402 [ac_cv_libfdata_dummy=yes], 403 [ac_cv_libfdata=no]) 404 405 AC_CHECK_LIB( 406 fdata, 407 libfdata_stream_get_segment_mapped_range, 408 [ac_cv_libfdata_dummy=yes], 409 [ac_cv_libfdata=no]) 410 AC_CHECK_LIB( 411 fdata, 412 libfdata_stream_get_segment_index_at_offset, 413 [ac_cv_libfdata_dummy=yes], 414 [ac_cv_libfdata=no]) 415 AC_CHECK_LIB( 416 fdata, 417 libfdata_stream_get_segment_at_offset, 418 [ac_cv_libfdata_dummy=yes], 419 [ac_cv_libfdata=no]) 420 421 AC_CHECK_LIB( 422 fdata, 423 libfdata_stream_read_buffer, 424 [ac_cv_libfdata_dummy=yes], 425 [ac_cv_libfdata=no]) 426 AC_CHECK_LIB( 427 fdata, 428 libfdata_stream_read_buffer_at_offset, 429 [ac_cv_libfdata_dummy=yes], 430 [ac_cv_libfdata=no]) 431 AC_CHECK_LIB( 432 fdata, 433 libfdata_stream_write_buffer, 434 [ac_cv_libfdata_dummy=yes], 435 [ac_cv_libfdata=no]) 436 AC_CHECK_LIB( 437 fdata, 438 libfdata_stream_seek_offset, 439 [ac_cv_libfdata_dummy=yes], 440 [ac_cv_libfdata=no]) 441 AC_CHECK_LIB( 442 fdata, 443 libfdata_stream_get_offset, 444 [ac_cv_libfdata_dummy=yes], 445 [ac_cv_libfdata=no]) 446 AC_CHECK_LIB( 447 fdata, 448 libfdata_stream_get_size, 449 [ac_cv_libfdata_dummy=yes], 450 [ac_cv_libfdata=no]) 451 452 dnl Tree list functions 453 dnl TODO: add functions 454 455 dnl Vector list functions 456 dnl TODO: add functions 457 458 ac_cv_libfdata_LIBADD="-lfdata"]) 459 ]) 460 AS_IF( 461 [test "x$ac_cv_with_libfdata" != x && test "x$ac_cv_with_libfdata" != xauto-detect && test "x$ac_cv_libfdata" != xyes], 462 [AC_MSG_FAILURE( 463 [unable to find supported libfdata in directory: $ac_cv_with_libfdata], 464 [1]) 465 ]) 466 ]) 467 468 AS_IF( 469 [test "x$ac_cv_libfdata" = xyes], 470 [AC_DEFINE( 471 [HAVE_LIBFDATA], 472 [1], 473 [Define to 1 if you have the `fdata' library (-lfdata).]) 474 ]) 475 476 AS_IF( 477 [test "x$ac_cv_libfdata" = xyes], 478 [AC_SUBST( 479 [HAVE_LIBFDATA], 480 [1]) ], 481 [AC_SUBST( 482 [HAVE_LIBFDATA], 483 [0]) 484 ]) 485 ]) 486 487dnl Function to detect if libfdata dependencies are available 488AC_DEFUN([AX_LIBFDATA_CHECK_LOCAL], 489 [dnl No additional checks. 490 491 ac_cv_libfdata_CPPFLAGS="-I../libfdata"; 492 ac_cv_libfdata_LIBADD="../libfdata/libfdata.la"; 493 494 ac_cv_libfdata=local 495 ]) 496 497dnl Function to detect how to enable libfdata 498AC_DEFUN([AX_LIBFDATA_CHECK_ENABLE], 499 [AX_COMMON_ARG_WITH( 500 [libfdata], 501 [libfdata], 502 [search for libfdata in includedir and libdir or in the specified DIR, or no if to use local version], 503 [auto-detect], 504 [DIR]) 505 506 dnl Check for a shared library version 507 AX_LIBFDATA_CHECK_LIB 508 509 dnl Check if the dependencies for the local library version 510 AS_IF( 511 [test "x$ac_cv_libfdata" != xyes], 512 [AX_LIBFDATA_CHECK_LOCAL 513 514 AC_DEFINE( 515 [HAVE_LOCAL_LIBFDATA], 516 [1], 517 [Define to 1 if the local version of libfdata is used.]) 518 AC_SUBST( 519 [HAVE_LOCAL_LIBFDATA], 520 [1]) 521 ]) 522 523 AM_CONDITIONAL( 524 [HAVE_LOCAL_LIBFDATA], 525 [test "x$ac_cv_libfdata" = xlocal]) 526 AS_IF( 527 [test "x$ac_cv_libfdata_CPPFLAGS" != "x"], 528 [AC_SUBST( 529 [LIBFDATA_CPPFLAGS], 530 [$ac_cv_libfdata_CPPFLAGS]) 531 ]) 532 AS_IF( 533 [test "x$ac_cv_libfdata_LIBADD" != "x"], 534 [AC_SUBST( 535 [LIBFDATA_LIBADD], 536 [$ac_cv_libfdata_LIBADD]) 537 ]) 538 539 AS_IF( 540 [test "x$ac_cv_libfdata" = xyes], 541 [AC_SUBST( 542 [ax_libfdata_pc_libs_private], 543 [-lfdata]) 544 ]) 545 546 AS_IF( 547 [test "x$ac_cv_libfdata" = xyes], 548 [AC_SUBST( 549 [ax_libfdata_spec_requires], 550 [libfdata]) 551 AC_SUBST( 552 [ax_libfdata_spec_build_requires], 553 [libfdata-devel]) 554 ]) 555 ]) 556