1dnl **************************************************************************
2dnl Define version info
3dnl **************************************************************************
4
5m4_define([m_major_version], [3])
6m4_define([m_minor_version], [42])
7m4_define([m_micro_version], [0])
8m4_define([m_version], [m_major_version.m_minor_version.m_micro_version])
9
10dnl **************************************************************************
11dnl Define bugzilla address
12dnl **************************************************************************
13
14m4_define([m_bugzilla_url],
15          [https://gitlab.gnome.org/GNOME/metacity/-/issues])
16
17dnl **************************************************************************
18dnl Initialize autoconf
19dnl **************************************************************************
20
21AC_INIT([metacity], m_version, [m_bugzilla_url])
22AC_CONFIG_HEADERS([config.h])
23AC_CONFIG_SRCDIR([src/core/display.c])
24AC_CONFIG_MACRO_DIR([m4])
25AC_CONFIG_AUX_DIR([build-aux])
26
27dnl **************************************************************************
28dnl Set release policy
29dnl **************************************************************************
30
31AX_IS_RELEASE([git-directory])
32
33dnl **************************************************************************
34dnl Enable debug
35dnl **************************************************************************
36
37AX_CHECK_ENABLE_DEBUG([yes])
38
39dnl **************************************************************************
40dnl Add warning flags
41dnl **************************************************************************
42
43AX_COMPILER_FLAGS([WARN_CFLAGS], [WARN_LDFLAGS])
44
45dnl **************************************************************************
46dnl Initialize automake
47dnl **************************************************************************
48
49AM_INIT_AUTOMAKE([1.14 no-dist-gzip dist-xz tar-ustar -Wno-portability subdir-objects])
50AM_MAINTAINER_MODE([enable])
51AM_SILENT_RULES([yes])
52
53dnl **************************************************************************
54dnl Initialize libtool
55dnl **************************************************************************
56
57LT_INIT([disable-static])
58LT_LIB_M
59
60dnl **************************************************************************
61dnl Check for required programs
62dnl **************************************************************************
63
64AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])
65AC_PATH_PROG([GLIB_COMPILE_RESOURCES], [glib-compile-resources])
66
67dnl **************************************************************************
68dnl Internationalization
69dnl **************************************************************************
70
71AM_GNU_GETTEXT([external])
72AM_GNU_GETTEXT_VERSION([0.19.6])
73AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6])
74
75GETTEXT_PACKAGE=metacity
76AC_SUBST([GETTEXT_PACKAGE])
77AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"],
78                   [Name of default gettext domain])
79
80dnl **************************************************************************
81dnl Metacity version
82dnl **************************************************************************
83
84AC_DEFINE([METACITY_MAJOR_VERSION], [m_major_version], [Metacity major version])
85AC_DEFINE([METACITY_MINOR_VERSION], [m_minor_version], [Metacity minor version])
86AC_DEFINE([METACITY_MICRO_VERSION], [m_micro_version], [Metacity micro version])
87
88dnl **************************************************************************
89dnl Check for required packages
90dnl **************************************************************************
91
92GLIB_REQUIRED_VERSION=2.67.3
93GTK_REQUIRED_VERSION=3.24.6
94PANGO_REQUIRED_VERSION=1.2.0
95XCOMPOSITE_REQUIRED_VERSION=0.3
96
97PKG_CHECK_MODULES([LIBMETACITY], [
98  glib-2.0 >= $GLIB_REQUIRED_VERSION
99  gtk+-3.0 >= $GTK_REQUIRED_VERSION
100])
101
102PKG_CHECK_MODULES([METACITY_THEME_VIEWER], [
103  glib-2.0 >= $GLIB_REQUIRED_VERSION
104  gtk+-3.0 >= $GTK_REQUIRED_VERSION
105])
106
107dnl **************************************************************************
108dnl Get GTK+ data prefix, needed by libmetacity
109dnl **************************************************************************
110
111GTK_DATA_PREFIX=`$PKG_CONFIG --variable=prefix gtk+-3.0`
112AC_DEFINE_UNQUOTED([GTK_DATA_PREFIX], ["$GTK_DATA_PREFIX"], [GTK+ data prefix])
113
114dnl **************************************************************************
115dnl Library version information
116dnl **************************************************************************
117
118dnl Before making a release, the library version should be modified. Follow
119dnl these instructions sequentially:
120dnl 1. If the library source code has changed at all since the last update,
121dnl    then increment lt_revision.
122dnl 2. If any interfaces have been added, removed, or changed since the last
123dnl    update, increment lt_current, and set lt_revision to 0.
124dnl 3. If any interfaces have been added since the last public release, then
125dnl    increment lt_age.
126dnl 4. If any interfaces have been removed or changed since the last public
127dnl    release, then set lt_age to 0.
128
129m4_define([lt_current], [3])
130m4_define([lt_revision], [0])
131m4_define([lt_age], [0])
132m4_define([lt_version_info], [lt_current:lt_revision:lt_age])
133
134AC_SUBST([LT_VERSION_INFO], [lt_version_info])
135
136dnl **************************************************************************
137
138# Honor aclocal flags
139AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}")
140
141AC_PROG_CC
142AC_PROG_MKDIR_P
143AC_ISC_POSIX
144AC_HEADER_STDC
145
146#### Integer sizes
147
148AC_CHECK_SIZEOF(char)
149AC_CHECK_SIZEOF(short)
150AC_CHECK_SIZEOF(long)
151AC_CHECK_SIZEOF(int)
152AC_CHECK_SIZEOF(void *)
153AC_CHECK_SIZEOF(long long)
154AC_CHECK_SIZEOF(__int64)
155
156## byte order
157AC_C_BIGENDIAN
158
159METACITY_PC_MODULES="gtk+-3.0 >= $GTK_REQUIRED_VERSION gio-2.0 >= $GLIB_REQUIRED_VERSION pango >= $PANGO_REQUIRED_VERSION gsettings-desktop-schemas >= 3.3.0 xcomposite >= $XCOMPOSITE_REQUIRED_VERSION xfixes xrender xdamage xres xpresent"
160
161GLIB_GSETTINGS
162
163AC_ARG_ENABLE(canberra,
164  AC_HELP_STRING([--disable-canberra],
165                 [disable use of canberra for event sounds, for embedded non-GNOME builds]),,
166  enable_canberra=yes)
167
168if test x$enable_canberra = xyes; then
169    AC_DEFINE(HAVE_CANBERRA,1,[Build with canberra support])
170    METACITY_PC_MODULES="$METACITY_PC_MODULES libcanberra-gtk3"
171fi
172
173AC_ARG_ENABLE(sm,
174  AC_HELP_STRING([--disable-sm],
175                 [disable metacity's session management support, for embedded/size-sensitive custom non-GNOME builds]),,
176  enable_sm=auto)
177
178AC_ARG_ENABLE(startup-notification,
179  AC_HELP_STRING([--disable-startup-notification],
180                 [disable metacity's startup notification support, for embedded/size-sensitive custom non-GNOME builds]),,
181  enable_startup_notification=auto)
182
183AC_ARG_ENABLE(render,
184  AC_HELP_STRING([--disable-render],
185                 [disable metacity's use of the RENDER extension]),,
186  enable_render=auto)
187
188## here we get the flags we'll actually use
189PKG_CHECK_MODULES(ALL, glib-2.0 >= $GLIB_REQUIRED_VERSION gthread-2.0 >= $GLIB_REQUIRED_VERSION)
190PKG_CHECK_MODULES(METACITY_MESSAGE, gtk+-3.0 >= $GTK_REQUIRED_VERSION)
191
192# Unconditionally use this dir to avoid a circular dep with gnomecc
193GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
194AC_SUBST(GNOME_KEYBINDINGS_KEYSDIR)
195
196STARTUP_NOTIFICATION_VERSION=0.7
197AC_MSG_CHECKING([Startup notification library >= $STARTUP_NOTIFICATION_VERSION])
198if $PKG_CONFIG --atleast-version $STARTUP_NOTIFICATION_VERSION libstartup-notification-1.0; then
199   have_startup_notification=yes
200else
201   have_startup_notification=no
202fi
203AC_MSG_RESULT($have_startup_notification)
204
205if test x$enable_startup_notification = xyes; then
206   have_startup_notification=yes
207   echo "startup-notification support forced on"
208elif test x$enable_startup_notification = xauto; then
209   true
210else
211   have_startup_notification=no
212fi
213
214if test x$have_startup_notification = xyes; then
215  echo "Building with libstartup-notification"
216  METACITY_PC_MODULES="$METACITY_PC_MODULES libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION"
217  AC_DEFINE(HAVE_STARTUP_NOTIFICATION, , [Building with startup notification support])
218else
219  echo "Building without libstartup-notification"
220fi
221
222AC_MSG_CHECKING([Xcursor])
223if $PKG_CONFIG xcursor; then
224     have_xcursor=yes
225  else
226     have_xcursor=no
227  fi
228  AC_MSG_RESULT($have_xcursor)
229
230if test x$have_xcursor = xyes; then
231  echo "Building with Xcursor"
232  METACITY_PC_MODULES="$METACITY_PC_MODULES xcursor"
233  AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support])
234fi
235
236AC_MSG_CHECKING([libgtop])
237if $PKG_CONFIG libgtop-2.0; then
238     have_gtop=yes
239  else
240     have_gtop=no
241  fi
242  AC_MSG_RESULT($have_gtop)
243
244if test x$have_gtop = xyes; then
245  echo "Building with libgtop"
246  METACITY_PC_MODULES="$METACITY_PC_MODULES libgtop-2.0"
247  AC_DEFINE(HAVE_GTOP, , [Building with libgtop])
248fi
249
250PKG_CHECK_MODULES(METACITY, $METACITY_PC_MODULES)
251
252AC_PATH_XTRA
253
254ALL_X_LIBS="-lX11 $X_EXTRA_LIBS"
255
256# Check for Xinerama extension
257metacity_save_cppflags="$CPPFLAGS"
258CPPFLAGS="$CPPFLAGS $X_CFLAGS"
259
260AC_ARG_ENABLE(xinerama,
261  AC_HELP_STRING([--disable-xinerama],
262                 [disable metacity's use of the Xinerama extension]),
263  try_xinerama=$enable_xinerama,try_xinerama=yes)
264
265have_xinerama=no
266if test "${try_xinerama}" != no; then
267    have_xinerama=yes
268    AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
269        [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
270                         X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS"
271                         if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
272                             X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
273                         fi
274                         AC_DEFINE(HAVE_XINERAMA, , [Have the Xinerama extension library]),
275                         have_xinerama=no,
276                         [#include <X11/Xlib.h>])],
277        have_xinerama=no, -lXext $ALL_X_LIBS)
278    AC_MSG_CHECKING([Xinerama])
279    AC_MSG_RESULT($have_xinerama)
280fi
281
282CPPFLAGS="$metacity_save_cppflags"
283
284found_xkb=no
285AC_CHECK_LIB(X11, XkbQueryExtension,
286               [AC_CHECK_HEADER(X11/XKBlib.h,
287                                found_xkb=yes)],
288	, $ALL_X_LIBS)
289
290if test "x$found_xkb" = "xyes"; then
291   AC_DEFINE(HAVE_XKB, , [Have keyboard extension library])
292fi
293
294
295RANDR_LIBS=
296found_randr=no
297AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration,
298               [AC_CHECK_HEADER(X11/extensions/Xrandr.h,
299                                RANDR_LIBS=-lXrandr found_randr=yes,,
300				[#include <X11/Xlib.h>])],
301               , -lXrender -lXext $ALL_X_LIBS)
302
303if test "x$found_randr" = "xyes"; then
304   AC_DEFINE(HAVE_RANDR, , [Have the Xrandr extension library])
305fi
306
307METACITY_LIBS="$ALL_LIBS $METACITY_LIBS $RANDR_LIBS -lX11 -lXext $X_EXTRA_LIBS $LIBM"
308METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS -lX11 $X_EXTRA_LIBS"
309
310found_sm=no
311case "$METACITY_LIBS" in
312 *-lSM*)
313    found_sm=yes
314    ;;
315 *)
316  AC_CHECK_LIB(SM, SmcSaveYourselfDone,
317               [AC_CHECK_HEADERS(X11/SM/SMlib.h,
318                                METACITY_LIBS="-lSM -lICE $METACITY_LIBS" found_sm=yes)],
319               , $METACITY_LIBS)
320    ;;
321esac
322
323if test x$enable_sm = xno; then
324   found_sm=no
325fi
326
327if test x$enable_sm = xyes; then
328   if test "$found_sm" = "no"; then
329      AC_MSG_ERROR([--enable-sm forced and -lSM not found])
330      exit 1
331   fi
332fi
333
334if test "$found_sm" = "yes"; then
335   AC_DEFINE(HAVE_SM, , [Building with SM support])
336fi
337
338AM_CONDITIONAL(HAVE_SM, test "$found_sm" = "yes")
339
340AC_PATH_PROG(ZENITY, zenity, no)
341if test x"$ZENITY" = xno; then
342  AC_MSG_ERROR([zenity not found in your path - needed for dialogs])
343fi
344
345AC_SEARCH_LIBS([dlsym], [dl], [], [
346  AC_MSG_ERROR([unable to find the dlsym() function])
347])
348
349dnl **************************************************************************
350dnl Check for Vulkan support
351dnl **************************************************************************
352
353AC_ARG_ENABLE([vulkan],
354              [AS_HELP_STRING([--enable-vulkan], [enable Vulkan support])],
355              [enable_vulkan="$enableval"], [enable_vulkan="auto"])
356
357AS_IF([test "x$enable_vulkan" != "xno"], [
358  AC_CHECK_LIB([vulkan], [vkCreateInstance], [
359    AC_CHECK_HEADER([vulkan/vulkan.h], [found_vulkan=yes], [found_vulkan=no])
360  ], [found_vulkan=no])
361
362  AS_IF([test "x$found_vulkan" = "xyes"], [
363    AC_DEFINE([HAVE_VULKAN], 1, [Build with Vulkan support])
364    METACITY_LIBS="$METACITY_LIBS -lvulkan"
365  ], [
366    AS_IF([test "x$enable_vulkan" = "xyes"], [
367      AC_MSG_ERROR([Vulkan enabled but not found])
368    ])
369  ])
370], [found_vulkan=no])
371
372AM_CONDITIONAL([HAVE_VULKAN], [test "x$found_vulkan" = "xyes"])
373
374dnl **************************************************************************
375dnl Process .in files
376dnl **************************************************************************
377
378AC_CONFIG_FILES([
379  Makefile
380
381  data/Makefile
382  data/applications/Makefile
383  data/keybindings/Makefile
384  data/pkgconfig/Makefile
385  data/pkgconfig/libmetacity.pc
386  data/schemas/Makefile
387  data/ui/Makefile
388
389  doc/Makefile
390  doc/man/Makefile
391
392  libmetacity/Makefile
393
394  src/Makefile
395  src/tools/Makefile
396
397  theme-viewer/Makefile
398
399  po/Makefile.in
400])
401
402AC_OUTPUT
403
404dnl **************************************************************************
405dnl Show summary
406dnl **************************************************************************
407
408echo ""
409echo "  Metacity $VERSION"
410echo "  `echo Metacity $VERSION | sed "s/./=/g"`"
411echo ""
412echo "  srcdir ......................: ${srcdir}"
413echo ""
414echo "  compiler ....................: ${CC}"
415echo "  cflags ......................: ${CFLAGS}"
416echo ""
417echo "  prefix ......................: ${prefix}"
418echo "  exec_prefix .................: ${exec_prefix}"
419echo "  libdir ......................: ${libdir}"
420echo "  sysconfdir ..................: ${sysconfdir}"
421echo "  libexecdir ..................: ${libexecdir}"
422echo ""
423echo "  Canberra ....................: ${enable_canberra}"
424echo "  Xinerama ....................: ${have_xinerama}"
425echo "  Startup notification ........: ${have_startup_notification}"
426echo "  Session management ..........: ${found_sm}"
427echo "  Resize-and-rotate ...........: ${found_randr}"
428echo "  Xcursor .....................: ${have_xcursor}"
429echo "  Vulkan ......................: ${found_vulkan}"
430echo ""
431