Fix the configure CONFIG_* option detection
[zfs.git] / config / zfs-build.m4
1 AC_DEFUN([ZFS_AC_LICENSE], [
2         AC_MSG_CHECKING([zfs author])
3         AC_MSG_RESULT([$ZFS_META_AUTHOR])
4
5         AC_MSG_CHECKING([zfs license])
6         AC_MSG_RESULT([$ZFS_META_LICENSE])
7 ])
8
9 AC_DEFUN([ZFS_AC_DEBUG], [
10         AC_MSG_CHECKING([whether debugging is enabled])
11         AC_ARG_ENABLE([debug],
12                 [AS_HELP_STRING([--enable-debug],
13                 [Enable generic debug support @<:@default=no@:>@])],
14                 [],
15                 [enable_debug=no])
16
17         AS_IF([test "x$enable_debug" = xyes],
18         [
19                 KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG -Werror"
20                 HOSTCFLAGS="${HOSTCFLAGS} -DDEBUG -Werror"
21                 DEBUG_CFLAGS="-DDEBUG -Werror"
22                 DEBUG_STACKFLAGS="-fstack-check"
23         ],
24         [
25                 KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG "
26                 HOSTCFLAGS="${HOSTCFLAGS} -DNDEBUG "
27                 DEBUG_CFLAGS="-DNDEBUG"
28                 DEBUG_STACKFLAGS=""
29         ])
30
31         AC_SUBST(DEBUG_CFLAGS)
32         AC_SUBST(DEBUG_STACKFLAGS)
33         AC_MSG_RESULT([$enable_debug])
34 ])
35
36 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
37         ZFS_AC_CONFIG_ALWAYS_NO_UNUSED_BUT_SET_VARIABLE
38 ])
39
40 AC_DEFUN([ZFS_AC_CONFIG], [
41         TARGET_ASM_DIR=asm-generic
42         AC_SUBST(TARGET_ASM_DIR)
43
44         ZFS_CONFIG=all
45         AC_ARG_WITH([config],
46                 AS_HELP_STRING([--with-config=CONFIG],
47                 [Config file 'kernel|user|all|srpm']),
48                 [ZFS_CONFIG="$withval"])
49
50         AC_MSG_CHECKING([zfs config])
51         AC_MSG_RESULT([$ZFS_CONFIG]);
52         AC_SUBST(ZFS_CONFIG)
53
54         ZFS_AC_CONFIG_ALWAYS
55
56         case "$ZFS_CONFIG" in
57                 kernel) ZFS_AC_CONFIG_KERNEL ;;
58                 user)   ZFS_AC_CONFIG_USER   ;;
59                 all)    ZFS_AC_CONFIG_KERNEL
60                         ZFS_AC_CONFIG_USER   ;;
61                 srpm)                        ;;
62                 *)
63                 AC_MSG_RESULT([Error!])
64                 AC_MSG_ERROR([Bad value "$ZFS_CONFIG" for --with-config,
65                               user kernel|user|all|srpm]) ;;
66         esac
67
68         AM_CONDITIONAL([CONFIG_USER],
69                        [test "$ZFS_CONFIG" = user] ||
70                        [test "$ZFS_CONFIG" = all])
71         AM_CONDITIONAL([CONFIG_KERNEL],
72                        [test "$ZFS_CONFIG" = kernel] ||
73                        [test "$ZFS_CONFIG" = all])
74 ])
75
76 dnl #
77 dnl # Check for rpm+rpmbuild to build RPM packages.  If these tools
78 dnl # are missing it is non-fatal but you will not be able to build
79 dnl # RPM packages and will be warned if you try too.
80 dnl #
81 AC_DEFUN([ZFS_AC_RPM], [
82         RPM=rpm
83         RPMBUILD=rpmbuild
84
85         AC_MSG_CHECKING([whether $RPM is available])
86         AS_IF([tmp=$($RPM --version 2>/dev/null)], [
87                 RPM_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }')
88                 HAVE_RPM=yes
89                 AC_MSG_RESULT([$HAVE_RPM ($RPM_VERSION)])
90         ],[
91                 HAVE_RPM=no
92                 AC_MSG_RESULT([$HAVE_RPM])
93         ])
94
95         AC_MSG_CHECKING([whether $RPMBUILD is available])
96         AS_IF([tmp=$($RPMBUILD --version 2>/dev/null)], [
97                 RPMBUILD_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }')
98                 HAVE_RPMBUILD=yes
99                 AC_MSG_RESULT([$HAVE_RPMBUILD ($RPMBUILD_VERSION)])
100         ],[
101                 HAVE_RPMBUILD=no
102                 AC_MSG_RESULT([$HAVE_RPMBUILD])
103         ])
104
105         AC_SUBST(HAVE_RPM)
106         AC_SUBST(RPM)
107         AC_SUBST(RPM_VERSION)
108
109         AC_SUBST(HAVE_RPMBUILD)
110         AC_SUBST(RPMBUILD)
111         AC_SUBST(RPMBUILD_VERSION)
112 ])
113
114 dnl #
115 dnl # Check for dpkg+dpkg-buildpackage to build DEB packages.  If these
116 dnl # tools are missing it is non-fatal but you will not be able to build
117 dnl # DEB packages and will be warned if you try too.
118 dnl #
119 AC_DEFUN([ZFS_AC_DPKG], [
120         DPKG=dpkg
121         DPKGBUILD=dpkg-buildpackage
122
123         AC_MSG_CHECKING([whether $DPKG is available])
124         AS_IF([tmp=$($DPKG --version 2>/dev/null)], [
125                 DPKG_VERSION=$(echo $tmp | $AWK '/Debian/ { print $[7] }')
126                 HAVE_DPKG=yes
127                 AC_MSG_RESULT([$HAVE_DPKG ($DPKG_VERSION)])
128         ],[
129                 HAVE_DPKG=no
130                 AC_MSG_RESULT([$HAVE_DPKG])
131         ])
132
133         AC_MSG_CHECKING([whether $DPKGBUILD is available])
134         AS_IF([tmp=$($DPKGBUILD --version 2>/dev/null)], [
135                 DPKGBUILD_VERSION=$(echo $tmp | \
136                     $AWK '/Debian/ { print $[4] }' | cut -f-4 -d'.')
137                 HAVE_DPKGBUILD=yes
138                 AC_MSG_RESULT([$HAVE_DPKGBUILD ($DPKGBUILD_VERSION)])
139         ],[
140                 HAVE_DPKGBUILD=no
141                 AC_MSG_RESULT([$HAVE_DPKGBUILD])
142         ])
143
144         AC_SUBST(HAVE_DPKG)
145         AC_SUBST(DPKG)
146         AC_SUBST(DPKG_VERSION)
147
148         AC_SUBST(HAVE_DPKGBUILD)
149         AC_SUBST(DPKGBUILD)
150         AC_SUBST(DPKGBUILD_VERSION)
151 ])
152
153 dnl #
154 dnl # Until native packaging for various different packing systems
155 dnl # can be added the least we can do is attempt to use alien to
156 dnl # convert the RPM packages to the needed package type.  This is
157 dnl # a hack but so far it has worked reasonable well.
158 dnl #
159 AC_DEFUN([ZFS_AC_ALIEN], [
160         ALIEN=alien
161
162         AC_MSG_CHECKING([whether $ALIEN is available])
163         AS_IF([tmp=$($ALIEN --version 2>/dev/null)], [
164                 ALIEN_VERSION=$(echo $tmp | $AWK '{ print $[3] }')
165                 HAVE_ALIEN=yes
166                 AC_MSG_RESULT([$HAVE_ALIEN ($ALIEN_VERSION)])
167         ],[
168                 HAVE_ALIEN=no
169                 AC_MSG_RESULT([$HAVE_ALIEN])
170         ])
171
172         AC_SUBST(HAVE_ALIEN)
173         AC_SUBST(ALIEN)
174         AC_SUBST(ALIEN_VERSION)
175 ])
176
177 dnl #
178 dnl # Using the VENDOR tag from config.guess set the default
179 dnl # package type for 'make pkg': (rpm | deb | tgz)
180 dnl #
181 AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
182         AC_MSG_CHECKING([linux distribution])
183         if test -f /etc/redhat-release ; then
184                 VENDOR=redhat ;
185         elif test -f /etc/fedora-release ; then
186                 VENDOR=fedora ;
187         elif test -f /etc/gentoo-release ; then
188                 VENDOR=gentoo ;
189         elif test -f /etc/debian_version ; then
190                 VENDOR=debian ;
191         elif test -f /etc/SuSE-release ; then
192                 VENDOR=sles ;
193         elif test -f /etc/slackware-version ; then
194                 VENDOR=slackware ;
195         elif test -f /etc/lsb-release ; then
196                 VENDOR=ubuntu ;
197         elif test -f /etc/lunar.release ; then
198                 VENDOR=lunar ;
199         elif test -f /etc/arch-release ; then
200                 VENDOR=arch ;
201         else
202                 VENDOR= ;
203         fi
204         AC_MSG_RESULT([$VENDOR])
205         AC_SUBST(VENDOR)
206
207         AC_MSG_CHECKING([default package type])
208         case "$VENDOR" in
209                 redhat)     DEFAULT_PACKAGE=rpm ;;
210                 fedora)     DEFAULT_PACKAGE=rpm ;;
211                 ubuntu)     DEFAULT_PACKAGE=deb ;;
212                 debian)     DEFAULT_PACKAGE=deb ;;
213                 sles)       DEFAULT_PACKAGE=rpm ;;
214                 slackware)  DEFAULT_PACKAGE=tgz ;;
215                 gentoo)     DEFAULT_PACKAGE=tgz ;;
216                 lunar)      DEFAULT_PACKAGE=tgz ;;
217                 *)          DEFAULT_PACKAGE=rpm ;;
218         esac
219
220         AC_MSG_RESULT([$DEFAULT_PACKAGE])
221         AC_SUBST(DEFAULT_PACKAGE)
222
223         AC_MSG_CHECKING([default init directory])
224         case "$VENDOR" in
225                 arch)       DEFAULT_INIT_DIR=$sysconfdir/rc.d ;;
226                 *)          DEFAULT_INIT_DIR=$sysconfdir/init.d ;;
227         esac
228
229         AC_MSG_RESULT([$DEFAULT_INIT_DIR])
230         AC_SUBST(DEFAULT_INIT_DIR)
231
232         AC_MSG_CHECKING([default init script type])
233         case "$VENDOR" in
234                 redhat)     DEFAULT_INIT_SCRIPT=redhat ;;
235                 fedora)     DEFAULT_INIT_SCRIPT=fedora ;;
236                 ubuntu)     DEFAULT_INIT_SCRIPT=lsb ;;
237                 debian)     DEFAULT_INIT_SCRIPT=lsb ;;
238                 sles)       DEFAULT_INIT_SCRIPT=lsb ;;
239                 slackware)  DEFAULT_INIT_SCRIPT=lsb ;;
240                 gentoo)     DEFAULT_INIT_SCRIPT=gentoo ;;
241                 lunar)      DEFAULT_INIT_SCRIPT=lunar ;;
242                 arch)       DEFAULT_INIT_SCRIPT=arch ;;
243                 *)          DEFAULT_INIT_SCRIPT=lsb ;;
244         esac
245
246         AC_MSG_RESULT([$DEFAULT_INIT_SCRIPT])
247         AC_SUBST(DEFAULT_INIT_SCRIPT)
248 ])
249
250 dnl #
251 dnl # Default ZFS package configuration
252 dnl #
253 AC_DEFUN([ZFS_AC_PACKAGE], [
254         ZFS_AC_RPM
255         ZFS_AC_DPKG
256         ZFS_AC_ALIEN
257         ZFS_AC_DEFAULT_PACKAGE
258 ])