add X_DEVEL and XFT_DEVEL m4 functions
[mikachu/openbox.git] / m4 / x11.m4
1 # X11_DEVEL()
2 #
3 # Check for the presence of the X Window System headers and libraries.
4 # Sets the CXXFLAGS and LIBS variables as appropriate.
5 AC_DEFUN([X11_DEVEL],
6 [
7   AC_PATH_X
8   AC_PATH_XTRA
9   test "$no_x" = "yes" && \
10     AC_MSG_ERROR([The X Window System could not be found.])
11      
12   CXXFLAGS="$CXXFLAGS $X_CFLAGS"
13   LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS"
14
15   # Check for required functions in -lX11
16   AC_CHECK_LIB(
17     [X11], [XOpenDisplay],
18     ,
19     AC_MSG_ERROR([Could not find XOpenDisplay in -lX11.])
20   )
21 ])
22
23
24 AC_DEFUN([XFT_ERROR],
25 [
26   if test "$XFT_MIN"; then
27     AC_MSG_ERROR([$PACKAGE requires the Xft font library >= $XFT_MIN.
28                   See http://www.fontconfig.org/
29 ])
30   else
31     AC_MSG_ERROR([$PACKAGE requires the Xft font library.
32                   See http://www.fontconfig.org/
33 ])
34   fi
35 ])
36
37 # XFT_DEVEL([required-version])
38 #
39 # Check for the XFT development package.
40 # You can use the optional argument to check for a library of at least the
41 # given version.
42 # It provides the $(PYTHON_CFLAGS) $(PYTHON_LIBS) output variables.
43 AC_DEFUN([XFT_DEVEL],
44 [
45   AC_REQUIRE([X11_DEVEL])
46
47   if test "$1"; then
48     XFT_MIN=$1
49     XFT_MIN_MAJOR=${XFT_MIN%.*.*}
50     XFT_MIN_MINOR=${XFT_MIN%.*}
51     XFT_MIN_MINOR=${XFT_MIN_MINOR#*.}
52     XFT_MIN_REVISION=${XFT_MIN#*.*.}
53   else
54     XFT_MIN=""
55   fi
56
57   if test -z "$XFT_MIN"; then
58     AC_MSG_CHECKING([for Xft])
59     if ! pkg-config xft; then
60       AC_MSG_RESULT([no])
61       XFT_ERROR
62     fi
63   else
64     AC_MSG_CHECKING([for Xft version >= $XFT_MIN])
65     if ! pkg-config --atleast-version $XFT_MIN xft; then
66       AC_MSG_RESULT([no])
67       XFT_ERROR
68     fi
69   fi
70   AC_MSG_RESULT([yes])
71
72
73   # Store these
74   OLDLIBS=$LIBS
75   OLDCXXFLAGS=$CXXFLAGS
76
77   XFT_CFLAGS="`pkg-config --cflags xft`"
78   XFT_LIBS="`pkg-config --libs xft`"
79
80   # Set these for checking with the tests below. They'll be restored after
81   LIBS="$LIBS $XFT_LIBS"
82   CXXFLAGS="$XFT_CFLAGS $CXXFLAGS"
83
84   AC_CHECK_LIB([Xft], [XftFontOpenName],
85     if test "$XFT_MIN"; then
86       AC_MSG_CHECKING([for X11/Xft/Xft.h for Xft >= $XFT_MIN])
87       AC_TRY_COMPILE(
88       [
89         #include <X11/Xlib.h>
90         #include <X11/Xft/Xft.h>
91       ],
92       [
93         #if !defined(XFT_MAJOR)
94         # error Xft.h is too old
95         #endif
96         #if XFT_MAJOR < $XFT_MIN_MAJOR
97         # error Xft.h is too old
98         #endif
99         #if XFT_MAJOR == $XFT_MIN_MAJOR
100         # if XFT_MINOR < $XFT_MIN_MINOR
101         #  error Xft.h is too old
102         # endif
103         #endif
104         #if XFT_MAJOR == $XFT_MIN_MAJOR
105         # if XFT_MAJOR == $XFT_MIN_MINOR
106         #  if XFT_REVISION < $XFT_MIN_REVISION
107         #   error Xft.h is too old
108         #  endif
109         # endif
110         #endif
111       
112         int i = XFT_MAJOR;
113         XftFont foo;
114       ],
115       [
116         AC_MSG_RESULT([yes])
117       ],
118       [
119         AC_MSG_RESULT([no])
120         XFT_ERROR
121       ])
122     else
123       AC_MSG_CHECKING([for X11/Xft/Xft.h])
124       AC_TRY_COMPILE(
125       [
126         #include <X11/Xlib.h>
127         #include <X11/Xft/Xft.h>
128       ],
129       [
130         int i = XFT_MAJOR; /* make sure were using Xft 2, not 1 */
131         XftFont foo;
132       ],
133       [
134         AC_MSG_RESULT([yes])
135       ],
136       [
137         AC_MSG_RESULT([no])
138         XFT_ERROR
139       ])
140     fi
141
142     AC_MSG_CHECKING([if we can compile with Xft])
143     AC_TRY_LINK(
144     [
145       #include <X11/Xlib.h>
146       #include <X11/Xft/Xft.h>
147     ],
148     [
149       int i = XFT_MAJOR;
150       XftFont foo
151     ],
152     [
153       AC_MSG_RESULT([yes])
154     ],
155     [ 
156       AC_MSG_RESULT([no])
157       AC_MSG_ERROR([Unable to compile with the Xft font library.
158 ])
159     ])
160   )
161
162 # Restore the old values. Use XFT_CFLAGS and XFT_LIBS in the Makefile.am's
163   LIBS=$OLDLIBS
164   CXXFLAGS=$OLDCXXFLAGS
165
166   AC_SUBST([XFT_CFLAGS])
167   AC_SUBST([XFT_LIBS])
168 ])