]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/contrib/openzfs/config/always-pyzfs.m4
zfs: merge openzfs/zfs@59493b63c (master)
[FreeBSD/FreeBSD.git] / sys / contrib / openzfs / config / always-pyzfs.m4
1 dnl #
2 dnl # ZFS_AC_PYTHON_MODULE(module_name, [action-if-true], [action-if-false])
3 dnl #
4 dnl # Checks for Python module. Freely inspired by AX_PYTHON_MODULE
5 dnl # https://www.gnu.org/software/autoconf-archive/ax_python_module.html
6 dnl # Required by ZFS_AC_CONFIG_ALWAYS_PYZFS.
7 dnl #
8 AC_DEFUN([ZFS_AC_PYTHON_MODULE], [
9         PYTHON_NAME=${PYTHON##*/}
10         AC_MSG_CHECKING([for $PYTHON_NAME module: $1])
11         AS_IF([$PYTHON -c "import $1" 2>/dev/null], [
12                 AC_MSG_RESULT(yes)
13                 m4_ifvaln([$2], [$2])
14         ], [
15                 AC_MSG_RESULT(no)
16                 m4_ifvaln([$3], [$3])
17         ])
18 ])
19
20 dnl #
21 dnl # Determines if pyzfs can be built, requires Python 3.6 or later.
22 dnl #
23 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYZFS], [
24         AC_ARG_ENABLE([pyzfs],
25                 AS_HELP_STRING([--enable-pyzfs],
26                 [install libzfs_core python bindings @<:@default=check@:>@]),
27                 [enable_pyzfs=$enableval],
28                 [enable_pyzfs=check])
29
30         dnl #
31         dnl # Packages for pyzfs specifically enabled/disabled.
32         dnl #
33         AS_IF([test "x$enable_pyzfs" != xcheck], [
34                 AS_IF([test "x$enable_pyzfs" = xyes], [
35                         DEFINE_PYZFS='--with pyzfs'
36                 ], [
37                         DEFINE_PYZFS='--without pyzfs'
38                 ])
39         ], [
40                 AS_IF([test "$PYTHON" != :], [
41                         DEFINE_PYZFS=''
42                 ], [
43                         enable_pyzfs=no
44                         DEFINE_PYZFS='--without pyzfs'
45                 ])
46         ])
47         AC_SUBST(DEFINE_PYZFS)
48
49         dnl #
50         dnl # Autodetection disables pyzfs if kernel or srpm config
51         dnl #
52         AS_IF([test "x$enable_pyzfs" = xcheck], [
53                 AS_IF([test "x$ZFS_CONFIG" = xkernel -o "x$ZFS_CONFIG" = xsrpm ], [
54                                 enable_pyzfs=no
55                                 AC_MSG_NOTICE([Disabling pyzfs for kernel/srpm config])
56                 ])
57         ])
58
59         dnl #
60         dnl # Python "packaging" (or, failing that, "distlib") module is required to build and install pyzfs
61         dnl #
62         AS_IF([test "x$enable_pyzfs" = xcheck -o "x$enable_pyzfs" = xyes], [
63                 ZFS_AC_PYTHON_MODULE([packaging], [], [
64                         ZFS_AC_PYTHON_MODULE([distlib], [], [
65                                 AS_IF([test "x$enable_pyzfs" = xyes], [
66                                         AC_MSG_ERROR("Python $PYTHON_VERSION packaging and distlib modules are not installed")
67                                 ], [test "x$enable_pyzfs" != xno], [
68                                         enable_pyzfs=no
69                                 ])
70                         ])
71                 ])
72         ])
73
74         dnl #
75         dnl # Require python3-devel libraries
76         dnl #
77         AS_IF([test "x$enable_pyzfs" = xcheck  -o "x$enable_pyzfs" = xyes], [
78                 AS_CASE([$PYTHON_VERSION],
79                         [3.*], [PYTHON_REQUIRED_VERSION=">= '3.6.0'"],
80                         [AC_MSG_ERROR("Python $PYTHON_VERSION unknown")]
81                 )
82
83                 AX_PYTHON_DEVEL([$PYTHON_REQUIRED_VERSION], [
84                         AS_IF([test "x$enable_pyzfs" = xyes], [
85                                 AC_MSG_ERROR("Python $PYTHON_REQUIRED_VERSION development library is not installed")
86                         ], [test "x$enable_pyzfs" != xno], [
87                                 enable_pyzfs=no
88                         ])
89                 ])
90         ])
91
92         dnl #
93         dnl # Python "setuptools" module is required to build and install pyzfs
94         dnl #
95         AS_IF([test "x$enable_pyzfs" = xcheck -o "x$enable_pyzfs" = xyes], [
96                 ZFS_AC_PYTHON_MODULE([setuptools], [], [
97                         AS_IF([test "x$enable_pyzfs" = xyes], [
98                                 AC_MSG_ERROR("Python $PYTHON_VERSION setuptools is not installed")
99                         ], [test "x$enable_pyzfs" != xno], [
100                                 enable_pyzfs=no
101                         ])
102                 ])
103         ])
104
105         dnl #
106         dnl # Python "cffi" module is required to run pyzfs
107         dnl #
108         AS_IF([test "x$enable_pyzfs" = xcheck -o "x$enable_pyzfs" = xyes], [
109                 ZFS_AC_PYTHON_MODULE([cffi], [], [
110                         AS_IF([test "x$enable_pyzfs" = xyes], [
111                                 AC_MSG_ERROR("Python $PYTHON_VERSION cffi is not installed")
112                         ], [test "x$enable_pyzfs" != xno], [
113                                 enable_pyzfs=no
114                         ])
115                 ])
116         ])
117
118         dnl #
119         dnl # Set enable_pyzfs to 'yes' if every check passed
120         dnl #
121         AS_IF([test "x$enable_pyzfs" = xcheck], [enable_pyzfs=yes])
122
123         AM_CONDITIONAL([PYZFS_ENABLED], [test "x$enable_pyzfs" = xyes])
124         AC_SUBST([PYZFS_ENABLED], [$enable_pyzfs])
125         AC_SUBST(pythonsitedir, [$PYTHON_SITE_PKG])
126
127         AC_MSG_CHECKING([whether to enable pyzfs: ])
128         AC_MSG_RESULT($enable_pyzfs)
129 ])