configure: add macro to check compiler flag '-Wstrict-prototype'
[wmaker-crm.git] / configure.ac
blobdb34dd3ad2e75a2deeeb67ec4b96f0e62ba0abb9
1 dnl
2 dnl Window Maker autoconf input.
3 dnl
4 dnl Process with:
5 dnl               aclocal
6 dnl               autoheader
7 dnl               autoconf
8 dnl               libtoolize --force --automake
9 dnl               automake -a --gnu --include-deps
10 dnl
11 dnl
14 AC_INIT(WindowMaker, 0.95.6, , WindowMaker, http://www.windowmaker.org/)
15 AC_CONFIG_SRCDIR(src/WindowMaker.h)
16 AC_CONFIG_MACRO_DIR([m4])
17 AC_CONFIG_HEADERS(config.h)
18 AM_INIT_AUTOMAKE([1.11 silent-rules])
20 AH_BOTTOM([#include "config-paths.h"])
22 dnl libtool library versioning
23 dnl =======================
24 dnl
25 dnl current
26 dnl revision
27 dnl age
28 dnl
29 dnl 1. Start with version information of ‘0:0:0’ for each libtool library.
30 dnl 2. Update the version information only immediately before a public
31 dnl release of your software. More frequent updates are unnecessary, and
32 dnl only guarantee that the current interface number gets larger faster.
33 dnl 3. If the library source code has changed at all since the last
34 dnl update, then increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
35 dnl 4. If any interfaces have been added, removed, or changed since the
36 dnl last update, increment current, and set revision to 0.
37 dnl 5. If any interfaces have been added since the last public release,
38 dnl then increment age.
39 dnl 6. If any interfaces have been removed or changed since the last
40 dnl public release, then set age to 0.
41 dnl
42 dnl libwraster
43 WRASTER_CURRENT=5
44 WRASTER_REVISION=0
45 WRASTER_AGE=0
46 WRASTER_VERSION=$WRASTER_CURRENT:$WRASTER_REVISION:$WRASTER_AGE
47 AC_SUBST(WRASTER_VERSION)
48 dnl
49 dnl libWINGs
50 WINGS_CURRENT=3
51 WINGS_REVISION=0
52 WINGS_AGE=0
53 WINGS_VERSION=$WINGS_CURRENT:$WINGS_REVISION:$WINGS_AGE
54 AC_SUBST(WINGS_VERSION)
55 dnl
56 dnl libWUtil
57 WUTIL_CURRENT=5
58 WUTIL_REVISION=0
59 WUTIL_AGE=0
60 WUTIL_VERSION=$WUTIL_CURRENT:$WUTIL_REVISION:$WUTIL_AGE
61 AC_SUBST(WUTIL_VERSION)
64 dnl Checks for host/os name
65 dnl =======================
66 dnl AC_CANONICAL_HOST -- already done by AC_PROG_LIBTOOL
68 dnl Checks for programs.
69 dnl ===================
70 AC_PROG_CC
71 WM_PROG_CC_C11
72 AC_PROG_LN_S
73 AC_PROG_GCC_TRADITIONAL
74 AC_PROG_LIBTOOL
77 dnl Debugging Options
78 dnl =================
79 AC_ARG_ENABLE(debug,
80     [AS_HELP_STRING([--enable-debug], [enable debugging options, @<:@default=no@:>@])],
81     [AS_CASE(["$enableval"],
82         [yes], [debug=yes],
83         [no],  [debug=no],
84         [AC_MSG_ERROR([bad value $enableval for --enable-debug])] )],
85     [debug=no])
86 AS_IF([test "x$debug" = "xyes"],
87     [dnl This flag should have already been detected and added, but if user
88      dnl provided an explicit CFLAGS it may not be the case
89      AS_IF([echo " $CFLAGS " | grep " -g " 2>&1 > /dev/null],
90            [@%:@ Debug symbol already activated],
91            [AX_CFLAGS_GCC_OPTION([-g])])
92      dnl
93      dnl This flag generally makes debugging nightmarish, remove it if present
94      CFLAGS="`echo "$CFLAGS" | sed -e 's/-fomit-frame-pointer *//' `"
95      dnl
96      dnl Enable internal debug code
97      CPPFLAGS="$CPPFLAGS -DDEBUG"
98 ],  [dnl
99      dnl When debug is not enabled, the user probably does not wants to keep
100      dnl assertions in the final program
101      CPPFLAGS="$CPPFLAGS -DNDEBUG"
105 AX_CFLAGS_GCC_OPTION(-Wall)
106 AX_CFLAGS_GCC_OPTION(-Wextra -Wno-sign-compare)
107 AS_IF([test "x$debug" = "xyes"],
108     [dnl When debug is enabled, we try to activate more checks from
109      dnl the compiler. They are on independant check because the
110      dnl macro checks all the options at once, but we may have cases
111      dnl where some options are not supported and we don't want to
112      dnl loose all of them.
113      dnl
114      dnl Floating-point comparison is not a good idea
115      AX_CFLAGS_GCC_OPTION([-Wfloat-equal])
116      dnl
117      dnl Try to report misuses of '&' versus '&&' and similar
118      AX_CFLAGS_GCC_OPTION([-Wlogical-op])
119      dnl
120      dnl Reports declaration of global things that are done inside
121      dnl a local environment, instead of using the appropriate
122      dnl header
123      AX_CFLAGS_GCC_OPTION([-Wnested-externs])
124      dnl
125      dnl Use of 'sizeof()' on inappropriate pointer types
126      AX_CFLAGS_GCC_OPTION([-Wpointer-arith])
127      dnl
128      dnl Having more than 1 prototype for a function makes code updates
129      dnl more difficult, so try to avoid it
130      AX_CFLAGS_GCC_OPTION([-Wredundant-decls])
131      dnl
132      dnl Prototype of function must be explicit, no deprecated K&R syntax
133      dnl and no empty argument list which prevents compiler from doing
134      dnl type checking when using the function
135      WM_CFLAGS_GCC_OPTION_STRICTPROTO
136      dnl
137      dnl Proper attributes helps the compiler to produce better code
138      WM_CFLAGS_CHECK_FIRST([format attribute suggest],
139          [-Wsuggest-attribute=format  dnl new gcc syntax
140           -Wmissing-format-attribute  dnl old gcc syntax, clang
141          ])
142      WM_CFLAGS_CHECK_FIRST([no-return attribute suggest],
143          [-Wsuggest-attribute=noreturn  dnl gcc syntax
144           -Wmissing-noreturn            dnl clang syntax
145          ])
146      dnl
147      dnl The use of trampolines cause code that can crash on some
148      dnl secured OS, and in a more general way generate binary code
149      dnl that may not be optimal
150      AX_CFLAGS_GCC_OPTION([-Wtrampolines])
151      dnl
152      dnl GCC provides a couple of checks to detect incorrect macro uses
153      AX_CFLAGS_GCC_OPTION([-Wundef])
154      WM_CFLAGS_GCC_OPTION_UNUSEDMACROS
155 ], [dnl
156      dnl When debug not enabled, we try to avoid some non-necessary
157      dnl messages from the compiler
158      dnl
159      dnl To support legacy X servers, we have sometime to use
160      dnl functions marked as deprecated. We do not wish our users
161      dnl to be worried about it
162      AX_CFLAGS_GCC_OPTION([-Wno-deprecated])
163      AX_CFLAGS_GCC_OPTION([-Wno-deprecated-declarations])
167 dnl Support for Nested Functions by the compiler
168 dnl ============================================
169 WM_PROG_CC_NESTEDFUNC
172 dnl Posix thread
173 dnl =================
174 AX_PTHREAD
177 dnl Tracking on what is detected for final status
178 dnl =============================================
179 unsupported=""
180 supported_xext=""
181 supported_gfx=""
184 dnl Platform-specific Makefile setup
185 dnl ================================
186 AS_CASE(["$host"],
187     [*-*-linux*|*-*-cygwin*|*-gnu*], [WM_OSDEP="linux" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600"],
188     [*-*-freebsd*|*-k*bsd-gnu*],     [WM_OSDEP="bsd"   ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600 -DFREEBSD"],
189     [*-*-netbsd*],                   [WM_OSDEP="bsd"   ; CPPFLAGS="$CPPFLAGS -DNETBSD"],
190     [*-*-openbsd*],                  [WM_OSDEP="bsd"   ; CPPFLAGS="$CPPFLAGS -DOPENBSD"],
191     [*-*-dragonfly*],                [WM_OSDEP="bsd"   ; CPPFLAGS="$CPPFLAGS -DDRAGONFLYBSD"],
192     [*-apple-darwin*],               [WM_OSDEP="darwin"],
193     [*-*-solaris*],                  [WM_OSDEP="stub"],  dnl  solaris.c when done
194     [WM_OSDEP="stub"])
195 AM_CONDITIONAL([WM_OSDEP_LINUX],   [test "x$WM_OSDEP" = "xlinux"])
196 AM_CONDITIONAL([WM_OSDEP_BSD],     [test "x$WM_OSDEP" = "xbsd"])
197 AM_CONDITIONAL([WM_OSDEP_DARWIN],  [test "x$WM_OSDEP" = "xdarwin"])
198 AM_CONDITIONAL([WM_OSDEP_GENERIC], [test "x$WM_OSDEP" = "xstub"])
201 dnl the prefix
202 dnl ==========
204 dnl move this earlier in the script... anyone know why this is handled
205 dnl in such a bizarre way?
207 test "x$prefix" = xNONE && prefix=$ac_default_prefix
208 dnl Let make expand exec_prefix.
209 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
212 _bindir=`eval echo $bindir`
213 _bindir=`eval echo $_bindir`
215 lib_search_path='-L${libdir}'
217 inc_search_path='-I${includedir}'
219 dnl ===============================================
220 dnl Specify paths to look for libraries and headers
221 dnl ===============================================
222 AC_ARG_WITH(libs-from, AS_HELP_STRING([--with-libs-from], [pass compiler flags to look for libraries]),
223         [lib_search_path="$withval $lib_search_path"])
225 AC_ARG_WITH(incs-from, AS_HELP_STRING([--with-incs-from], [pass compiler flags to look for header files]),
226         [inc_search_path="$withval $inc_search_path"])
229 dnl Boehm GC
230 dnl ========
231 AC_ARG_ENABLE([boehm-gc],
232     [AS_HELP_STRING([--enable-boehm-gc], [use Boehm GC instead of the default libc malloc() [default=no]])],
233     [AS_CASE(["$enableval"],
234         [yes], [with_boehm_gc=yes],
235         [no],  [with_boehm_gc=no],
236         [AC_MSG_ERROR([bad value $enableval for --enable-boehm-gc])] )],
237     [with_boehm_gc=no])
238 AS_IF([test "x$with_boehm_gc" = "xyes"],
239     AC_SEARCH_LIBS([GC_malloc], [gc],
240         [AC_DEFINE(USE_BOEHM_GC, 1, [Define if Boehm GC is to be used])],
241         [AC_MSG_FAILURE([--enable-boehm-gc specified but test for libgc failed])]))
244 dnl LCOV
245 dnl ====
246 AC_ARG_ENABLE([lcov],
247     [AS_HELP_STRING([--enable-lcov[=output-directory]], [enable coverage data generation using LCOV (GCC only) [default=no]])],
248     [],
249     [enable_lcov=no])
251 AS_IF([test "x$enable_lcov" != "xno"],
252     [AX_CFLAGS_GCC_OPTION(-fprofile-arcs -ftest-coverage)
253     AS_IF([test "x$enable_lcov" = "xyes"],
254         [lcov_output_directory="coverage-report"],
255         [lcov_output_directory="${enable_lcov}/coverage-report"])
256     AC_SUBST(lcov_output_directory)])
258 AM_CONDITIONAL([USE_LCOV], [test "x$enable_lcov" != "xno"])
261 dnl ============================
262 dnl Checks for library functions
263 dnl ============================
264 dnl not used anywhere
265 AC_FUNC_MEMCMP
266 AC_FUNC_VPRINTF
267 WM_FUNC_SECURE_GETENV
268 AC_CHECK_FUNCS(gethostname select poll strcasecmp strncasecmp \
269                setsid mallinfo mkstemp sysconf)
270 AC_SEARCH_LIBS([strerror], [cposix])
272 dnl nanosleep is generally available in standard libc, although not always the
273 dnl case. One known example is Solaris which needs -lrt
274 AC_SEARCH_LIBS([nanosleep], [rt], [],
275     [AC_MSG_ERROR([function 'nanosleep' not found, please report to wmaker-dev@lists.windowmaker.org])])
278 dnl Check for strlcat/strlcpy
279 dnl =========================
280 AC_ARG_WITH([libbsd],
281   [AS_HELP_STRING([--without-libbsd], [do not use libbsd for strlcat and strlcpy [default=check]])],
282   [AS_IF([test "x$with_libbsd" != "xno"],
283     [with_libbsd=bsd]
284     [with_libbsd=]
285   )],
286   [with_libbsd=bsd])
288 tmp_libs=$LIBS
289 AC_SEARCH_LIBS([strlcat],[$with_libbsd],
290   [AC_DEFINE(HAVE_STRLCAT, 1, [Define if strlcat is available])],
291   [],
292   []
294 AC_SEARCH_LIBS([strlcpy],[$with_libbsd],
295   [AC_DEFINE(HAVE_STRLCAT, 1, [Define if strlcpy is available])],
296   [],
297   []
299 LIBS=$tmp_libs
301 LIBBSD=
302 AS_IF([test "x$ac_cv_search_strlcat" = "x-lbsd" -o "x$ac_cv_search_strlcpy" = "x-lbsd"],
303   [LIBBSD=-lbsd
304    AC_CHECK_HEADERS([bsd/string.h])]
306 AC_SUBST(LIBBSD)
308 dnl Check for OpenBSD kernel memory interface - kvm(3)
309 dnl ==================================================
310 AS_IF([test "x$WM_OSDEP" = "xbsd"],
311   AC_SEARCH_LIBS([kvm_openfiles], [kvm]) )
313 dnl Check for inotify
314 dnl =================
315 AC_CHECK_HEADERS(sys/inotify.h, AC_DEFINE(HAVE_INOTIFY, 1, Check for inotify))
318 dnl Check for syslog 
319 dnl =================
320 AC_CHECK_HEADERS([syslog.h], [AC_DEFINE([HAVE_SYSLOG], [1], [Check for syslog])])
323 dnl Checks for header files.
324 dnl =======================
325 AC_HEADER_SYS_WAIT
326 AC_HEADER_TIME
327 AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h libintl.h poll.h malloc.h ctype.h \
328                  string.h strings.h)
331 dnl Checks for typedefs, structures, and compiler characteristics.
332 dnl ==============================================================
333 AC_DECL_SYS_SIGLIST
334 AC_C_CONST
335 AC_C_INLINE
336 WM_C_NORETURN
337 AC_TYPE_SIZE_T
338 AC_TYPE_PID_T
339 AC_TYPE_SIGNAL
342 dnl pkg-config
343 dnl ==========
344 dnl AC_ARG_VAR(PKGCONFIG, [pkg-config command])
345 AC_CHECK_PROG(PKGCONFIG, pkg-config, pkg-config) 
347 dnl gettext
348 dnl =======
350 dnl AM_GNU_GETTEXT
352 INTLIBS=""
354 AC_CHECK_FUNC(gettext, [HAVEGETTEXT="yes"], 
355         AC_CHECK_LIB(intl, gettext, [INTLIBS="-lintl" HAVEGETTEXT="yes"],
356                          INTLIBS="" ))
358 AC_CHECK_PROG(XGETTEXT, xgettext, xgettext)
360 if test "$XGETTEXT" != ""; then 
361     if $XGETTEXT --help 2>&1 | grep illegal >/dev/null ; then
362         echo "xgettext isn't GNU version"
363         XGETTEXT=""
364     fi
367 if test "$LINGUAS" != ""; then
368     if test "$XGETTEXT" != "" -a "$HAVEGETTEXT" != ""; then
369         AC_DEFINE(I18N, 1, [Internationalization (I18N) support (set by configure)])
370         PO=""
371         echo "xgettext and gettext() exist; will build i18n support for $LINGUAS"
372     else
373         LINGUAS=""
374         PO=""
375         echo "xgettext and libintl.a don't both exist; will not build i18n support"
376     fi
377 else
378         INTLIBS=""
379         MOFILES=""
380         WPMOFILES=""
381         UTILMOFILES=""
382         PO=""
386 dnl The Tower of Babel
387 dnl ==================
389 dnl List of supported locales
390 dnl =========================
391 supported_locales="be bg bs ca cs da de el es et fi fr gl hr hu hy it ja ko ms nl no pl pt ro ru sk sv tr zh_CN zh_TW"
392 supported_wprefs_locales="bg ca cs de es et fi fr hr hu it ja ko nl pt ru sk zh_CN zh_TW"
393 supported_wings_locales="bg ca cs de fr hu nl sk"
394 supported_util_locales="de es fr nl pt"
396 for lang in $LINGUAS; do
397         ok=0
398         for l in $supported_locales; do
399                 if test "$l" = "$lang"; then
400                         ok=1
401                         break
402                 fi
403         done
404         if test "$ok" = 1; then
405                 MOFILES="$MOFILES $lang.mo"
406         else
407                 echo "Locale $lang is not supported."
408         fi
409         ok=0
410         for l in $supported_wprefs_locales; do
411                 if test "$l" = "$lang"; then
412                         ok=1
413                         break
414                 fi
415         done
416         if test "$ok" = 1; then
417                 WPMOFILES="$WPMOFILES $lang.mo"
418         fi
419         ok=0
420         for l in $supported_util_locales; do
421                 if test "$l" = "$lang"; then
422                         ok=1
423                         break
424                 fi
425         done
426         if test "$ok" = 1; then
427                 UTILMOFILES="$UTILMOFILES $lang.mo"
428         fi
429         ok=0
430         for l in $supported_wings_locales; do
431                 if test "$l" = "$lang"; then
432                         ok=1
433                         break
434                 fi
435         done
436         if test "$ok" = 1; then
437                 WINGSMOFILES="$WINGSMOFILES $lang.mo"
438         fi
439 done
442 dnl Added by Oliver - Support for NLSDIR option
443 dnl ===========================================
444 AC_ARG_WITH(nlsdir, AS_HELP_STRING([--with-nlsdir=PATH], [specify where the locale stuff should go]))
446 if test "x$NLSDIR" = "x"; then
447         if test "x$with_nlsdir" != "x"; then
448                 NLSDIR=$with_nlsdir
449         else
450                 NLSDIR='$(prefix)/lib/locale'
451         fi
454 menutextdomain=
455 AC_ARG_WITH(menu-textdomain, AS_HELP_STRING([--with-menu-textdomain=DOMAIN], [specify gettext domain used for menu translations]),
456         [if test "x$withval" != "xno"; then
457          menutextdomain=$withval
458          fi])
459 AC_SUBST(menutextdomain)
461 AC_SUBST(INTLIBS)
462 AC_SUBST(NLSDIR)
463 AC_SUBST(MOFILES)
464 AC_SUBST(WPMOFILES)
465 AC_SUBST(UTILMOFILES)
466 AC_SUBST(WINGSMOFILES)
467 AC_SUBST(supported_locales)
469 dnl ===========================================
470 dnl             Stuff that uses X
471 dnl ===========================================
473 AC_PATH_XTRA
475 if test $no_x; then
476     AC_MSG_ERROR([The path for the X11 files not found!
477 Make sure you have X and it's headers and libraries (the -devel packages
478 in Linux) installed.])
481 X_LIBRARY_PATH=$x_libraries
482 XCFLAGS="$X_CFLAGS"
483 XLFLAGS="$X_LIBS"
484 XLIBS="-lX11 $X_EXTRA_LIBS"
486 lib_search_path="$lib_search_path $XLFLAGS"
487 inc_search_path="$inc_search_path $XCFLAGS"
489 AC_SUBST(X_LIBRARY_PATH)
491 dnl Decide which locale function to use, setlocale() or _Xsetlocale()
492 dnl by MANOME Tomonori 
493 dnl ===========================================
494 use_locale=yes
495 AC_ARG_ENABLE(locale, AS_HELP_STRING([--disable-locale], [disable use of X locale support]),
496               use_locale=no)
498 if test "$use_locale" = yes; then
499         AC_CHECK_LIB(X11, _Xsetlocale,
500                 AC_DEFINE(X_LOCALE, 1, [define if you want support for X window's X_LOCALE (set by configure)]),,
501                 $XLFLAGS $XLIBS)
504 dnl Check whether XInternAtoms() exist
505 dnl ==================================
506 AC_CHECK_LIB(X11, XInternAtoms, 
507              AC_DEFINE(HAVE_XINTERNATOMS, 1, [define if your X server has XInternAtoms() (set by configure)]),,
508              $XLFLAGS $XLIBS)
510 dnl Check whether XConvertCase() exist
511 dnl ==================================
512 AC_CHECK_LIB(X11, XConvertCase, 
513              AC_DEFINE(HAVE_XCONVERTCASE, 1, [define if your X server has XConvertCase() (set by configure)]),,
514              $XLFLAGS $XLIBS)
516 dnl XKB keyboard language status
517 dnl ============================
518 AC_ARG_ENABLE(modelock, AS_HELP_STRING([--enable-modelock], [XKB keyboard language status support]),
519                 AC_DEFINE(XKB_MODELOCK, 1, [whether XKB language MODELOCK should be enabled]))
521 dnl XDND Drag-nd-Drop support
522 dnl ============================
523 AC_ARG_ENABLE([xdnd],
524     [AS_HELP_STRING([--disable-xdnd], [disable Drag-nd-Drop support])],
525     [AS_CASE(["$enableval"],
526         [yes|no], [],
527         [AC_MSG_ERROR([bad value $enableval for --disable-xdnd]) ]) ],
528     [enable_xdnd=yes
529   supported_xext="$supported_xext XDnD"
530   AC_DEFINE(XDND, 1, [whether Drag-nd-Drop support should be enabled])
533 dnl XShape support
534 dnl ==============
535 AC_ARG_ENABLE([shape],
536     [AS_HELP_STRING([--disable-shape], [disable shaped window extension support])],
537     [AS_CASE(["$enableval"],
538         [yes|no], [],
539         [AC_MSG_ERROR([bad value $enableval for --enable-shape]) ]) ],
540     [enable_shape=auto])
541 WM_XEXT_CHECK_XSHAPE
543 dnl MIT-SHM support
544 dnl ===============
545 AC_ARG_ENABLE([shm],
546     [AS_HELP_STRING([--disable-shm], [disable usage of MIT-SHM extension])],
547     [AS_CASE(["$enableval"],
548         [yes|no], [],
549         [AC_MSG_ERROR([bad value $enableval for --enable-shm]) ]) ],
550     [enable_shm=auto])
551 WM_XEXT_CHECK_XSHM
553 dnl X Misceleanous Utility
554 dnl ======================
555 # the libXmu is used in WRaster
556 WM_EXT_CHECK_XMU
558 dnl XINERAMA support
559 dnl ================
560 AC_ARG_ENABLE([xinerama],
561     [AS_HELP_STRING([--enable-xinerama], [enable Xinerama extension support])],
562     [AS_CASE(["$enableval"],
563         [yes|no], [],
564         [AC_MSG_ERROR([bad value $enableval for --enable-xinerama]) ]) ],
565     [enable_xinerama=auto])
566 WM_XEXT_CHECK_XINERAMA
568 dnl RandR support
569 dnl ==============
570 AC_ARG_ENABLE([randr],
571     [AS_HELP_STRING([--enable-randr], [enable RandR extension support (NOT recommended, buggy)])],
572     [AS_CASE(["$enableval"],
573         [yes|no], [],
574         [AC_MSG_ERROR([bad value $enableval for --enable-randr]) ]) ],
575     [enable_randr=no])
576 WM_XEXT_CHECK_XRANDR
579 dnl libWINGS uses math functions, check whether usage requires linking
580 dnl against libm
582 WM_CHECK_LIBM
585 dnl libWINGS uses FcPatternDel from libfontconfig
587 AC_MSG_CHECKING([for fontconfig library])
588 FCLIBS=`$PKGCONFIG fontconfig --libs`
589 if test "x$FCLIBS" = "x" ; then
590         AC_MSG_RESULT([not found])
591 else
592         AC_MSG_RESULT([found])
594 AC_SUBST(FCLIBS)
597 dnl Xft2 antialiased font support
598 dnl =============================
600 xft=yes
601 XFTLIBS=""
603 if test "x$PKGCONFIG" != x -a "`$PKGCONFIG xft; echo $?`" = 0; then
604         XFTCONFIG="$PKGCONFIG xft"
605         pkgconfig_xft=yes
606 else
607         AC_CHECK_PROG(XFTCONFIG, xft-config, xft-config)
610 AC_MSG_CHECKING([for the Xft2 library])
612 if test "x$XFTCONFIG" != x; then
613         XFTLIBS=`$XFTCONFIG --libs`
614         XFTFLAGS=`$XFTCONFIG --cflags`
615         AC_MSG_RESULT([found])
616 else
617         AC_MSG_RESULT([not found])
618         echo
619         echo "ERROR!!! libXft2 is not installed or could not be found."
620         echo "         Xft2 is a requirement for building Window Maker."
621         echo "         Please install it (along with fontconfig) before continuing."
622         echo
623         exit 1
626 minXFT="2.1.0"
627 goodxft="no"
630 dnl The macro below will use $XFTFLAGS (defined above) to find Xft.h
632 WM_CHECK_XFT_VERSION($minXFT, goodxft=yes, goodxft=no)
634 if test "$goodxft" = no; then
635         echo
636         echo "ERROR!!! libXft on this system is an old version."
637         echo "         Please consider upgrading to at least version ${minXFT}."
638         echo
639         exit 1
642 AC_SUBST(XFTFLAGS)
643 AC_SUBST(XFTLIBS)
645 dnl PANGO support
646 dnl =============
647 pango=no
648 AC_ARG_ENABLE(pango, AS_HELP_STRING([--enable-pango], [enable Pango text layout support]),
649                 pango=$enableval, pango=no)
651 PANGOFLAGS=
652 PANGOLIBS=
653 if test "$pango" = yes; then
654         PANGOLIBS=`$PKGCONFIG pangoxft --libs`
655         PANGOFLAGS=`$PKGCONFIG pangoxft --cflags`
656         if test "x$PANGOLIBS" = "x" ; then
657                 AC_MSG_RESULT([not found])
658         else
659                 AC_DEFINE(USE_PANGO, 1, [Define if Pango is to be used])
660                 AC_MSG_RESULT([found])
661         fi
663 inc_search_path="$inc_search_path $PANGOFLAGS"
664 AC_SUBST(PANGOLIBS)
666 dnl ==============================================
667 dnl         Graphic Format Libraries
668 dnl ==============================================
670 dnl XPM Support
671 dnl ===========
672 AC_ARG_ENABLE([xpm],
673     [AS_HELP_STRING([--disable-xpm], [disable use of XPM pixmaps through libXpm])],
674     [AS_CASE(["$enableval"],
675         [yes|no], [],
676         [AC_MSG_ERROR([bad value $enableval for --enable-xpm])] )],
677     [enable_xpm=auto])
678 WM_IMGFMT_CHECK_XPM
681 # for wmlib
682 AC_SUBST(XCFLAGS)
683 # for test
684 AC_SUBST(XLFLAGS)
685 AC_SUBST(XLIBS)
686 AC_SUBST(X_EXTRA_LIBS)
688 dnl ===============================================
689 dnl             End of stuff that uses X
690 dnl ===============================================
692 dnl EXIF Support
693 dnl ===========
694 WM_CHECK_LIBEXIF
695 AS_IF([test "x$LIBEXIF" != "x"],
696         [AC_DEFINE(HAVE_EXIF, 1, [Define if EXIF can be used])])
698 dnl PNG Support
699 dnl ===========
700 AC_ARG_ENABLE([png],
701     [AS_HELP_STRING([--disable-png], [disable PNG support through libpng])],
702     [AS_CASE(["$enableval"],
703         [yes|no], [],
704         [AC_MSG_ERROR([bad value $enableval for --enable-png])] )],
705     [enable_png=auto])
706 WM_IMGFMT_CHECK_PNG
709 dnl JPEG Support
710 dnl ============
711 AC_ARG_ENABLE([jpeg],
712     [AS_HELP_STRING([--disable-jpeg], [disable JPEG support through libjpeg])],
713     [AS_CASE(["$enableval"],
714         [yes|no], [],
715         [AC_MSG_ERROR([bad value $enableval for --enable-jpeg])] )],
716     [enable_jpeg=auto])
717 WM_IMGFMT_CHECK_JPEG
720 dnl GIF Support
721 dnl ============
722 AC_ARG_ENABLE(gif,
723     [AS_HELP_STRING([--disable-gif], [disable GIF support through libgif or libungif])],
724     [AS_CASE(["$enableval"],
725         [yes|no], [],
726         [AC_MSG_ERROR([bad value $enableval for --enable-gif])] )],
727     [enable_gif=auto])
728 WM_IMGFMT_CHECK_GIF
731 dnl TIFF Support
732 dnl ============
733 AC_ARG_ENABLE([tiff],
734     [AS_HELP_STRING([--disable-tiff], [disable use of TIFF images through libtiff])],
735     [AS_CASE(["$enableval"],
736         [yes|no], [],
737         [AC_MSG_ERROR([bad value $enableval for --enable-tiff])] )],
738     [enable_tiff=auto])
739 WM_IMGFMT_CHECK_TIFF
742 dnl WEBP Support
743 dnl ===========
744 AC_ARG_ENABLE([webp],
745     [AS_HELP_STRING([--disable-webp], [disable WEBP support through libwebp])],
746     [AS_CASE(["$enableval"],
747         [yes|no], [],
748         [AC_MSG_ERROR([bad value $enableval for --enable-webp])] )],
749     [enable_webp=auto])
750 WM_IMGFMT_CHECK_WEBP
753 dnl MAGICK Support
754 dnl ===========
755 AC_ARG_ENABLE([magick],
756     [AS_HELP_STRING([--disable-magick], [disable MAGICK support through libMagickWand])],
757     [AS_CASE(["$enableval"],
758         [yes|no], [],
759         [AC_MSG_ERROR([bad value $enableval for --enable-magick])] )],
760     [enable_magick=auto])
761 WM_IMGFMT_CHECK_MAGICK
764 dnl PPM Support
765 dnl ===========
766 # The PPM format is always enabled because we have built-in support for the format
767 # We are not using any external library like libppm
768 supported_gfx="$supported_gfx builtin-PPM"
771 # Choice of the default format for icons
772 AS_IF([test "x$enable_tiff" != "xno"],
773     [ICONEXT="tiff"],
774     [ICONEXT="xpm"])
777 LIBRARY_SEARCH_PATH="$lib_search_path"
778 HEADER_SEARCH_PATH="$inc_search_path"
780 AC_SUBST(LIBRARY_SEARCH_PATH)
781 AC_SUBST(HEADER_SEARCH_PATH)
784 AC_SUBST(GFXLIBS)
785 AC_SUBST(ICONEXT)
786 AM_CONDITIONAL([ICON_EXT_XPM],  [test "x$ICONEXT" = "xxpm"])
787 AM_CONDITIONAL([ICON_EXT_TIFF], [test "x$ICONEXT" = "xtiff"])
790 dnl ==============================================
791 dnl         End of Graphic Format Libraries
792 dnl ==============================================
796 dnl stdlib.h is checked here, because of conflict in jpeglib.h
797 AC_CHECK_HEADERS(stdlib.h)
799 # AC_PREFIX_PROGRAM(wmaker)
801 dnl Support for PIXMAPDIR option
802 dnl ============================
803 AC_ARG_WITH(pixmapdir, AS_HELP_STRING([--with-pixmapdir=PATH], [specify where pixmaps are located [DATADIR/pixmaps]]))
805 if test "x$with_pixmapdir" != "x"; then
806         pixmapdir=$with_pixmapdir
807 else
808         pixmapdir='${datadir}/pixmaps'
810 AC_SUBST(pixmapdir)
813 dnl Support for GNUSTEP_LOCAL_ROOT, for WPrefs.app
814 dnl ==============================================
816 AC_ARG_WITH(gnustepdir, AS_HELP_STRING([--with-gnustepdir=PATH], [specify the directory for GNUstep applications]))
818 if test "x`echo $with_gnustepdir | grep ^/`" != "x"; then
819     appspath=$with_gnustepdir
822 if test "x$appspath$GNUSTEP_LOCAL_ROOT" = "x"; then
823     wprefs_base_dir=${prefix}
824     wprefs_datadir="${datadir}/WPrefs"
825     wprefs_bindir="${bindir}"
826 else
827     gnustepdir=$appspath
829     if test "x$GNUSTEP_LOCAL_ROOT" != "x" ; then
830         gnustepdir=`echo "$GNUSTEP_LOCAL_ROOT" | sed -e "s|^${prefix}|prefix|"`
831         gnustepdir=`echo $gnustepdir | sed -e 's|^prefix|${prefix}|'`
832     fi
834     wprefs_base_dir=$gnustepdir/Applications
835     wprefs_datadir=$wprefs_base_dir/WPrefs.app
836     wprefs_bindir=$wprefs_base_dir/WPrefs.app
839 AC_SUBST(wprefs_datadir)
840 AC_SUBST(wprefs_bindir)
843 dnl Enable User Defined Menu thing
844 dnl ==============================
845 AC_ARG_ENABLE(usermenu, AS_HELP_STRING([--enable-usermenu], [user defined menus for applications]),
846 if test "$enableval" = yes; then
847         AC_DEFINE(USER_MENU, 1, [define if you want user defined menus for applications])
851 gl_LD_VERSION_SCRIPT
854 dnl Add the post-poned compilation options
855 dnl ======================================
856 WM_CFLAGS_GCC_OPTION_POSTPONED
859 AC_OUTPUT(Makefile po/Makefile util/Makefile util/po/Makefile test/Makefile \
860         WINGs/Makefile WINGs/WINGs/Makefile WINGs/Documentation/Makefile \
861         WINGs/Examples/Makefile WINGs/Resources/Makefile WINGs/Tests/Makefile \
862         WINGs/Extras/Makefile WINGs/po/Makefile \
863         wmlib/Makefile wrlib/Makefile wrlib/tests/Makefile \
864         src/Makefile src/wconfig.h \
865         doc/Makefile doc/sk/Makefile doc/cs/Makefile \
866         doc/ru/Makefile \
867         WindowMaker/Makefile WindowMaker/Backgrounds/Makefile \
868         WindowMaker/Defaults/Makefile WindowMaker/IconSets/Makefile \
869         WindowMaker/Icons/Makefile WindowMaker/Pixmaps/Makefile \
870         WindowMaker/Styles/Makefile WindowMaker/Themes/Makefile \
871         WPrefs.app/Makefile WPrefs.app/tiff/Makefile WPrefs.app/xpm/Makefile \
872         WPrefs.app/po/Makefile )
875 dnl Output some helpful data for compiling wraster and WINGs/WUtil apps
876 dnl ===================================================================
878 dnl echo "WFLAGS=\"$LIBPL_INC_PATH -I$prefix/include\"" > WINGs-flags
879 dnl echo "WLIBS=\"-L$exec_prefix/lib -lWINGs -lwraster $LIBPL_LIBS $GFXLIBS -lm\""\
880 dnl     | sed -e 's|\$(prefix)|'"$prefix|" >> WINGs-flags
882 dnl The #lp# and #rp# stuff below is a hack because [ and ] get lost when
883 dnl parsed by m4
885 AC_SUBST(lib_search_path)
886 AC_SUBST(inc_search_path)
889 dnl Spit out the configuration
890 dnl ==========================
892 if test "x$MOFILES" = "x"; then
893         mof=None
894 else
895         mof=`echo $MOFILES`
898 if test "x$MOFILES" = "x"; then
899         languages=None
900 else
901         languages=`echo $MOFILES | sed 's/.mo//g'`
904 echo
905 echo "Window Maker was configured as follows:"
906 echo
907 echo "Installation path prefix            : $prefix"
908 echo "Installation path for binaries      : $_bindir"
909 echo "Installation path for libraries     : $libdir"
910 echo "Installation path for WPrefs.app    : $wprefs_base_dir" | sed -e 's|\${prefix}|'"$prefix|"
911 echo "Supported X extensions:             :$supported_xext"
912 echo "Supported graphic format libraries  :$supported_gfx"
913 echo "Unsupported features                :$unsupported"
914 echo "Antialiased text support in WINGs   : $xft"
915 echo "Pango text layout support in WINGs  : $pango"
916 echo "Translated message files to install : $mof"
917 dnl echo "Supported languages beside English  : $languages"
918 if test "x$MOFILES" != "x"; then
919         echo "Installation path for translations  : $NLSDIR" | sed -e 's|\$(prefix)|'"$prefix|"
921 AS_IF([test "x$debug" = "xyes"],
922     [AS_ECHO(["Debug enabled: CFLAGS = $CFLAGS"]) ])
923 echo
925 AS_IF([test "x$wm_cv_prog_cc_nestedfunc" != "xyes"],
926     [AC_MSG_WARN([[Your compiler does not support Nested Function, work-around enabled]])])
928 dnl WM_PRINT_REDCRAP_BUG_STATUS
930 AS_IF([test "x$enable_jpeg" = xno], [dnl
931     AS_ECHO(["WARNING   WARNING   WARNING   WARNING   WARNING   WARNING   WARNING"])
932     AS_ECHO([])
933     AS_ECHO(["JPEG support will not be included because the JPEG library is"])
934     AS_ECHO(["not installed correctly or was not found. Background images"])
935     AS_ECHO(["from themes will not display as they usually are JPEG files."])
936     AS_ECHO([])
937     AS_ECHO(["To fix, download and install the jpeg library and/or make sure you"])
938     AS_ECHO(["installed all jpeg related packages, SPECIALLY the development packages"])
939     AS_ECHO(["like jpeg-dev (if you use some prepackaged version of libjpeg)."])
940     AS_ECHO([])
941     AS_ECHO(["WARNING   WARNING   WARNING   WARNING   WARNING   WARNING   WARNING"])dnl
945 dnl This is for Emacs.  I'm lazy, I know... (nicolai)
946 dnl ================================================
947 dnl Local Variables:
948 dnl compile-command: "autoconf"
949 dnl End: