1dnl Checks for lzma required headers and functions
2dnl
3dnl Version: 20210404
4
5dnl Function to detect if lzma is available
6AC_DEFUN([AX_LZMA_CHECK_LIB],
7  [AS_IF(
8    [test "x$ac_cv_enable_shared_libs" = xno || test "x$ac_cv_with_lzma" = xno],
9    [ac_cv_lzma=no],
10    [ac_cv_lzma=check
11    dnl Check if the directory provided as parameter exists
12    AS_IF(
13      [test "x$ac_cv_with_lzma" != x && test "x$ac_cv_with_lzma" != xauto-detect],
14      [AS_IF(
15        [test -d "$ac_cv_with_lzma"],
16        [CFLAGS="$CFLAGS -I${ac_cv_with_lzma}/include"
17        LDFLAGS="$LDFLAGS -L${ac_cv_with_lzma}/lib"],
18        [AC_MSG_FAILURE(
19          [no such directory: $ac_cv_with_lzma],
20          [1])
21        ])
22      ],
23      [dnl Check for a pkg-config file
24      AS_IF(
25        [test "x$cross_compiling" != "xyes" && test "x$PKGCONFIG" != "x"],
26        [PKG_CHECK_MODULES(
27          [liblzma],
28          [liblzma >= 5.2.5],
29          [ac_cv_lzma=liblzma],
30          [ac_cv_lzma=check])
31        ])
32      AS_IF(
33        [test "x$ac_cv_lzma" = xliblzma],
34        [ac_cv_lzma_CPPFLAGS="$pkg_cv_liblzma_CFLAGS"
35        ac_cv_lzma_LIBADD="$pkg_cv_liblzma_LIBS"])
36      ])
37
38    AS_IF(
39      [test "x$ac_cv_lzma" = xcheck],
40      [dnl Check for headers
41      AC_CHECK_HEADERS([lzma.h])
42
43      AS_IF(
44        [test "x$ac_cv_header_lzma_h" = xno],
45        [ac_cv_lzma=no],
46        [dnl Check for the individual functions
47        ac_cv_lzma=liblzma
48
49        AC_CHECK_LIB(
50          lzma,
51          lzma_version_number,
52          [],
53          [ac_cv_lzma=no])
54
55        AS_IF(
56          [test "x$ac_cv_lib_lzma_lzma_version_number" = xno],
57          [AC_MSG_FAILURE(
58            [Missing function: lzma_version_number in library: lzma.],
59            [1])
60          ])
61
62        ac_cv_lzma_LIBADD="-llzma";
63        ])
64      ])
65    ])
66
67  AS_IF(
68    [test "x$ac_cv_lzma" = xliblzma],
69    [AC_DEFINE(
70      [HAVE_LIBLZMA],
71      [1],
72      [Define to 1 if you have the 'lzma' library (-llzma).])
73    ])
74
75  AS_IF(
76    [test "x$ac_cv_lzma" != xno],
77    [AC_SUBST(
78      [HAVE_LIBLZMA],
79      [1]) ],
80    [AC_SUBST(
81      [HAVE_LIBLZMA],
82      [0])
83    ])
84  ])
85
86dnl Function to detect if the lzma_code function is available
87AC_DEFUN([AX_LZMA_CHECK_DECOMPRESS],
88  [AS_IF(
89    [test "x$ac_cv_lzma" != xliblzma],
90    [ac_cv_lzma_decompress=local],
91    [AC_CHECK_LIB(
92      lzma,
93      lzma_code,
94      [ac_cv_lzma_decompress=liblzma],
95      [ac_cv_lzma_decompress=local])
96
97    AS_IF(
98      [test "x$ac_cv_lzma_decompress" = xliblzma],
99      [AC_DEFINE(
100        [HAVE_LZMA_DECOMPRESS],
101        [1],
102        [Define to 1 if you have the `lzma_code' function.])
103      ])
104    ])
105  ])
106
107dnl Function to detect how to enable lzma
108AC_DEFUN([AX_LZMA_CHECK_ENABLE],
109  [AX_COMMON_ARG_WITH(
110    [lzma],
111    [lzma],
112    [search for lzma in includedir and libdir or in the specified DIR, or no if not to use lzma],
113    [auto-detect],
114    [DIR])
115
116  dnl Check for a shared library version
117  AX_LZMA_CHECK_LIB
118
119  AS_IF(
120    [test "x$ac_cv_lzma_CPPFLAGS" != "x"],
121    [AC_SUBST(
122      [LZMA_CPPFLAGS],
123      [$ac_cv_lzma_CPPFLAGS])
124    ])
125  AS_IF(
126    [test "x$ac_cv_lzma_LIBADD" != "x"],
127    [AC_SUBST(
128      [LZMA_LIBADD],
129      [$ac_cv_lzma_LIBADD])
130    ])
131
132  AS_IF(
133    [test "x$ac_cv_lzma" = xliblzma],
134    [AC_SUBST(
135      [ax_lzma_pc_libs_private],
136      [-llzma])
137    ])
138
139  AS_IF(
140    [test "x$ac_cv_lzma" = xliblzma],
141    [AC_SUBST(
142      [ax_lzma_spec_requires],
143      [xz-libs])
144    AC_SUBST(
145      [ax_lzma_spec_build_requires],
146      [xz-devel])
147    AC_SUBST(
148      [ax_lzma_static_spec_requires],
149      [xz-static])
150    AC_SUBST(
151      [ax_lzma_static_spec_build_requires],
152      [xz-static])
153    ])
154  ])
155
156