1 dnl ============================================================================
3 dnl Window Maker autoconf input
5 AC_COPYRIGHT([Copyright (c) 2001-2023 The Window Maker Team])
7 dnl ============================================================================
9 dnl This program is free software; you can redistribute it and/or modify
10 dnl it under the terms of the GNU General Public License as published by
11 dnl the Free Software Foundation; either version 2 of the License, or
12 dnl (at your option) any later version.
14 dnl This program is distributed in the hope that it will be useful,
15 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
16 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 dnl GNU General Public License for more details.
19 dnl You should have received a copy of the GNU General Public License along
20 dnl with this program; see the file COPYING.
22 dnl ============================================================================
24 dnl Process with: ./autogen.sh
27 dnl Due to a bug in Autoconf 2.68 (apparently a regression), we need at least
28 dnl version 2.68b which includes this patch:
29 dnl http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;h=2b0d95faef68d7ed7c08b0edb9ff1c38728376fa
31 dnl Because the 2.69 was released only a few month later, let's just ask for it
35 dnl Configuration for Autoconf and Automake
36 dnl =======================================
37 AC_INIT([WindowMaker],[0.96.0],[wmaker-dev@googlegroups.com],[WindowMaker],[http://www.windowmaker.org/])
38 AC_CONFIG_MACRO_DIR([m4])
39 AC_CONFIG_HEADERS([config.h])
41 dnl We need the EXTRA_xxx_DEPENDENCIES keyword in Makefiles which have been
42 dnl introduced in the version 1.11.3; because the 1.12 was realeased shortly
43 dnl after, we just ask for it
44 AM_INIT_AUTOMAKE([1.12 silent-rules -Wno-portability])
46 dnl Reference file used by 'configure' to make sure the path to sources is valid
47 AC_CONFIG_SRCDIR([src/WindowMaker.h])
49 dnl Include at the end of 'config.h', this file is generated by top-level Makefile
50 AH_BOTTOM([@%:@include "config-paths.h"])
53 dnl libtool library versioning
54 dnl ==========================
60 dnl 1. Start with version information of ‘0:0:0’ for each libtool library.
61 dnl 2. Update the version information only immediately before a public
62 dnl release of your software. More frequent updates are unnecessary, and
63 dnl only guarantee that the current interface number gets larger faster.
64 dnl 3. If the library source code has changed at all since the last
65 dnl update, then increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
66 dnl 4. If any interfaces have been added, removed, or changed since the
67 dnl last update, increment current, and set revision to 0.
68 dnl 5. If any interfaces have been added since the last public release,
69 dnl then increment age.
70 dnl 6. If any interfaces have been removed or changed since the last
71 dnl public release, then set age to 0.
77 WRASTER_VERSION=$WRASTER_CURRENT:$WRASTER_REVISION:$WRASTER_AGE
78 AC_SUBST(WRASTER_VERSION)
84 WINGS_VERSION=$WINGS_CURRENT:$WINGS_REVISION:$WINGS_AGE
85 AC_SUBST(WINGS_VERSION)
91 WUTIL_VERSION=$WUTIL_CURRENT:$WUTIL_REVISION:$WUTIL_AGE
92 AC_SUBST(WUTIL_VERSION)
95 dnl Checks for programs
96 dnl ===================
100 AC_PROG_GCC_TRADITIONAL
104 dnl Debugging Options
105 dnl =================
106 m4_divert_push([INIT_PREPARE])dnl
107 AC_ARG_ENABLE([debug],
108 [AS_HELP_STRING([--enable-debug], [enable debugging options, @<:@default=no@:>@])],
109 [AS_CASE(["$enableval"],
112 [AC_MSG_ERROR([bad value $enableval for --enable-debug])] )],
114 m4_divert_pop([INIT_PREPARE])dnl
115 AS_IF([test "x$debug" = "xyes"],
116 [dnl This flag should have already been detected and added, but if user
117 dnl provided an explicit CFLAGS it may not be the case
118 AS_IF([echo " $CFLAGS " | grep " -g " 2>&1 > /dev/null],
119 [@%:@ Debug symbol already activated],
120 [AX_CFLAGS_GCC_OPTION([-g])])
122 dnl This flag generally makes debugging nightmarish, remove it if present
123 CFLAGS="`echo "$CFLAGS" | sed -e 's/-fomit-frame-pointer *//' `"
125 dnl Enable internal debug code
126 CPPFLAGS="$CPPFLAGS -DDEBUG"
128 dnl When debug is not enabled, the user probably does not wants to keep
129 dnl assertions in the final program
130 CPPFLAGS="$CPPFLAGS -DNDEBUG"
134 AX_CFLAGS_GCC_OPTION([-Wall])
135 AX_CFLAGS_GCC_OPTION([-Wextra -Wno-sign-compare])
137 dnl The use of trampolines cause code that can crash on some secured OS, it is
138 dnl also known to be a source of crash if not used properly, in a more general
139 dnl way it tends to generate binary code that may not be optimal, and it is
140 dnl not compatible with the 'nested-func-to-macro' workaround
141 WM_CFLAGS_CHECK_FIRST([-Wtrampolines],
142 [-Werror=trampolines dnl try to generate an error if possible
143 -Wtrampolines dnl if not, try to fall back to a simple warning
146 AS_IF([test "x$debug" = "xyes"],
147 [dnl When debug is enabled, we try to activate more checks from
148 dnl the compiler. They are on independant check because the
149 dnl macro checks all the options at once, but we may have cases
150 dnl where some options are not supported and we don't want to
151 dnl loose all of them.
153 dnl clang, suggest parenthesis on bit operations that could be
154 dnl misunderstood due to C operator precedence
155 AX_CFLAGS_GCC_OPTION([-Wbitwise-op-parentheses])
157 dnl Points at code that gcc thinks is so complicated that gcc
158 dnl gives up trying to optimize, which probably also means it is
159 dnl too complicated to maintain
160 AX_CFLAGS_GCC_OPTION([-Wdisabled-optimization])
162 dnl Because of C's type promotion, the compiler has to generate
163 dnl less optimal code when a double constant is used in a
165 AX_CFLAGS_GCC_OPTION([-Wdouble-promotion])
167 dnl Floating-point comparison is not a good idea
168 AX_CFLAGS_GCC_OPTION([-Wfloat-equal])
170 dnl clang warns about constants that may have portability issues due
171 dnl to the endianness of the host
172 AX_CFLAGS_GCC_OPTION([-Wfour-char-constants])
174 dnl clang warns about constant that may be too big to be portable
175 AX_CFLAGS_GCC_OPTION([-Wliteral-range])
177 dnl Try to report misuses of '&' versus '&&' and similar
178 AX_CFLAGS_GCC_OPTION([-Wlogical-op])
180 dnl clang, reports cases where the code assumes everyone is an
181 dnl expert in C operator precedence... which is unlikely!
182 AX_CFLAGS_GCC_OPTION([-Wlogical-op-parentheses])
184 dnl Reports declaration of global things that are done inside
185 dnl a local environment, instead of using the appropriate
187 AX_CFLAGS_GCC_OPTION([-Wnested-externs])
189 dnl Warn about constant strings that could pose portability issues
190 AX_CFLAGS_GCC_OPTION([-Woverlength-strings])
192 dnl Use of 'sizeof()' on inappropriate pointer types
193 AX_CFLAGS_GCC_OPTION([-Wpointer-arith])
195 dnl Having more than 1 prototype for a function makes code updates
196 dnl more difficult, so try to avoid it
197 AX_CFLAGS_GCC_OPTION([-Wredundant-decls])
199 dnl clang, detect some misuses of sizeof. We also count in our code
200 dnl on the use of the macro 'wlength' which contains a check if the
201 dnl compiler support C11's static_assert
202 AX_CFLAGS_GCC_OPTION([-Wsizeof-array-argument])
204 dnl Prototype of function must be explicit, no deprecated K&R syntax
205 dnl and no empty argument list which prevents compiler from doing
206 dnl type checking when using the function
207 WM_CFLAGS_GCC_OPTION_STRICTPROTO
209 dnl Proper attributes helps the compiler to produce better code
210 WM_CFLAGS_CHECK_FIRST([format attribute suggest],
211 [-Wsuggest-attribute=format dnl new gcc syntax
212 -Wmissing-format-attribute dnl old gcc syntax, clang
214 WM_CFLAGS_CHECK_FIRST([no-return attribute suggest],
215 [-Wsuggest-attribute=noreturn dnl gcc syntax
216 -Wmissing-noreturn dnl clang syntax
219 dnl GCC provides a couple of checks to detect incorrect macro uses
220 AX_CFLAGS_GCC_OPTION([-Wundef])
221 WM_CFLAGS_GCC_OPTION_UNUSEDMACROS
223 dnl clang reports stuff marked unused but which is actually used
224 AX_CFLAGS_GCC_OPTION([-Wused-but-marked-unused])
226 dnl When debug not enabled, we try to avoid some non-necessary
227 dnl messages from the compiler
229 dnl To support legacy X servers, we have sometime to use
230 dnl functions marked as deprecated. We do not wish our users
231 dnl to be worried about it
232 AX_CFLAGS_GCC_OPTION([-Wno-deprecated])
233 AX_CFLAGS_GCC_OPTION([-Wno-deprecated-declarations])
237 dnl To upload documentation to the Website
238 dnl ======================================
239 m4_divert_push([INIT_PREPARE])dnl
240 AC_ARG_WITH([web-repo],
241 [AS_HELP_STRING([--with-web-repo=PATH], [path to your git repository for the Web home page (maintainer stuff)])],
243 [yes], [AC_MSG_ERROR([bad value '$withval' for --with-web-repo, expected a path]) ],
244 [no], [WEB_REPO_ROOT=""],
245 [WEB_REPO_ROOT=$withval])],
247 m4_divert_pop([INIT_PREPARE])dnl
251 dnl Support for Nested Functions by the compiler
252 dnl ============================================
253 WM_PROG_CC_NESTEDFUNC
258 dnl they are used by util/wmiv
262 dnl Tracking on what is detected for final status
263 dnl =============================================
270 dnl Platform-specific Makefile setup
271 dnl ================================
273 [*-*-linux*|*-*-cygwin*|*-gnu*], [WM_OSDEP="linux" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=700"],
274 [*-*-freebsd*|*-k*bsd-gnu*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=700 -DFREEBSD"],
275 [*-*-netbsd*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DNETBSD"],
276 [*-*-openbsd*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DOPENBSD"],
277 [*-*-dragonfly*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DDRAGONFLYBSD"],
278 [*-apple-darwin*], [WM_OSDEP="darwin"],
279 [*-*-solaris*], [WM_OSDEP="stub"], dnl solaris.c when done
281 AM_CONDITIONAL([WM_OSDEP_LINUX], [test "x$WM_OSDEP" = "xlinux"])
282 AM_CONDITIONAL([WM_OSDEP_BSD], [test "x$WM_OSDEP" = "xbsd"])
283 AM_CONDITIONAL([WM_OSDEP_DARWIN], [test "x$WM_OSDEP" = "xdarwin"])
284 AM_CONDITIONAL([WM_OSDEP_GENERIC], [test "x$WM_OSDEP" = "xstub"])
290 dnl move this earlier in the script... anyone know why this is handled
291 dnl in such a bizarre way?
293 test "x$prefix" = xNONE && prefix=$ac_default_prefix
294 dnl Let make expand exec_prefix.
295 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
298 _bindir=`eval echo $bindir`
299 _bindir=`eval echo $_bindir`
300 _libdir=`eval echo $libdir`
301 _libdir=`eval echo $_libdir`
303 dnl ===============================================
304 dnl Specify paths to look for libraries and headers
305 dnl ===============================================
306 AC_ARG_WITH(libs-from, AS_HELP_STRING([--with-libs-from], [pass compiler flags to look for libraries]),
307 [lib_search_path="$withval"], [lib_search_path='-L${libdir}'])
309 AC_ARG_WITH(incs-from, AS_HELP_STRING([--with-incs-from], [pass compiler flags to look for header files]),
310 [inc_search_path="$withval"], [inc_search_path='-I${includedir}'])
313 dnl Features Configuration
314 dnl ======================
315 m4_divert_push([INIT_PREPARE])dnl
316 AC_ARG_ENABLE([animations],
317 [AS_HELP_STRING([--disable-animations], [disable permanently animations @<:@default=enabled@:>@])],
318 [AS_CASE(["$enableval"],
320 [AC_MSG_ERROR([bad value $enableval for --enable-animations])])],
321 [enable_animations="yes"])
322 m4_divert_pop([INIT_PREPARE])dnl
324 AS_IF([test "x$enable_animations" = "xno"],
325 [unsupported="$unsupported Animations"],
326 [AC_DEFINE([USE_ANIMATIONS], [1], [Defined when user did not request to disable animations])
327 supported_core="$supported_core Animations"])
330 m4_divert_push([INIT_PREPARE])dnl
331 AC_ARG_ENABLE([mwm-hints],
332 [AS_HELP_STRING([--disable-mwm-hints], [disable support for Motif WM hints @<:@default=enabled@:>@])],
333 [AS_CASE(["$enableval"],
335 [AC_MSG_ERROR([bad value $enableval for --enable-mwm-hints])])],
336 [enable_mwm_hints="yes"])
337 m4_divert_pop([INIT_PREPARE])dnl
339 AS_IF([test "x$enable_mwm_hints" = "xno"],
340 [unsupported="$unsupported MWMHints"],
341 [AC_DEFINE([USE_MWM_HINTS], [1], [Defined when used did not request to disable Motif WM hints])
342 supported_core="$supported_core MWMHints"])
343 AM_CONDITIONAL([USE_MWM_HINTS], [test "x$enable_mwm_hints" != "xno"])
348 m4_divert_push([INIT_PREPARE])dnl
349 AC_ARG_ENABLE([boehm-gc],
350 [AS_HELP_STRING([--enable-boehm-gc], [use Boehm GC instead of the default libc malloc() [default=no]])],
351 [AS_CASE(["$enableval"],
352 [yes], [with_boehm_gc=yes],
353 [no], [with_boehm_gc=no],
354 [AC_MSG_ERROR([bad value $enableval for --enable-boehm-gc])] )],
356 m4_divert_pop([INIT_PREPARE])dnl
358 AS_IF([test "x$with_boehm_gc" = "xyes"],
359 AC_SEARCH_LIBS([GC_malloc], [gc],
360 [AC_DEFINE(USE_BOEHM_GC, 1, [Define if Boehm GC is to be used])],
361 [AC_MSG_FAILURE([--enable-boehm-gc specified but test for libgc failed])]))
366 m4_divert_push([INIT_PREPARE])dnl
367 AC_ARG_ENABLE([lcov],
368 [AS_HELP_STRING([--enable-lcov[=output-directory]], [enable coverage data generation using LCOV (GCC only) [default=no]])],
371 m4_divert_pop([INIT_PREPARE])dnl
373 AS_IF([test "x$enable_lcov" != "xno"],
374 [AX_CFLAGS_GCC_OPTION(-fprofile-arcs -ftest-coverage)
375 AS_IF([test "x$enable_lcov" = "xyes"],
376 [lcov_output_directory="coverage-report"],
377 [lcov_output_directory="${enable_lcov}/coverage-report"])
378 AC_SUBST(lcov_output_directory)])
380 AM_CONDITIONAL([USE_LCOV], [test "x$enable_lcov" != "xno"])
383 dnl ============================
384 dnl Checks for library functions
385 dnl ============================
388 WM_FUNC_SECURE_GETENV
389 AC_CHECK_FUNCS(gethostname select poll strcasecmp strncasecmp \
390 setsid mallinfo2 mkstemp sysconf)
391 AC_SEARCH_LIBS([strerror], [cposix])
393 dnl nanosleep is generally available in standard libc, although not always the
394 dnl case. One known example is Solaris which needs -lrt
395 AC_SEARCH_LIBS([nanosleep], [rt], [],
396 [AC_MSG_ERROR([function 'nanosleep' not found, please report to wmaker-dev@googlegroups.com])])
398 dnl the flag 'O_NOFOLLOW' for 'open' is used in WINGs
399 WM_FUNC_OPEN_NOFOLLOW
402 dnl Check for strlcat/strlcpy
403 dnl =========================
404 m4_divert_push([INIT_PREPARE])dnl
405 AC_ARG_WITH([libbsd],
406 [AS_HELP_STRING([--without-libbsd], [do not use libbsd for strlcat and strlcpy [default=check]])],
407 [AS_IF([test "x$with_libbsd" != "xno"],
412 m4_divert_pop([INIT_PREPARE])dnl
415 AC_SEARCH_LIBS([strlcat],[$with_libbsd],
416 [AC_DEFINE(HAVE_STRLCAT, 1, [Define if strlcat is available])],
420 AC_SEARCH_LIBS([strlcpy],[$with_libbsd],
421 [AC_DEFINE(HAVE_STRLCAT, 1, [Define if strlcpy is available])],
428 AS_IF([test "x$ac_cv_search_strlcat" = "x-lbsd" -o "x$ac_cv_search_strlcpy" = "x-lbsd"],
430 AC_CHECK_HEADERS([bsd/string.h])]
435 dnl Check for OpenBSD kernel memory interface - kvm(3)
436 dnl ==================================================
437 AS_IF([test "x$WM_OSDEP" = "xbsd"],
438 AC_SEARCH_LIBS([kvm_openfiles], [kvm]) )
441 dnl Check for inotify
442 dnl =================
443 dnl It is used by WindowMaker to reload automatically the configuration when the
444 dnl user changed it using WPref or wdwrite
445 AC_CHECK_HEADERS([sys/inotify.h],
446 [AC_DEFINE([HAVE_INOTIFY], [1], [Check for inotify])])
451 dnl It is used by WUtil to log the wwarning, werror and wfatal
452 AC_CHECK_HEADERS([syslog.h], [AC_DEFINE([HAVE_SYSLOG], [1], [Check for syslog])])
455 dnl Checks for header files
456 dnl =======================
458 AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h libintl.h poll.h malloc.h ctype.h \
462 dnl Checks for typedefs, structures, and compiler characteristics
463 dnl =============================================================
475 AS_IF([test -z "$PKG_CONFIG"],[AC_MSG_ERROR([pkg-config is required.])])
479 dnl Internationalization
480 dnl ====================
481 dnl Detect the language for translations to be installed and check
482 dnl that the gettext environment works
485 WM_I18N_MENUTEXTDOMAIN
486 WM_LIBRARY_CONSTRUCTORS
488 dnl ===========================================
489 dnl Stuff that uses X
490 dnl ===========================================
494 AS_IF([test "x$no_x" = "xyes"],
495 [AC_MSG_ERROR([The path for the X11 files not found!
496 Make sure you have X and its headers and libraries (the -devel packages
497 in Linux) installed.])])
499 X_LIBRARY_PATH=$x_libraries
502 XLIBS="-lX11 $X_EXTRA_LIBS"
504 lib_search_path="$lib_search_path $XLFLAGS"
505 inc_search_path="$inc_search_path $XCFLAGS"
507 AC_SUBST(X_LIBRARY_PATH)
510 dnl Decide which locale function to use, setlocale() or _Xsetlocale()
511 dnl by MANOME Tomonori
512 dnl ===========================================
517 dnl Check whether XInternAtoms() exist
518 dnl ==================================
519 AC_CHECK_LIB([X11], [XInternAtoms],
520 [AC_DEFINE([HAVE_XINTERNATOMS], [1],
521 [define if your X server has XInternAtoms() (set by configure)])],
522 [], [$XLFLAGS $XLIBS])
525 dnl Check whether XConvertCase() exist
526 dnl ==================================
527 AC_CHECK_LIB([X11], [XConvertCase],
528 [AC_DEFINE([HAVE_XCONVERTCASE], [1],
529 [define if your X server has XConvertCase() (set by configure)])],
530 [], [$XLFLAGS $XLIBS])
533 dnl XKB keyboard language status
534 dnl ============================
535 m4_divert_push([INIT_PREPARE])dnl
536 AC_ARG_ENABLE([modelock],
537 [AS_HELP_STRING([--enable-modelock], [XKB keyboard language status support])],
538 [AS_CASE([$enableval],
540 [AC_MSG_ERROR([bad value '$enableval' for --enable-modelock])])],
541 [enable_modelock=no])
542 m4_divert_pop([INIT_PREPARE])dnl
544 AS_IF([test "x$enable_modelock" = "xyes"],
545 [AC_DEFINE([XKB_MODELOCK], [1], [whether XKB language MODELOCK should be enabled]) ])
548 dnl XDND Drag-nd-Drop support
549 dnl =========================
550 m4_divert_push([INIT_PREPARE])dnl
551 AC_ARG_ENABLE([xdnd],
552 [AS_HELP_STRING([--disable-xdnd], [disable support for Drag-and-Drop on the dock @<:@default=enabled@:>@])],
553 [AS_CASE(["$enableval"],
555 [AC_MSG_ERROR([bad value $enableval for --disable-xdnd]) ]) ],
557 m4_divert_pop([INIT_PREPARE])dnl
559 AS_IF([test "x$enable_xdnd" = "xyes"],
560 [supported_core="$supported_core XDnD"
561 AC_DEFINE([USE_DOCK_XDND], [1], [whether Drag-and-Drop on the dock should be enabled])],
562 [unsupported="$unsupported XDnd"])
563 AM_CONDITIONAL([USE_DOCK_XDND], [test "x$enable_xdnd" != "xno"])
566 dnl Support for ICCCM 2.0 Window Manager replacement
567 dnl ================================================
568 m4_divert_push([INIT_PREPARE])dnl
569 AC_ARG_ENABLE([wmreplace],
570 [AS_HELP_STRING([--enable-wmreplace], [support for ICCCM window manager replacement])],
571 [AS_CASE([$enableval],
573 [AC_MSG_ERROR([bad value '$enableval' for --enable-wmreplace])])],
574 [enable_wmreplace=no])
575 m4_divert_pop([INIT_PREPARE])dnl
577 AS_IF([test "x$enable_wmreplace" = "xyes"],
578 [AC_DEFINE([USE_ICCCM_WMREPLACE], [1],
579 [define to support ICCCM protocol for window manager replacement])
580 supported_xext="$supported_xext WMReplace"])
584 m4_divert_push([INIT_PREPARE])dnl
586 [AS_HELP_STRING([--disable-res], [disable resource window extension support])],
587 [AS_CASE(["$enableval"],
589 [AC_MSG_ERROR([bad value $enableval for --enable-res]) ]) ],
591 m4_divert_pop([INIT_PREPARE])dnl
597 m4_divert_push([INIT_PREPARE])dnl
598 AC_ARG_ENABLE([shape],
599 [AS_HELP_STRING([--disable-shape], [disable shaped window extension support])],
600 [AS_CASE(["$enableval"],
602 [AC_MSG_ERROR([bad value $enableval for --enable-shape]) ]) ],
604 m4_divert_pop([INIT_PREPARE])dnl
611 m4_divert_push([INIT_PREPARE])dnl
613 [AS_HELP_STRING([--disable-shm], [disable usage of MIT-SHM extension])],
614 [AS_CASE(["$enableval"],
616 [AC_MSG_ERROR([bad value $enableval for --enable-shm]) ]) ],
618 m4_divert_pop([INIT_PREPARE])dnl
622 dnl X Misceleanous Utility
623 dnl ======================
624 dnl the libXmu is used in WRaster
630 m4_divert_push([INIT_PREPARE])dnl
631 AC_ARG_ENABLE([xinerama],
632 [AS_HELP_STRING([--enable-xinerama], [enable Xinerama extension support])],
633 [AS_CASE(["$enableval"],
635 [AC_MSG_ERROR([bad value $enableval for --enable-xinerama]) ]) ],
636 [enable_xinerama=auto])
637 m4_divert_pop([INIT_PREPARE])dnl
638 WM_XEXT_CHECK_XINERAMA
643 m4_divert_push([INIT_PREPARE])dnl
644 AC_ARG_ENABLE([randr],
645 [AS_HELP_STRING([--enable-randr], [enable RandR extension support (NOT recommended, buggy)])],
646 [AS_CASE(["$enableval"],
648 [AC_MSG_ERROR([bad value $enableval for --enable-randr]) ]) ],
650 m4_divert_pop([INIT_PREPARE])dnl
656 dnl libWINGS uses math functions, check whether usage requires linking
663 dnl libWINGS uses FcPatternDel from libfontconfig
664 AC_MSG_CHECKING([for fontconfig library])
665 FCLIBS=`$PKG_CONFIG fontconfig --libs`
666 if test "x$FCLIBS" = "x" ; then
667 AC_MSG_RESULT([not found])
669 AC_MSG_RESULT([found])
674 dnl Xft2 antialiased font support
675 dnl =============================
676 m4_define([XFT_MIN_VERSION], [2.1.0])
677 PKG_CHECK_MODULES([XFT], [xft >= ]XFT_MIN_VERSION,
678 [], dnl Module found, nothing to do
680 AS_IF([test "x$XFT_CFLAGS" = "xfailed"],
681 [dnl pkg-config did not find it, try the legacy method
682 AC_CHECK_PROG([XFTCONFIG], [xft-config], [xft-config])
683 AS_IF([test -z "$XFTCONFIG"],
684 [AC_MSG_ERROR([libXft2 is not installed, is too old or could not be found -- $XFT_PKG_ERRORS]) ])
685 XFT_LIBS=`$XFTCONFIG --libs`
686 XFT_CFLAGS=`$XFTCONFIG --cflags`
687 WM_CHECK_XFT_VERSION(XFT_MIN_VERSION,
688 [], dnl Version is ok, nothing to do
689 [AC_MSG_ERROR([Version of libXft is too old, consider upgrading to] XFT_MIN_VERSION [or newer]) ])
697 dnl The libray can be used by WINGs to get better support on UTF-8 for i18n
698 m4_divert_push([INIT_PREPARE])dnl
699 AC_ARG_ENABLE([pango],
700 [AS_HELP_STRING([--disable-pango], [disable Pango text layout support @<:@default=auto@:>@])],
701 [AS_CASE([$enableval],
703 [AC_MSG_ERROR([bad value $enableval for --disable-pango])] )],
705 m4_divert_pop([INIT_PREPARE])dnl
709 dnl ==============================================
710 dnl Graphic Format Libraries
711 dnl ==============================================
715 m4_divert_push([INIT_PREPARE])dnl
717 [AS_HELP_STRING([--disable-xpm], [disable use of XPM pixmaps through libXpm])],
718 [AS_CASE(["$enableval"],
720 [AC_MSG_ERROR([bad value $enableval for --enable-xpm])] )],
722 m4_divert_pop([INIT_PREPARE])dnl
731 AC_SUBST(X_EXTRA_LIBS)
733 dnl ===============================================
734 dnl End of stuff that uses X
735 dnl ===============================================
740 AS_IF([test "x$LIBEXIF" != "x"],
741 [AC_DEFINE(HAVE_EXIF, 1, [Define if EXIF can be used])])
746 m4_divert_push([INIT_PREPARE])dnl
748 [AS_HELP_STRING([--disable-png], [disable PNG support through libpng])],
749 [AS_CASE(["$enableval"],
751 [AC_MSG_ERROR([bad value $enableval for --enable-png])] )],
753 m4_divert_pop([INIT_PREPARE])dnl
759 m4_divert_push([INIT_PREPARE])dnl
760 AC_ARG_ENABLE([jpeg],
761 [AS_HELP_STRING([--disable-jpeg], [disable JPEG support through libjpeg])],
762 [AS_CASE(["$enableval"],
764 [AC_MSG_ERROR([bad value $enableval for --enable-jpeg])] )],
766 m4_divert_pop([INIT_PREPARE])dnl
772 m4_divert_push([INIT_PREPARE])dnl
774 [AS_HELP_STRING([--disable-gif], [disable GIF support through libgif or libungif])],
775 [AS_CASE(["$enableval"],
777 [AC_MSG_ERROR([bad value $enableval for --enable-gif])] )],
779 m4_divert_pop([INIT_PREPARE])dnl
785 m4_divert_push([INIT_PREPARE])dnl
786 AC_ARG_ENABLE([tiff],
787 [AS_HELP_STRING([--disable-tiff], [disable use of TIFF images through libtiff])],
788 [AS_CASE(["$enableval"],
790 [AC_MSG_ERROR([bad value $enableval for --enable-tiff])] )],
792 m4_divert_pop([INIT_PREPARE])dnl
798 m4_divert_push([INIT_PREPARE])dnl
799 AC_ARG_ENABLE([webp],
800 [AS_HELP_STRING([--disable-webp], [disable WEBP support through libwebp])],
801 [AS_CASE(["$enableval"],
803 [AC_MSG_ERROR([bad value $enableval for --enable-webp])] )],
805 m4_divert_pop([INIT_PREPARE])dnl
811 m4_divert_push([INIT_PREPARE])dnl
812 AC_ARG_ENABLE([magick],
813 [AS_HELP_STRING([--disable-magick], [disable MAGICK support through libMagickWand])],
814 [AS_CASE(["$enableval"],
816 [AC_MSG_ERROR([bad value $enableval for --enable-magick])] )],
817 [enable_magick=auto])
818 m4_divert_pop([INIT_PREPARE])dnl
819 WM_IMGFMT_CHECK_MAGICK
824 # The PPM format is always enabled because we have built-in support for the format
825 # We are not using any external library like libppm
826 supported_gfx="$supported_gfx builtin-PPM"
829 # Choice of the default format for icons
830 AS_IF([test "x$enable_tiff" != "xno"],
835 LIBRARY_SEARCH_PATH="$lib_search_path"
836 HEADER_SEARCH_PATH="$inc_search_path"
838 AC_SUBST(LIBRARY_SEARCH_PATH)
839 AC_SUBST(HEADER_SEARCH_PATH)
844 AM_CONDITIONAL([ICON_EXT_XPM], [test "x$ICONEXT" = "xxpm"])
845 AM_CONDITIONAL([ICON_EXT_TIFF], [test "x$ICONEXT" = "xtiff"])
848 dnl ==============================================
849 dnl End of Graphic Format Libraries
850 dnl ==============================================
854 dnl stdlib.h is checked here, because of conflict in jpeglib.h
855 AC_CHECK_HEADERS(stdlib.h)
858 dnl Support for PIXMAPDIR option
859 dnl ============================
860 m4_divert_push([INIT_PREPARE])dnl
861 AC_ARG_WITH([pixmapdir],
862 [AS_HELP_STRING([--with-pixmapdir=PATH], [specify where pixmaps are located [DATADIR/pixmaps]])],
864 [yes|no], [AC_MSG_ERROR([bad value '$withval' for --with-pixmapdir, expected a path]) ],
865 [/*], [], dnl Absolute path, ok
866 [\$*], [], dnl Assumes it starts with a reference to $prefix or a similar variable, ok
867 [AC_MSG_ERROR([bad path '$withval' for pixmapdir, expecting an absolute path])])],
869 m4_divert_pop([INIT_PREPARE])dnl
871 AS_IF([test "x$with_pixmapdir" != "x"],
872 [pixmapdir="$with_pixmapdir"],
873 [pixmapdir='${datadir}/pixmaps'])
874 AC_SUBST([pixmapdir])dnl
877 dnl Support for GNUSTEP_LOCAL_ROOT, for WPrefs.app
878 dnl ==============================================
879 m4_divert_push([INIT_PREPARE])dnl
880 AC_ARG_WITH([gnustepdir],
881 [AS_HELP_STRING([--with-gnustepdir=PATH], [specify the directory for GNUstep applications])],
883 [yes|no], [AC_MSG_ERROR([bad value '$withval' for --with-gnustepdir, expected a path]) ],
884 [/*], [], dnl Absolute path, ok
885 [\$*], [], dnl Assumes it starts with a reference to $prefix or a similar variable, ok
886 [AC_MSG_ERROR([bad path '$withval' for gnustepdir, expecting an absolute path])])],
887 [dnl If no command-line option was given, we use $GNUSTEP_LOCAL_ROOT if it was set
888 with_gnustepdir="$GNUSTEP_LOCAL_ROOT"])
889 m4_divert_pop([INIT_PREPARE])dnl
891 AS_IF([test "x$with_gnustepdir" = "x"],
892 [dnl No path specified, use default
893 wprefs_base_dir=${prefix}
894 wprefs_datadir="${datadir}/WPrefs"
895 wprefs_bindir="${bindir}"],
896 [dnl User specified base path
897 wprefs_base_dir="$with_gnustepdir/Applications"
898 wprefs_datadir="$wprefs_base_dir/WPrefs.app"
899 wprefs_bindir="$wprefs_base_dir/WPrefs.app"])
900 AC_SUBST([wprefs_datadir])dnl
901 AC_SUBST([wprefs_bindir])dnl
904 dnl Support for PKGCONFDIR option
905 dnl =============================
906 m4_divert_push([INIT_PREPARE])dnl
907 AC_ARG_WITH([pkgconfdir],
908 [AS_HELP_STRING([--with-pkgconfdir=PATH], [specify where global defaults are located [SYSCONFDIR/WindowMaker]])],
910 [yes|no], [AC_MSG_ERROR([bad value '$withval' for --with-pkgconfdir, expected a path]) ],
911 [/*], [], dnl Absolute path, ok
912 [\$*], [], dnl Assumes it starts with a reference to $prefix or a similar variable, ok
913 [AC_MSG_ERROR([bad path '$withval' for pkgconfdir, expecting an absolute path])])],
914 [with_pkgconfdir=""])
915 m4_divert_pop([INIT_PREPARE])dnl
917 dnl Provide a message when trying to use "--with-defsdatadir" so that user can update its
918 dnl arguments. Otherwise only a warning is issued, which is likely to be missed, which will
919 dnl lead to perceived misbehaviour much later (and hard to debug).
920 WM_DENY_ARG_WITH([defsdatadir],
921 [AC_MSG_ERROR([option "--with-defsdatadir" have been replaced by "--with-pkgconfdir"])])
923 AS_IF([test "x$with_pkgconfdir" != "x"],
924 [pkgconfdir="$with_pkgconfdir"],
925 [pkgconfdir='${sysconfdir}/${PACKAGE_TARNAME}'])
926 AC_SUBST([pkgconfdir])dnl
929 dnl Enable User Defined Menu thing
930 dnl ==============================
931 m4_divert_push([INIT_PREPARE])dnl
932 AC_ARG_ENABLE([usermenu],
933 [AS_HELP_STRING([--enable-usermenu], [user defined menus for applications])],
934 [AS_CASE([$enableval],
936 [AC_MSG_ERROR([bad value '$enableval' for --enable-usermenu])])],
937 [enable_usermenu=no])
938 m4_divert_pop([INIT_PREPARE])dnl
940 AS_IF([test "x$enable_usermenu" = "xyes"],
941 [AC_DEFINE([USER_MENU], [1],
942 [define if you want user defined menus for applications])])
945 dnl Support for removing non-public symbols from a library
946 dnl ======================================================
950 dnl Add the post-poned compilation options
951 dnl ======================================
952 WM_CFLAGS_GCC_OPTION_POSTPONED
955 AC_SUBST(lib_search_path)
956 AC_SUBST(inc_search_path)
959 dnl Spit out the configuration
960 dnl ==========================
965 wrlib/Makefile wrlib/po/Makefile
969 WINGs/Makefile WINGs/WINGs/Makefile WINGs/po/Makefile
970 WINGs/Documentation/Makefile WINGs/Resources/Makefile WINGs/Extras/Makefile
971 WINGs/Examples/Makefile WINGs/Tests/Makefile
973 dnl Window Maker's core
974 src/Makefile src/wconfig.h po/Makefile
975 doc/Makefile doc/build/Makefile
976 doc/sk/Makefile doc/cs/Makefile doc/ru/Makefile
977 WindowMaker/Makefile WindowMaker/Backgrounds/Makefile
978 WindowMaker/Defaults/Makefile WindowMaker/IconSets/Makefile
979 WindowMaker/Icons/Makefile WindowMaker/Pixmaps/Makefile
980 WindowMaker/Styles/Makefile WindowMaker/Themes/Makefile
983 WPrefs.app/Makefile WPrefs.app/po/Makefile
984 WPrefs.app/tiff/Makefile WPrefs.app/xpm/Makefile
986 dnl Command-line utilities
987 util/Makefile util/po/Makefile
989 dnl Misceleanous stuff
997 dnl Provide a summary of the config
998 dnl ===============================
1000 echo "Window Maker was configured as follows:"
1002 echo "Installation path prefix : $prefix"
1003 echo "Installation path for binaries : $_bindir"
1004 echo "Installation path for libraries : $_libdir"
1005 echo "Installation path for WPrefs.app : $wprefs_base_dir" | sed -e 's|\${prefix}|'"$prefix|"
1006 echo "Supported core features: :$supported_core"
1007 echo "Supported X extensions: :$supported_xext"
1008 echo "Supported graphic format libraries :$supported_gfx"
1009 echo "Unsupported features :$unsupported"
1010 echo "Pango text layout support in WINGs : $pango"
1011 echo "Translated languages to support :$supported_locales"
1012 AS_IF([test "x$WEB_REPO_ROOT" != "x"],
1013 [AS_ECHO(["Git repository for WMaker's Website : $WEB_REPO_ROOT"]) ])
1014 AS_IF([test "x$debug" = "xyes"],
1015 [AS_ECHO(["Debug enabled: CFLAGS = $CFLAGS"]) ])
1018 AS_IF([test "x$wm_cv_prog_cc_nestedfunc" != "xyes"],
1019 [AC_MSG_WARN([[Your compiler does not support Nested Function, work-around enabled]])])
1021 AS_IF([test "x$supported_locales" = "x"],
1022 [AC_MSG_WARN([[No language from \$LINGUAS are supported]])])
1024 AS_IF([test "x$enable_jpeg" = xno], [dnl
1025 AS_ECHO(["WARNING WARNING WARNING WARNING WARNING WARNING WARNING"])
1027 AS_ECHO(["JPEG support will not be included because the JPEG library is"])
1028 AS_ECHO(["not installed correctly or was not found. Background images"])
1029 AS_ECHO(["from themes will not display as they usually are JPEG files."])
1031 AS_ECHO(["To fix, download and install the jpeg library and/or make sure you"])
1032 AS_ECHO(["installed all jpeg related packages, SPECIALLY the development packages"])
1033 AS_ECHO(["like jpeg-dev (if you use some prepackaged version of libjpeg)."])
1035 AS_ECHO(["WARNING WARNING WARNING WARNING WARNING WARNING WARNING"])dnl
1038 AS_IF([test "x$LINGUAS" != "x"],
1039 [AS_IF([test "X$wm_cv_library_constructors" = "Xlegacy"],
1040 [AC_MSG_WARN([I18N is enabled, but library constructor attribute is not supported])
1041 AS_ECHO([" If you have translation problems in lib WRaster, yet you know that the translation"])
1042 AS_ECHO([" file (po) is valid, this could be a cause."])
1048 dnl This is for Emacs. I'm lazy, I know... (nicolai)
1049 dnl ================================================
1050 dnl Local Variables:
1051 dnl compile-command: "autoconf"