Add init scripts
[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], [
37         TARGET_ASM_DIR=asm-generic
38         AC_SUBST(TARGET_ASM_DIR)
39
40         ZFS_CONFIG=all
41         AC_ARG_WITH([config],
42                 AS_HELP_STRING([--with-config=CONFIG],
43                 [Config file 'kernel|user|all|srpm']),
44                 [ZFS_CONFIG="$withval"])
45
46         AC_MSG_CHECKING([zfs config])
47         AC_MSG_RESULT([$ZFS_CONFIG]);
48         AC_SUBST(ZFS_CONFIG)
49
50         case "$ZFS_CONFIG" in
51                 kernel) ZFS_AC_CONFIG_KERNEL ;;
52                 user)   ZFS_AC_CONFIG_USER   ;;
53                 all)    ZFS_AC_CONFIG_KERNEL
54                         ZFS_AC_CONFIG_USER   ;;
55                 srpm)                        ;;
56                 *)
57                 AC_MSG_RESULT([Error!])
58                 AC_MSG_ERROR([Bad value "$ZFS_CONFIG" for --with-config,
59                               user kernel|user|all|srpm]) ;;
60         esac
61
62         AM_CONDITIONAL([CONFIG_USER],
63                        [test "$ZFS_CONFIG" = user] ||
64                        [test "$ZFS_CONFIG" = all])
65         AM_CONDITIONAL([CONFIG_KERNEL],
66                        [test "$ZFS_CONFIG" = kernel] ||
67                        [test "$ZFS_CONFIG" = all])
68 ])
69
70 dnl #
71 dnl # Check for rpm+rpmbuild to build RPM packages.  If these tools
72 dnl # are missing it is non-fatal but you will not be able to build
73 dnl # RPM packages and will be warned if you try too.
74 dnl #
75 AC_DEFUN([ZFS_AC_RPM], [
76         RPM=rpm
77         RPMBUILD=rpmbuild
78
79         AC_MSG_CHECKING([whether $RPM is available])
80         AS_IF([tmp=$($RPM --version 2>/dev/null)], [
81                 RPM_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }')
82                 HAVE_RPM=yes
83                 AC_MSG_RESULT([$HAVE_RPM ($RPM_VERSION)])
84         ],[
85                 HAVE_RPM=no
86                 AC_MSG_RESULT([$HAVE_RPM])
87         ])
88
89         AC_MSG_CHECKING([whether $RPMBUILD is available])
90         AS_IF([tmp=$($RPMBUILD --version 2>/dev/null)], [
91                 RPMBUILD_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }')
92                 HAVE_RPMBUILD=yes
93                 AC_MSG_RESULT([$HAVE_RPMBUILD ($RPMBUILD_VERSION)])
94         ],[
95                 HAVE_RPMBUILD=no
96                 AC_MSG_RESULT([$HAVE_RPMBUILD])
97         ])
98
99         AC_SUBST(HAVE_RPM)
100         AC_SUBST(RPM)
101         AC_SUBST(RPM_VERSION)
102
103         AC_SUBST(HAVE_RPMBUILD)
104         AC_SUBST(RPMBUILD)
105         AC_SUBST(RPMBUILD_VERSION)
106 ])
107
108 dnl #
109 dnl # Check for dpkg+dpkg-buildpackage to build DEB packages.  If these
110 dnl # tools are missing it is non-fatal but you will not be able to build
111 dnl # DEB packages and will be warned if you try too.
112 dnl #
113 AC_DEFUN([ZFS_AC_DPKG], [
114         DPKG=dpkg
115         DPKGBUILD=dpkg-buildpackage
116
117         AC_MSG_CHECKING([whether $DPKG is available])
118         AS_IF([tmp=$($DPKG --version 2>/dev/null)], [
119                 DPKG_VERSION=$(echo $tmp | $AWK '/Debian/ { print $[7] }')
120                 HAVE_DPKG=yes
121                 AC_MSG_RESULT([$HAVE_DPKG ($DPKG_VERSION)])
122         ],[
123                 HAVE_DPKG=no
124                 AC_MSG_RESULT([$HAVE_DPKG])
125         ])
126
127         AC_MSG_CHECKING([whether $DPKGBUILD is available])
128         AS_IF([tmp=$($DPKGBUILD --version 2>/dev/null)], [
129                 DPKGBUILD_VERSION=$(echo $tmp | \
130                     $AWK '/Debian/ { print $[4] }' | cut -f-4 -d'.')
131                 HAVE_DPKGBUILD=yes
132                 AC_MSG_RESULT([$HAVE_DPKGBUILD ($DPKGBUILD_VERSION)])
133         ],[
134                 HAVE_DPKGBUILD=no
135                 AC_MSG_RESULT([$HAVE_DPKGBUILD])
136         ])
137
138         AC_SUBST(HAVE_DPKG)
139         AC_SUBST(DPKG)
140         AC_SUBST(DPKG_VERSION)
141
142         AC_SUBST(HAVE_DPKGBUILD)
143         AC_SUBST(DPKGBUILD)
144         AC_SUBST(DPKGBUILD_VERSION)
145 ])
146
147 dnl #
148 dnl # Until native packaging for various different packing systems
149 dnl # can be added the least we can do is attempt to use alien to
150 dnl # convert the RPM packages to the needed package type.  This is
151 dnl # a hack but so far it has worked reasonable well.
152 dnl #
153 AC_DEFUN([ZFS_AC_ALIEN], [
154         ALIEN=alien
155
156         AC_MSG_CHECKING([whether $ALIEN is available])
157         AS_IF([tmp=$($ALIEN --version 2>/dev/null)], [
158                 ALIEN_VERSION=$(echo $tmp | $AWK '{ print $[3] }')
159                 HAVE_ALIEN=yes
160                 AC_MSG_RESULT([$HAVE_ALIEN ($ALIEN_VERSION)])
161         ],[
162                 HAVE_ALIEN=no
163                 AC_MSG_RESULT([$HAVE_ALIEN])
164         ])
165
166         AC_SUBST(HAVE_ALIEN)
167         AC_SUBST(ALIEN)
168         AC_SUBST(ALIEN_VERSION)
169 ])
170
171 dnl #
172 dnl # Using the VENDOR tag from config.guess set the default
173 dnl # package type for 'make pkg': (rpm | deb | tgz)
174 dnl #
175 AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
176         AC_MSG_CHECKING([linux distribution])
177         if test -f /etc/redhat-release ; then
178                 VENDOR=redhat ;
179         elif test -f /etc/fedora-release ; then
180                 VENDOR=fedora ;
181         elif test -f /etc/lsb-release ; then
182                 VENDOR=ubuntu ;
183         elif test -f /etc/debian_version ; then
184                 VENDOR=debian ;
185         elif test -f /etc/SuSE-release ; then
186                 VENDOR=sles ;
187         elif test -f /etc/slackware-version ; then
188                 VENDOR=slackware ;
189         elif test -f /etc/gentoo-release ; then
190                 VENDOR=gentoo ;
191         else
192                 VENDOR= ;
193         fi
194         AC_MSG_RESULT([$VENDOR])
195         AC_SUBST(VENDOR)
196
197         AC_MSG_CHECKING([default package type])
198         case "$VENDOR" in
199                 fedora)     DEFAULT_PACKAGE=rpm ;;
200                 redhat)     DEFAULT_PACKAGE=rpm ;;
201                 sles)       DEFAULT_PACKAGE=rpm ;;
202                 ubuntu)     DEFAULT_PACKAGE=deb ;;
203                 debian)     DEFAULT_PACKAGE=deb ;;
204                 slackware)  DEFAULT_PACKAGE=tgz ;;
205                 *)          DEFAULT_PACKAGE=rpm ;;
206         esac
207
208         AC_MSG_RESULT([$DEFAULT_PACKAGE])
209         AC_SUBST(DEFAULT_PACKAGE)
210
211         AC_MSG_CHECKING([default init script type])
212         case "$VENDOR" in
213                 fedora)     DEFAULT_INIT_SCRIPT=fedora ;;
214                 redhat)     DEFAULT_INIT_SCRIPT=fedora ;;
215                 sles)       DEFAULT_INIT_SCRIPT=lsb ;;
216                 ubuntu)     DEFAULT_INIT_SCRIPT=lsb ;;
217                 debian)     DEFAULT_INIT_SCRIPT=lsb ;;
218                 slackware)  DEFAULT_INIT_SCRIPT=lsb ;;
219                 *)          DEFAULT_INIT_SCRIPT=lsb ;;
220         esac
221
222         AC_MSG_RESULT([$DEFAULT_INIT_SCRIPT])
223         AC_SUBST(DEFAULT_INIT_SCRIPT)
224 ])
225
226 dnl #
227 dnl # Default ZFS package configuration
228 dnl #
229 AC_DEFUN([ZFS_AC_PACKAGE], [
230         ZFS_AC_RPM
231         ZFS_AC_DPKG
232         ZFS_AC_ALIEN
233         ZFS_AC_DEFAULT_PACKAGE
234 ])