1 dnl Initialize autoconf and automake
3 AC_CONFIG_SRCDIR(src/main.c)
5 AM_INIT_AUTOMAKE(adesklets,0.4.10)
10 dnl Locate required external software
12 if test "x$CPP" != 'x'; then
18 if test "x$LEX" != 'xflex'; then
20 -----------------------------------------------------
21 `flex' was not found on your system. If you encounter
22 problems recompiling a `l' file, please try `flex'
23 first. You can get it from any GNU archive site.
24 You will not need `flex' as long as you do not
26 ----------------------------------------------------])
29 if test "x$YACC" != "xbison -y"; then
31 -----------------------------------------------------
32 Nor `byacc' or `yacc' parsers had been used
33 for developing adesklets. If you encounter problems
34 recompiling a `y' file, please try `bison' instead.
35 You can get it from any GNU archive site. You will
36 not need `bison' as long as you do not modify
38 -----------------------------------------------------])
42 dnl Check for python support
44 AC_ARG_WITH(python-support,
45 [ --without-python-support
46 do not install adesklets python package
47 Do not set this option unless you have
50 if test x$withval = "xyes"; then
52 AC_ARG_WITH(python-force-detection,
53 [ --with-python-force-detection
54 bypass all the python version check mechanism.
55 When using this, make sure you have a version
56 greater or egal to python 2.3 installed
57 as 'python' in your path [default=no]])
59 if test x$withval = "xno"; then
66 AC_ARG_WITH(python-install-submission-scripts,
67 [ --with-python-install-submission-scripts
68 install in the path the submission-related scripts
69 from submit/ in the $PREFIX/bin program path.
70 Useful for desklets author [default=no]])
72 if test x$withval = "xyes"; then
73 AM_CONDITIONAL(PYTHON_INSTALL_SUBMISSION_SCRIPTS, true)
75 AM_CONDITIONAL(PYTHON_INSTALL_SUBMISSION_SCRIPTS, false)
77 AC_CHECK_FUNCS(sigprocmask,
78 [HAVE_SIGPROCMASK="#define HAVE_SIGPROCMASK 1", SIGPROC=yes],
79 [HAVE_SIGPROCMASK="#undef HAVE_SIGPROCMASK"])
81 HAVE_SIGPROCMASK="#undef HAVE_SIGPROCMASK"
83 AC_SUBST(HAVE_SIGPROCMASK)
84 AM_CONDITIONAL(PYTHON_SUPPORT, test "x$PYTHON" != "x")
85 AM_CONDITIONAL(PYTHON_INSTALL_SUBMISSION_SCRIPTS, true)
88 AC_PATH_PROG(HELP2MAN, help2man)
89 AM_CONDITIONAL(HELP2MAN_SUPPORT, test "x$HELP2MAN" != "x")
92 AC_PATH_PROG(TIDY,tidy)
95 AC_PATH_PROG(DOXYGEN,doxygen)
96 AM_CONDITIONAL(DOXYGEN_SUPPORT, test "x$DOXYGEN" != "x")
99 AM_CONDITIONAL(MAKEINFO_SUPPORT, test "x$MAKEINFO:" != "x")
101 dnl Try to enforce ISO C (iso9899 1999)
102 dnl This will more likely work
103 dnl only with gcc. In fact,
104 dnl expect for variadic macros, this program
105 dnl should be ansi C (ISO C90).
107 CFLAGS="$CFLAGS -std=c99 -pedantic -Wall"
108 AC_MSG_CHECKING([for ISO C99 warnings generation])
116 AC_MSG_RESULT([yes]),
121 dnl Define source to be BSD compliant (ISO C, POSIX, and 4.3BSD)
122 AC_DEFINE(_BSD_SOURCE,1,[Source is BSD compliant (ISO C, POSIX and 4.3BSD)])
123 if test "x`uname`" = xNetBSD; then
124 dnl NetBSD (at least version 1.6.1) is following the standard less closely than
125 dnl the other... Hence, we declare the source specifically as _POSIX_SOURCE
126 dnl instead of the newer _POSIX_C_SOURCE 199309
127 AC_DEFINE(_POSIX_SOURCE,1,[Source is POSIX 1 compliant (IEEE Std 1003.1)])
129 dnl For some unspecified reason, it as been reported than FreeBSD [5|6].x
130 dnl doesn't like those POSIX keywords either
131 UNAME_REDUX=`uname -r -s | sed 's/\..*//' 2> /dev/null`
132 if test "$UNAME_REDUX" != 'FreeBSD 5' && test "$UNAME_REDUX" != 'FreeBSD 6'
134 AC_DEFINE(_POSIX_C_SOURCE,199309,[Source is POSIX 4 compliant (IEEE Std 1003.1b)])
138 dnl Check for system header files
140 AC_CHECK_HEADERS(stdio.h stdarg.h errno.h fcntl.h signal.h time.h math.h sys/time.h sys/types.h sys/stat.h grp.h pwd.h libgen.h dirent.h iconv.h)
143 dnl This will filter out optimisation switch (-O[s0-9])
146 debug, [ --enable-debug enable debugging symbols and supplementary
147 messages generation in final binary])
150 AC_MSG_CHECKING([for debugging symbols generation])
151 if test x$enableval = "xyes"; then
153 AC_DEFINE(DEBUG, 1, [Debug mode is on if defined.])
158 CFLAGS=`echo "$CFLAGS" | sed 's/^-g$//; s/^-g@<:@@<:@:space:@:>@@:>@\+// ; s/@<:@@<:@:space:@:>@@:>@\+-g$//; s/@<:@@<:@:space:@:>@@:>@\+-g@<:@@<:@:space:@:>@@:>@\+/ /'`
161 dnl SIGKILL timeout setting
163 AC_MSG_CHECKING([for sigkill timeout])
164 AC_ARG_ENABLE(sigkill-timeout,
165 [ --enable-sigkill-timeout=SEC
166 timeout (in seconds) before sending `kill'
167 signal to parent process in case of restart
168 if `term' has no effect [default=5]])
170 test $enableval -gt 0 2> /dev/null || {
172 AC_MSG_ERROR([Given sigkill timeout was not understood])
175 AC_DEFINE_UNQUOTED(SIGKILL_TIMEOUT,$enableval,
176 [Delay between SIGTERM ans SIGKILL to parent process in case of restart.])
178 dnl X polling frequency setting
181 AC_MSG_CHECKING([for polling frequency])
182 AC_ARG_ENABLE(x-polling-frequency,
183 [ --enable-x-polling-frequency=FREQ
184 frequency (in hertz) for polling the X server
185 for events. Lower values leads to less responsive,
186 but less CPU hungry desklets [default=50]])
188 test $enableval -gt 0 2> /dev/null || {
190 AC_MSG_ERROR([Positive, integer value is required as x-polling-frequency])
193 AC_CHECK_PROG(EXISTS,bc,yes,no)
194 if test $enableval -ne 50; then
195 if test x$EXISTS = "xyes"; then
196 period=`echo "1000000 / $enableval" | bc`
198 AC_MSG_WARN([Could not find the `bc' calculator to perform arithmetic
199 computation of X server polling period value. Default 50 Hz is assumed.])
203 AC_DEFINE_UNQUOTED(X_POLLING_PERIOD,$period,
204 [Polling period (in 10e-6 seconds) of stdin between two cycles of events loop.])
206 dnl Lock files directory setting
208 AC_MSG_CHECKING([for lock files directory setting])
209 AC_ARG_ENABLE(lockfiles-dir,
210 [ --enable-lockfiles-dir=DIR
211 directory to put lock files in [default=/tmp]])
213 test -d $enableval || {
215 AC_MSG_ERROR([Given lock files directory does not exist on your system])
218 AC_DEFINE_UNQUOTED(LOCKFILES_DIR,"$enableval",
219 [Directory to put lock files in.])
221 dnl Control modifier on context menu
223 AC_MSG_CHECKING([for control modifier on context menu])
224 AC_ARG_ENABLE(control-on-context-menu,
225 [ --enable-control-on-context-menu
226 force CTRL to be pressed to fire context menu
229 if test x$enableval != "xno" ; then
231 AC_DEFINE(CONTROL_ON_CONTEXT_MENU, 1,
232 [Force CTRL to be pressed to fire context menu])
237 dnl Legacy Window Manager detection code
239 AC_MSG_CHECKING([for legacy fake root window detection code])
240 AC_ARG_ENABLE(legacy-fake-root-window-detection,
241 [ --enable-legacy-fake-root-window-detection
242 Use the old code to detect fake root windows
245 if test x$enableval != "xno" ; then
247 AC_DEFINE(WM_DETECTION_OLD_STYLE, 1,
248 [Use former fake root window detection code])
253 dnl Collect various system informations strings,
254 dnl for embedding into final executable
256 WELCOME1="\"$PACKAGE $VERSION"
257 AC_CHECK_PROG(EXISTS,date,yes)
258 if test x$EXISTS = "xyes"; then
259 WELCOME1="$WELCOME1 ("`date | sed 's/@<:@@<:@:space:@:>@@:>@\+/ /g'`")"
261 WELCOME1="$WELCOME1 (unknown time)"
264 AC_CHECK_PROG(EXISTS,uname,yes)
265 if test x$EXISTS = "xyes"; then
266 if uname -rs &> /dev/null; then
267 WELCOME1="$WELCOME1, on "`uname -rs`"\""
269 WELCOME1="$WELCOME1, on an unknown OS\""
272 WELCOME1="$WELCOME1, on an unknown OS\""
274 AC_DEFINE_UNQUOTED(WELCOME_LINE_1, $WELCOME1, [Welcome message, first line.])
275 dnl Note: @<:@ and @:>@ are respective quadrigraphs for `[' and `]'
276 ${CC} --version &> /dev/null && \
277 WELCOME2="\"${CC} "`${CC} --version | sed -n '1 s/^@<:@^0-9@:>@*//p'`"\""
278 : ${WELCOME2:=\"${CC} unknown version\"}
279 AC_DEFINE_UNQUOTED(WELCOME_LINE_2, $WELCOME2, [Welcome message, second line.])
281 dnl Variables save: all changes to CFLAGS, LIBS and LDFLAGS beyond
282 dnl this point will be wiped
285 TMP_LDFLAGS="$LDFLAGS"
287 dnl Check for readline
288 AC_CHECK_LIB(ncurses, tputs, HaveLibTermcap=yes; LibTermcap=ncurses,
289 AC_CHECK_LIB(termcap, tputs, HaveLibTermcap=yes; LibTermcap=termcap,
290 AC_CHECK_LIB(curses, tputs, HaveLibTermcap=yes; LibTermcap=curses,
292 if test $HaveLibTermcap = "yes" ; then
293 LIBS="$LIBS -l$LibTermcap"
295 AC_MSG_ERROR([Could not find terminal management library for readline
296 (either ncurses, termcap or curses).])
298 AC_CHECK_LIB(readline,readline,
299 READLINE_LIBS="-l$LibTermcap -lreadline",
300 AC_MSG_ERROR([Could not find the readline library]),
304 dnl Check for libhistory support
307 [ --without-history remove history support in interactive use
310 if test x$withval = "xyes"; then
311 AC_CHECK_LIB(history,add_history,
312 READLINE_LIBS="$READLINE_LIBS -lhistory";
313 AC_DEFINE(HAVE_READLINE_HISTORY_H,1,
314 [Define to 1 if you have the <readline/history.h> header file.])
316 AC_CHECK_LIB(history,free_history_entry,
317 AC_DEFINE(HAVE_FREE_HISTORY_ENTRY,1,
318 [Define to 1 if you have the `free_history_entry' function.])),
321 if test $HaveLibHistory = "no"; then
322 AC_MSG_WARN([Could not find GNU history library in the system])
324 AC_MSG_CHECKING([for history max command lenght])
326 AC_ARG_ENABLE(history-max-command-lenght,
327 [ --enable-history-max-command-lenght=LEN
328 maximum string lenght (in characters) that a single
329 command can have and still be kept in history
330 (a lenght of zero meaning no limits) [default=256]])
333 if test $enableval -ge 0 ; then
335 AC_DEFINE_UNQUOTED(HISTORY_MAX_COMMAND_LENGHT,$enableval,
336 [maximum history string lenght.])
339 AC_MSG_ERROR([history max command lenght must be positive or null])
343 AC_SUBST(READLINE_LIBS)
345 dnl Check for 8 bit characters support forcing
347 AC_ARG_ENABLE(force-extended-characters-input,
348 [ --enable-force-extended-characters-input
349 force input and ouput of unescaped
350 height bits characters through GNU readline,
351 regardless of the inputrc settings [default=no]])
353 if ! test x$enableval = "xno" ; then
354 AC_DEFINE(FORCE_EXTENDED_CHARACTERS_INPUT,1,
355 [force 8 bit characters support in GNU readline])
358 dnl Check for fontconfig
360 AC_ARG_WITH(fontconfig,
361 [ --without-fontconfig remove fontconfig support enabling automatic
362 detection of all truetype fonts already available
365 if test x$withval = "xyes"; then
366 AC_PATH_PROG(PKG_CONFIG, pkg-config)
367 if ! test x$PKG_CONFIG = "x" ; then
368 if $PKG_CONFIG --exists fontconfig 2> /dev/null; then
369 FONTCONFIG_LIBS=`pkg-config --libs fontconfig`
370 FONTCONFIG_CFLAGS=`pkg-config --cflags fontconfig`
373 if test x$FONTCONFIG_LIBS = "x"; then
374 FONTCONFIG_LIBS=-lfontconfig
376 LIBS="$LIBS $FONTCONFIG_LIBS"
377 CFLAGS="$CFLAGS $FONTCONFIG_CFLAGS"
378 AC_MSG_CHECKING([for fontconfig])
380 #include <fontconfig/fontconfig.h>
383 AC_DEFINE(HAVE_FONTCONFIG_FONTCONFIG_H,1,[Define to 1 if you have the <fontconfig/fontconfig.h> header file.]),
388 -----------------------------------------------------
389 `fontconfig' was not found on your system.
390 Although `adesklets' will work anyway system-wide
391 automatic font detection will not occur:
392 it is therefore quite possible that only the
393 default font provided with the package will display.
394 -----------------------------------------------------]))
395 AC_SUBST(FONTCONFIG_LIBS)
396 AC_SUBST(FONTCONFIG_CFLAGS)
401 dnl Check for fork() system call
402 AC_CHECK_FUNCS(fork,,
403 AC_MSG_ERROR([Could not find the fork() system call]))
405 dnl Check for X headers and libraries
409 if test x$no_x != "xyes"; then
411 test x$x_includes = "x" && x_includes="/usr/include"
412 test x$x_libraries = "x" && x_libraries="/usr/lib"
414 X_LIBS="$X_LIBS $X_EXTRA_LIBS"
416 CFLAGS="$CFLAGS $X_CFLAGS"
417 LDFLAGS="$LDFLAGS $LIBS $X_PRE_LIBS"
418 dnl Check for required functions in -lX11
419 AC_CHECK_LIB(X11, XOpenDisplay,
420 X_LIBS="$X_LIBS -lX11"
422 AC_MSG_ERROR([Could not find XOpenDisplay in -lX11.])
424 AC_DEFINE(X_DISPLAY_SUPPORT,1,[Define to 1 if the X Window System is supported, 0 otherwise.])
426 AC_DEFINE(X_DISPLAY_SUPPORT,0,[Define to 1 if the X Window System is supported, 0 otherwise.])
438 [ --with-imlib2=DIR use imlib2 in <DIR>],
439 [CFLAGS="$CFLAGS -I$withval/include"
440 LIBS="-L$withval/lib $LIBS"])
442 AC_PATH_GENERIC_MODIFIED(imlib2, 1.1.2,
443 [ AC_SUBST(IMLIB2_LIBS)
444 AC_SUBST(IMLIB2_CFLAGS) ],
445 AC_MSG_ERROR([Cannot find imlib2: Is imlib2-config in the path?]),
448 -----------------------------------------------------
449 $PACKAGE should work with your version of imlib2...
450 But for better results you are _warmly_ encouraged
451 to try out version 1.2.0 or above;
452 known bugs are still lurking in dark corners
453 with what you have installed: beware strange problems
454 with dynamic image filters for instance!
455 -----------------------------------------------------]))
456 LIBS="$LIBS $IMLIB2_LIBS"
457 CFLAGS="$CFLAGS $IMLIB2_CFLAGS"
459 AC_MSG_CHECKING([for imlib2 program linking])
461 #ifndef X_DISPLAY_MISSING
462 #include <X11/Xlib.h>
463 #include <X11/Xutil.h>
465 #include <X11/Xatom.h>
469 image = imlib_load_image("toto.png");
470 #ifndef X_DISPLAY_MISSING
471 imlib_context_set_display(NULL);
474 AC_MSG_RESULT([yes]),
476 AC_MSG_ERROR([Cannot link Imlib2 program.
477 If you specified you did not want X support this can be caused
478 by your Imlib2 installment being configured so it needs it
479 or conversely. In that case reinstall Imlib2 with proper
480 --enable-x11-support parameter (as from enlightement CVS)
481 before retrying to configure this package.]))
483 dnl Test for uint typedef
484 AC_MSG_CHECKING([for uint typedef in standard library])
486 #ifdef HAVE_SYS_TYPES_H
487 #include <sys/types.h>
493 AC_MSG_RESULT([yes]),
495 AC_DEFINE(UINT_NOT_DEFINED,1,
496 [Define to 1 if compability type uint is not detected.])
499 dnl Important variables reset
502 LDFLAGS="$TMP_LDFLAGS"
504 dnl PKGDATADIR definition
505 dnl PKGDATADIR is only well constructed in make context,
506 dnl so let's put this AFTER all tests.
507 CFLAGS="$CFLAGS"' -DPKGDATADIR=\"$(pkgdatadir)\"'
510 AM_CONFIG_HEADER(src/config.h)
519 scripting/protoize.sh
520 scripting/python/Makefile
521 scripting/python/config.h
522 scripting/python/setup.py
526 dnl Change script(s) permissions
527 chmod +x scripting/protoize.sh doc/htmldoc.sh src/adesklets
529 dnl Final warning, if needed
530 if test x$DEBUG = "xyes"; then
532 -----------------------------------------------------
533 you choosed to make a `debug' compilation: this will
534 generate a significantly bigger executable
535 that produces on stderr (by default) a lot of outputs
536 unwanted during normal use; set up the ADESKLETS_LOG
537 environment variable to a filename the interpreter
538 can safely suffix with a pid related extension
539 than truncate to collect all debug outputs
540 there instead. Be also aware that all optimisation
541 settings (-O flags in CFLAGS) are discarded when
543 -----------------------------------------------------])
545 if test x$no_x = "xyes"; then
547 -----------------------------------------------------
548 you choosed to perform an `X Window less' build -
549 which means you will eventually end up with
550 a strictly command line program free of all
551 dependencies on xlib. If it is not what you intended
552 please reconfigure. For this to work you do need first
553 to configure your Imlib2 incantation for not using
555 -----------------------------------------------------
559 if test x$PYTHON != "x" ; then
560 if test x$SIGPROC != "xyes" ; then
562 -----------------------------------------------------
563 your system does not seem to support reliable POSIX
564 signal calls such as `sigprocmask', `sigpending' or
565 `sigsuspend'. Although this does not affect $PACKAGE
566 directly, it seriously impedes python ability
567 to handle things well through its package.
568 To our knowledge, no modern UNIX platforms lack
569 those system calls...
570 -----------------------------------------------------