1#  Copyright © 2003 Keith Packard
2#
3#  Permission to use, copy, modify, distribute, and sell this software and its
4#  documentation for any purpose is hereby granted without fee, provided that
5#  the above copyright notice appear in all copies and that both that
6#  copyright notice and this permission notice appear in supporting
7#  documentation, and that the name of Keith Packard not be used in
8#  advertising or publicity pertaining to distribution of the software without
9#  specific, written prior permission.  Keith Packard makes no
10#  representations about the suitability of this software for any purpose.  It
11#  is provided "as is" without express or implied warranty.
12#
13#  KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
14#  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
15#  EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
16#  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
17#  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18#  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19#  PERFORMANCE OF THIS SOFTWARE.
20#
21
22# Initialize Autoconf
23AC_PREREQ([2.60])
24AC_INIT([libXfont2], [2.0.5],
25	[https://gitlab.freedesktop.org/xorg/lib/libXfont/issues], [libXfont2])
26AC_CONFIG_SRCDIR([Makefile.am])
27AC_CONFIG_HEADERS([config.h])
28
29# Initialize Automake
30AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects])
31
32# Set common system defines for POSIX extensions, such as _GNU_SOURCE
33# Must be called before any macros that run the compiler (like
34# AC_PROG_LIBTOOL) to avoid autoconf errors.
35AC_USE_SYSTEM_EXTENSIONS
36
37# Initialize libtool
38AC_PROG_LIBTOOL
39
40# Require xorg-macros minimum of 1.10 for DocBook XML documentation
41m4_ifndef([XORG_MACROS_VERSION],
42          [m4_fatal([must install xorg-macros 1.10 or later before running autoconf/autogen])])
43XORG_MACROS_VERSION(1.10)
44XORG_DEFAULT_OPTIONS
45XORG_ENABLE_DEVEL_DOCS
46XORG_WITH_XMLTO(0.0.22)
47XORG_WITH_FOP
48XORG_CHECK_SGML_DOCTOOLS(1.7)
49
50# Checks for header files.
51AC_CHECK_HEADERS([endian.h poll.h sys/poll.h])
52
53# Checks for library functions.
54AC_CHECK_FUNCS([poll readlink])
55AC_SEARCH_LIBS([strlcat], [bsd])
56if test "$ac_cv_search_strlcat" = "-lbsd"; then
57  AC_DEFINE(HAVE_LIBBSD,1,[Has libbsd])
58fi
59AC_CONFIG_LIBOBJ_DIR([src/util])
60AC_REPLACE_FUNCS([reallocarray realpath strlcat strlcpy])
61
62# Check for BSDish err.h
63AC_CHECK_HEADERS([err.h])
64
65# If the first PKG_CHECK_MODULES appears inside a conditional, pkg-config
66# must first be located explicitly.
67PKG_PROG_PKG_CONFIG
68
69#
70# select libraries to include
71#
72
73XFONT_FONTFILE=no
74
75#
76# FreeType for all scalable (OpenType, TrueType, PostScript) and
77# some bitmap formats (BDF & PCF)
78#
79AC_ARG_ENABLE(freetype,
80	AS_HELP_STRING([--disable-freetype],
81		[Build freetype backend (default: enabled)]),
82	[XFONT_FREETYPE=$enableval],[XFONT_FREETYPE=yes])
83AM_CONDITIONAL(XFONT_FREETYPE, [test x$XFONT_FREETYPE = xyes])
84if test x$XFONT_FREETYPE = xyes; then
85	AC_DEFINE(XFONT_FREETYPE,1,[Support FreeType rasterizer for nearly all font file formats])
86	AC_ARG_WITH(freetype-config,
87		AS_HELP_STRING([--with-freetype-config=PROG],
88			[Use FreeType configuration program PROG]),
89		[freetype_config=$withval], [freetype_config=auto])
90
91	if test "$freetype_config" = "auto" ; then
92		PKG_CHECK_MODULES(FREETYPE, freetype2,
93			freetype_config=no, freetype_config=yes)
94	fi
95
96	if test "$freetype_config" = "yes"; then
97		AC_PATH_PROG(ft_config,freetype-config,no)
98		if test "$ft_config" = "no"; then
99			AC_MSG_ERROR([You must have freetype installed; see http://www.freetype.org/])
100		fi
101	else
102		ft_config="$freetype_config"
103	fi
104
105	if test "$freetype_config" != "no"; then
106		FREETYPE_CFLAGS="`$ft_config --cflags`"
107		FREETYPE_LIBS="`$ft_config --libs`"
108	fi
109	FREETYPE_REQUIRES="freetype2"
110	XFONT_FONTFILE=yes
111else
112	FREETYPE_CFLAGS=""
113	FREETYPE_LIBS=""
114	FREETYPE_REQUIRES=""
115fi
116AC_SUBST(FREETYPE_LIBS)
117AC_SUBST(FREETYPE_CFLAGS)
118AC_SUBST(FREETYPE_REQUIRES)
119
120#
121# Bitmap fonts in files:
122#	Builtins (gzipped pcf format in .text segment)
123#	PCF
124#	BDF
125#	SNF
126#
127
128AC_DEFINE(X_GZIP_FONT_COMPRESSION,1,[Support gzip for bitmap fonts])
129X_GZIP_FONT_COMPRESSION=1
130AC_SUBST(X_GZIP_FONT_COMPRESSION)
131AC_CHECK_LIB(z, gzopen, [Z_LIBS=-lz], AC_MSG_ERROR([*** zlib is required]))
132
133AC_ARG_WITH(bzip2,
134	AS_HELP_STRING([--with-bzip2],
135	  [Use libbz2 to support bzip2 compressed bitmap fonts (default: no)]),
136	[], [with_bzip2=no])
137if test "x$with_bzip2" = xyes; then
138	AC_CHECK_LIB(bz2, BZ2_bzopen, [Z_LIBS="$Z_LIBS -lbz2"],
139		AC_MSG_ERROR([*** libbz2 is required for bzip2 support]))
140	AC_DEFINE(X_BZIP2_FONT_COMPRESSION,1,[Support bzip2 for bitmap fonts])
141fi
142AM_CONDITIONAL(X_BZIP2_FONT_COMPRESSION, [test "x$with_bzip2" = xyes ])
143AC_SUBST(Z_LIBS)
144
145AC_ARG_ENABLE(builtins,
146	AS_HELP_STRING([--disable-builtins],
147		[Support builtin fonts (default: enabled)]),
148	[XFONT_BUILTINS=$enableval], [XFONT_BUILTINS=yes])
149AM_CONDITIONAL(XFONT_BUILTINS, [test "x$XFONT_BUILTINS" = xyes ])
150if test "x$XFONT_BUILTINS" = xyes; then
151	AC_DEFINE(XFONT_BUILTINS,1,[Support built-in fonts])
152	XFONT_BITMAP=yes
153fi
154
155AC_ARG_ENABLE(pcfformat,
156	AS_HELP_STRING([--disable-pcfformat],
157		[Support PCF format bitmap fonts (default: enabled)]),
158	[XFONT_PCFFORMAT=$enableval], [XFONT_PCFFORMAT=yes])
159AM_CONDITIONAL(XFONT_PCFFORMAT, [test "x$XFONT_PCFFORMAT" = xyes])
160if test "x$XFONT_PCFFORMAT" = xyes; then
161	AC_DEFINE(XFONT_PCFFORMAT,1,[Support pcf format bitmap font files])
162	XFONT_BITMAP=yes
163fi
164
165AM_CONDITIONAL(XFONT_PCF_OR_BUILTIN,
166	[test "x$XFONT_PCFFORMAT" = xyes -o "x$XFONT_BUILTINS" = xyes])
167
168AC_ARG_ENABLE(bdfformat,
169	AS_HELP_STRING([--disable-bdfformat],
170		[Support BDF format bitmap fonts (default: enabled)]),
171	[XFONT_BDFFORMAT=$enableval], [XFONT_BDFFORMAT=yes])
172AM_CONDITIONAL(XFONT_BDFFORMAT, [test "x$XFONT_BDFFORMAT" = xyes])
173if test "x$XFONT_BDFFORMAT" = xyes; then
174	AC_DEFINE(XFONT_BDFFORMAT,1,[Support bdf format bitmap font files])
175	XFONT_BITMAP=yes
176fi
177
178AC_ARG_ENABLE(snfformat,
179	AS_HELP_STRING([--enable-snfformat],
180		[Support SNF format bitmap fonts (default: disabled)]),
181	[XFONT_SNFFORMAT=$enableval], [XFONT_SNFFORMAT=no])
182AM_CONDITIONAL(XFONT_SNFFORMAT, [test "x$XFONT_SNFFORMAT" = xyes])
183if test "x$XFONT_SNFFORMAT" = xyes; then
184	AC_DEFINE(XFONT_SNFFORMAT,1,[Support snf format bitmap font files])
185	XFONT_BITMAP=yes
186fi
187
188AM_CONDITIONAL(XFONT_BITMAP, [test "x$XFONT_BITMAP" = xyes ])
189if test "x$XFONT_BITMAP" = xyes; then
190	AC_DEFINE(XFONT_BITMAP,1,[Support bitmap font files])
191	XFONT_FONTFILE=yes
192fi
193
194AM_CONDITIONAL(XFONT_FONTFILE, [test "x$XFONT_FONTFILE" = xyes])
195if test "x$XFONT_FONTFILE" = xyes; then
196	AC_DEFINE(XFONT_FONTFILE,1,[Support fonts in files])
197fi
198
199#
200# Support connection to font servers?
201#
202
203AC_ARG_ENABLE(fc,
204	AS_HELP_STRING([--disable-fc],
205		[Support connections to xfs servers (default: enabled)]),
206	[XFONT_FC=$enableval],[XFONT_FC=yes])
207AM_CONDITIONAL(XFONT_FC, [test "x$XFONT_FC" = xyes])
208if test "x$XFONT_FC" = xyes; then
209	AC_DEFINE(XFONT_FC,1,[Support the X Font Services Protocol])
210fi
211
212
213AC_CHECK_LIB(m, hypot, [MATH_LIBS=-lm
214AC_SUBST(MATH_LIBS)], AC_MSG_ERROR([*** libm is required]))
215
216PKG_CHECK_MODULES(XFONT, [xproto xtrans fontsproto >= 2.1.3 fontenc])
217
218# Transport selection macro from xtrans.m4
219XTRANS_CONNECTION_FLAGS
220
221case $host_os in
222    linux*)
223        OS_CFLAGS="-D_XOPEN_SOURCE"
224        ;;
225    *)
226        OS_CFLAGS=
227        ;;
228esac
229
230save_CFLAGS="$CFLAGS"
231CFLAGS="$CFLAGS -fvisibility=hidden"
232CFLAGS_VISIBILITY=
233AC_COMPILE_IFELSE(
234  [AC_LANG_SOURCE([[
235    #if defined(__CYGWIN__) || defined(__MINGW32__)
236    #error No visibility support
237    #endif
238    extern __attribute__((__visibility__("default"))) int x;
239  ]])],
240  [CFLAGS_VISIBILITY=-fvisibility=hidden],
241  []
242)
243CFLAGS="$save_CFLAGS"
244OS_CFLAGS="$OS_CFLAGS $CFLAGS_VISIBILITY"
245
246AC_SUBST([OS_CFLAGS])
247
248AC_CONFIG_FILES([Makefile
249		doc/Makefile
250		xfont2.pc])
251AC_OUTPUT
252