configure.ac 10.4 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#  This file is part of systemd.
#
#  Copyright 2010 Lennart Poettering
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  systemd is distributed in the hope that it will be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#  General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with systemd; If not, see <http://www.gnu.org/licenses/>.

AC_PREREQ(2.63)

20
AC_INIT([systemd],[0],[systemd-devel@lists.freedesktop.org])
21
22
23
24
25
26
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])

AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax])

27
AC_SUBST(PACKAGE_URL, [http://www.freedesktop.org/wiki/Software/systemd])
28
29
30
31
32
33
34
35
36
37
38
39

AC_CANONICAL_HOST

AM_SILENT_RULES([yes])

AC_CHECK_PROG([STOW], [stow], [yes], [no])

AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [
        AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
        ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}"
])

40
41
42
43
AC_PROG_MKDIR_P
AC_PROG_LN_S
AC_PROG_SED

44
45
46
47
48
49
AC_PROG_CC
AC_PROG_CC_C99
AM_PROG_CC_C_O
AC_PROG_GCC_TRADITIONAL
AC_USE_SYSTEM_EXTENSIONS

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
CC_CHECK_CFLAGS_APPEND([ \
        -Wall \
        -W \
        -Wextra \
        -pipe \
        -Wno-long-long \
        -Winline \
        -Wvla \
        -Wno-overlength-strings \
        -Wundef \
        -Wformat=2 \
        -Wlogical-op \
        -Wsign-compare \
        -Wformat-security \
        -Wmissing-include-dirs \
        -Wformat-nonliteral \
        -Wold-style-definition \
        -Wpointer-arith \
        -Winit-self \
        -Wdeclaration-after-statement \
        -Wfloat-equal \
        -Wmissing-prototypes \
        -Wstrict-prototypes \
        -Wredundant-decls \
        -Wmissing-declarations \
        -Wmissing-noreturn \
        -Wshadow \
        -Wendif-labels \
        -Wcast-align \
        -Wstrict-aliasing=2 \
        -Wwrite-strings \
        -Wno-unused-parameter \
        -ffast-math \
        -Wp,-D_FORTIFY_SOURCE=2 \
        -fno-common \
        -fdiagnostics-show-option \
        -Wno-missing-field-initializers])
87
88
89
90
91

AC_SEARCH_LIBS([clock_gettime], [rt], [], [AC_MSG_ERROR([*** POSIX RT library not found])])
AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])
AC_CHECK_HEADERS([sys/capability.h], [], [AC_MSG_ERROR([*** POSIX caps headers not found])])

92
# This makes sure pkg.m4 is available.
93
m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
94

95
96
97
98
99
100
101
102
103
104
105
106
PKG_CHECK_MODULES(UDEV, [ libudev ])
AC_SUBST(UDEV_CFLAGS)
AC_SUBST(UDEV_LIBS)

PKG_CHECK_MODULES(DBUS, [ dbus-1 ])
AC_SUBST(DBUS_CFLAGS)
AC_SUBST(DBUS_LIBS)

PKG_CHECK_MODULES(DBUSGLIB, [ dbus-glib-1 ])
AC_SUBST(DBUSGLIB_CFLAGS)
AC_SUBST(DBUSGLIB_LIBS)

107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
have_gtk=no
AC_ARG_ENABLE(gtk, AS_HELP_STRING([--disable-gtk], [disable GTK tools]))
if test "x$enable_gtk" != "xno"; then
        PKG_CHECK_MODULES(GTK, [ gtk+-2.0 ],
                [AC_DEFINE(HAVE_GTK, 1, [Define if GTK is available]) have_gtk=yes], have_gtk=no)
        AC_SUBST(GTK_CFLAGS)
        AC_SUBST(GTK_LIBS)
        if test "x$have_gtk" = xno -a "x$enable_gtk" = xyes; then
             AC_MSG_ERROR([*** gtk support requested but libraries not found])
        fi
fi
AM_CONDITIONAL(HAVE_GTK, [test "$have_gtk" = "yes"])

PKG_CHECK_MODULES( CGROUP, [ libcgroup >= 0.35 ], [], [
        AC_CHECK_HEADER( [libcgroup.h], [], [AC_MSG_ERROR([*** libcgroup.h not found])], )
        save_CPPFLAGS="$CPPFLAGS"
        save_LIBS="$LIBS"
        CGROUP_LIBS=${CGROUP_LIBS:--lcgroup}
        LIBS="$LIBS $CGROUP_LIBS"
        CPPFLAGS="$CPPFLAGS $CGROUP_CFLAGS"
        AC_MSG_CHECKING([for libcgroup >= 0.35])
        AC_LINK_IFELSE(
                [AC_LANG_PROGRAM([[#include <libcgroup.h>]], [[ CGFLAG_DELETE_RECURSIVE; cgroup_init(); ]])],
                [AC_MSG_RESULT([yes])],
                [AC_MSG_RESULT([no]); AC_MSG_ERROR([*** systemd needs libcgroup 0.35 or newer])],
                [${CGROUP_LIBS}])
        CPPFLAGS="$save_CPPFLAGS"
        LIBS="$save_LIBS"
])
136
137
138
AC_SUBST(CGROUP_CFLAGS)
AC_SUBST(CGROUP_LIBS)

139
AM_PROG_VALAC([0.8])
140
141
AC_SUBST(VAPIDIR)

142
143
144
AC_PATH_PROG([XSLTPROC], [xsltproc])
AM_CONDITIONAL(HAVE_XSLTPROC, test x"$XSLTPROC" != x)

145
AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO],[Specify the distribution to target: One of fedora, suse, debian, arch, gentoo or other]))
146
147
148
149
150
151
152
if test "z$with_distro" = "z"; then
        if test "$cross_compiling" = yes; then
                AC_MSG_WARN([Target distribution cannot be reliably detected when cross-compiling. You should specify it with --with-distro (see $0 --help for recognized distros)])
        else
                AC_CHECK_FILE(/etc/redhat-release,with_distro="fedora")
                AC_CHECK_FILE(/etc/SuSE-release,with_distro="suse")
                AC_CHECK_FILE(/etc/debian_version,with_distro="debian")
153
                AC_CHECK_FILE(/etc/arch-release,with_distro="arch")
Fabian Henze's avatar
Fabian Henze committed
154
                AC_CHECK_FILE(/etc/gentoo-release,with_distro="gentoo")
Malcolm Studd's avatar
Malcolm Studd committed
155
                AC_CHECK_FILE(/etc/slackware-version,with_distro="slackware")
156
157
158
159
160
161
162
163
164
165
166
        fi
        if test "z$with_distro" = "z"; then
                with_distro=`uname -s`
        fi
fi
with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]' `

case $with_distro in
        fedora)
                SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
                SYSTEM_SYSVRCND_PATH=/etc/rc.d
167
168
169
                special_dbus_service=messagebus.service
                special_syslog_service=rsyslog.service
                AC_DEFINE(TARGET_FEDORA, [], [Target is Fedora/RHEL])
170
171
172
173
                ;;
        suse)
                SYSTEM_SYSVINIT_PATH=/etc/init.d
                SYSTEM_SYSVRCND_PATH=/etc/init.d
174
175
176
                special_dbus_service=dbus.service
                special_syslog_service=syslog.service
                AC_DEFINE(TARGET_SUSE, [], [Target is OpenSUSE/SLES])
177
178
179
180
                ;;
        debian)
                SYSTEM_SYSVINIT_PATH=/etc/init.d
                SYSTEM_SYSVRCND_PATH=/etc
181
                special_dbus_service=dbus.service
182
                special_syslog_service=rsyslog.service
183
                AC_DEFINE(TARGET_DEBIAN, [], [Target is Debian/Ubuntu])
184
                ;;
185
186
187
188
189
190
191
        arch)
                SYSTEM_SYSVINIT_PATH=/etc/rc.d
                SYSTEM_SYSVRCND_PATH=/etc
                special_dbus_service=dbus.service
                special_syslog_service=syslog-ng.service
                AC_DEFINE(TARGET_ARCH, [], [Target is ArchLinux])
                ;;
Fabian Henze's avatar
Fabian Henze committed
192
193
194
195
196
197
198
        gentoo)
                SYSTEM_SYSVINIT_PATH=/etc/init.d
                SYSTEM_SYSVRCND_PATH=/etc
                special_dbus_service=dbus.service
                special_syslog_service=syslog-ng.service
                AC_DEFINE(TARGET_GENTOO, [], [Target is Gentoo])
                ;;
Malcolm Studd's avatar
Malcolm Studd committed
199
200
201
202
203
204
205
        slackware)
                SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
                SYSTEM_SYSVRCND_PATH=/etc/rc.d
                special_dbus_service=messagebus.service
                special_syslog_service=syslog.service
                AC_DEFINE(TARGET_SLACKWARE, [], [Target is Slackware])
                ;;
206
        other)
207
208
209
210
211
212
213
214
                AS_IF([test "x$with_sysvinit_path" = "x"],
                        [AC_MSG_ERROR([With --distro=none, you must pass --with-sysvinit-path to configure])])
                AS_IF([test "x$with_sysvrcd_path" = "x"],
                        [AC_MSG_ERROR([With --distro=none, you must pass --with-sysvrcd-path to configure])])
                AS_IF([test "x$with_dbus_service" = "x"],
                        [AC_MSG_ERROR([With --distro=none, you must pass --with-dbus-service to configure])])
                AS_IF([test "x$with_syslog_service" = "x"],
                        [AC_MSG_ERROR([With --distro=none, you must pass --with-syslog-service to configure])])
215
216
                ;;
        *)
217
                AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, SysV init scripts could not be found! (patches welcome); you can specify --with-distro=other to skip this check])
218
219
220
                ;;
esac

221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
AC_ARG_WITH([sysvinit-path],
	[AS_HELP_STRING([--with-sysvinit-path=PATH],
		[Specify the path to where the SysV init scripts are located @<:@default=based on distro@:>@])],
	[SYSTEM_SYSVINIT_PATH="$withval"],
	[])

AC_ARG_WITH([sysvrcd-path],
        [AS_HELP_STRING([--with-sysvrcd-path=PATH],
                [Specify the path to the base directory for the SysV rcN.d directories @<:@default=based on distro@:>@])],
        [SYSTEM_SYSVRCND_PATH="$withval"],
        [])

AC_ARG_WITH([dbus-service],
        [AS_HELP_STRING([--with-dbus-service=PATH],
                [Specify the name of the special DBus service @<:@default=based on distro@:>@])],
        [special_dbus_service="$withval"],
        [])

AC_ARG_WITH([syslog-service],
        [AS_HELP_STRING([--with-syslog-service=PATH],
                [Specify the name of the special syslog service @<:@default=based on distro@:>@])],
        [special_syslog_service="$withval"],
        [])

245
AC_SUBST(SYSTEM_SYSVINIT_PATH)
246
AC_SUBST(SYSTEM_SYSVRCND_PATH)
247
248
249
250

AM_CONDITIONAL(TARGET_FEDORA, test x"$with_distro" = xfedora)
AM_CONDITIONAL(TARGET_SUSE, test x"$with_distro" = xsuse)
AM_CONDITIONAL(TARGET_DEBIAN, test x"$with_distro" = xdebian)
251
AM_CONDITIONAL(TARGET_ARCH, test x"$with_distro" = xarch)
Fabian Henze's avatar
Fabian Henze committed
252
AM_CONDITIONAL(TARGET_GENTOO, test x"$with_distro" = xgentoo)
Malcolm Studd's avatar
Malcolm Studd committed
253
AM_CONDITIONAL(TARGET_SLACKWARE, test x"$with_distro" = xslackware)
254

255
256
257
AC_DEFINE_UNQUOTED(SPECIAL_DBUS_SERVICE, ["$special_dbus_service"], [D-Bus service name])
AC_DEFINE_UNQUOTED(SPECIAL_SYSLOG_SERVICE, ["$special_syslog_service"], [syslog service name])

258
259
260
261
262
263
264
AC_ARG_WITH([udevrulesdir],
        AS_HELP_STRING([--with-udevrulesdir=DIR], [Diectory for udev rules]),
        [],
        [with_udevrulesdir=/lib/udev/rules.d])
AC_SUBST([udevrulesdir], [$with_udevrulesdir])


265
AC_OUTPUT([Makefile])
266
267
268
269

echo "
        $PACKAGE_NAME $VERSION

270
        Distribution:            ${with_distro}
271
272
        SysV init scripts:       ${SYSTEM_SYSVINIT_PATH}
        SysV rc?.d directories:  ${SYSTEM_SYSVRCND_PATH}
273
274
        Syslog service:          ${special_syslog_service}
        D-Bus service:           ${special_dbus_service}
275
        Gtk:                     ${have_gtk}
276
        udev rules dir:          ${with_udevrulesdir}
277
"