1#                                               -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ([2.58])
5
6AC_INIT([Chromium B.S.U.],[0.9.16.1],[https://sf.net/p/chromium-bsu/bugs],[chromium-bsu])
7AM_INIT_AUTOMAKE([foreign])
8
9AC_CONFIG_SRCDIR([src/main.cpp])
10AC_CONFIG_HEADERS([chromium-bsu-config.h])
11
12# Programs
13AC_PROG_CXX
14PKG_PROG_PKG_CONFIG
15
16# Headers
17AC_HEADER_STDC
18AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h locale.h libintl.h])
19
20# Types and compiler bits
21AC_HEADER_STDBOOL
22AC_C_CONST
23AC_C_INLINE
24AC_STRUCT_TM
25AC_TYPE_SIZE_T
26
27# Functions
28AC_FUNC_MALLOC
29AC_FUNC_STAT
30AC_FUNC_VPRINTF
31AC_FUNC_MKTIME
32AC_CHECK_FUNCS([atexit floor setenv sqrt strcasecmp strchr strerror strrchr memset setlocale strdup tzset])
33
34# Enable some special macintosh path handling
35AC_ARG_WITH(macintosh,
36	AS_HELP_STRING([--with-macintosh],[Enable some special macintosh path handling]),
37	AC_DEFINE(macintosh, 1, [define to enable some special macintosh path handling]),
38	[])
39
40# Libraries
41
42# gettext for internationalisation
43AM_GNU_GETTEXT([external])
44AM_GNU_GETTEXT_VERSION([0.18])
45
46# Need OpenGL and GLU for drawing stuff
47AX_CHECK_GL
48AX_CHECK_GLU
49
50# Need a recent version of FTGL or GLC for text rendering
51AC_ARG_ENABLE(glc, AS_HELP_STRING([--disable-glc], [do not use GLC]))
52AC_ARG_ENABLE(ftgl, AS_HELP_STRING([--disable-ftgl], [do not use FTGL]))
53
54if test "x$enable_glc" != xno ; then
55	AC_CHECK_HEADERS([GL/glc.h], [HAVE_GL_GLC_H=yes], [HAVE_GL_GLC_H=no])
56	AC_CHECK_HEADERS([QuesoGLC/glc.h], [HAVE_QUESOGL_GLC_H=yes], [HAVE_QUESOGL_GLC_H=no])
57	AC_CHECK_LIB([GLC], [glcGenContext], [HAVE_GLC_LIB=yes], [HAVE_GLC_LIB=no])
58	AC_CHECK_LIB([glc32], [glcGenContext], [HAVE_GLC32_LIB=yes], [HAVE_GLC32_LIB=no])
59fi
60
61if test "x$enable_ftgl" != xno ; then
62	PKG_CHECK_MODULES([FTGL], [ftgl >= 2.1.3], [HAVE_FTGL=yes], [HAVE_FTGL=no])
63fi
64
65# Allow specifying a hard-coded font file at build time
66AC_ARG_WITH(font-path,
67	AS_HELP_STRING([--with-font-path=file.ttf],
68		[Path to the TTF font to use at runtime with FTGL (bold Gothic Uralic recommended)]),
69	[FONT_PATH="$withval"],
70	[FONT_PATH=""])
71
72if test "x$HAVE_FTGL" = xyes -a "x$enable_ftgl" != xno ; then
73	# Need fontconfig for finding font files when using FTGL
74	PKG_CHECK_MODULES([FONTCONFIG], [fontconfig], [HAVE_FONTCONFIG=yes], [HAVE_FONTCONFIG=no])
75fi
76
77# Allow specifying a hard-coded font name at build time
78AC_ARG_WITH(font-name,
79	AS_HELP_STRING([--with-font-name="Gothic Uralic"],
80		[Name of the font to default to at runtime with GLC (bold Gothic Uralic is default)]),
81	[FONT_NAME="$withval"],
82	[FONT_NAME=""])
83
84# Need SDL or GLUT for windowing
85AC_ARG_ENABLE(sdl2, AS_HELP_STRING([--disable-sdl2], [do not use SDL2]))
86AC_ARG_ENABLE(sdl, AS_HELP_STRING([--disable-sdl], [do not use SDL]))
87AC_ARG_ENABLE(glut, AS_HELP_STRING([--disable-glut], [do not use GLUT]))
88
89if test "x$enable_sdl2" != xno ; then
90	PKG_CHECK_MODULES([SDL2], [sdl2], [HAVE_SDL2=yes], [HAVE_SDL2=no])
91fi
92
93if test "x$enable_sdl" != xno ; then
94	PKG_CHECK_MODULES([SDL], [sdl >= 1.1.6], [HAVE_SDL=yes], [HAVE_SDL=no])
95fi
96
97if test "x$enable_glut" != xno ; then
98	AX_CHECK_GLUT([no_glut=no], [no_glut=yes])
99fi
100
101# Need OpenAL or SDL Mixer for sound
102AC_ARG_ENABLE(openal, AS_HELP_STRING([--disable-openal], [do not use OpenAL]))
103AC_ARG_ENABLE(sdl2mixer, AS_HELP_STRING([--disable-sdl2mixer], [do not use SDL2_Mixer]))
104AC_ARG_ENABLE(sdlmixer, AS_HELP_STRING([--disable-sdlmixer], [do not use SDL_Mixer]))
105
106if test "x$enable_openal" != xno ; then
107	PKG_CHECK_MODULES([OPENAL], [openal], [HAVE_OPENAL=yes], [HAVE_OPENAL=no])
108	PKG_CHECK_MODULES([FREEALUT], [freealut], [HAVE_FREEALUT=yes], [HAVE_FREEALUT=no])
109fi
110
111if test "x$enable_sdl2mixer" != xno ; then
112	PKG_CHECK_MODULES([SDL2MIXER], [SDL2_mixer], [HAVE_SDL2MIXER=yes], [HAVE_SDL2MIXER=no])
113fi
114
115if test "x$enable_sdlmixer" != xno ; then
116	PKG_CHECK_MODULES([SDLMIXER], [SDL_mixer], [HAVE_SDLMIXER=yes], [HAVE_SDLMIXER=no])
117fi
118
119# Need glpng or SDL_image so we can display PNG images using OpenGL
120AC_ARG_ENABLE(glpng, AS_HELP_STRING([--disable-glpng], [do not use glpng]))
121AC_ARG_ENABLE(sdl2image, AS_HELP_STRING([--disable-sdl2image], [do not use SDL2_image]))
122AC_ARG_ENABLE(sdlimage, AS_HELP_STRING([--disable-sdlimage], [do not use SDL_image]))
123
124if test "x$enable_sdl2image" != xno ; then
125	PKG_CHECK_MODULES([SDL2IMAGE], [SDL2_image], [HAVE_SDL2IMAGE=yes], [HAVE_SDL2IMAGE=no])
126fi
127
128if test "x$enable_sdlimage" != xno ; then
129	PKG_CHECK_MODULES([SDLIMAGE], [SDL_image], [HAVE_SDLIMAGE=yes], [HAVE_SDLIMAGE=no])
130fi
131
132if test "x$enable_glpng" != xno ; then
133	AC_CHECK_HEADERS([GL/glpng.h], [HAVE_GL_GLPNG_H=yes], [HAVE_GL_GLPNG_H=no])
134	AC_CHECK_HEADERS([glpng/glpng.h], [HAVE_GLPNG_GLPNG_H=yes], [HAVE_GLPNG_GLPNG_H=no])
135	AC_CHECK_LIB([glpng], [pngBind], [HAVE_GLPNG_LIB=yes], [HAVE_GLPNG_LIB=no], [$GL_LIBS])
136fi
137
138
139if test "x$no_gl" = xyes ; then
140	AC_MSG_ERROR([cannot find OpenGL (drawing system)])
141fi
142
143if test "x$no_glu" = xyes ; then
144	AC_MSG_ERROR([cannot find GLU (drawing system)])
145fi
146
147
148if test \( "x$HAVE_GL_GLC_H" = xyes -o "x$HAVE_QUESOGLC_GLC_H" = xyes \) -a "x$HAVE_GLC_LIB" = xyes -a "x$enable_glc" != xno ; then
149	AC_DEFINE(TEXT_GLC, 1, [define to use GLC])
150	TEXT_LIBS="-lGLC"
151	AC_SUBST(TEXT_LIBS)
152	TEXT_TYPE=GLC
153elif test \( "x$HAVE_GL_GLC_H" = xyes -o "x$HAVE_QUESOGLC_GLC_H" = xyes \) -a "x$HAVE_GLC32_LIB" = xyes -a "x$enable_glc" != xno ; then
154	AC_DEFINE(TEXT_GLC, 1, [define to use GLC])
155	TEXT_LIBS="-lglc32"
156	AC_SUBST(TEXT_LIBS)
157	TEXT_TYPE=GLC
158elif test "x$HAVE_FTGL" = xyes -a "x$enable_ftgl" != xno ; then
159	AC_DEFINE(TEXT_FTGL, 1, [define to use FTGL])
160	TEXT_CFLAGS="$FTGL_CFLAGS"
161	AC_SUBST(TEXT_CFLAGS)
162	TEXT_LIBS="$FTGL_LIBS"
163	AC_SUBST(TEXT_LIBS)
164	TEXT_TYPE=FTGL
165else
166	AC_MSG_ERROR([cannot find GLC or FTGL >= 2.1.3 (text renderer)])
167fi
168
169if test "x$TEXT_TYPE" = xGLC -a "x$FONT_NAME" != x ; then
170	TEXT_CFLAGS="$TEXT_CFLAGS -DFONT_NAME=\"\\\"$FONT_NAME\\\"\""
171	AC_SUBST(TEXT_CFLAGS)
172	FONT="$FONT_NAME"
173elif test "x$TEXT_TYPE" = xGLC ; then
174	FONT="default (bold Gothic Uralic)"
175fi
176
177if test "x$TEXT_TYPE" = xFTGL -a "x$FONT_PATH" != x ; then
178	TEXT_CFLAGS="$TEXT_CFLAGS -DFONT_PATH=\"\\\"$FONT_PATH\\\"\""
179	AC_SUBST(TEXT_CFLAGS)
180	FONT="$FONT_PATH "
181fi
182
183if test "x$TEXT_TYPE" = xFTGL -a "x$HAVE_FONTCONFIG" = xyes ; then
184	AC_DEFINE(HAVE_FONTCONFIG, 1, [define to use fontconfig])
185	TEXT_CFLAGS="$TEXT_CFLAGS $FONTCONFIG_CFLAGS"
186	AC_SUBST(TEXT_CFLAGS)
187	TEXT_LIBS="$TEXT_LIBS $FONTCONFIG_LIBS"
188	AC_SUBST(TEXT_LIBS)
189	FONT="$FONT fontconfig (bold Gothic Uralic) "
190fi
191
192if  test "x$TEXT_TYPE" = xFTGL -a "x$HAVE_FONTCONFIG" != xyes -a "x$FONT_PATH" = x ; then
193	AC_MSG_WARN([FTGL: no font path supplied and cannot find fontconfig, font searching will probably fail])
194fi
195
196if test "x$HAVE_SDL2" = xyes -a "x$enable_sdl2" != xno ; then
197	AC_DEFINE(USE_SDL, 1, [define to use SDL])
198	WINDOW_CFLAGS="$SDL2_CFLAGS"
199	AC_SUBST(WINDOW_CFLAGS)
200	WINDOW_LIBS="$SDL2_LIBS"
201	AC_SUBST(WINDOW_LIBS)
202	WINDOW_TYPE=SDL2
203elif test "x$HAVE_SDL" = xyes -a "x$enable_sdl" != xno ; then
204	AC_DEFINE(USE_SDL, 1, [define to use SDL])
205	AC_DEFINE(USE_SDL_CDROM, 1, [define to use SDL CDROM support])
206	WINDOW_CFLAGS="$SDL_CFLAGS"
207	AC_SUBST(WINDOW_CFLAGS)
208	WINDOW_LIBS="$SDL_LIBS"
209	AC_SUBST(WINDOW_LIBS)
210	WINDOW_TYPE=SDL
211elif test "x$no_glut" != xyes -a "x$enable_glut" != xno ; then
212	AC_DEFINE(USE_GLUT, 1, [define to use GLUT])
213	WINDOW_CFLAGS="$GLUT_CFLAGS"
214	AC_SUBST(WINDOW_CFLAGS)
215	WINDOW_LIBS="$GLUT_LIBS"
216	AC_SUBST(WINDOW_LIBS)
217	WINDOW_TYPE=GLUT
218else
219	AC_MSG_ERROR([cannot find SDL >= 1.1.6 or GLUT (window system)])
220fi
221
222if test "x$HAVE_OPENAL" = xyes -a "x$HAVE_FREEALUT" = xyes -a "x$enable_openal" != xno ; then
223	AC_DEFINE(AUDIO_OPENAL, 1, [define to use OpenAL])
224	AUDIO_CFLAGS="$OPENAL_CFLAGS $FREEALUT_CFLAGS"
225	AC_SUBST(AUDIO_CFLAGS)
226	AUDIO_LIBS="$OPENAL_LIBS $FREEALUT_LIBS"
227	AC_SUBST(AUDIO_LIBS)
228	AUDIO_TYPE=OpenAL
229
230	# Need to check for MacOS X OpenAL differences
231	ac_save_CPPFLAGS="$CPPFLAGS"
232	ac_save_CFLAGS="$CFLAGS"
233	CPPFLAGS="${CPPFLAGS} ${OPENAL_CFLAGS} ${FREEALUT_CFLAGS}"
234	CFLAGS="${CFLAGS} ${OPENAL_CFLAGS} ${FREEALUT_CFLAGS}"
235	AC_CHECK_HEADERS(OpenAL/al.h OpenAL/alc.h ALUT/alut.h)
236	AC_CHECK_HEADERS(AL/al.h AL/alc.h AL/alut.h)
237	CPPFLAGS="${ac_save_CPPFLAGS}"
238	CFLAGS="${ac_save_CFLAGS}"
239elif test "x$HAVE_SDL2MIXER" = xyes -a "x$enable_sdl2mixer" != xno ; then
240	AC_DEFINE(AUDIO_SDLMIXER, 1, [define to use SDL Mixer])
241	AUDIO_CFLAGS="$SDL2MIXER_CFLAGS"
242	AC_SUBST(AUDIO_CFLAGS)
243	AUDIO_LIBS="$SDL2MIXER_LIBS"
244	AC_SUBST(AUDIO_LIBS)
245	AUDIO_TYPE="SDL mixer"
246elif test "x$HAVE_SDLMIXER" = xyes -a "x$enable_sdlmixer" != xno ; then
247	AC_DEFINE(AUDIO_SDLMIXER, 1, [define to use SDL Mixer])
248	AUDIO_CFLAGS="$SDLMIXER_CFLAGS"
249	AC_SUBST(AUDIO_CFLAGS)
250	AUDIO_LIBS="$SDLMIXER_LIBS"
251	AC_SUBST(AUDIO_LIBS)
252	AUDIO_TYPE="SDL mixer"
253else
254	AC_MSG_ERROR([cannot find OpenAL & ALUT or SDL Mixer (sound)])
255fi
256
257if test  \( "x$HAVE_GL_GLPNG_H" = xyes -o "x$HAVE_GLPNG_GLPNG_H" = xyes \) -a "x$HAVE_GLPNG_LIB" = xyes -a "x$enable_glpng" != no ; then
258	AC_DEFINE(IMAGE_GLPNG, 1, [define to use glpng])
259	IMAGE_TYPE=glpng
260	IMAGE_GLPNG=yes
261elif test "x$WINDOW_TYPE" = xSDL2 -a "x$HAVE_SDL2IMAGE" = xyes -a "x$enable_sdl2image" != no ; then
262	AC_MSG_WARN([Using SDL2_image to load images into textures, some rendering artifacts may be present])
263	AC_DEFINE(IMAGE_SDL, 1, [define to use SDL_image])
264	IMAGE_TYPE=SDL2_image
265	IMAGE_SDL2IMAGE=yes
266elif test "x$WINDOW_TYPE" = xSDL -a "x$HAVE_SDLIMAGE" = xyes -a "x$enable_sdlimage" != no ; then
267	AC_MSG_WARN([Using SDL_image to load images into textures, some rendering artifacts may be present])
268	AC_DEFINE(IMAGE_SDL, 1, [define to use SDL_image])
269	IMAGE_TYPE=SDL_image
270	IMAGE_SDLIMAGE=yes
271else
272	AC_MSG_ERROR([cannot find glpng or SDL_image (image loader)])
273fi
274
275if test "x$WINDOW_TYPE" = xSDL2 -a "x$HAVE_SDL2IMAGE" = xyes -a "x$enable_sdl2image" != no ; then
276	AC_DEFINE(ENABLE_WINDOW_ICON, 1, [define to enable the window icon (needs SDL_image)])
277	WINDOW_ICON=yes
278	IMAGE_SDL2IMAGE=yes
279elif test "x$WINDOW_TYPE" = xSDL -a "x$HAVE_SDLIMAGE" = xyes -a "x$enable_sdlimage" != no ; then
280	AC_DEFINE(ENABLE_WINDOW_ICON, 1, [define to enable the window icon (needs SDL_image)])
281	WINDOW_ICON=yes
282	IMAGE_SDLIMAGE=yes
283else
284	AC_MSG_WARN([SDL_image is not usable, window icon will not be set])
285	WINDOW_ICON=no
286fi
287
288if test "x$IMAGE_GLPNG" = xyes ; then
289	IMAGE_CFLAGS="$IMAGE_CFLAGS"
290	AC_SUBST(IMAGE_CFLAGS)
291	IMAGE_LIBS="$IMAGE_LIBS -lglpng"
292	AC_SUBST(IMAGE_LIBS)
293fi
294
295if test "x$IMAGE_SDL2IMAGE" = xyes ; then
296	IMAGE_CFLAGS="$IMAGE_CFLAGS $SDL2IMAGE_CFLAGS"
297	AC_SUBST(IMAGE_CFLAGS)
298	IMAGE_LIBS="$IMAGE_LIBS $SDL2IMAGE_LIBS"
299	AC_SUBST(IMAGE_LIBS)
300fi
301
302if test "x$IMAGE_SDLIMAGE" = xyes ; then
303	IMAGE_CFLAGS="$IMAGE_CFLAGS $SDLIMAGE_CFLAGS"
304	AC_SUBST(IMAGE_CFLAGS)
305	IMAGE_LIBS="$IMAGE_LIBS $SDLIMAGE_LIBS"
306	AC_SUBST(IMAGE_LIBS)
307fi
308
309AC_CONFIG_FILES([
310	Makefile
311	data/doc/Makefile
312	data/doc/images/Makefile
313	data/png/Makefile
314	data/wav/Makefile
315	data/Makefile
316	misc/Makefile
317	src/Makefile
318	m4/Makefile
319	po/Makefile.in
320])
321
322AC_OUTPUT
323
324echo "
325
326Chromium B.S.U. ready for building!
327
328  Window type: $WINDOW_TYPE
329  Window icon: $WINDOW_ICON
330  Image type:  $IMAGE_TYPE
331  Audio type:  $AUDIO_TYPE
332  Text type:   $TEXT_TYPE
333  Font search: $FONT
334
335Type 'make' to build.
336
337"
338