1dnl Functions for libuuid
2dnl
3dnl Version: 20190308
4
5dnl Function to detect if libuuid is available
6AC_DEFUN([AX_LIBUUID_CHECK_LIB],
7  [AS_IF(
8    [test "x$ac_cv_enable_shared_libs" = xno || test "x$ac_cv_with_libuuid" = xno],
9    [ac_cv_libuuid=no],
10    [ac_cv_libuuid=check
11    dnl Check if the directory provided as parameter exists
12    AS_IF(
13      [test "x$ac_cv_with_libuuid" != x && test "x$ac_cv_with_libuuid" != xauto-detect],
14      [AS_IF(
15        [test -d "$ac_cv_with_libuuid"],
16        [CFLAGS="$CFLAGS -I${ac_cv_with_libuuid}/include"
17        LDFLAGS="$LDFLAGS -L${ac_cv_with_libuuid}/lib"],
18        [AC_MSG_FAILURE(
19          [no such directory: $ac_cv_with_libuuid],
20          [1])
21        ])
22      ],
23      [AS_IF(
24        [test "x$ac_cv_enable_winapi" = xyes],
25        [ac_cv_libuuid=librpcrt4
26        ac_cv_libuuid_LIBADD=-lrpcrt4],
27        [dnl Check for a pkg-config file
28        AS_IF(
29          [test "x$cross_compiling" != "xyes" && test "x$PKGCONFIG" != "x"],
30          [PKG_CHECK_MODULES(
31            [uuid],
32            [uuid >= 2.20],
33            [ac_cv_libuuid=libuuid],
34            [ac_cv_libuuid=check])
35          ])
36        AS_IF(
37          [test "x$ac_cv_libuuid" = xlibuuid],
38          [ac_cv_libuuid_CPPFLAGS="$pkg_cv_libuuid_CFLAGS"
39          ac_cv_libuuid_LIBADD="$pkg_cv_libuuid_LIBS"])
40        ])
41      ])
42
43    AS_IF(
44      [test "x$ac_cv_libuuid" = xcheck],
45      [AS_IF(
46        [test "x$ac_cv_libuuid" = xuuid],
47        [ac_cv_libuuid_CPPFLAGS="$pkg_cv_uuid_CFLAGS"
48        ac_cv_libuuid_LIBADD="$pkg_cv_uuid_LIBS"],
49        [dnl Check for headers
50        AC_CHECK_HEADERS([uuid/uuid.h])
51
52        AS_IF(
53          [test "x$ac_cv_header_uuid_uuid_h" != xno],
54          [AC_CHECK_FUNC(
55            [uuid_generate],
56            [ac_cv_libuuid=native],
57            [AC_CHECK_LIB(
58              [uuid],
59              [uuid_generate],
60              [ac_cv_libuuid=libuuid
61              ac_cv_libuuid_LIBADD="-luuid"],
62              [ac_cv_libuuid=no])
63            ])
64          ])
65        ])
66
67      AS_IF(
68        [test "x$ac_cv_libuuid" != xno],
69        [AC_DEFINE(
70          [HAVE_GUID_SUPPORT],
71          [1],
72          [Define to 1 if GUID/UUID support is available.])
73        ])
74
75      AS_IF(
76        [test "x$ac_cv_libuuid" = xnative],
77        [AC_CHECK_FUNC(
78          [uuid_generate_random],
79          [AC_DEFINE(
80            [HAVE_UUID_GENERATE_RANDOM],
81            [1],
82            [Define to 1 if uuid_generate_random funtion is available.])
83          ])
84        AC_CHECK_FUNC(
85          [uuid_generate_time],
86          [AC_DEFINE(
87            [HAVE_UUID_GENERATE_TIME],
88            [1],
89            [Define to 1 if uuid_generate_time funtion is available.])
90          ])
91        ])
92
93      AS_IF(
94        [test "x$ac_cv_libuuid" = xlibuuid],
95        [AC_CHECK_LIB(
96          [uuid],
97          [uuid_generate_random],
98          [AC_DEFINE(
99            [HAVE_UUID_GENERATE_RANDOM],
100            [1],
101            [Define to 1 if uuid_generate_random funtion is available in libuuid.])
102          ])
103        AC_CHECK_LIB(
104          [uuid],
105          [uuid_generate_time],
106          [AC_DEFINE(
107            [HAVE_UUID_GENERATE_TIME],
108            [1],
109            [Define to 1 if uuid_generate_time funtion is available in libuuid.])
110          ])
111        ])
112      ])
113    ])
114
115  AS_IF(
116    [test "x$ac_cv_libuuid" = xlibrpcrt4],
117    [AC_DEFINE(
118      [HAVE_LIBUUID],
119      [1],
120      [Define to 1 if you have the 'librpcrt4' library (-lrpcrt4).])
121    ])
122  AS_IF(
123    [test "x$ac_cv_libuuid" = xlibuuid],
124    [AC_DEFINE(
125      [HAVE_LIBUUID],
126      [1],
127      [Define to 1 if you have the 'libuuid' library (-luuid).])
128    ])
129
130  AS_IF(
131    [test "x$ac_cv_libuuid" != xno],
132    [AC_SUBST(
133      [HAVE_LIBUUID],
134      [1]) ],
135    [AC_SUBST(
136      [HAVE_LIBUUID],
137      [0])
138    ])
139  ])
140
141dnl Function to detect how to enable libuuid
142AC_DEFUN([AX_LIBUUID_CHECK_ENABLE],
143  [AX_COMMON_ARG_WITH(
144    [libuuid],
145    [libuuid],
146    [search for libuuid in includedir and libdir or in the specified DIR, or no if not to use libuuid],
147    [auto-detect],
148    [DIR])
149
150  dnl Check for a shared library version
151  AX_LIBUUID_CHECK_LIB
152
153  AS_IF(
154    [test "x$ac_cv_libuuid_CPPFLAGS" != "x"],
155    [AC_SUBST(
156      [LIBUUID_CPPFLAGS],
157      [$ac_cv_libuuid_CPPFLAGS])
158    ])
159  AS_IF(
160    [test "x$ac_cv_libuuid_LIBADD" != "x"],
161    [AC_SUBST(
162      [LIBUUID_LIBADD],
163      [$ac_cv_libuuid_LIBADD])
164    ])
165
166  AS_IF(
167    [test "x$ac_cv_libuuid" = xlibuuid],
168    [AC_SUBST(
169      [ax_libuuid_pc_libs_private],
170      [-luuid])
171    ])
172
173  AS_IF(
174    [test "x$ac_cv_libuuid" = xlibuuid],
175    [AC_SUBST(
176      [ax_libuuid_spec_requires],
177      [libuuid])
178    AC_SUBST(
179      [ax_libuuid_spec_build_requires],
180      [libuuid-devel])
181    ])
182  ])
183
184