1dnl Checks for libfdatetime required headers and functions
2dnl
3dnl Version: 20190308
4
5dnl Function to detect if libfdatetime is available
6dnl ac_libfdatetime_dummy is used to prevent AC_CHECK_LIB adding unnecessary -l<library> arguments
7AC_DEFUN([AX_LIBFDATETIME_CHECK_LIB],
8  [AS_IF(
9    [test "x$ac_cv_enable_shared_libs" = xno || test "x$ac_cv_with_libfdatetime" = xno],
10    [ac_cv_libfdatetime=no],
11    [ac_cv_libfdatetime=check
12    dnl Check if the directory provided as parameter exists
13    AS_IF(
14      [test "x$ac_cv_with_libfdatetime" != x && test "x$ac_cv_with_libfdatetime" != xauto-detect],
15      [AS_IF(
16        [test -d "$ac_cv_with_libfdatetime"],
17        [CFLAGS="$CFLAGS -I${ac_cv_with_libfdatetime}/include"
18        LDFLAGS="$LDFLAGS -L${ac_cv_with_libfdatetime}/lib"],
19        [AC_MSG_FAILURE(
20          [no such directory: $ac_cv_with_libfdatetime],
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          [libfdatetime],
29          [libfdatetime >= 20180910],
30          [ac_cv_libfdatetime=yes],
31          [ac_cv_libfdatetime=check])
32        ])
33      AS_IF(
34        [test "x$ac_cv_libfdatetime" = xyes],
35        [ac_cv_libfdatetime_CPPFLAGS="$pkg_cv_libfdatetime_CFLAGS"
36        ac_cv_libfdatetime_LIBADD="$pkg_cv_libfdatetime_LIBS"])
37      ])
38
39    AS_IF(
40      [test "x$ac_cv_libfdatetime" = xcheck],
41      [dnl Check for headers
42      AC_CHECK_HEADERS([libfdatetime.h])
43
44      AS_IF(
45        [test "x$ac_cv_header_libfdatetime_h" = xno],
46        [ac_cv_libfdatetime=no],
47        [dnl Check for the individual functions
48        ac_cv_libfdatetime=yes
49
50        AC_CHECK_LIB(
51          fdatetime,
52          libfdatetime_get_version,
53          [ac_cv_libfdatetime_dummy=yes],
54          [ac_cv_libfdatetime=no])
55
56        dnl FAT date time functions
57        AC_CHECK_LIB(
58          fdatetime,
59          libfdatetime_fat_date_time_initialize,
60          [ac_cv_libfdatetime_dummy=yes],
61          [ac_cv_libfdatetime=no])
62        AC_CHECK_LIB(
63          fdatetime,
64          libfdatetime_fat_date_time_free,
65          [ac_cv_libfdatetime_dummy=yes],
66          [ac_cv_libfdatetime=no])
67        AC_CHECK_LIB(
68          fdatetime,
69          libfdatetime_fat_date_time_copy_from_byte_stream,
70          [ac_cv_libfdatetime_dummy=yes],
71          [ac_cv_libfdatetime=no])
72        AC_CHECK_LIB(
73          fdatetime,
74          libfdatetime_fat_date_time_copy_from_32bit,
75          [ac_cv_libfdatetime_dummy=yes],
76          [ac_cv_libfdatetime=no])
77        AC_CHECK_LIB(
78          fdatetime,
79          libfdatetime_fat_date_time_copy_to_32bit,
80          [ac_cv_libfdatetime_dummy=yes],
81          [ac_cv_libfdatetime=no])
82        AC_CHECK_LIB(
83          fdatetime,
84          libfdatetime_fat_date_time_copy_to_utf8_string,
85          [ac_cv_libfdatetime_dummy=yes],
86          [ac_cv_libfdatetime=no])
87        AC_CHECK_LIB(
88          fdatetime,
89          libfdatetime_fat_date_time_copy_to_utf8_string_with_index,
90          [ac_cv_libfdatetime_dummy=yes],
91          [ac_cv_libfdatetime=no])
92        AC_CHECK_LIB(
93          fdatetime,
94          libfdatetime_fat_date_time_copy_to_utf16_string,
95          [ac_cv_libfdatetime_dummy=yes],
96          [ac_cv_libfdatetime=no])
97        AC_CHECK_LIB(
98          fdatetime,
99          libfdatetime_fat_date_time_copy_to_utf16_string_with_index,
100          [ac_cv_libfdatetime_dummy=yes],
101          [ac_cv_libfdatetime=no])
102        AC_CHECK_LIB(
103          fdatetime,
104          libfdatetime_fat_date_time_copy_to_utf32_string,
105          [ac_cv_libfdatetime_dummy=yes],
106          [ac_cv_libfdatetime=no])
107        AC_CHECK_LIB(
108          fdatetime,
109          libfdatetime_fat_date_time_copy_to_utf32_string_with_index,
110          [ac_cv_libfdatetime_dummy=yes],
111          [ac_cv_libfdatetime=no])
112
113        dnl FILETIME functions
114        AC_CHECK_LIB(
115          fdatetime,
116          libfdatetime_filetime_initialize,
117          [ac_cv_libfdatetime_dummy=yes],
118          [ac_cv_libfdatetime=no])
119        AC_CHECK_LIB(
120          fdatetime,
121          libfdatetime_filetime_free,
122          [ac_cv_libfdatetime_dummy=yes],
123          [ac_cv_libfdatetime=no])
124        AC_CHECK_LIB(
125          fdatetime,
126          libfdatetime_filetime_copy_from_byte_stream,
127          [ac_cv_libfdatetime_dummy=yes],
128          [ac_cv_libfdatetime=no])
129        AC_CHECK_LIB(
130          fdatetime,
131          libfdatetime_filetime_copy_from_64bit,
132          [ac_cv_libfdatetime_dummy=yes],
133          [ac_cv_libfdatetime=no])
134        AC_CHECK_LIB(
135          fdatetime,
136          libfdatetime_filetime_copy_to_64bit,
137          [ac_cv_libfdatetime_dummy=yes],
138          [ac_cv_libfdatetime=no])
139        AC_CHECK_LIB(
140          fdatetime,
141          libfdatetime_filetime_copy_to_utf8_string,
142          [ac_cv_libfdatetime_dummy=yes],
143          [ac_cv_libfdatetime=no])
144        AC_CHECK_LIB(
145          fdatetime,
146          libfdatetime_filetime_copy_to_utf8_string_with_index,
147          [ac_cv_libfdatetime_dummy=yes],
148          [ac_cv_libfdatetime=no])
149        AC_CHECK_LIB(
150          fdatetime,
151          libfdatetime_filetime_copy_to_utf16_string,
152          [ac_cv_libfdatetime_dummy=yes],
153          [ac_cv_libfdatetime=no])
154        AC_CHECK_LIB(
155          fdatetime,
156          libfdatetime_filetime_copy_to_utf16_string_with_index,
157          [ac_cv_libfdatetime_dummy=yes],
158          [ac_cv_libfdatetime=no])
159        AC_CHECK_LIB(
160          fdatetime,
161          libfdatetime_filetime_copy_to_utf32_string,
162          [ac_cv_libfdatetime_dummy=yes],
163          [ac_cv_libfdatetime=no])
164        AC_CHECK_LIB(
165          fdatetime,
166          libfdatetime_filetime_copy_to_utf32_string_with_index,
167          [ac_cv_libfdatetime_dummy=yes],
168          [ac_cv_libfdatetime=no])
169        AC_CHECK_LIB(
170          fdatetime,
171          libfdatetime_filetime_add,
172          [ac_cv_libfdatetime_dummy=yes],
173          [ac_cv_libfdatetime=no])
174
175        dnl Floatingtime functions
176        AC_CHECK_LIB(
177          fdatetime,
178          libfdatetime_floatingtime_initialize,
179          [ac_cv_libfdatetime_dummy=yes],
180          [ac_cv_libfdatetime=no])
181        AC_CHECK_LIB(
182          fdatetime,
183          libfdatetime_floatingtime_free,
184          [ac_cv_libfdatetime_dummy=yes],
185          [ac_cv_libfdatetime=no])
186        AC_CHECK_LIB(
187          fdatetime,
188          libfdatetime_floatingtime_copy_from_byte_stream,
189          [ac_cv_libfdatetime_dummy=yes],
190          [ac_cv_libfdatetime=no])
191        AC_CHECK_LIB(
192          fdatetime,
193          libfdatetime_floatingtime_copy_from_64bit,
194          [ac_cv_libfdatetime_dummy=yes],
195          [ac_cv_libfdatetime=no])
196        AC_CHECK_LIB(
197          fdatetime,
198          libfdatetime_floatingtime_copy_to_64bit,
199          [ac_cv_libfdatetime_dummy=yes],
200          [ac_cv_libfdatetime=no])
201        AC_CHECK_LIB(
202          fdatetime,
203          libfdatetime_floatingtime_copy_to_utf8_string,
204          [ac_cv_libfdatetime_dummy=yes],
205          [ac_cv_libfdatetime=no])
206        AC_CHECK_LIB(
207          fdatetime,
208          libfdatetime_floatingtime_copy_to_utf8_string_with_index,
209          [ac_cv_libfdatetime_dummy=yes],
210          [ac_cv_libfdatetime=no])
211        AC_CHECK_LIB(
212          fdatetime,
213          libfdatetime_floatingtime_copy_to_utf16_string,
214          [ac_cv_libfdatetime_dummy=yes],
215          [ac_cv_libfdatetime=no])
216        AC_CHECK_LIB(
217          fdatetime,
218          libfdatetime_floatingtime_copy_to_utf16_string_with_index,
219          [ac_cv_libfdatetime_dummy=yes],
220          [ac_cv_libfdatetime=no])
221        AC_CHECK_LIB(
222          fdatetime,
223          libfdatetime_floatingtime_copy_to_utf32_string,
224          [ac_cv_libfdatetime_dummy=yes],
225          [ac_cv_libfdatetime=no])
226        AC_CHECK_LIB(
227          fdatetime,
228          libfdatetime_floatingtime_copy_to_utf32_string_with_index,
229          [ac_cv_libfdatetime_dummy=yes],
230          [ac_cv_libfdatetime=no])
231
232        dnl HFS time functions
233        AC_CHECK_LIB(
234          fdatetime,
235          libfdatetime_hfs_time_initialize,
236          [ac_cv_libfdatetime_dummy=yes],
237          [ac_cv_libfdatetime=no])
238        AC_CHECK_LIB(
239          fdatetime,
240          libfdatetime_hfs_time_free,
241          [ac_cv_libfdatetime_dummy=yes],
242          [ac_cv_libfdatetime=no])
243        AC_CHECK_LIB(
244          fdatetime,
245          libfdatetime_hfs_time_copy_from_byte_stream,
246          [ac_cv_libfdatetime_dummy=yes],
247          [ac_cv_libfdatetime=no])
248        AC_CHECK_LIB(
249          fdatetime,
250          libfdatetime_hfs_time_copy_from_32bit,
251          [ac_cv_libfdatetime_dummy=yes],
252          [ac_cv_libfdatetime=no])
253        AC_CHECK_LIB(
254          fdatetime,
255          libfdatetime_hfs_time_copy_to_32bit,
256          [ac_cv_libfdatetime_dummy=yes],
257          [ac_cv_libfdatetime=no])
258        AC_CHECK_LIB(
259          fdatetime,
260          libfdatetime_hfs_time_copy_to_utf8_string,
261          [ac_cv_libfdatetime_dummy=yes],
262          [ac_cv_libfdatetime=no])
263        AC_CHECK_LIB(
264          fdatetime,
265          libfdatetime_hfs_time_copy_to_utf8_string_with_index,
266          [ac_cv_libfdatetime_dummy=yes],
267          [ac_cv_libfdatetime=no])
268        AC_CHECK_LIB(
269          fdatetime,
270          libfdatetime_hfs_time_copy_to_utf16_string,
271          [ac_cv_libfdatetime_dummy=yes],
272          [ac_cv_libfdatetime=no])
273        AC_CHECK_LIB(
274          fdatetime,
275          libfdatetime_hfs_time_copy_to_utf16_string_with_index,
276          [ac_cv_libfdatetime_dummy=yes],
277          [ac_cv_libfdatetime=no])
278        AC_CHECK_LIB(
279          fdatetime,
280          libfdatetime_hfs_time_copy_to_utf32_string,
281          [ac_cv_libfdatetime_dummy=yes],
282          [ac_cv_libfdatetime=no])
283        AC_CHECK_LIB(
284          fdatetime,
285          libfdatetime_hfs_time_copy_to_utf32_string_with_index,
286          [ac_cv_libfdatetime_dummy=yes],
287          [ac_cv_libfdatetime=no])
288
289        dnl NSF timedate functions
290        AC_CHECK_LIB(
291          fdatetime,
292          libfdatetime_nsf_timedate_initialize,
293          [ac_cv_libfdatetime_dummy=yes],
294          [ac_cv_libfdatetime=no])
295        AC_CHECK_LIB(
296          fdatetime,
297          libfdatetime_nsf_timedate_free,
298          [ac_cv_libfdatetime_dummy=yes],
299          [ac_cv_libfdatetime=no])
300        AC_CHECK_LIB(
301          fdatetime,
302          libfdatetime_nsf_timedate_copy_from_byte_stream,
303          [ac_cv_libfdatetime_dummy=yes],
304          [ac_cv_libfdatetime=no])
305        AC_CHECK_LIB(
306          fdatetime,
307          libfdatetime_nsf_timedate_copy_from_64bit,
308          [ac_cv_libfdatetime_dummy=yes],
309          [ac_cv_libfdatetime=no])
310        AC_CHECK_LIB(
311          fdatetime,
312          libfdatetime_nsf_timedate_copy_to_64bit,
313          [ac_cv_libfdatetime_dummy=yes],
314          [ac_cv_libfdatetime=no])
315        AC_CHECK_LIB(
316          fdatetime,
317          libfdatetime_nsf_timedate_copy_to_utf8_string,
318          [ac_cv_libfdatetime_dummy=yes],
319          [ac_cv_libfdatetime=no])
320        AC_CHECK_LIB(
321          fdatetime,
322          libfdatetime_nsf_timedate_copy_to_utf8_string_with_index,
323          [ac_cv_libfdatetime_dummy=yes],
324          [ac_cv_libfdatetime=no])
325        AC_CHECK_LIB(
326          fdatetime,
327          libfdatetime_nsf_timedate_copy_to_utf16_string,
328          [ac_cv_libfdatetime_dummy=yes],
329          [ac_cv_libfdatetime=no])
330        AC_CHECK_LIB(
331          fdatetime,
332          libfdatetime_nsf_timedate_copy_to_utf16_string_with_index,
333          [ac_cv_libfdatetime_dummy=yes],
334          [ac_cv_libfdatetime=no])
335        AC_CHECK_LIB(
336          fdatetime,
337          libfdatetime_nsf_timedate_copy_to_utf32_string,
338          [ac_cv_libfdatetime_dummy=yes],
339          [ac_cv_libfdatetime=no])
340        AC_CHECK_LIB(
341          fdatetime,
342          libfdatetime_nsf_timedate_copy_to_utf32_string_with_index,
343          [ac_cv_libfdatetime_dummy=yes],
344          [ac_cv_libfdatetime=no])
345
346        dnl POSIX time functions
347        AC_CHECK_LIB(
348          fdatetime,
349          libfdatetime_posix_time_initialize,
350          [ac_cv_libfdatetime_dummy=yes],
351          [ac_cv_libfdatetime=no])
352        AC_CHECK_LIB(
353          fdatetime,
354          libfdatetime_posix_time_free,
355          [ac_cv_libfdatetime_dummy=yes],
356          [ac_cv_libfdatetime=no])
357        AC_CHECK_LIB(
358          fdatetime,
359          libfdatetime_posix_time_copy_from_byte_stream,
360          [ac_cv_libfdatetime_dummy=yes],
361          [ac_cv_libfdatetime=no])
362        AC_CHECK_LIB(
363          fdatetime,
364          libfdatetime_posix_time_copy_from_32bit,
365          [ac_cv_libfdatetime_dummy=yes],
366          [ac_cv_libfdatetime=no])
367        AC_CHECK_LIB(
368          fdatetime,
369          libfdatetime_posix_time_copy_to_32bit,
370          [ac_cv_libfdatetime_dummy=yes],
371          [ac_cv_libfdatetime=no])
372        AC_CHECK_LIB(
373          fdatetime,
374          libfdatetime_posix_time_copy_from_64bit,
375          [ac_cv_libfdatetime_dummy=yes],
376          [ac_cv_libfdatetime=no])
377        AC_CHECK_LIB(
378          fdatetime,
379          libfdatetime_posix_time_copy_to_64bit,
380          [ac_cv_libfdatetime_dummy=yes],
381          [ac_cv_libfdatetime=no])
382        AC_CHECK_LIB(
383          fdatetime,
384          libfdatetime_posix_time_copy_to_utf8_string,
385          [ac_cv_libfdatetime_dummy=yes],
386          [ac_cv_libfdatetime=no])
387        AC_CHECK_LIB(
388          fdatetime,
389          libfdatetime_posix_time_copy_to_utf8_string_with_index,
390          [ac_cv_libfdatetime_dummy=yes],
391          [ac_cv_libfdatetime=no])
392        AC_CHECK_LIB(
393          fdatetime,
394          libfdatetime_posix_time_copy_to_utf16_string,
395          [ac_cv_libfdatetime_dummy=yes],
396          [ac_cv_libfdatetime=no])
397        AC_CHECK_LIB(
398          fdatetime,
399          libfdatetime_posix_time_copy_to_utf16_string_with_index,
400          [ac_cv_libfdatetime_dummy=yes],
401          [ac_cv_libfdatetime=no])
402        AC_CHECK_LIB(
403          fdatetime,
404          libfdatetime_posix_time_copy_to_utf32_string,
405          [ac_cv_libfdatetime_dummy=yes],
406          [ac_cv_libfdatetime=no])
407        AC_CHECK_LIB(
408          fdatetime,
409          libfdatetime_posix_time_copy_to_utf32_string_with_index,
410          [ac_cv_libfdatetime_dummy=yes],
411          [ac_cv_libfdatetime=no])
412
413        dnl Systemtime functions
414        AC_CHECK_LIB(
415          fdatetime,
416          libfdatetime_systemetime_initialize,
417          [ac_cv_libfdatetime_dummy=yes],
418          [ac_cv_libfdatetime=no])
419        AC_CHECK_LIB(
420          fdatetime,
421          libfdatetime_systemetime_free,
422          [ac_cv_libfdatetime_dummy=yes],
423          [ac_cv_libfdatetime=no])
424        AC_CHECK_LIB(
425          fdatetime,
426          libfdatetime_systemetime_copy_from_byte_stream,
427          [ac_cv_libfdatetime_dummy=yes],
428          [ac_cv_libfdatetime=no])
429        AC_CHECK_LIB(
430          fdatetime,
431          libfdatetime_systemetime_copy_to_utf8_string,
432          [ac_cv_libfdatetime_dummy=yes],
433          [ac_cv_libfdatetime=no])
434        AC_CHECK_LIB(
435          fdatetime,
436          libfdatetime_systemetime_copy_to_utf8_string_with_index,
437          [ac_cv_libfdatetime_dummy=yes],
438          [ac_cv_libfdatetime=no])
439        AC_CHECK_LIB(
440          fdatetime,
441          libfdatetime_systemetime_copy_to_utf16_string,
442          [ac_cv_libfdatetime_dummy=yes],
443          [ac_cv_libfdatetime=no])
444        AC_CHECK_LIB(
445          fdatetime,
446          libfdatetime_systemetime_copy_to_utf16_string_with_index,
447          [ac_cv_libfdatetime_dummy=yes],
448          [ac_cv_libfdatetime=no])
449        AC_CHECK_LIB(
450          fdatetime,
451          libfdatetime_systemetime_copy_to_utf32_string,
452          [ac_cv_libfdatetime_dummy=yes],
453          [ac_cv_libfdatetime=no])
454        AC_CHECK_LIB(
455          fdatetime,
456          libfdatetime_systemetime_copy_to_utf32_string_with_index,
457          [ac_cv_libfdatetime_dummy=yes],
458          [ac_cv_libfdatetime=no])
459
460        ac_cv_libfdatetime_LIBADD="-lfdatetime"])
461      ])
462    AS_IF(
463      [test "x$ac_cv_with_libfdatetime" != x && test "x$ac_cv_with_libfdatetime" != xauto-detect && test "x$ac_cv_libfdatetime" != xyes],
464      [AC_MSG_FAILURE(
465        [unable to find supported libfdatetime in directory: $ac_cv_with_libfdatetime],
466        [1])
467      ])
468    ])
469
470  AS_IF(
471    [test "x$ac_cv_libfdatetime" = xyes],
472    [AC_DEFINE(
473      [HAVE_LIBFDATETIME],
474      [1],
475      [Define to 1 if you have the `fdatetime' library (-lfdatetime).])
476    ])
477
478  AS_IF(
479    [test "x$ac_cv_libfdatetime" = xyes],
480    [AC_SUBST(
481      [HAVE_LIBFDATETIME],
482      [1]) ],
483    [AC_SUBST(
484      [HAVE_LIBFDATETIME],
485      [0])
486    ])
487  ])
488
489dnl Function to detect if libfdatetime dependencies are available
490AC_DEFUN([AX_LIBFDATETIME_CHECK_LOCAL],
491  [dnl No additional checks.
492
493  ac_cv_libfdatetime_CPPFLAGS="-I../libfdatetime";
494  ac_cv_libfdatetime_LIBADD="../libfdatetime/libfdatetime.la";
495
496  ac_cv_libfdatetime=local
497  ])
498
499dnl Function to detect how to enable libfdatetime
500AC_DEFUN([AX_LIBFDATETIME_CHECK_ENABLE],
501  [AX_COMMON_ARG_WITH(
502    [libfdatetime],
503    [libfdatetime],
504    [search for libfdatetime in includedir and libdir or in the specified DIR, or no if to use local version],
505    [auto-detect],
506    [DIR])
507
508  AX_LIBFDATETIME_CHECK_LIB
509
510  dnl Check if the dependencies for the local library version
511  AS_IF(
512    [test "x$ac_cv_libfdatetime" != xyes],
513    [AX_LIBFDATETIME_CHECK_LOCAL
514
515    AC_DEFINE(
516      [HAVE_LOCAL_LIBFDATETIME],
517      [1],
518      [Define to 1 if the local version of libfdatetime is used.])
519    AC_SUBST(
520      [HAVE_LOCAL_LIBFDATETIME],
521      [1])
522    ])
523
524  AM_CONDITIONAL(
525    [HAVE_LOCAL_LIBFDATETIME],
526    [test "x$ac_cv_libfdatetime" = xlocal])
527  AS_IF(
528    [test "x$ac_cv_libfdatetime_CPPFLAGS" != "x"],
529    [AC_SUBST(
530      [LIBFDATETIME_CPPFLAGS],
531      [$ac_cv_libfdatetime_CPPFLAGS])
532    ])
533  AS_IF(
534    [test "x$ac_cv_libfdatetime_LIBADD" != "x"],
535    [AC_SUBST(
536      [LIBFDATETIME_LIBADD],
537      [$ac_cv_libfdatetime_LIBADD])
538    ])
539
540  AS_IF(
541    [test "x$ac_cv_libfdatetime" = xyes],
542    [AC_SUBST(
543      [ax_libfdatetime_pc_libs_private],
544      [-lfdatetime])
545    ])
546
547  AS_IF(
548    [test "x$ac_cv_libfdatetime" = xyes],
549    [AC_SUBST(
550      [ax_libfdatetime_spec_requires],
551      [libfdatetime])
552    AC_SUBST(
553      [ax_libfdatetime_spec_build_requires],
554      [libfdatetime-devel])
555    ])
556  ])
557
558