Add support for the zoomed state to managed windows.
[gwm.git] / configure.ac
blobdee8f120babb93fbb8250bfa1c7335533364f567
1 AC_INIT(gwm, 0.0, gtw@gnu.org)
2 AC_PREREQ([2.60])
3 AC_CONFIG_SRCDIR(gwm.c)
4 AM_INIT_AUTOMAKE
5 AC_CONFIG_FILES(Makefile gwm.ld)
6 AC_CONFIG_HEADERS(config.h)
8 if test -f config.options; then
9   . ./config.options
12 gwm_packages=""
14 # GWM_MANDATORY_PACKAGE(PKG-NAME)
15 AC_DEFUN([GWM_MANDATORY_PACKAGE],[
16   AC_MSG_CHECKING([for $1])
17   PKG_CHECK_EXISTS([$1],
18                    [AC_MSG_RESULT(yes)
19                    gwm_packages="$gwm_packages $1"],
20                    [AC_MSG_ERROR(no)])
23 # GWM_OPTIONAL_PACKAGE(PKG-NAME, [LABEL], [DEPENDENCIES])
24 AC_DEFUN([GWM_OPTIONAL_PACKAGE],[
25   gwm_label=m4_ifval([$2], [$2], [$1])
26   gwm_name=`echo $ECHO_N $gwm_label | tr 'a-z' 'A-Z' | tr -c 'a-zA-Z0-9' _`
27   gwm_have_deps=yes
28   for gwm_i in [$3]; do
29     if eval test "x\$gwm_found_$gwm_i" != "xyes"; then gwm_have_deps=no; fi
30   done
31   if test $gwm_have_deps = yes; then
32     AC_MSG_CHECKING([for $gwm_label])
33     if eval test "x\$with_$gwm_label" = xno; then
34       AC_MSG_RESULT(disabled)
35     else
36       PKG_CHECK_EXISTS([$1],
37                        [AC_MSG_RESULT(yes)
38                        gwm_packages="$gwm_packages $1"
39                        eval "gwm_found_$gwm_label=yes"
40                        AC_DEFINE_UNQUOTED(USE_$gwm_name, 1)],
41                        [AC_MSG_RESULT(no)])
42     fi
43   fi
46 AH_BOTTOM([/* If we haven't been told that we're debugging, assume we aren't. */
47 #ifndef DEBUG
48 #define NDEBUG 1
49 #endif])
51 # Checks for programs:
52 AC_PROG_CC
53 AC_USE_SYSTEM_EXTENSIONS
54 PKG_PROG_PKG_CONFIG
56 # Checks for libraries:
57 AC_ARG_WITH(composite,[  --with-composite        use the X Composite extension.])
58 AC_ARG_WITH(cursor,   [  --with-cursor           use the XCB cursor library.])
59 AC_ARG_WITH(damage,   [  --with-damage           use the X DAMAGE extension.])
60 AC_ARG_WITH(randr,    [  --with-randr            use the X RANDR extension.])
61 AC_ARG_WITH(render,   [  --with-render           use the X RENDER extension.])
62 AC_ARG_WITH(shape,    [  --with-shape            use the X SHAPE extension.])
63 AC_ARG_WITH(xfixes,   [  --with-xfixes           use the XFIXES extension.])
65 AH_TEMPLATE(USE_COMPOSITE,[Use the X Composite extension.])
66 AH_TEMPLATE(USE_CURSOR,[Use the XCB cursor library.])
67 AH_TEMPLATE(USE_DAMAGE,[Use the X DAMAGE extension.])
68 AH_TEMPLATE(USE_RANDR,[Use the X RANDR extension.])
69 AH_TEMPLATE(USE_RENDER,[Use the X RENDER extension.])
70 AH_TEMPLATE(USE_SHAPE,[Use the X SHAPE extension.])
71 AH_TEMPLATE(USE_XFIXES,[Use the XFIXES extension.])
73 GWM_MANDATORY_PACKAGE(xcb)
74 GWM_OPTIONAL_PACKAGE(fontconfig)
75 GWM_OPTIONAL_PACKAGE(freetype2)
76 GWM_OPTIONAL_PACKAGE(xcb-composite, composite)
77 GWM_OPTIONAL_PACKAGE(xcb-cursor, cursor)
78 GWM_OPTIONAL_PACKAGE(xcb-damage, damage)
79 GWM_OPTIONAL_PACKAGE(xcb-randr, randr)
80 GWM_OPTIONAL_PACKAGE(xcb-render, render, fontconfig freetype2)
81 GWM_OPTIONAL_PACKAGE(xcb-shape, shape)
82 GWM_OPTIONAL_PACKAGE(xcb-xfixes, xfixes)
84 AM_CONDITIONAL(RENDER, [test x$gwm_found_render = xyes])
86 AC_SEARCH_LIBS(iconv, iconv)
88 # Checks for header files:
89 AC_CHECK_HEADERS(iconv.h mcheck.h sys/mman.h poll.h sys/param.h)
91 # Checks for types:
92 AC_TYPE_UINT64_T
94 # Checks for functions:
95 AC_CHECK_FUNCS(iconv mtrace ppoll)
97 # Check for a reasonable section alignment to pass to the linker.  First,
98 # try looking for typical compile-time constants in system header files...
99 AC_MSG_CHECKING([linker section alignment])
100 gwm_align=512
101 gwm_found_align=no
102 while test $gwm_align -le 65536; do
103   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
104 #if HAVE_SYS_PARAM_H
105 #include <sys/param.h>
106 #endif
107 #if HAVE_UNISTD_H
108 #include <unistd.h>
109 #endif
111 #if EXEC_PAGESIZE == ]] $gwm_align [[ || PAGE_SIZE == ]] $gwm_align [[ || PAGESIZE == ]] $gwm_align [[
112 int main() { return 0; }
113 #else
114 Failure.
115 #endif
116 ]])], [gwm_found_align=yes; break], [])
117   gwm_align=$(expr $gwm_align \* 2)
118 done
119 if test $gwm_found_align = no; then
120   # No luck so far...
121   if test $cross_compiling != yes; then
122     for gwm_prog in pagesize "getconf PAGE_SIZE"; do
123       if $gwm_prog > /dev/null 2>&1; then
124         gwm_align=512
125         gwm_found_align=no
126         while test $gwm_align -le 65536; do
127           if test $($gwm_prog 2> /dev/null) = $gwm_align; then
128             gwm_found_align=yes
129             break
130           fi
131           gwm_align=$(expr $gwm_align \* 2)
132         done
133         if test $gwm_found_align = yes; then break; fi
134       fi
135     done
136   fi
138 if test $gwm_found_align = no; then
139   gwm_align=4096 # complete guess
141 AC_MSG_RESULT([$gwm_align])
142 SECTION_ALIGN=$gwm_align
143 AC_SUBST(SECTION_ALIGN)
145 AC_MSG_CHECKING([for linker script support])
146 gwm_ldflags="$LDFLAGS"
147 LDFLAGS="$LDFLAGS -Wl,-Tconftest.ld"
148 cat > conftest.ld <<EOF
149 SECTIONS
151   init_start = .;
152   .gwminit.text : { init*(.text ) }
153   .gwminit.rodata : { init*(.rodata ) }
154   init_end = .;
156 INSERT AFTER .text;
158 AC_LINK_IFELSE([AC_LANG_SOURCE([[
159 extern char init_start, init_end;
160 int main() { (void) ( &init_end - &init_start ); return 0; }
161 ]])], [gwm_linker_scripts=yes
162        AC_DEFINE(HAVE_INIT_SECTION, 1)
163        AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])
164 LDFLAGS="$gwm_ldflags"
165 AM_CONDITIONAL(LINKER_SCRIPTS, [test x$gwm_linker_scripts = xyes])
166 AH_TEMPLATE(HAVE_INIT_SECTION,[Define if the linker supports scripts (used to locate the init section).])
168 PKG_CFLAGS=$($PKG_CONFIG --cflags $gwm_packages)
169 PKG_LIBS=$($PKG_CONFIG --libs $gwm_packages)
171 AC_SUBST(PKG_CFLAGS)
172 AC_SUBST(PKG_LIBS)
174 AC_OUTPUT