1dnl Checks for libbfio required headers and functions 2dnl 3dnl Version: 20201125 4 5dnl Function to detect if libbfio is available 6dnl ac_libbfio_dummy is used to prevent AC_CHECK_LIB adding unnecessary -l<library> arguments 7AC_DEFUN([AX_LIBBFIO_CHECK_LIB], 8 [AS_IF( 9 [test "x$ac_cv_enable_shared_libs" = xno || test "x$ac_cv_with_libbfio" = xno], 10 [ac_cv_libbfio=no], 11 [ac_cv_libbfio=check 12 dnl Check if the directory provided as parameter exists 13 AS_IF( 14 [test "x$ac_cv_with_libbfio" != x && test "x$ac_cv_with_libbfio" != xauto-detect], 15 [AS_IF( 16 [test -d "$ac_cv_with_libbfio"], 17 [CFLAGS="$CFLAGS -I${ac_cv_with_libbfio}/include" 18 LDFLAGS="$LDFLAGS -L${ac_cv_with_libbfio}/lib"], 19 [AC_MSG_FAILURE( 20 [no such directory: $ac_cv_with_libbfio], 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 [libbfio], 29 [libbfio >= 20201125], 30 [ac_cv_libbfio=yes], 31 [ac_cv_libbfio=check]) 32 ]) 33 AS_IF( 34 [test "x$ac_cv_libbfio" = xyes && test "x$ac_cv_enable_wide_character_type" != xno], 35 [AC_CACHE_CHECK( 36 [whether libbfio/features.h defines LIBBFIO_HAVE_WIDE_CHARACTER_TYPE as 1], 37 [ac_cv_header_libbfio_features_h_have_wide_character_type], 38 [AC_LANG_PUSH(C) 39 AC_COMPILE_IFELSE( 40 [AC_LANG_PROGRAM( 41 [[#include <libbfio/features.h>]], 42 [[#if !defined( LIBBFIO_HAVE_WIDE_CHARACTER_TYPE ) || ( LIBBFIO_HAVE_WIDE_CHARACTER_TYPE != 1 ) 43#error LIBBFIO_HAVE_WIDE_CHARACTER_TYPE not defined 44#endif]] )], 45 [ac_cv_header_libbfio_features_h_have_wide_character_type=yes], 46 [ac_cv_header_libbfio_features_h_have_wide_character_type=no]) 47 AC_LANG_POP(C)], 48 [ac_cv_header_libbfio_features_h_have_wide_character_type=no]) 49 50 AS_IF( 51 [test "x$ac_cv_header_libbfio_features_h_have_wide_character_type" = xno], 52 [ac_cv_libbfio=no]) 53 ]) 54 AS_IF( 55 [test "x$ac_cv_libbfio" = xyes], 56 [ac_cv_libbfio_CPPFLAGS="$pkg_cv_libbfio_CFLAGS" 57 ac_cv_libbfio_LIBADD="$pkg_cv_libbfio_LIBS"]) 58 ]) 59 60 AS_IF( 61 [test "x$ac_cv_libbfio" = xcheck], 62 [dnl Check for headers 63 AC_CHECK_HEADERS([libbfio.h]) 64 65 AS_IF( 66 [test "x$ac_cv_header_libbfio_h" = xno], 67 [ac_cv_libbfio=no], 68 [dnl Check for the individual functions 69 ac_cv_libbfio=yes 70 71 AC_CHECK_LIB( 72 bfio, 73 libbfio_get_version, 74 [ac_cv_libbfio_dummy=yes], 75 [ac_cv_libbfio=no]) 76 77 dnl Handle functions 78 AC_CHECK_LIB( 79 bfio, 80 libbfio_handle_free, 81 [ac_cv_libbfio_dummy=yes], 82 [ac_cv_libbfio=no]) 83 AC_CHECK_LIB( 84 bfio, 85 libbfio_handle_open, 86 [ac_cv_libbfio_dummy=yes], 87 [ac_cv_libbfio=no]) 88 AC_CHECK_LIB( 89 bfio, 90 libbfio_handle_close, 91 [ac_cv_libbfio_dummy=yes], 92 [ac_cv_libbfio=no]) 93 AC_CHECK_LIB( 94 bfio, 95 libbfio_handle_exists, 96 [ac_cv_libbfio_dummy=yes], 97 [ac_cv_libbfio=no]) 98 AC_CHECK_LIB( 99 bfio, 100 libbfio_handle_read_buffer, 101 [ac_cv_libbfio_dummy=yes], 102 [ac_cv_libbfio=no]) 103 AC_CHECK_LIB( 104 bfio, 105 libbfio_handle_read_buffer_at_offset, 106 [ac_cv_libbfio_dummy=yes], 107 [ac_cv_libbfio=no]) 108 AC_CHECK_LIB( 109 bfio, 110 libbfio_handle_write_buffer, 111 [ac_cv_libbfio_dummy=yes], 112 [ac_cv_libbfio=no]) 113 AC_CHECK_LIB( 114 bfio, 115 libbfio_handle_write_buffer_at_offset, 116 [ac_cv_libbfio_dummy=yes], 117 [ac_cv_libbfio=no]) 118 AC_CHECK_LIB( 119 bfio, 120 libbfio_handle_seek_offset, 121 [ac_cv_libbfio_dummy=yes], 122 [ac_cv_libbfio=no]) 123 124 AC_CHECK_LIB( 125 bfio, 126 libbfio_handle_is_open, 127 [ac_cv_libbfio_dummy=yes], 128 [ac_cv_libbfio=no]) 129 AC_CHECK_LIB( 130 bfio, 131 libbfio_handle_get_offset, 132 [ac_cv_libbfio_dummy=yes], 133 [ac_cv_libbfio=no]) 134 AC_CHECK_LIB( 135 bfio, 136 libbfio_handle_get_size, 137 [ac_cv_libbfio_dummy=yes], 138 [ac_cv_libbfio=no]) 139 AC_CHECK_LIB( 140 bfio, 141 libbfio_handle_set_track_offsets_read, 142 [ac_cv_libbfio_dummy=yes], 143 [ac_cv_libbfio=no]) 144 AC_CHECK_LIB( 145 bfio, 146 libbfio_handle_get_number_of_offsets_read, 147 [ac_cv_libbfio_dummy=yes], 148 [ac_cv_libbfio=no]) 149 AC_CHECK_LIB( 150 bfio, 151 libbfio_handle_get_offset_read, 152 [ac_cv_libbfio_dummy=yes], 153 [ac_cv_libbfio=no]) 154 155 dnl File functions 156 AC_CHECK_LIB( 157 bfio, 158 libbfio_file_initialize, 159 [ac_cv_libbfio_dummy=yes], 160 [ac_cv_libbfio=no]) 161 AC_CHECK_LIB( 162 bfio, 163 libbfio_file_get_name_size, 164 [ac_cv_libbfio_dummy=yes], 165 [ac_cv_libbfio=no]) 166 AC_CHECK_LIB( 167 bfio, 168 libbfio_file_get_name, 169 [ac_cv_libbfio_dummy=yes], 170 [ac_cv_libbfio=no]) 171 AC_CHECK_LIB( 172 bfio, 173 libbfio_file_set_name, 174 [ac_cv_libbfio_dummy=yes], 175 [ac_cv_libbfio=no]) 176 177 AS_IF( 178 [test "x$ac_cv_enable_wide_character_type" != xno], 179 [AC_CHECK_LIB( 180 bfio, 181 libbfio_file_get_name_size_wide, 182 [ac_cv_libbfio_dummy=yes], 183 [ac_cv_libbfio=no]) 184 AC_CHECK_LIB( 185 bfio, 186 libbfio_file_get_name_wide, 187 [ac_cv_libbfio_dummy=yes], 188 [ac_cv_libbfio=no]) 189 AC_CHECK_LIB( 190 bfio, 191 libbfio_file_set_name_wide, 192 [ac_cv_libbfio_dummy=yes], 193 [ac_cv_libbfio=no]) 194 ]) 195 196 dnl Pool functions 197 AC_CHECK_LIB( 198 bfio, 199 libbfio_pool_initialize, 200 [ac_cv_libbfio_dummy=yes], 201 [ac_cv_libbfio=no]) 202 AC_CHECK_LIB( 203 bfio, 204 libbfio_pool_free, 205 [ac_cv_libbfio_dummy=yes], 206 [ac_cv_libbfio=no]) 207 AC_CHECK_LIB( 208 bfio, 209 libbfio_pool_clone, 210 [ac_cv_libbfio_dummy=yes], 211 [ac_cv_libbfio=no]) 212 213 AC_CHECK_LIB( 214 bfio, 215 libbfio_pool_get_number_of_handles, 216 [ac_cv_libbfio_dummy=yes], 217 [ac_cv_libbfio=no]) 218 AC_CHECK_LIB( 219 bfio, 220 libbfio_pool_get_handle, 221 [ac_cv_libbfio_dummy=yes], 222 [ac_cv_libbfio=no]) 223 AC_CHECK_LIB( 224 bfio, 225 libbfio_pool_set_handle, 226 [ac_cv_libbfio_dummy=yes], 227 [ac_cv_libbfio=no]) 228 AC_CHECK_LIB( 229 bfio, 230 libbfio_pool_append_handle, 231 [ac_cv_libbfio_dummy=yes], 232 [ac_cv_libbfio=no]) 233 AC_CHECK_LIB( 234 bfio, 235 libbfio_pool_remove_handle, 236 [ac_cv_libbfio_dummy=yes], 237 [ac_cv_libbfio=no]) 238 AC_CHECK_LIB( 239 bfio, 240 libbfio_pool_get_maximum_number_of_open_handles, 241 [ac_cv_libbfio_dummy=yes], 242 [ac_cv_libbfio=no]) 243 AC_CHECK_LIB( 244 bfio, 245 libbfio_pool_set_maximum_number_of_open_handles, 246 [ac_cv_libbfio_dummy=yes], 247 [ac_cv_libbfio=no]) 248 249 AC_CHECK_LIB( 250 bfio, 251 libbfio_pool_open, 252 [ac_cv_libbfio_dummy=yes], 253 [ac_cv_libbfio=no]) 254 AC_CHECK_LIB( 255 bfio, 256 libbfio_pool_reopen, 257 [ac_cv_libbfio_dummy=yes], 258 [ac_cv_libbfio=no]) 259 AC_CHECK_LIB( 260 bfio, 261 libbfio_pool_close, 262 [ac_cv_libbfio_dummy=yes], 263 [ac_cv_libbfio=no]) 264 AC_CHECK_LIB( 265 bfio, 266 libbfio_pool_close_all, 267 [ac_cv_libbfio_dummy=yes], 268 [ac_cv_libbfio=no]) 269 AC_CHECK_LIB( 270 bfio, 271 libbfio_pool_read_buffer, 272 [ac_cv_libbfio_dummy=yes], 273 [ac_cv_libbfio=no]) 274 AC_CHECK_LIB( 275 bfio, 276 libbfio_pool_read_buffer_at_offset, 277 [ac_cv_libbfio_dummy=yes], 278 [ac_cv_libbfio=no]) 279 AC_CHECK_LIB( 280 bfio, 281 libbfio_pool_write_buffer, 282 [ac_cv_libbfio_dummy=yes], 283 [ac_cv_libbfio=no]) 284 AC_CHECK_LIB( 285 bfio, 286 libbfio_pool_write_buffer_at_offset, 287 [ac_cv_libbfio_dummy=yes], 288 [ac_cv_libbfio=no]) 289 AC_CHECK_LIB( 290 bfio, 291 libbfio_pool_seek_offset, 292 [ac_cv_libbfio_dummy=yes], 293 [ac_cv_libbfio=no]) 294 AC_CHECK_LIB( 295 bfio, 296 libbfio_pool_get_offset, 297 [ac_cv_libbfio_dummy=yes], 298 [ac_cv_libbfio=no]) 299 AC_CHECK_LIB( 300 bfio, 301 libbfio_pool_get_size, 302 [ac_cv_libbfio_dummy=yes], 303 [ac_cv_libbfio=no]) 304 305 dnl File pool functions 306 AC_CHECK_LIB( 307 bfio, 308 libbfio_file_pool_open, 309 [ac_cv_libbfio_dummy=yes], 310 [ac_cv_libbfio=no]) 311 312 AS_IF( 313 [test "x$ac_cv_enable_wide_character_type" != xno], 314 [AC_CHECK_LIB( 315 bfio, 316 libbfio_file_pool_open_wide, 317 [ac_cv_libbfio_dummy=yes], 318 [ac_cv_libbfio=no]) 319 ]) 320 321 ac_cv_libbfio_LIBADD="-lbfio"]) 322 ]) 323 AS_IF( 324 [test "x$ac_cv_with_libbfio" != x && test "x$ac_cv_with_libbfio" != xauto-detect && test "x$ac_cv_libbfio" != xyes], 325 [AC_MSG_FAILURE( 326 [unable to find supported libbfio in directory: $ac_cv_with_libbfio], 327 [1]) 328 ]) 329 ]) 330 331 AS_IF( 332 [test "x$ac_cv_libbfio" = xyes], 333 [AC_DEFINE( 334 [HAVE_LIBBFIO], 335 [1], 336 [Define to 1 if you have the `bfio' library (-lbfio).]) 337 ]) 338 339 AS_IF( 340 [test "x$ac_cv_libbfio" = xyes], 341 [AC_SUBST( 342 [HAVE_LIBBFIO], 343 [1]) ], 344 [AC_SUBST( 345 [HAVE_LIBBFIO], 346 [0]) 347 ]) 348 ]) 349 350dnl Function to detect if libbfio dependencies are available 351AC_DEFUN([AX_LIBBFIO_CHECK_LOCAL], 352 [dnl No additional checks. 353 354 ac_cv_libbfio_CPPFLAGS="-I../libbfio"; 355 ac_cv_libbfio_LIBADD="../libbfio/libbfio.la"; 356 357 ac_cv_libbfio=local 358 ]) 359 360dnl Function to detect how to enable libbfio 361AC_DEFUN([AX_LIBBFIO_CHECK_ENABLE], 362 [AX_COMMON_ARG_WITH( 363 [libbfio], 364 [libbfio], 365 [search for libbfio in includedir and libdir or in the specified DIR, or no if to use local version], 366 [auto-detect], 367 [DIR]) 368 369 dnl Check for a shared library version 370 AX_LIBBFIO_CHECK_LIB 371 372 dnl Check if the dependencies for the local library version 373 AS_IF( 374 [test "x$ac_cv_libbfio" != xyes], 375 [AX_LIBBFIO_CHECK_LOCAL 376 377 AC_DEFINE( 378 [HAVE_LOCAL_LIBBFIO], 379 [1], 380 [Define to 1 if the local version of libbfio is used.]) 381 AC_SUBST( 382 [HAVE_LOCAL_LIBBFIO], 383 [1]) 384 ]) 385 386 AM_CONDITIONAL( 387 [HAVE_LOCAL_LIBBFIO], 388 [test "x$ac_cv_libbfio" = xlocal]) 389 AS_IF( 390 [test "x$ac_cv_libbfio_CPPFLAGS" != "x"], 391 [AC_SUBST( 392 [LIBBFIO_CPPFLAGS], 393 [$ac_cv_libbfio_CPPFLAGS]) 394 ]) 395 AS_IF( 396 [test "x$ac_cv_libbfio_LIBADD" != "x"], 397 [AC_SUBST( 398 [LIBBFIO_LIBADD], 399 [$ac_cv_libbfio_LIBADD]) 400 ]) 401 402 AS_IF( 403 [test "x$ac_cv_libbfio" = xyes], 404 [AC_SUBST( 405 [ax_libbfio_pc_libs_private], 406 [-lbfio]) 407 ]) 408 409 AS_IF( 410 [test "x$ac_cv_libbfio" = xyes], 411 [AC_SUBST( 412 [ax_libbfio_spec_requires], 413 [libbfio]) 414 AC_SUBST( 415 [ax_libbfio_spec_build_requires], 416 [libbfio-devel]) 417 ]) 418 ]) 419 420