1
2AC_PREREQ([2.60])
3AC_INIT([gdm],
4        [3.28.4],
5        [http://bugzilla.gnome.org/enter_bug.cgi?product=gdm])
6
7AC_CONFIG_SRCDIR([daemon/gdm-manager.c])
8
9AM_INIT_AUTOMAKE([1.11.2 no-dist-gzip dist-xz tar-ustar -Wall])
10m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
11AM_MAINTAINER_MODE([enable])
12
13# for utmpx stuff
14AC_GNU_SOURCE
15
16AC_STDC_HEADERS
17AC_PROG_CXX
18AM_PROG_CC_C_O
19AC_PROG_LIBTOOL()
20
21## increment if the plugin interface has additions, changes, removals.
22LT_CURRENT=1
23
24## increment any time the source changes; set to
25##  0 if you increment CURRENT
26LT_REVISION=0
27
28## increment if any interfaces have been added; set to 0
29## if any interfaces have been changed or removed. removal has
30## precedence over adding, so set to 0 if both happened.
31LT_AGE=0
32
33AC_SUBST(LT_CURRENT)
34AC_SUBST(LT_REVISION)
35AC_SUBST(LT_AGE)
36
37AC_HEADER_STDC
38
39AC_SUBST(VERSION)
40
41AC_CONFIG_HEADERS(config.h)
42AC_CONFIG_MACRO_DIR([m4])
43
44# Documentation
45enable_documentation=no
46m4_ifdef([YELP_HELP_INIT],[
47YELP_HELP_INIT
48enable_documentation=yes
49])
50AM_CONDITIONAL(ENABLE_DOCUMENTATION, test x$enable_documentation = xyes)
51
52# i18n stuff
53IT_PROG_INTLTOOL([0.40.0])
54
55GETTEXT_PACKAGE=gdm
56AC_SUBST(GETTEXT_PACKAGE)
57AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [gettext package])
58
59dnl ---------------------------------------------------------------------------
60dnl - Dependencies
61dnl ---------------------------------------------------------------------------
62
63GLIB_REQUIRED_VERSION=2.36.0
64GTK_REQUIRED_VERSION=2.91.1
65LIBCANBERRA_GTK_REQUIRED_VERSION=0.4
66ACCOUNTS_SERVICE_REQUIRED_VERSION=0.6.35
67
68EXTRA_COMPILE_WARNINGS(yes)
69
70PKG_CHECK_MODULES(GTHREAD, gthread-2.0)
71AC_SUBST(GTHREAD_CFLAGS)
72AC_SUBST(GTHREAD_LIBS)
73
74PKG_CHECK_MODULES(COMMON,
75        gobject-2.0 >= $GLIB_REQUIRED_VERSION
76        gio-2.0 >= $GLIB_REQUIRED_VERSION
77        gio-unix-2.0 >= $GLIB_REQUIRED_VERSION
78)
79AC_SUBST(COMMON_CFLAGS)
80AC_SUBST(COMMON_LIBS)
81
82PKG_CHECK_MODULES(DAEMON,
83        gobject-2.0 >= $GLIB_REQUIRED_VERSION
84        gio-2.0 >= $GLIB_REQUIRED_VERSION
85        gio-unix-2.0 >= $GLIB_REQUIRED_VERSION
86        accountsservice >= $ACCOUNTS_SERVICE_REQUIRED_VERSION
87        xcb
88)
89AC_SUBST(DAEMON_CFLAGS)
90AC_SUBST(DAEMON_LIBS)
91
92GLIB_GSETTINGS
93
94PKG_CHECK_MODULES(XLIB, x11 xau, ,
95  [AC_PATH_XTRA
96    if test "x$no_x" = xyes; then
97      AC_MSG_ERROR("no (requires X development libraries)")
98    else
99      XLIB_LIBS="$X_PRE_LIBS $X_LIBS -lXau -lX11 -lXext $X_EXTRA_LIBS"
100      XLIB_CFLAGS=$X_CFLAGS
101    fi])
102AC_SUBST(XLIB_CFLAGS)
103AC_SUBST(XLIB_LIBS)
104
105PKG_CHECK_MODULES(GTK,
106        gtk+-3.0 >= $GTK_REQUIRED_VERSION
107)
108AC_SUBST(GTK_CFLAGS)
109AC_SUBST(GTK_LIBS)
110
111PKG_CHECK_MODULES(CANBERRA_GTK,
112        libcanberra-gtk3 >= $LIBCANBERRA_GTK_REQUIRED_VERSION
113)
114AC_SUBST(CANBERRA_GTK_CFLAGS)
115AC_SUBST(CANBERRA_GTK_LIBS)
116
117AC_ARG_WITH(selinux,
118            AS_HELP_STRING([--with-selinux],
119                           [Add SELinux support]),,
120            with_selinux=auto)
121
122PKG_CHECK_MODULES(LIBSELINUX, libselinux, have_selinux=yes, have_selinux=no)
123
124use_selinux=no
125if test "x$have_selinux" = "xyes" && test "x$with_selinux" != "xno" ; then
126        AC_DEFINE(HAVE_SELINUX, 1, [Define if have selinux])
127        use_selinux=yes
128fi
129AC_SUBST(LIBSELINUX_CFLAGS)
130AC_SUBST(LIBSELINUX_LIBS)
131
132PKG_CHECK_MODULES(SIMPLE_CHOOSER,
133        gtk+-3.0 >= $GTK_REQUIRED_VERSION
134)
135AC_SUBST(SIMPLE_CHOOSER_CFLAGS)
136AC_SUBST(SIMPLE_CHOOSER_LIBS)
137
138PLUGIN_LIBTOOL_FLAGS="-export_dynamic -module -avoid-version"
139AC_SUBST(PLUGIN_LIBTOOL_FLAGS)
140
141AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
142AC_PATH_XTRA
143
144# Unit testing framework
145PKG_CHECK_MODULES(CHECK,
146                  [check >= 0.9.4],
147                  have_check=yes,
148                  have_check=no)
149AM_CONDITIONAL([HAVE_CHECK],[test "x$CHECK_CFLAGS" != "x"])
150
151PKG_CHECK_MODULES(LIBGDM, glib-2.0 gio-2.0 gio-unix-2.0);
152GOBJECT_INTROSPECTION_CHECK([0.9.12])
153LIBGDM_GIR_INCLUDES="GLib-2.0 GObject-2.0 Gio-2.0"
154AC_SUBST(LIBGDM_GIR_INCLUDES)
155
156dnl ---------------------------------------------------------------------------
157dnl - Configuration file stuff
158dnl ---------------------------------------------------------------------------
159
160AC_ARG_WITH(sysconfsubdir,
161            AS_HELP_STRING([--with-sysconfsubdir],
162                           [directory name used under sysconfdir, default=gdm]),
163            sysconfsubdir=${withval}, sysconfsubdir=gdm)
164AC_SUBST(sysconfsubdir)
165
166if test x"${sysconfsubdir}" != xno -a x"${sysconfsubdir}" != x; then
167    gdmconfdir='${sysconfdir}/${sysconfsubdir}'
168else
169    gdmconfdir='${sysconfdir}'
170fi
171AC_SUBST(gdmconfdir)
172
173AC_ARG_WITH(dmconfdir,
174            AS_HELP_STRING([--with-dmconfdir],
175                           [directory where Sessions are stored, default=SYSCONFDIR/dm]),
176            dmconfdir=${withval}, dmconfdir=${sysconfdir}/dm)
177AC_SUBST(dmconfdir)
178
179dnl ---------------------------------------------------------------------------
180dnl - Configure arguments
181dnl ---------------------------------------------------------------------------
182AC_ARG_ENABLE(gdm-xsession,
183              AS_HELP_STRING([--enable-gdm-xsession],
184                             [Enable installing the gdm Xsession file @<:@default=no@:>@]),,
185              enable_gdm_xsession=no)
186AM_CONDITIONAL(ENABLE_GDM_XSESSION, test x$enable_gdm_xsession = xyes)
187
188AC_ARG_ENABLE(split-authentication,
189	      AS_HELP_STRING([--enable-split-authentication],
190                             [Enable multiple simultaneous PAM conversations during login @<:@default=yes@:>@]),,
191              enable_split_authentication=yes)
192AM_CONDITIONAL(ENABLE_SPLIT_AUTHENTICATION, test x$enable_split_authentication = xyes)
193
194if test x$enable_split_authentication = xyes; then
195  AC_DEFINE(ENABLE_SPLIT_AUTHENTICATION, 1, [Define if split authentication is enabled])
196fi
197
198AC_ARG_ENABLE(user-display-server,
199	      AS_HELP_STRING([--enable-user-display-server],
200                             [Enable running X server as user @<:@default=yes@:>@]),,
201              enable_user_display_server=yes)
202AM_CONDITIONAL(ENABLE_USER_DISPLAY_SERVER, test x$user_display_server = xyes)
203
204if test x$enable_user_display_server = xyes; then
205  AC_DEFINE(ENABLE_USER_DISPLAY_SERVER, 1, [Define if user display servers are supported])
206fi
207
208AC_ARG_WITH(default-pam-config,
209	    AS_HELP_STRING([--with-default-pam-config: One of redhat, openembedded, exherbo, lfs, arch, none @<:@default=auto@:>@]))
210dnl If not given, try autodetecting from release files (see NetworkManager source)
211if test x$with_default_pam_config = x; then
212	AC_CHECK_FILE(/etc/redhat-release,with_default_pam_config="redhat")
213	AC_CHECK_FILE(/etc/fedora-release,with_default_pam_config="redhat")
214	AC_CHECK_FILE(/etc/exherbo-release,with_default_pam_config="exherbo")
215	AC_CHECK_FILE(/etc/arch-release,with_default_pam_config="arch")
216	AC_CHECK_FILE(/etc/lfs-release,with_default_pam_config="lfs")
217	dnl If not autodetected, default to none
218	if test x$with_default_pam_config = x; then
219	  with_default_pam_config=none
220	fi
221fi
222case x$with_default_pam_config in
223     xredhat|xopenembedded|xexherbo|xlfs|xarch|xnone) ;;
224     *)
225       AC_MSG_ERROR([Invalid --with-default-pam-config ${with_default_pam_config}])
226       exit 1
227       ;;
228esac
229AM_CONDITIONAL(ENABLE_REDHAT_PAM_CONFIG, test x$with_default_pam_config = xredhat)
230AM_CONDITIONAL(ENABLE_OPENEMBEDDED_PAM_CONFIG, test x$with_default_pam_config = xopenembedded)
231AM_CONDITIONAL(ENABLE_EXHERBO_PAM_CONFIG, test x$with_default_pam_config = xexherbo)
232AM_CONDITIONAL(ENABLE_LFS_PAM_CONFIG, test x$with_default_pam_config = xlfs)
233AM_CONDITIONAL(ENABLE_ARCH_PAM_CONFIG, test x$with_default_pam_config = xarch)
234
235AC_CHECK_HEADERS([security/pam_modules.h security/pam_modutil.h security/pam_ext.h],
236                 [have_pam=yes],
237                 [if test "x$have_pam" = xyes ; then
238                        AC_MSG_ERROR([PAM development files not found.])
239                 fi])
240
241AC_ARG_ENABLE(console-helper,
242	      AS_HELP_STRING([--enable-console-helper],
243                             [Enable PAM console helper @<:@default=auto@:>@]),,
244              enable_console_helper=auto)
245
246AC_ARG_ENABLE(authentication-scheme,
247              AS_HELP_STRING([--enable-authentication-scheme=@<:@pam/crypt/shadow@:>@],
248	                     [Choose a specific authentication scheme @<:@default=auto@:>@]),,
249              enable_authentication_scheme=auto)
250
251AC_ARG_WITH(xinerama,
252            AS_HELP_STRING([--with-xinerama],
253                           [Add Xinerama support @<:@default=auto@:>@]),,
254            with_xinerama=auto)
255
256AC_ARG_WITH(xdmcp,
257            AS_HELP_STRING([--with-xdmcp],
258	                   [Add XDMCP (remote login) support @<:@default=auto@:>@]),,
259            with_xdmcp=auto)
260
261AC_ARG_WITH(tcp-wrappers,
262            AS_HELP_STRING([--with-tcp-wrappers],
263                           [Use TCP Wrappers @<:@default=auto@:>@]),,
264            with_tcp_wrappers=auto)
265
266
267AC_ARG_WITH([systemdsystemunitdir],
268            AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
269                           [Directory for systemd service files]),
270                [with_systemdsystemunitdir=$withval], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
271AC_ARG_ENABLE(systemd-journal,
272            AS_HELP_STRING([--enable-systemd-journal],
273                           [Add journald support @<:@default=auto@:>@]),
274            [enable_systemd_journal=$enableval], [enable_systemd_journal=auto])
275AC_ARG_ENABLE(wayland-support,
276	      AS_HELP_STRING([--enable-wayland-support],
277                             [Enable support for wayland sessions  @<:@default=auto@:>@]),
278              [enable_wayland_support=$enableval],
279              [enable_wayland_support=yes])
280
281AC_ARG_WITH(plymouth,
282            AS_HELP_STRING([--with-plymouth],
283                           [Add plymouth support @<:@default=yes@:>@]),,
284                           [with_plymouth=yes])
285
286AC_ARG_WITH(at-spi-registryd-directory,
287            AS_HELP_STRING([--with-at-spi-registryd-directory],
288	                   [Specify the directory of at-spi-registryd @<:@default=libexecdir@:>@])],,
289            [with_at_spi_registryd_directory="${libexecdir}"])
290
291AT_SPI_REGISTRYD_DIR=$with_at_spi_registryd_directory
292AC_SUBST(AT_SPI_REGISTRYD_DIR)
293
294# Allow configuration of default PATH
295#
296withval=""
297AC_ARG_WITH(default-path,
298            AS_HELP_STRING([--with-default-path=<PATH>],
299	                   [PATH GDM will use as the user's default PATH]),
300            [if test x$withval != x; then
301               AC_MSG_RESULT("PATH ${withval} will be the default PATH.")
302             fi])
303
304if test x$withval != x; then
305	GDM_SESSION_DEFAULT_PATH="$withval"
306else
307	GDM_SESSION_DEFAULT_PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
308fi
309AC_SUBST(GDM_SESSION_DEFAULT_PATH)
310
311dnl
312dnl file that sets LANG
313dnl
314withval=""
315AC_ARG_WITH(lang-file,
316            AS_HELP_STRING([--with-lang-file=<filename>],
317	                   [file containing default language setting]),
318            [if test x$withval != x; then
319               AC_MSG_RESULT("System locale will be looked for in file ${withval}.")
320             fi])
321
322if test x$withval != x; then
323	LANG_CONFIG_FILE="$withval"
324else
325	LANG_CONFIG_FILE='$(sysconfdir)/locale.conf'
326fi
327AC_SUBST(LANG_CONFIG_FILE)
328
329# stropts has been removed from glibc
330# https://bugzilla.redhat.com/show_bug.cgi?id=436349
331AC_CHECK_HEADERS(stropts.h)
332
333dnl socklen_t may be declared, but not in a "standard" C header location
334AC_CHECK_HEADERS(sys/socket.h)
335AC_CHECK_TYPE(socklen_t,,
336        AC_DEFINE(socklen_t, size_t, [Compatibility type]),
337[AC_INCLUDES_DEFAULT]
338#ifdef HAVE_SYS_SOCKET_H
339#include <sys/socket.h>
340#endif
341)
342AC_CHECK_HEADERS(sys/sockio.h)
343AC_CHECK_FUNCS([setresuid setenv unsetenv clearenv])
344
345dnl checks needed for Darwin compatibility to linux **environ.
346AC_CHECK_HEADERS(crt_externs.h)
347AC_CHECK_FUNCS(_NSGetEnviron)
348
349AC_CHECK_HEADERS(sys/vt.h)
350
351EXTRA_DAEMON_LIBS=""
352EXTRA_CHOOSER_LIBS=""
353EXTRA_FLEXI_LIBS=""
354EXTRA_DYNAMIC_LIBS=""
355EXTRA_SETUP_LIBS=""
356EXTRA_TEST_LIBS=""
357
358AC_CHECK_FUNC(socket,,[
359	      AC_CHECK_LIB(socket,socket, [
360			   EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lsocket"
361			   EXTRA_CHOOSER_LIBS="$EXTRA_CHOOSER_LIBS -lsocket"
362			   EXTRA_FLEXI_LIBS="$EXTRA_FLEXI_LIBS -lsocket"
363			   EXTRA_DYNAMIC_LIBS="$EXTRA_DYNAMIC_LIBS -lsocket"
364			   EXTRA_SETUP_LIBS="$EXTRA_SETUP_LIBS -lsocket"
365			   EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -lsocket"])])
366AC_CHECK_FUNC(gethostbyname,,[
367	      AC_CHECK_LIB(nsl,gethostbyname, [
368			   EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lnsl"
369			   EXTRA_CHOOSER_LIBS="$EXTRA_CHOOSER_LIBS -lnsl"
370			   EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -lnsl"])])
371AC_CHECK_DECL(HOST_NAME_MAX,,[
372             AC_CHECK_DECL(_POSIX_HOST_NAME_MAX,
373                           AC_DEFINE(HOST_NAME_MAX, _POSIX_HOST_NAME_MAX, []),
374                           AC_DEFINE(HOST_NAME_MAX, 256, [Define to 256 if neither have HOST_NAME_MAX nor _POSIX_HOST_NAME_MAX]),
375                           [[#include <limits.h>]])],
376             [[#include <limits.h>]])
377AC_CHECK_FUNC(sched_yield,[
378	      AC_DEFINE(HAVE_SCHED_YIELD, 1, [Define if we have sched yield])],[
379	      AC_CHECK_LIB(rt,sched_yield, [
380			   AC_DEFINE(HAVE_SCHED_YIELD, 1, [Define if we have sched yield])
381			   EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lrt"], [
382			   echo "No sched_yield found"])])
383AC_CHECK_FUNC(inet_aton,,[
384	      AC_CHECK_LIB(resolv,inet_aton, [
385			   EXTRA_CHOOSER_LIBS="$EXTRA_CHOOSER_LIBS -lresolv"])])
386
387dnl ---------------------------------------------------------------------------
388dnl - Check for mkdtemp
389dnl ---------------------------------------------------------------------------
390
391mkdtemp_missing=false
392AC_CHECK_FUNC(mkdtemp,
393    [AC_DEFINE([HAVE_MKDTEMP], 1, [Have GlibC function to make temp dirs])],
394    mkdtemp_missing=true)
395AM_CONDITIONAL(MKDTEMP_MISSING, test x$mkdtemp_missing = xtrue)
396
397dnl ---------------------------------------------------------------------------
398dnl - Check for IPv6
399dnl ---------------------------------------------------------------------------
400
401AC_MSG_CHECKING([whether to enable IPv6])
402AC_ARG_ENABLE(ipv6,
403              AS_HELP_STRING([--enable-ipv6],
404                             [Enables compilation of IPv6 code @<:@default=no@:>@]),,
405              enable_ipv6=no)
406
407if test x$enable_ipv6 = xyes; then
408  AC_TRY_COMPILE([
409    #include <sys/types.h>
410    #include <sys/socket.h>],[
411    struct sockaddr_storage ss;
412    socket(AF_INET6, SOCK_STREAM, 0)
413    ],
414    have_ipv6=yes,
415    have_ipv6=no
416    )
417  if test x$have_ipv6 = xyes; then
418    have_getaddrinfo=no
419    have_inet_ntop=no
420    AC_CHECK_FUNC(getaddrinfo, have_getaddrinfo=yes)
421    if test x$have_getaddrinfo != xyes; then
422      for lib in bsd socket inet; do
423        AC_CHECK_LIB($lib,getaddrinfo,["LIBS=$LIBS -l$lib";have_getaddrinfo=yes;break])
424      done
425    fi
426
427    AC_CHECK_FUNC(inet_ntop,have_inet_ntop=yes)
428    if test x$have_inet_ntop != xyes; then
429      for lib in bsd nsl inet; do
430        AC_CHECK_LIB($lib,inet_ntop,["LIBS=$LIBS -l$lib";have_inet_ntop=yes;break])
431      done
432    fi
433
434    if test x$have_getaddrinfo = xyes; then
435      if test x$have_inet_ntop = xyes; then
436        have_ipv6=yes
437        AC_DEFINE(ENABLE_IPV6, 1, [Define if we have ipv6])
438        AC_MSG_RESULT($have_ipv6)
439      else
440        have_ipv6=no
441        AC_MSG_RESULT($have_ipv6)
442      fi
443    fi
444  fi
445else
446  AC_MSG_RESULT(no)
447fi
448
449dnl ---------------------------------------------------------------------------
450dnl - Check for GDM user
451dnl ---------------------------------------------------------------------------
452
453withval=""
454AC_ARG_WITH(user,
455            AS_HELP_STRING([--with-user=<username>],
456                           [specify gdm's user name]))
457
458if test x$withval != x; then
459	GDM_USERNAME="$withval"
460else
461	GDM_USERNAME=gdm
462fi
463AC_SUBST(GDM_USERNAME)
464AC_DEFINE_UNQUOTED([GDM_USERNAME], "$GDM_USERNAME", [User to use])
465
466dnl ---------------------------------------------------------------------------
467dnl - Check for GDM group
468dnl ---------------------------------------------------------------------------
469
470withval=""
471AC_ARG_WITH(group,
472            AS_HELP_STRING([--with-group=<group>],
473                           [specify gdm's group name]))
474
475if test x$withval != x; then
476	GDM_GROUPNAME="$withval"
477else
478	GDM_GROUPNAME=gdm
479fi
480AC_SUBST(GDM_GROUPNAME)
481AC_DEFINE_UNQUOTED([GDM_GROUPNAME], "$GDM_GROUPNAME", [Group to use])
482
483
484dnl ---------------------------------------------------------------------------
485dnl - Check for PAM stuff
486dnl ---------------------------------------------------------------------------
487
488dnl PAM prefix (configuration files)
489withval=""
490AC_ARG_WITH(pam-prefix,
491            AS_HELP_STRING([--with-pam-prefix=<prefix>],
492                           [specify where pam files go]),
493            [if test x$withval != x; then
494               AC_MSG_RESULT("PAM files will be installed in prefix ${withval}.")
495             fi])
496
497if test x$withval != x; then
498	PAM_PREFIX="$withval"
499else
500	PAM_PREFIX='${sysconfdir}'
501fi
502AC_SUBST(PAM_PREFIX)
503
504dnl PAM dir (dynamic modules)
505AC_ARG_WITH([pam-mod-dir],
506            [AS_HELP_STRING([--with-pam-mod-dir=DIR],
507                            [directory to install pam modules in])],
508            [], [with_pam_mod_dir='${libdir}/security'])
509PAM_MOD_DIR="$with_pam_mod_dir"
510AC_SUBST(PAM_MOD_DIR)
511
512have_pam=no
513AC_CHECK_LIB(pam, pam_start, have_pam=yes)
514
515if test "x$have_pam" = "xyes"; then
516        PAM_LIBS="${PAM_LIBS} -lpam"
517else
518	AC_MSG_ERROR("PAM libraries not found")
519fi
520AC_SUBST(HAVE_PAM)
521AC_SUBST(PAM_LIBS)
522
523AC_CHECK_HEADERS([security/pam_modutil.h security/pam_ext.h])
524AC_CHECK_LIB(pam, pam_syslog, [AC_DEFINE(HAVE_PAM_SYSLOG, [], [Define to 1 if you have the pam_syslog function])])
525
526dnl test whether struct pam_message is const (Linux) or not (Sun)
527if test "x$have_pam" = "xyes"; then
528   pam_appl_h="$ac_pam_includes/security/pam_appl.h"
529   AC_MSG_CHECKING(for const pam_message)
530   AC_EGREP_HEADER([struct pam_message],
531      $pam_appl_h,
532      [ AC_EGREP_HEADER([const struct pam_message],
533                        $pam_appl_h,
534                        [AC_MSG_RESULT(["const: Linux-type PAM"]) ],
535                        [AC_MSG_RESULT(["nonconst: Sun-type PAM"])
536                        AC_DEFINE(PAM_MESSAGE_NONCONST, 1, [Define if your PAM support takes non-const arguments (Solaris)])]
537                        )],
538       [AC_MSG_RESULT(["not found - assume const, Linux-type PAM"])]
539       )
540   AC_CHECK_DECL(PAM_BINARY_PROMPT,
541                 [supports_pam_extensions=yes],
542                 [supports_pam_extensions=no],
543                 #include <security/pam_appl.h>
544                )
545fi
546if test "x$supports_pam_extensions" = "xyes" ; then
547	AM_CONDITIONAL(SUPPORTS_PAM_EXTENSIONS, true)
548	AC_DEFINE(SUPPORTS_PAM_EXTENSIONS, 1, [Define if PAM supports GDMs custom extensions])
549fi
550
551AC_CHECK_LIB(keyutils, keyctl_read, [
552        AC_DEFINE(HAVE_KEYUTILS, 1, [Define if have keyutils])
553        KEYUTILS_LIBS="-lkeyutils"
554        KEYUTILS_CFLAGS=""
555])
556AC_SUBST(KEYUTILS_LIBS)
557AC_SUBST(KEYUTILS_CFLAGS)
558
559dnl Check if we can use the setpenv function to add specialvariable
560dnl to the environment (such as the /etc/environment file under AIX)
561AC_LINK_IFELSE([
562	AC_LANG_PROGRAM([[
563		#ifdef HAVE_USERSEC_H
564		#include <usersec.h>
565		#endif
566		]],[[
567		return (setpenv(NULL, (PENV_INIT | PENV_NOEXEC), NULL, NULL));
568		]])],
569	can_use_setpenv=yes,
570	can_use_setpenv=no)
571
572if test x$can_use_setpenv = xyes ; then
573	AC_DEFINE(CAN_USE_SETPENV,,[Define this variable if the code to use
574		the setpenv function can be compiled and used])
575fi
576
577#
578# Can we use BSD's setusercontext
579#
580AC_CHECK_HEADER(login_cap.h, [
581		EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil"
582		AC_DEFINE(HAVE_LOGINCAP, 1, [Define if we have logincap])])
583
584#
585# Check for sys/sockio.h
586#
587AC_CHECK_HEADERS(sys/sockio.h, [
588		 AC_DEFINE(HAVE_SYS_SOCKIO_H, 1, [Define if we have sys/sockio.h])])
589
590#
591# Check for libgen.h
592#
593AC_CHECK_HEADERS(libgen.h, [
594		 AC_DEFINE(HAVE_LIBGEN_H, 1, [Define if we have libgen.h])])
595
596
597dnl ---------------------------------------------------------------------------
598dnl - Check for POSIX version of getpwnam_r
599dnl ---------------------------------------------------------------------------
600
601# Checking for a posix version of getpwnam_r
602# if we are cross compiling and can not run the test
603# assume getpwnam_r is the posix version
604# it is up to the person cross compiling to change
605# this behavior if desired
606
607AC_LANG_PUSH(C)
608AC_CACHE_CHECK([for posix getpwnam_r],
609		ac_cv_func_posix_getpwnam_r,
610		[AC_RUN_IFELSE([AC_LANG_PROGRAM(
611[[
612#define _POSIX_PTHREAD_SEMANTICS
613#include <errno.h>
614#include <pwd.h>
615]],
616[[
617    char buffer[10000];
618    struct passwd pwd, *pwptr = &pwd;
619    int error;
620    errno = 0;
621    error = getpwnam_r ("", &pwd, buffer,
622                        sizeof (buffer), &pwptr);
623   return (error < 0 && errno == ENOSYS)
624	   || error == ENOSYS;
625]])],
626	[ac_cv_func_posix_getpwnam_r=yes],
627	[ac_cv_func_posix_getpwnam_r=no],
628        [ac_cv_func_posix_getpwnam_r=yes]
629)])
630AC_LANG_POP(C)
631
632if test "$ac_cv_func_posix_getpwnam_r" = yes; then
633	AC_DEFINE(HAVE_POSIX_GETPWNAM_R,1,
634		[Have POSIX function getpwnam_r])
635else
636	AC_CACHE_CHECK([for nonposix getpwnam_r],
637		ac_cv_func_nonposix_getpwnam_r,
638		[AC_TRY_LINK([#include <pwd.h>],
639                      	[char buffer[10000];
640                       	struct passwd pwd;
641                       	getpwnam_r ("", &pwd, buffer,
642                               		sizeof (buffer));],
643			[ac_cv_func_nonposix_getpwnam_r=yes],
644			[ac_cv_func_nonposix_getpwnam_r=no])])
645		if test "$ac_cv_func_nonposix_getpwnam_r" = yes; then
646		AC_DEFINE(HAVE_NONPOSIX_GETPWNAM_R,1,
647			[Have non-POSIX function getpwnam_r])
648	fi
649fi
650
651
652dnl ---------------------------------------------------------------------------
653dnl - Check for utmp stuff
654dnl ---------------------------------------------------------------------------
655
656AC_CHECK_HEADERS(utmp.h utmpx.h libutil.h sys/param.h)
657AC_CHECK_FUNCS([getutxent updwtmpx updwtmp])
658AC_CHECK_LIB(util, login, [
659		   AC_DEFINE(HAVE_LOGIN, 1, [Define if have login])
660		       EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
661AC_CHECK_LIB(util, logout, [
662		   AC_DEFINE(HAVE_LOGOUT, 1, [Define if have logout])
663		       EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
664AC_CHECK_LIB(util, logwtmp, [
665	  	   AC_DEFINE(HAVE_LOGWTMP, 1, [Define if have logwtmp])
666		       EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
667GDM_CHECK_UTMP
668
669AC_MSG_CHECKING(if utmpx structure has ut_syslen field)
670AC_TRY_COMPILE([
671  #include <utmpx.h>],[
672  struct utmpx record;
673  record.ut_syslen = sizeof (record.ut_host);
674  ],
675  have_ut_syslen=yes,
676  have_ut_syslen=no
677  )
678if test x$have_ut_syslen = xyes; then
679  AC_DEFINE(HAVE_UT_SYSLEN, 1, [Define if have ut_syslen record])
680fi
681AC_MSG_RESULT($have_ut_syslen)
682
683
684dnl ---------------------------------------------------------------------------
685dnl - Check for Xdmcp
686dnl ---------------------------------------------------------------------------
687
688XDMCP_LIBS=""
689if test x$with_xdmcp != xno ; then
690	xdmcp_save_CPPFLAGS="$CPPFLAGS"
691	CPPFLAGS="$CPPFLAGS $X_CFLAGS"
692	AC_CHECK_HEADER(X11/Xdmcp.h, [
693		AC_CHECK_LIB(Xdmcp, XdmcpFlush, [
694		     	AC_DEFINE(HAVE_LIBXDMCP, 1, [Define if have libxdmcp])
695		     	XDMCP_LIBS="-lXdmcp"
696		     	XDMCP_SUPPORT=yes],,[$X_LIBS -lX11 $X_EXTRA_LIBS])
697	],,[#include <X11/Xproto.h>])
698
699	if test x$with_xdmcp = xyes -a "x$XDMCP_SUPPORT" = "x" ; then
700		AC_MSG_ERROR(XDMCP support requested but XDMCP libraries not found)
701	fi
702	CPPFLAGS="$xdmcp_save_CPPFLAGS"
703fi
704AC_SUBST(XDMCP_LIBS)
705
706if test "x$XDMCP_SUPPORT" = "xyes" ; then
707	AM_CONDITIONAL(XDMCP_SUPPORT, true)
708	GDMCHOOSER=gdmchooser
709else
710        # No need for TCP Wrappers in case XDMCP is disabled
711        if test x$with_tcp_wrappers != xno ; then
712	        echo "TCP wrappers not needed if XDMCP is not enabled"
713        fi
714	with_tcp_wrappers=no
715	AM_CONDITIONAL(XDMCP_SUPPORT, false)
716	GDMCHOOSER=
717fi
718AC_SUBST(GDMCHOOSER)
719
720dnl ---------------------------------------------------------------------------
721dnl - Check OS
722dnl ---------------------------------------------------------------------------
723
724os_solaris=no
725case "$host" in
726   *solaris*) os_solaris=yes
727   ;;
728esac
729AM_CONDITIONAL(OS_SOLARIS, test x$os_solaris = xyes)
730
731dnl ---------------------------------------------------------------------------
732dnl - Check for TCP Wrappers for XDMCP access control
733dnl ---------------------------------------------------------------------------
734
735if test x$with_tcp_wrappers = xno ; then
736	echo "TCP wrappers disabled"
737else
738  LIBWRAP_PATH=""
739  if test x$os_solaris = xyes ; then
740	if test -f /usr/lib/libwrap.so; then
741		LIBWRAP_PATH=/usr/lib/libwrap.so
742		echo "Found $LIBWRAP_PATH" 1>&5
743		nm $LIBWRAP_PATH | grep 'T setenv' && LIBWRAP_PATH=""
744        fi
745
746	if test -z "$LIBWRAP_PATH"; then
747		if test -f /usr/sfw/lib/libwrap.so; then
748			LIBWRAP_PATH=/usr/sfw/lib/libwrap.so
749			echo "Found $LIBWRAP_PATH" 1>&5
750			nm $LIBWRAP_PATH | grep 'T setenv' && LIBWRAP_PATH=""
751        	fi
752        fi
753
754	if test -z "$LIBWRAP_PATH"; then
755		echo "*********************************************************"
756	        echo " You have a broken TCP wrappers library (setenv included)"
757		echo " Please get the latest TCP wrappers package from your OS"
758		echo " vendor, or recompile TCP wrappers to not include a"
759		echo " setenv() implementation."
760		echo
761		echo "Not using TCP wrappers after all."
762		echo "*********************************************************"
763	else
764		LIBWRAP_LIBS="-L/usr/sfw/lib -R/usr/sfw/lib -lwrap"
765		AC_DEFINE(HAVE_TCPWRAPPERS, 1, [Define if have tcp wrappers])
766	fi
767  else
768 	AC_CHECK_LIB([wrap], [hosts_ctl], [
769 	LIBWRAP_LIBS="-lwrap"
770 	LIBWRAP_PATH=auto
771 	AC_DEFINE(HAVE_TCPWRAPPERS, 1, [Define if have tcp wrappers])])
772  fi
773
774  AC_MSG_CHECKING([whether to use TCP wrappers])
775  if test -n "$LIBWRAP_PATH"; then
776        AC_MSG_RESULT(yes)
777  else
778        AC_MSG_RESULT(no)
779  fi
780
781  dnl find out if we need -lnsl or whatever
782  LIB_NSL=
783  if test -n "$LIBWRAP_PATH"; then
784		AC_MSG_CHECKING(whether -lwrap also requires -lnsl)
785		ORIG_LIBS="$LIBS"
786		LIBS="$EXTRA_DAEMON_LIBS $LIBS $LIBWRAP_LIBS"
787		AC_TRY_LINK([
788#include <tcpd.h>
789int allow_severity, deny_severity;
790], [return hosts_access;], ,[
791dnl try with -lnsl
792OLD_LIBS="$LIBS"
793LIBS="$LIBS -lnsl"
794AC_TRY_LINK([
795#include <tcpd.h>
796int allow_severity, deny_severity;
797], [return hosts_access;], LIB_NSL="-lnsl",
798LIBWRAP_PATH="")
799LIBS="$OLD_LIBS"
800])
801		LIBS="$ORIG_LIBS"
802		if test -n "$LIB_NSL"; then
803			AC_MSG_RESULT(yes)
804			EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS $LIB_NSL"
805		else
806			AC_MSG_RESULT(no)
807		fi
808  fi
809fi
810
811AC_SUBST(LIBWRAP_LIBS)
812
813
814dnl ---------------------------------------------------------------------------
815dnl - Check for XFT2 (for gdm-settings-daemon)
816dnl ---------------------------------------------------------------------------
817
818if $PKG_CONFIG --exists xft ; then
819  AC_DEFINE(HAVE_XFT2,,[Define if Xft functionality is available])
820fi
821
822
823dnl ---------------------------------------------------------------------------
824dnl - Check for Xinput
825dnl ---------------------------------------------------------------------------
826
827have_xinput=
828AC_CHECK_LIB(Xi, XOpenDevice, XINPUT_LIBS=-lXi)
829if test "x$XINPUT_LIBS" = x; then
830  save_LIBS="$LIBS"
831  for xinputpath in $x_libraries /usr/X11R6/lib /usr/openwin/lib; do
832    LIBS="-L$xinputpath -lXi"
833    if test x$os_solaris = xyes ; then
834       XINPUT_RPATH_FLAGS="-R$xinputpath"
835    fi
836    AC_MSG_CHECKING(for -lXi in $xinputpath)
837    AC_TRY_LINK([], [XOpenDevice()], [
838	AC_MSG_RESULT(yes)
839	XINPUT_LIBS="$XINPUT_RPATH_FLAGS -L$xinputpath -lXi"
840        LIBS="$save_LIBS"
841	break],[AC_MSG_RESULT(no)])
842  done
843  if test "x$XINPUT_LIBS" = x; then
844    AC_MSG_ERROR(Couldn't find the XInput library. Check config.log for details)
845  fi
846fi
847AC_CHECK_HEADER(X11/extensions/XInput.h, have_xinput=yes)
848if test "x$have_xinput" = xyes; then
849   AC_DEFINE(HAVE_XINPUT, 1, [Define if have xinput])
850   X_EXTRA_LIBS="$X_EXTRA_LIBS $XINPUT_LIBS"
851fi
852
853
854dnl ---------------------------------------------------------------------------
855dnl - Check for Xinerama
856dnl ---------------------------------------------------------------------------
857
858# X11 Xinerama extension
859# Check for Xinerama extension (Solaris impl or Xfree impl)
860xinerama_save_cppflags="$CPPFLAGS"
861CPPFLAGS="$CPPFLAGS $X_CFLAGS"
862
863ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
864
865if test ! x$with_xinerama = xno ; then
866  # Check for XFree
867  use_xfree_xinerama=yes
868  AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
869         [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
870                       if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
871                          X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
872                       fi
873                       AC_DEFINE(HAVE_XFREE_XINERAMA, 1, [Define if have xfree xinerama])
874                       AC_DEFINE(HAVE_XINERAMA, 1, [Define if have xinerama])
875                       XINERAMA_LIBS="-lXinerama"
876                       XINERAMA_SUPPORT=yes,
877                       use_xfree_xinerama=no,
878                       [#include <X11/Xlib.h>])],
879         use_xfree_xinerama=no, -lXext $ALL_X_LIBS)
880  AC_MSG_CHECKING(for Xinerama support on XFree86)
881  AC_MSG_RESULT($use_xfree_xinerama);
882
883  if test x$use_xfree_xinerama = xno ; then
884    if test x$os_solaris = xyes ; then
885	# Check for solaris
886	use_solaris_xinerama=yes
887	AC_CHECK_LIB(Xext, XineramaGetInfo,
888                     use_solaris_xinerama=yes, use_solaris_xinerama=no,
889                     $ALL_X_LIBS)
890	if test "x$use_solaris_xinerama" = "xyes"; then
891            AC_CHECK_HEADER(X11/extensions/xinerama.h,
892                            if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
893 				X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
894                            fi
895                            AC_DEFINE(HAVE_SOLARIS_XINERAMA, 1, [Define if have Solaris xinerama])
896                            AC_DEFINE(HAVE_XINERAMA, 1, [Define if have xinerama])
897		     	    XINERAMA_LIBS=""
898		     	    XINERAMA_SUPPORT=yes,
899                            use_solaris_xinerama=no,
900                            [#include <X11/Xlib.h>])
901	fi
902        AC_MSG_CHECKING(for Xinerama support on Solaris)
903	AC_MSG_RESULT($use_solaris_xinerama);
904    fi
905  fi
906fi
907
908AC_SUBST(XINERAMA_LIBS)
909CPPFLAGS="$xinerama_save_cppflags"
910
911dnl ---------------------------------------------------------------------------
912dnl - Check for systemd support
913dnl ---------------------------------------------------------------------------
914
915PKG_CHECK_MODULES(SYSTEMD,
916                  [libsystemd])
917
918AC_SUBST(SYSTEMD_CFLAGS)
919AC_SUBST(SYSTEMD_LIBS)
920
921PKG_CHECK_MODULES(JOURNALD,
922                  [libsystemd],
923                  [have_journald=yes], [have_journald=no])
924
925if test "x$enable_systemd_journal" = "xauto" ; then
926        if test x$have_journald = xno ; then
927                use_journald=no
928        else
929                use_journald=yes
930        fi
931
932else
933        use_journald="$enable_systemd_journal"
934fi
935
936if test "x$use_journald" != "xno" ; then
937        if test "x$have_journald" = "xno"; then
938                AC_MSG_ERROR([journald support explicitly required, but journald not found])
939        fi
940
941        AC_DEFINE(ENABLE_SYSTEMD_JOURNAL, 1, [Define to enable systemd journal support])
942fi
943AC_SUBST(JOURNALD_CFLAGS)
944AC_SUBST(JOURNALD_LIBS)
945
946if test "x$enable_wayland_support" != "xno" ; then
947        AC_DEFINE(ENABLE_WAYLAND_SUPPORT, 1, [Define to enable wayland support])
948fi
949
950AC_PATH_PROG(SYSTEMD_X_SERVER, systemd-multi-seat-x, [/lib/systemd/systemd-multi-seat-x], [/lib/systemd:/usr/lib/systemd:$PATH])
951AC_SUBST(SYSTEMD_X_SERVER)
952AC_DEFINE_UNQUOTED(SYSTEMD_X_SERVER,"$SYSTEMD_X_SERVER",[Path to systemd X server wrapper])
953
954if test "x$with_systemdsystemunitdir" != xno; then
955        AC_SUBST(SYSTEMD_SYSTEM_UNIT_DIR, [$with_systemdsystemunitdir])
956fi
957
958AM_CONDITIONAL(INSTALL_SYSTEMD_UNITS, test x$with_systemdsystemunitdir != xno)
959
960dnl ---------------------------------------------------------------------------
961dnl - Check for plymouth support
962dnl ---------------------------------------------------------------------------
963PKG_CHECK_MODULES(PLYMOUTH,
964                  [ply-boot-client],
965                  [have_plymouth=yes], [have_plymouth=no])
966
967if test "x$with_plymouth" = "xauto" ; then
968        if test x$have_plymouth = xno ; then
969                use_plymouth=no
970        else
971                use_plymouth=yes
972        fi
973else
974        use_plymouth="$with_plymouth"
975fi
976
977PLYMOUTH_QUIT_SERVICE=""
978if test "x$use_plymouth" != "xno" ; then
979        if test "x$have_plymouth" = "xno"; then
980                AC_MSG_ERROR([Plymouth support explicitly required, but plymouth not found])
981        fi
982
983        AC_DEFINE(WITH_PLYMOUTH, 1, [Define to enable plymouth support])
984        PLYMOUTH_QUIT_SERVICE="plymouth-quit.service"
985fi
986AC_SUBST(PLYMOUTH_CFLAGS)
987AC_SUBST(PLYMOUTH_LIBS)
988AC_SUBST(PLYMOUTH_QUIT_SERVICE)
989
990dnl ---------------------------------------------------------------------------
991dnl - Check for D-Bus
992dnl ---------------------------------------------------------------------------
993
994dnl - Are we specifying a different dbus root ?
995AC_ARG_WITH(dbus-sys,
996            AS_HELP_STRING([--with-dbus-sys=<dir>],
997	                   [where D-BUS system.d directory is]))
998AC_ARG_WITH(dbus-services,
999            AS_HELP_STRING([--with-dbus-services=<dir>],
1000	                   [where D-BUS services directory is]))
1001
1002if ! test -z "$with_dbus_sys" ; then
1003        DBUS_SYS_DIR="$with_dbus_sys"
1004else
1005        DBUS_SYS_DIR="$sysconfdir/dbus-1/system.d"
1006fi
1007AC_SUBST(DBUS_SYS_DIR)
1008
1009dnl ---------------------------------------------------------------------------
1010dnl - Check for ISO Codes
1011dnl ---------------------------------------------------------------------------
1012
1013AC_MSG_CHECKING([whether iso-codes has iso-639 domain])
1014if $PKG_CONFIG --variable=domains iso-codes | grep 639 >/dev/null ; then
1015	AC_MSG_RESULT([yes])
1016else
1017	AC_MSG_RESULT([no])
1018fi
1019AC_DEFINE_UNQUOTED([ISO_CODES_PREFIX],["`$PKG_CONFIG --variable=prefix iso-codes`"],[ISO codes prefix])
1020ISO_CODES=iso-codes
1021
1022
1023dnl ---------------------------------------------------------------------------
1024dnl check for RBAC
1025dnl ---------------------------------------------------------------------------
1026
1027msg_rbac_shutdown=no
1028AC_ARG_ENABLE(rbac-shutdown,
1029              AC_HELP_STRING([--enable-rbac-shutdown=<key>],
1030	                     [Build with RBAC support specifying shutdown/reboot RBAC authentication key]),
1031              enable_rbac_shutdown=$enableval,enable_rbac_shutdown=no)
1032
1033if test "x$enable_rbac_shutdown" != "xno"; then
1034        RBAC_LIBS="-lsecdb -lsocket -lnsl"
1035        AC_DEFINE(ENABLE_RBAC_SHUTDOWN, [], [Set if we build with RBAC support])
1036        AC_DEFINE_UNQUOTED(RBAC_SHUTDOWN_KEY, "$enable_rbac_shutdown", [Set if we build with RBAC support])
1037        msg_rbac_shutdown="yes, using key $enable_rbac_shutdown"
1038fi
1039AC_SUBST(RBAC_LIBS)
1040
1041
1042dnl ---------------------------------------------------------------------------
1043dnl check for backtrace support
1044dnl ---------------------------------------------------------------------------
1045
1046AC_CHECK_HEADERS(execinfo.h)
1047
1048dnl ---------------------------------------------------------------------------
1049dnl check for process control
1050dnl ---------------------------------------------------------------------------
1051
1052AC_CHECK_HEADERS(sys/prctl.h)
1053
1054dnl ---------------------------------------------------------------------------
1055dnl - Define some variables to represent the directories we use.
1056dnl ---------------------------------------------------------------------------
1057
1058AC_SUBST(gdmlocaledir, ${gdmconfdir})
1059AC_SUBST(pixmapdir, ${datadir}/pixmaps)
1060
1061AC_ARG_WITH(log-dir,
1062            AS_HELP_STRING([--with-log-dir=<file>],
1063                           [log dir]))
1064
1065if ! test -z "$with_log_dir"; then
1066   GDM_LOG_DIR=$with_log_dir
1067else
1068   GDM_LOG_DIR=/var/log/gdm
1069fi
1070AC_SUBST(logdir, $GDM_LOG_DIR)
1071
1072withval=""
1073AC_ARG_WITH(at-bindir,
1074            AS_HELP_STRING([--with-at-bindir=<PATH>]
1075                           [PATH to Accessible Technology programs @<:@default=BINDIR@:>@]))
1076
1077if test x$withval != x; then
1078	AT_BINDIR="$withval"
1079else
1080	AT_BINDIR='${bindir}'
1081fi
1082
1083AC_SUBST(AT_BINDIR)
1084
1085withval=""
1086AC_ARG_WITH(defaults_conf,
1087            AS_HELP_STRING([--with-defaults-conf=<FILENAME>],
1088                           [FILENAME to give to defaults file @<:@default=DATADIR/gdm/defaults.conf@:>@]))
1089
1090if test x$withval != x; then
1091	GDM_DEFAULTS_CONF="$withval"
1092else
1093	GDM_DEFAULTS_CONF='${datadir}/gdm/defaults.conf'
1094fi
1095
1096AC_SUBST(GDM_DEFAULTS_CONF)
1097
1098withval=""
1099AC_ARG_WITH(custom_conf,
1100            AS_HELP_STRING([--with-custom-conf=<FILENAME>],
1101                           [FILENAME to give to custom configuration file @<:@default=GDMCONFDIR/custom.conf@:>@]))
1102
1103if test x$withval != x; then
1104	GDM_CUSTOM_CONF="$withval"
1105else
1106	GDM_CUSTOM_CONF='${gdmconfdir}/custom.conf'
1107fi
1108
1109AC_SUBST(GDM_CUSTOM_CONF)
1110AC_SUBST(GDM_OLD_CONF, '${gdmconfdir}/gdm.conf')
1111
1112AC_ARG_WITH(gnome-settings-daemon-directory,
1113              [AC_HELP_STRING([--with-gnome-settings-daemon-directory],
1114                              [Specify the directory of gnome-settings-daemon used by the chooser @<:@default=libexecdir@:>@])],,
1115                              [with_gnome_settings_daemon_directory="\${libexecdir}"])
1116
1117GNOME_SETTINGS_DAEMON_DIR=$with_gnome_settings_daemon_directory
1118AC_SUBST(GNOME_SETTINGS_DAEMON_DIR)
1119
1120AC_ARG_WITH(check-accelerated-directory,
1121              [AC_HELP_STRING([--with-check-accelerated-directory],
1122                              [Specify the directory of gnome-session-check-accelerated @<:@default=libexecdir@:>@])],,
1123                              [with_check_accelerated_directory="\${libexecdir}"])
1124
1125CHECK_ACCELERATED_DIR=$with_check_accelerated_directory
1126AC_SUBST(CHECK_ACCELERATED_DIR)
1127
1128dnl ---------------------------------------------------------------------------
1129dnl - Check for XEvIE extension support
1130dnl ---------------------------------------------------------------------------
1131
1132AC_ARG_WITH(xevie,
1133            AS_HELP_STRING([--with-xevie],
1134                           [Add XEvIE Xserver extension support @<:@default=no@:>@]),,
1135            with_xevie=no)
1136
1137if test x$with_xevie != xno ; then
1138	XEVIE_OPTION="+extension XEVIE"
1139else
1140	XEVIE_OPTION=""
1141fi
1142
1143AC_SUBST(XEVIE_OPTION)
1144AC_DEFINE_UNQUOTED(XEVIE_OPTION,"$XEVIE_OPTION",[Define xevie option])
1145
1146dnl ---------------------------------------------------------------------------
1147dnl - Check for audit framework
1148dnl ---------------------------------------------------------------------------
1149
1150# Check for Solaris auditing API
1151# Note, Solaris auditing not supported for Solaris 9 or earlier and
1152# should not be used on these versions of Solaris if auditing is
1153# required.  Solaris auditing is only supported on systems that
1154# support the ADT_USER enumeration value.
1155#
1156AC_MSG_CHECKING(for Solaris auditing API)
1157AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1158#include <bsm/adt.h>
1159adt_user_context = ADT_USER;
1160]], [[]])], [ check_sun_audit=yes ], [ check_sun_audit=no ])
1161
1162if test ${check_sun_audit} = yes
1163then
1164   AC_DEFINE(HAVE_ADT, 1, [Define if have adt])
1165   PAM_LIBS="$PAM_LIBS -lbsm"
1166   AC_MSG_RESULT(yes)
1167else
1168   AC_MSG_RESULT(no)
1169fi
1170AM_CONDITIONAL(HAVE_ADT, test x$check_sun_audit = xyes)
1171
1172# Check for Linux auditing API
1173#
1174AC_ARG_WITH(libaudit,
1175            AS_HELP_STRING([--with-libaudit],
1176                           [Add Linux audit support @<:@default=auto@:>@]),,
1177            with_libaudit=auto)
1178
1179# libaudit detection
1180if test x$with_libaudit = xno ; then
1181    have_libaudit=no;
1182else
1183    # See if we have audit daemon library
1184    AC_CHECK_LIB(audit, audit_log_user_message,
1185                 have_libaudit=yes, have_libaudit=no)
1186fi
1187
1188AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes)
1189
1190if test x$have_libaudit = xyes ; then
1191    PAM_LIBS="$PAM_LIBS -laudit"
1192    AC_DEFINE(HAVE_LIBAUDIT,1,[linux audit support])
1193fi
1194
1195#
1196# Subst the extra libs
1197#
1198AC_SUBST(EXTRA_DAEMON_LIBS)
1199AC_SUBST(EXTRA_CHOOSER_LIBS)
1200AC_SUBST(EXTRA_FLEXI_LIBS)
1201AC_SUBST(EXTRA_DYNAMIC_LIBS)
1202AC_SUBST(EXTRA_SETUP_LIBS)
1203AC_SUBST(EXTRA_TEST_LIBS)
1204
1205# Check for Solaris logindevperm support
1206#
1207AC_CHECK_LIB(devinfo, di_devperm_login, [
1208                        AC_DEFINE(HAVE_LOGINDEVPERM)
1209                            PAM_LIBS="$PAM_LIBS -ldevinfo" ])
1210
1211dnl ---------------------------------------------------------------------------
1212dnl - Check for X Server location
1213dnl ---------------------------------------------------------------------------
1214
1215# First check with "! -h" for /usr/X11R6 and /usr/X11 since they often
1216# symlink to each other, and configure should use the more stable
1217# location (the real directory) if possible.
1218#
1219# On Solaris, the /usr/bin/Xserver script is used to decide whether to
1220# use Xsun or Xorg, so this is used on Solaris.
1221#
1222# When testing for /usr/X11R6, first check with "! -h" for /usr/X11R6
1223# and /usr/X11 since they often symlink to each other, and configure
1224# should use the more stable location (the real directory) if possible.
1225#
1226if test -x /usr/bin/X; then
1227   X_PATH="/usr/bin"
1228   X_SERVER_PATH="/usr/bin"
1229   X_SERVER="/usr/bin/X"
1230elif test -x /usr/X11/bin/Xserver; then
1231   X_PATH="/usr/X11/bin"
1232   X_SERVER_PATH="/usr/X11/bin"
1233   X_SERVER="/usr/X11/bin/Xserver"
1234elif test ! -h /usr/X11R6 -a -x /usr/X11R6/bin/X; then
1235   X_PATH="/usr/X11R6/bin"
1236   X_SERVER_PATH="/usr/X11R6/bin"
1237   X_SERVER="/usr/X11R6/bin/X"
1238elif test ! -h /usr/X11 -a -x /usr/X11/bin/X; then
1239   X_PATH="/usr/X11/bin"
1240   X_SERVER_PATH="/usr/X11/bin"
1241   X_SERVER="/usr/X11/bin/X"
1242elif test -x /usr/X11R6/bin/X; then
1243   X_PATH="/usr/X11R6/bin"
1244   X_SERVER_PATH="/usr/X11R6/bin"
1245   X_SERVER="/usr/X11R6/bin/X"
1246elif test -x /usr/bin/Xorg; then
1247   X_PATH="/usr/bin"
1248   X_SERVER_PATH="/usr/bin"
1249   X_SERVER="/usr/bin/Xorg"
1250elif test -x /usr/X11/bin/X; then
1251   X_PATH="/usr/X11/bin"
1252   X_SERVER_PATH="/usr/X11/bin"
1253   X_SERVER="/usr/X11/bin/X"
1254elif test -x /usr/openwin/bin/Xsun; then
1255   # Do not add /usr/openwin/bin here because on Solaris you need
1256   # /usr/openwin/bin in your PATH even if you are using the Xorg
1257   # Xserver.  We add this to the path below.
1258   X_PATH="/usr/openwin/bin"
1259   X_SERVER_PATH="/usr/openwin/bin"
1260   X_SERVER="/usr/openwin/bin/Xsun"
1261elif test -x /opt/X11R6/bin/X; then
1262   X_PATH="/opt/X11R6/bin"
1263   X_SERVER_PATH="/opt/X11R6/bin"
1264   X_SERVER="/opt/X11R6/bin/X"
1265else
1266   # what to do, what to do, this is wrong, but this just sets the
1267   # defaults, perhaps this user is cross compiling or some such
1268   X_PATH="/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin"
1269   X_SERVER_PATH="/usr/bin"
1270   X_SERVER="/usr/bin/X"
1271fi
1272
1273dnl ---------------------------------------------------------------------------
1274dnl - Check if Xorg is new enough to require '-listen tcp' (1.17)
1275dnl ---------------------------------------------------------------------------
1276
1277if $PKG_CONFIG --atleast-version=1.17 xorg-server; then
1278   AC_DEFINE([HAVE_XSERVER_THAT_DEFAULTS_TO_LOCAL_ONLY], [], [XServer disables tcp access by default])
1279fi
1280
1281dnl ---------------------------------------------------------------------------
1282dnl - Expand vars
1283dnl ---------------------------------------------------------------------------
1284
1285AS_AC_EXPAND(LOCALSTATEDIR, $localstatedir)
1286AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
1287AS_AC_EXPAND(DATADIR, $datadir)
1288AS_AC_EXPAND(BINDIR, $bindir)
1289AS_AC_EXPAND(SBINDIR, $sbindir)
1290AS_AC_EXPAND(LIBDIR, $libdir)
1291AS_AC_EXPAND(LIBEXECDIR, $libexecdir)
1292
1293dnl ---------------------------------------------------------------------------
1294dnl - runtime directory
1295dnl ---------------------------------------------------------------------------
1296
1297AC_ARG_WITH([run-dir],
1298            AS_HELP_STRING([--with-run-dir=<file>],
1299                           [runtime directory]))
1300
1301if ! test -z "$with_run_dir"; then
1302   GDM_RUN_DIR=$with_run_dir
1303else
1304   GDM_RUN_DIR=${localstatedir}/run/gdm
1305fi
1306
1307AC_SUBST([GDM_RUN_DIR])
1308
1309dnl ---------------------------------------------------------------------------
1310dnl - PID file
1311dnl ---------------------------------------------------------------------------
1312
1313AC_ARG_WITH(pid-file,
1314            AS_HELP_STRING([--with-pid-file=<file>],
1315                           [pid file]))
1316
1317if ! test -z "$with_pid_file"; then
1318   GDM_PID_FILE=$with_pid_file
1319else
1320   GDM_PID_FILE=$GDM_RUN_DIR/gdm.pid
1321fi
1322
1323AS_AC_EXPAND(GDM_PID_FILE, "$GDM_PID_FILE")
1324AC_DEFINE_UNQUOTED(GDM_PID_FILE, "$GDM_PID_FILE", [pid file])
1325
1326dnl ---------------------------------------------------------------------------
1327dnl - ran once marker
1328dnl ---------------------------------------------------------------------------
1329
1330AC_ARG_WITH(ran-once-marker-directory,
1331            AS_HELP_STRING([--with-ran-once-marker-directory=<dir>],
1332                           [ran once marker directory]))
1333
1334if ! test -z "$with_ran_once_marker_directory"; then
1335   GDM_RAN_ONCE_MARKER_DIR=$with_ran_once_marker_directory
1336else
1337   GDM_RAN_ONCE_MARKER_DIR=$GDM_RUN_DIR
1338fi
1339AC_SUBST(GDM_RAN_ONCE_MARKER_DIR)
1340AS_AC_EXPAND(GDM_RAN_ONCE_MARKER_DIR_EXPANDED, $GDM_RAN_ONCE_MARKER_DIR)
1341AC_DEFINE_UNQUOTED(GDM_RAN_ONCE_MARKER_DIR, "$GDM_RAN_ONCE_MARKER_DIR_EXPANDED", [ran once marker dir])
1342
1343GDM_RAN_ONCE_MARKER_FILE="$GDM_RAN_ONCE_MARKER_DIR/ran-once-marker"
1344AC_SUBST(GDM_RAN_ONCE_MARKER_FILE)
1345AS_AC_EXPAND(GDM_RAN_ONCE_MARKER_FILE_EXPANDED, $GDM_RAN_ONCE_MARKER_FILE)
1346AC_DEFINE_UNQUOTED(GDM_RAN_ONCE_MARKER_FILE, "$GDM_RAN_ONCE_MARKER_FILE_EXPANDED", [ran once marker file])
1347
1348dnl ---------------------------------------------------------------------------
1349dnl - GREETER WORKING DIRECTORY
1350dnl ---------------------------------------------------------------------------
1351
1352AC_ARG_WITH(working-directory,
1353            AS_HELP_STRING([--with-working-dir=<dir>],
1354                           [working directory]))
1355
1356if ! test -z "$with_working_directory"; then
1357   GDM_WORKING_DIR=$with_working_directory
1358else
1359   GDM_WORKING_DIR=${localstatedir}/lib/gdm
1360fi
1361
1362AC_SUBST(GDM_WORKING_DIR)
1363
1364dnl ---------------------------------------------------------------------------
1365dnl - Directory for X auth cookies
1366dnl ---------------------------------------------------------------------------
1367
1368AC_ARG_WITH(xauth-dir,
1369            AS_HELP_STRING([--with-xauth-dir=<dir>],
1370                           [xauth cookie directory]))
1371
1372if ! test -z "$with_xauth_dir"; then
1373   GDM_XAUTH_DIR=$with_xauth_dir
1374else
1375   GDM_XAUTH_DIR=$GDM_RUN_DIR
1376fi
1377
1378AC_SUBST(GDM_XAUTH_DIR)
1379
1380dnl ---------------------------------------------------------------------------
1381dnl - Directory for greeter screenshot
1382dnl ---------------------------------------------------------------------------
1383
1384AC_ARG_WITH(screenshot-dir,
1385            AS_HELP_STRING([--with-screenshot-dir=<dir>],
1386                           [directory to store greeter screenshot]))
1387
1388if ! test -z "$with_screenshot_dir"; then
1389   GDM_SCREENSHOT_DIR=$with_screenshot_dir
1390else
1391   GDM_SCREENSHOT_DIR=$GDM_RUN_DIR/greeter
1392fi
1393
1394AC_SUBST(GDM_SCREENSHOT_DIR)
1395
1396dnl ---------------------------------------------------------------------------
1397dnl - runtime conf
1398dnl ---------------------------------------------------------------------------
1399
1400withval=""
1401AC_ARG_WITH(runtime_conf,
1402            AS_HELP_STRING([--with-runtime-conf=<FILENAME>],
1403                           [FILENAME to give to runtime configuration file @<:@default=GDM_RUN_DIR/custom.conf@:>@]))
1404
1405if test x$withval != x; then
1406	GDM_RUNTIME_CONF="$withval"
1407else
1408	GDM_RUNTIME_CONF="$GDM_RUN_DIR/custom.conf"
1409fi
1410
1411AC_SUBST(GDM_RUNTIME_CONF)
1412
1413
1414dnl ---------------------------------------------------------------------------
1415dnl - Finish
1416dnl ---------------------------------------------------------------------------
1417
1418
1419# Turn on the additional warnings last, so -Werror doesn't affect other tests.
1420
1421AC_ARG_ENABLE(more-warnings,
1422              AS_HELP_STRING([--enable-more-warnings],
1423                             [Maximum compiler warnings]),
1424              set_more_warnings="$enableval",[
1425	      if test -d $srcdir/.git; then
1426	        set_more_warnings=yes
1427	      else
1428	        set_more_warnings=no
1429              fi])
1430
1431AC_MSG_CHECKING(for more warnings)
1432if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
1433        AC_MSG_RESULT(yes)
1434        CFLAGS="\
1435        -Wall \
1436        -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
1437        -Wnested-externs -Wpointer-arith \
1438        -Wcast-align -Wsign-compare \
1439        $CFLAGS"
1440
1441        for option in -Wno-strict-aliasing -Wno-sign-compare; do
1442                SAVE_CFLAGS="$CFLAGS"
1443                CFLAGS="$CFLAGS $option"
1444                AC_MSG_CHECKING([whether gcc understands $option])
1445                AC_TRY_COMPILE([], [],
1446                        has_option=yes,
1447                        has_option=no,)
1448                if test $has_option = no; then
1449                        CFLAGS="$SAVE_CFLAGS"
1450                fi
1451                AC_MSG_RESULT($has_option)
1452                unset has_option
1453                unset SAVE_CFLAGS
1454        done
1455        unset option
1456else
1457        AC_MSG_RESULT(no)
1458fi
1459
1460#
1461# Enable Debug
1462#
1463AC_ARG_ENABLE(debug,
1464              AS_HELP_STRING([--enable-debug],
1465                             [turn on debugging]),,
1466              enable_debug=yes)
1467
1468if test "$enable_debug" = "yes"; then
1469	DEBUG_CFLAGS="-DG_ENABLE_DEBUG"
1470else
1471	if test "x$enable_debug" = "xno"; then
1472		DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
1473  	else
1474    		DEBUG_CFLAGS=""
1475  	fi
1476fi
1477AC_SUBST(DEBUG_CFLAGS)
1478
1479#
1480# Enable Profiling
1481#
1482AC_ARG_ENABLE(profiling,
1483              AS_HELP_STRING([--enable-profiling],
1484                             [turn on profiling]),,
1485              enable_profiling=yes)
1486
1487if test "$enable_profiling" = "yes"; then
1488    AC_DEFINE(ENABLE_PROFILING,1,[enable profiling])
1489fi
1490
1491#
1492# Set SHELL to use in scripts.
1493#
1494if test x$os_solaris = xyes ; then
1495   XSESSION_SHELL=/bin/ksh
1496else
1497   XSESSION_SHELL=/bin/sh
1498fi
1499
1500#
1501# Set VT to use for initial server
1502#
1503AC_ARG_WITH(initial-vt,
1504        AS_HELP_STRING([--with-initial-vt=<nr>],
1505                [Initial virtual terminal to use]))
1506if ! test -z "$with_initial_vt"; then
1507        GDM_INITIAL_VT="$with_initial_vt"
1508else
1509        GDM_INITIAL_VT="1"
1510fi
1511AC_SUBST(GDM_INITIAL_VT)
1512AC_DEFINE_UNQUOTED(GDM_INITIAL_VT, "$GDM_INITIAL_VT", [Initial Virtual Terminal])
1513
1514# Set configuration choices.
1515#
1516AC_SUBST(XSESSION_SHELL)
1517AC_DEFINE_UNQUOTED(XSESSION_SHELL,"$XSESSION_SHELL",[xsession shell])
1518AC_SUBST(SOUND_PROGRAM)
1519AC_DEFINE_UNQUOTED(SOUND_PROGRAM,"$SOUND_PROGRAM",[])
1520
1521AC_SUBST(X_PATH)
1522AC_SUBST(X_SERVER)
1523AC_SUBST(X_SERVER_PATH)
1524AC_DEFINE_UNQUOTED(X_SERVER,"$X_SERVER",[])
1525AC_DEFINE_UNQUOTED(X_SERVER_PATH,"$X_SERVER_PATH",[])
1526
1527## Stuff for debian/changelog.in
1528#if test -e "debian/changelog"; then
1529#  DEBIAN_DATESTAMP=`head -1 debian/changelog| sed -e 's/.*cvs.//' -e 's/).*//'`
1530#  DEBIAN_DATE=`grep '^ --' debian/changelog | head -1 | sed -e 's/.*  //'`
1531#else
1532#  DEBIAN_DATESTAMP=`date +%Y%m%d%H%M%s`
1533#  DEBIAN_DATE=`date -R`
1534#fi
1535#
1536#AC_SUBST(DEBIAN_DATESTAMP)
1537#AC_SUBST(DEBIAN_DATE)
1538
1539AC_CONFIG_FILES([
1540Makefile
1541pam-extensions/Makefile
1542pam-extensions/gdm-pam-extensions.pc
1543daemon/Makefile
1544docs/Makefile
1545chooser/Makefile
1546libgdm/Makefile
1547libgdm/gdm.pc
1548utils/Makefile
1549pam_gdm/Makefile
1550data/gdm.conf
1551data/Makefile
1552data/applications/Makefile
1553data/autostart/Makefile
1554data/pixmaps/Makefile
1555data/pixmaps/16x16/Makefile
1556data/pixmaps/32x32/Makefile
1557data/pixmaps/48x48/Makefile
1558data/dconf/gdm
1559common/Makefile
1560po/Makefile.in
1561tests/Makefile
1562])
1563
1564AC_OUTPUT
1565
1566dnl ---------------------------------------------------------------------------
1567dnl - Show summary
1568dnl ---------------------------------------------------------------------------
1569
1570echo "
1571                    GDM $VERSION
1572                    ============
1573
1574	prefix:                   ${prefix}
1575	exec_prefix:              ${exec_prefix}
1576        libdir:                   ${libdir}
1577        bindir:                   ${bindir}
1578        sbindir:                  ${sbindir}
1579        sysconfdir:               ${sysconfdir}
1580        sysconfsubdir:            ${sysconfsubdir}
1581        gdmconfdir:               ${gdmconfdir}
1582        dmconfdir:                ${dmconfdir}
1583        localstatedir:            ${localstatedir}
1584        datadir:                  ${datadir}
1585	gnome-settings-daemon location: ${with_gnome_settings_daemon_directory}
1586	gnome-session-check-accel location: ${with_check_accelerated_directory}
1587	source code location:	  ${srcdir}
1588	compiler:		  ${CC}
1589	cflags:		          ${CFLAGS}
1590        Maintainer mode:          ${USE_MAINTAINER_MODE}
1591
1592        user:                     ${GDM_USERNAME}
1593        group:                    ${GDM_GROUPNAME}
1594
1595        dbus-1 system.d dir:      ${DBUS_SYS_DIR}
1596        PAM prefix:               ${PAM_PREFIX}
1597        PAM module dir:           ${PAM_MOD_DIR}
1598        PAM config:               ${with_default_pam_config}
1599        X server:                 ${X_SERVER}
1600"
1601
1602dnl TCP Wrappers support?
1603if test x"$LIBWRAP_PATH" = x ; then
1604	echo \
1605"        TCP Wrappers support:     no"
1606else
1607	echo \
1608"        TCP Wrappers support:     yes"
1609fi
1610
1611echo \
1612"        Xinerama support:         ${XINERAMA_SUPPORT}
1613        XDMCP support:            ${XDMCP_SUPPORT}
1614        SELinux support:          ${use_selinux}
1615        systemd unit dir:         ${with_systemdsystemunitdir}
1616        plymouth support:         ${use_plymouth}
1617        wayland support:          ${enable_wayland_support}
1618        Build with RBAC:          ${msg_rbac_shutdown}
1619        Initial VT:               ${GDM_INITIAL_VT}
1620        Enable documentation:     ${enable_documentation}
1621        Install GDM's Xsession:   ${enable_gdm_xsession}
1622"
1623