Move Arch Linux's VENDOR check above Ubuntu's
[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 # Check for pacman+makepkg to build Arch Linux packages.  If these
179 dnl # tools are missing it is non-fatal but you will not be able to
180 dnl # build Arch Linux packages and will be warned if you try too.
181 dnl #
182 AC_DEFUN([ZFS_AC_PACMAN], [
183         PACMAN=pacman
184         MAKEPKG=makepkg
185
186         AC_MSG_CHECKING([whether $PACMAN is available])
187         tmp=$($PACMAN --version 2>/dev/null)
188         AS_IF([test -n "$tmp"], [
189                 PACMAN_VERSION=$(echo $tmp |
190                                  $AWK '/Pacman/ { print $[3] }' |
191                                  $SED 's/^v//')
192                 HAVE_PACMAN=yes
193                 AC_MSG_RESULT([$HAVE_PACMAN ($PACMAN_VERSION)])
194         ],[
195                 HAVE_PACMAN=no
196                 AC_MSG_RESULT([$HAVE_PACMAN])
197         ])
198
199         AC_MSG_CHECKING([whether $MAKEPKG is available])
200         tmp=$($MAKEPKG --version 2>/dev/null)
201         AS_IF([test -n "$tmp"], [
202                 MAKEPKG_VERSION=$(echo $tmp | $AWK '/makepkg/ { print $[3] }')
203                 HAVE_MAKEPKG=yes
204                 AC_MSG_RESULT([$HAVE_MAKEPKG ($MAKEPKG_VERSION)])
205         ],[
206                 HAVE_MAKEPKG=no
207                 AC_MSG_RESULT([$HAVE_MAKEPKG])
208         ])
209
210         AC_SUBST(HAVE_PACMAN)
211         AC_SUBST(PACMAN)
212         AC_SUBST(PACMAN_VERSION)
213
214         AC_SUBST(HAVE_MAKEPKG)
215         AC_SUBST(MAKEPKG)
216         AC_SUBST(MAKEPKG_VERSION)
217 ])
218
219 dnl #
220 dnl # Using the VENDOR tag from config.guess set the default
221 dnl # package type for 'make pkg': (rpm | deb | tgz)
222 dnl #
223 AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
224         AC_MSG_CHECKING([linux distribution])
225         if test -f /etc/redhat-release ; then
226                 VENDOR=redhat ;
227         elif test -f /etc/fedora-release ; then
228                 VENDOR=fedora ;
229         elif test -f /etc/gentoo-release ; then
230                 VENDOR=gentoo ;
231         elif test -f /etc/debian_version ; then
232                 VENDOR=debian ;
233         elif test -f /etc/SuSE-release ; then
234                 VENDOR=sles ;
235         elif test -f /etc/slackware-version ; then
236                 VENDOR=slackware ;
237         elif test -f /etc/arch-release ; then
238                 VENDOR=arch ;
239         elif test -f /etc/lsb-release ; then
240                 VENDOR=ubuntu ;
241         elif test -f /etc/lunar.release ; then
242                 VENDOR=lunar ;
243         else
244                 VENDOR= ;
245         fi
246         AC_MSG_RESULT([$VENDOR])
247         AC_SUBST(VENDOR)
248
249         AC_MSG_CHECKING([default package type])
250         case "$VENDOR" in
251                 redhat)     DEFAULT_PACKAGE=rpm ;;
252                 fedora)     DEFAULT_PACKAGE=rpm ;;
253                 ubuntu)     DEFAULT_PACKAGE=deb ;;
254                 debian)     DEFAULT_PACKAGE=deb ;;
255                 sles)       DEFAULT_PACKAGE=rpm ;;
256                 slackware)  DEFAULT_PACKAGE=tgz ;;
257                 gentoo)     DEFAULT_PACKAGE=tgz ;;
258                 lunar)      DEFAULT_PACKAGE=tgz ;;
259                 arch)       DEFAULT_PACKAGE=arch;;
260                 *)          DEFAULT_PACKAGE=rpm ;;
261         esac
262
263         AC_MSG_RESULT([$DEFAULT_PACKAGE])
264         AC_SUBST(DEFAULT_PACKAGE)
265
266         AC_MSG_CHECKING([default init directory])
267         case "$VENDOR" in
268                 arch)       DEFAULT_INIT_DIR=$sysconfdir/rc.d ;;
269                 *)          DEFAULT_INIT_DIR=$sysconfdir/init.d ;;
270         esac
271
272         AC_MSG_RESULT([$DEFAULT_INIT_DIR])
273         AC_SUBST(DEFAULT_INIT_DIR)
274
275         AC_MSG_CHECKING([default init script type])
276         case "$VENDOR" in
277                 redhat)     DEFAULT_INIT_SCRIPT=redhat ;;
278                 fedora)     DEFAULT_INIT_SCRIPT=fedora ;;
279                 ubuntu)     DEFAULT_INIT_SCRIPT=lsb ;;
280                 debian)     DEFAULT_INIT_SCRIPT=lsb ;;
281                 sles)       DEFAULT_INIT_SCRIPT=lsb ;;
282                 slackware)  DEFAULT_INIT_SCRIPT=lsb ;;
283                 gentoo)     DEFAULT_INIT_SCRIPT=gentoo ;;
284                 lunar)      DEFAULT_INIT_SCRIPT=lunar ;;
285                 arch)       DEFAULT_INIT_SCRIPT=arch ;;
286                 *)          DEFAULT_INIT_SCRIPT=lsb ;;
287         esac
288
289         AC_MSG_RESULT([$DEFAULT_INIT_SCRIPT])
290         AC_SUBST(DEFAULT_INIT_SCRIPT)
291 ])
292
293 dnl #
294 dnl # Default ZFS package configuration
295 dnl #
296 AC_DEFUN([ZFS_AC_PACKAGE], [
297         ZFS_AC_RPM
298         ZFS_AC_DPKG
299         ZFS_AC_ALIEN
300         ZFS_AC_PACMAN
301         ZFS_AC_DEFAULT_PACKAGE
302 ])