1dnl
2dnl
3dnl    Pixie configure.in file
4dnl
5dnl
6AC_INIT(src/common/global.h)
7AM_INIT_AUTOMAKE(Pixie,2.2.6)
8AM_CONFIG_HEADER(config.h)
9AC_PREFIX_DEFAULT(/opt/pixie)
10
11
12dnl ---------------------------------------------------
13dnl Check the compiler/programs
14dnl
15AC_PROG_CC
16AC_PROG_CPP
17AC_PROG_CXX
18AM_DISABLE_STATIC
19AM_PROG_LIBTOOL
20AC_PROG_INSTALL
21AC_PROG_MAKE_SET
22
23dnl ---------------------------------------------------
24dnl Check standard libraries
25dnl
26AC_CHECK_LIB(dl, dlopen,,[AC_CHECK_LIB(c, dlopen,,[AC_MSG_ERROR([dlopen routine is not found])],)],)
27AC_CHECK_LIB(m, sin,,[AC_MSG_ERROR([math library is not found])],)
28AC_CHECK_LIB(pthread, pthread_create,,[AC_MSG_ERROR([pthread library is not found])],)
29
30dnl Check the single precision version of some math functions
31AC_CHECK_LIB([m], [acosf],	[AC_DEFINE([HAVE_ACOSF],[1],[libm includes acosf])])
32
33AC_CHECK_LIB([m], [asinf],	[AC_DEFINE([HAVE_ASINF],[1],[libm includes asinf])])
34
35AC_CHECK_LIB([m], [atan2f], [AC_DEFINE([HAVE_ATAN2F],[1],[libm includes atan2f])])
36
37AC_CHECK_LIB([m], [atanf],	[AC_DEFINE([HAVE_ATANF],[1],[libm includes atanf])])
38
39AC_CHECK_LIB([m], [cosf],	[AC_DEFINE([HAVE_COSF],[1],[libm includes cosf])])
40
41AC_CHECK_LIB([m], [expf],	[AC_DEFINE([HAVE_EXPF],[1],[libm includes expf])])
42
43AC_CHECK_LIB([m], [fabsf],	[AC_DEFINE([HAVE_FABSF],[1],[libm includes fabsf])])
44
45AC_CHECK_LIB([m], [floorf], [AC_DEFINE([HAVE_FLOORF],[1],[libm includes floorf])])
46
47AC_CHECK_LIB([m], [fmodf],	[AC_DEFINE([HAVE_FMODF],[1],[libm includes fmodf])])
48
49AC_CHECK_LIB([m], [hypotf], [AC_DEFINE([HAVE_HYPOTF],[1],[libm includes hypotf])])
50
51AC_CHECK_LIB([m], [logf],	[AC_DEFINE([HAVE_LOGF],[1],[libm includes logf])])
52
53AC_CHECK_LIB([m], [powf],	[AC_DEFINE([HAVE_POWF],[1],[libm includes powf])])
54
55AC_CHECK_LIB([m], [sinf],	[AC_DEFINE([HAVE_SINF],[1],[libm includes sinf])])
56
57AC_CHECK_LIB([m], [sqrtf],	[AC_DEFINE([HAVE_SQRTF],[1],[libm includes sqrtf])])
58
59AC_CHECK_LIB([m], [tanf],	[AC_DEFINE([HAVE_TANF],[1],[libm includes tanf])])
60
61dnl ---------------------------------------------------
62dnl Find X
63dnl
64AC_PATH_X
65AC_PATH_XTRA
66X_LDFLAGS="$X_LDFLAGS -lX11 -lXext"
67
68saved_CFLAGS="$CFLAGS"
69saved_LDFLAGS="$LDFLAGS"
70saved_LIBS="$LIBS"
71
72CFLAGS="$CFLAGS $X_CFLAGS"
73LDFLAGS="$X_LDFLAGS $X_LIBS $LDFLAGS"
74
75have_x11=true
76AC_CHECK_LIB(X11, XOpenDisplay,,[AC_MSG_WARN([X11 is not found, it is required by framebuffer]);have_x11=false],)
77AC_CHECK_LIB(Xext, XShmAttach,,[AC_MSG_WARN([Xext is not found, it is required by framebuffer]);have_x11=false],)
78AM_CONDITIONAL(BUILD_FRAMEBUFFER, test "x$have_x11" = "xtrue")
79
80CFLAGS="$saved_CFLAGS"
81LDFLAGS="$saved_LDFLAGS"
82LIBS="$saved_LIBS"
83
84dnl ---------------------------------------------------
85dnl Find Qt
86dnl
87
88dnl no_qt=false
89dnl AM_PATH_QT
90dnl AM_CONDITIONAL(BUILD_SHOW, test "x$no_qt" = "x" )
91
92dnl ---------------------------------------------------
93dnl Find FLTK
94dnl
95
96have_fltk=false
97AM_PATH_FLTK(have_fltk=true,have_fltk=false)
98AM_CONDITIONAL(BUILD_SHOW, test x$have_fltk = xtrue)
99
100dnl ---------------------------------------------------
101dnl Find libtiff
102dnl
103
104saved_LIBS="$LIBS"
105
106AC_CHECK_HEADER(tiffio.h,,AC_MSG_ERROR([tiffio.h not found]))
107AC_CHECK_LIB(tiff,TIFFOpen,,[AC_MSG_ERROR([libtiff not found])],)
108
109TIFF_LIBS="$LIBS"
110LIBS="$saved_LIBS"
111
112dnl ---------------------------------------------------
113dnl Find libpng
114dnl
115
116saved_LIBS="$LIBS"
117
118have_libpng=true
119AC_CHECK_HEADER(png.h,,AC_MSG_WARN([png.h not found]))
120AC_CHECK_LIB(png,png_create_write_struct,,[AC_MSG_WARN([libpng not found]);have_libpng=false],)
121
122if test "x$have_libpng" = "xtrue"; then
123    AC_DEFINE_UNQUOTED(HAVE_LIBPNG,1, [Is libpng avaiable?])
124    PNG_LIBS="$LIBS"
125else
126    PNG_LIBS=""
127fi
128
129LIBS="$saved_LIBS"
130
131dnl ---------------------------------------------------
132dnl Find OpenEXR
133dnl
134
135AM_PATH_OPENEXR
136AM_CONDITIONAL(BUILD_OPENEXR, test "x$no_openexr" = "x")
137
138dnl ---------------------------------------------------
139dnl Find zlib
140dnl
141ZLIB_LIBS="-lz"
142
143saved_CFLAGS="$CFLAGS"
144saved_LDFLAGS="$LDFLAGS"
145saved_LIBS="$LIBS"
146
147LDFLAGS="$LDFLAGS $ZLIB_LIBS"
148
149have_zlib=true
150AC_CHECK_LIB(z, gzopen,,[AC_MSG_WARN([libz is not found]);have_zlib=false],)
151if test "x$have_zlib" = "xtrue"; then
152	AC_DEFINE_UNQUOTED(HAVE_ZLIB,1, [Is Zlib avaiable?])
153else
154	AC_DEFINE_UNQUOTED(HAVE_ZLIB,0, [Is Zlib avaiable?])
155	ZLIB_LIBS=""
156fi
157
158CFLAGS="$saved_CFLAGS"
159LDFLAGS="$saved_LDFLAGS"
160LIBS="$saved_LIBS"
161
162dnl ---------------------------------------------------
163dnl Check system/headers
164dnl
165AC_HEADER_STDC
166AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
167
168AC_C_CONST
169AC_C_INLINE
170AC_TYPE_SIZE_T
171AC_HEADER_TIME
172
173AC_FUNC_ALLOCA
174AC_FUNC_VPRINTF
175AC_CHECK_FUNCS(gethostname gettimeofday mkdir rmdir socket strdup strstr strtod strtol random)
176
177dnl ---------------------------------------------------
178dnl Check for bison and flex
179dnl
180
181dnl I am intentionally not using AC_PROG_LEX and AC_PROG_YACC here
182dnl we have never tested with lex / yacc, and they probably won't work
183
184AC_PATH_PROG(FLEX,flex,false)
185AM_CONDITIONAL(HAVE_FLEX, test "x$FLEX" != xfalse )
186if test "x$FLEX" == xfalse; then
187	AC_MSG_WARN([[flex not found, pre-generated files will be used, any changes to .l files will not affect build]])
188fi
189
190AC_PATH_PROG(BISON,bison,false)
191AM_CONDITIONAL(HAVE_BISON, test "x$BISON" != xfalse )
192if test "x$BISON" == xfalse; then
193	AC_MSG_WARN([[bison not found, pre-generated files will be used, any changes to .y files will not affect build]])
194fi
195
196dnl ---------------------------------------------------
197dnl Check for Mac OS X
198dnl
199have_carbon=no
200AC_MSG_CHECKING([for Mac OS X Carbon support])
201AC_TRY_CPP([
202#include <Carbon/Carbon.h>
203#include <CoreServices/CoreServices.h>
204], have_carbon=yes)
205AC_MSG_RESULT([$have_carbon])
206
207if test "x$have_carbon" = "xyes"; then
208  LIBS="$LIBS -Wl,-framework,Carbon"
209fi
210
211dnl ---------------------------------------------------
212dnl Do variable substitution
213dnl
214AC_SUBST(X_LIBS)
215AC_SUBST(X_CFLAGS)
216AC_SUBST(X_LDFLAGS)
217AC_SUBST(TIFF_LIBS)
218AC_SUBST(PNG_LIBS)
219AC_SUBST(BUILD_SHOW)
220AC_SUBST(ZLIB_LIBS)
221AC_SUBST(FLTK_CXXFLAGS)
222AC_SUBST(FLTK_LDFLAGS)
223
224dnl ---------------------------------------------------
225dnl Are we building for self contained distribution
226dnl		Note: man goes in prefix for selfcontained (leave default as is)
227dnl
228
229AC_ARG_ENABLE(selfcontained,
230AS_HELP_STRING([--disable-selfcontained],[Build for a selfcontained setup (overrides custom directory settings)]),
231[case "${enableval}" in
232	yes)	docdir="\${prefix}/doc"
233		shaderdir="\${prefix}/shaders"
234		ribdir="\${prefix}/ribs"
235		texturedir="\${prefix}/textures"
236		displaysdir="\${prefix}/displays"
237		proceduraldir="\${prefix}/procedurals"
238		modulesdir="\${prefix}/modules"
239		mandir="\${prefix}/man"
240		;;
241	no)
242		docdir="\${datadir}/doc/Pixie"
243		shaderdir="\${datadir}/Pixie/shaders"
244		ribdir="\${datadir}/Pixie/ribs"
245		texturedir="\${datadir}/Pixie/textures"
246		proceduraldir="${libdir}/Pixie/procedurals"
247		displaysdir="\${libdir}/Pixie/displays"
248		modulesdir="\${libdir}/Pixie/modules"
249		;;
250	*) AC_MSG_ERROR(bad value ${enableval} for --enable-selfcontained) ;;
251esac],
252[
253docdir="\${prefix}/doc"
254shaderdir="\${prefix}/shaders"
255ribdir="\${prefix}/ribs"
256texturedir="\${prefix}/textures"
257displaysdir="\${prefix}/displays"
258proceduraldir="\${prefix}/procedurals"
259modulesdir="\${prefix}/modules"
260])
261
262dnl ---------------------------------------------------
263dnl Set custom directories for shaders, models, procedurals, and displays
264dnl these defaults are set above, which is why we do overrides after
265dnl
266
267AC_ARG_WITH(docdir,
268	AS_HELP_STRING([--with-docdir=DIR],[directory where we install documentation (Default: DATADIR/doc/Pixie)]),
269	docdir="${withval}")
270
271AC_ARG_WITH(shaderdir,
272	AS_HELP_STRING([--with-shaderdir=DIR],[directory where we store shaders (Default: DATADIR/Pixie/shaders)]),
273	shaderdir="${withval}")
274
275AC_ARG_WITH(ribdir,
276	AS_HELP_STRING([--with-ribdir=DIR],[directory where we store rib files (Default: DATADIR/Pixie/ribs)]),
277	ribdir="${withval}")
278
279AC_ARG_WITH(texturedir,
280	AS_HELP_STRING([--with-texturedir=DIR],[directory where we store textures (Default: DATADIR/Pixie/textures)]),
281	texturedir="${withval}")
282
283AC_ARG_WITH(proceduraldir,
284	AS_HELP_STRING([--with-shaderdir=DIR],[directory to store shaders (Default: LIBDIR/Pixie/procedurals)]),
285	proceduraldir="${withval}")
286
287AC_ARG_WITH(displaysdir,
288	AS_HELP_STRING([--with-displaysdir=DIR],[directory to store displays (Default: LIBDIR/Pixie/displays)]),
289	displaysdir="${withval}")
290
291AC_ARG_WITH(modulesdir,
292	AS_HELP_STRING([--with-modulesdir=DIR],[directory to store modules (Default: LIBDIR/Pixie/modules)]),
293	modulesdir="${withval}")
294
295
296dnl ---------------------------------------------------
297dnl Now tell the c preprocessor and the Makefiles where stuff goes
298dnl
299
300AC_DEFUN([AC_DEFINE_DIR], [
301  prefix_NONE=
302  exec_prefix_NONE=
303  test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
304  test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
305  eval ac_define_dir="[$]$2"
306  eval ac_define_dir="\"[$]ac_define_dir\""
307  AC_SUBST($1, "$ac_define_dir")
308  AC_SUBST($2, "$ac_define_dir")
309  AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3])
310  test "$prefix_NONE" && prefix=NONE
311  test "$exec_prefix_NONE" && exec_prefix=NONE
312])
313
314AC_DEFINE_DIR(PIXIE_DOCS,docdir,[Directory where we store documentation])
315AC_DEFINE_DIR(PIXIE_SHADERS,shaderdir,[Directory where we store shaders])
316AC_DEFINE_DIR(PIXIE_RIBS,ribdir,[Directory where we store ribs])
317AC_DEFINE_DIR(PIXIE_TEXTURES,texturedir,[Directory where we store textures])
318AC_DEFINE_DIR(PIXIE_DISPLAYS,displaysdir,[Directory where we store displays])
319AC_DEFINE_DIR(PIXIE_PROCEDURALS,proceduraldir,[Directory where we store procedurals])
320AC_DEFINE_DIR(PIXIE_MODULES,modulesdir,[Directory where we store modules])
321
322dnl ---------------------------------------------------
323dnl Write the output
324dnl
325AC_OUTPUT(Makefile doc/Makefile src/Makefile src/common/Makefile src/file/Makefile src/framebuffer/Makefile src/openexr/Makefile src/gui/Makefile src/precomp/Makefile src/rgbe/Makefile src/sdr/Makefile src/sdrc/Makefile src/ri/Makefile src/rndr/Makefile src/texmake/Makefile src/sdrinfo/Makefile src/show/Makefile)
326
327if test "x$have_x11" != "xtrue"; then
328echo "------------------------------------------------"
329echo "--->            X11 not found."
330echo "---> You should an X11 distribution for your OS"
331echo "---> The framebuffer display will not be built."
332fi
333
334dnl if test "x$no_qt" != "x"; then
335dnl echo "------------------------------------------------"
336dnl echo "--->            Qt not found."
337dnl echo "---> You can download it from www.trolltech.com"
338dnl echo "---> show will not be built."
339dnl fi
340
341if test "x$have_fltk" != "xtrue"; then
342echo "------------------------------------------------"
343echo "--->            FLTK not found."
344echo "---> You can download it from www.fltk.org"
345echo "---> show will not be built."
346fi
347
348if test "x$no_openexr" != "x"; then
349echo "------------------------------------------------"
350echo "--->            OpenEXR not found."
351echo "---> You can download it from www.openexr.org"
352echo "---> openexr display driver will not be built."
353fi
354
355if test "x$have_zlib" != "xtrue"; then
356echo "------------------------------------------------"
357echo "--->            ZLib not found."
358echo "---> You can download it from www.zlib.net"
359echo "---> compressed rib support will not be built."
360fi
361
362if test "x$have_libpng" != "xtrue"; then
363echo "------------------------------------------------"
364echo "--->            libpng not found."
365echo "---> You can download it from www.libpng.org"
366echo "---> Writing PNG files will not be supported."
367fi
368
369echo "------------------------------------------------"
370echo " Installation info:"
371echo "     PIXIEHOME: " $prefix
372echo " Documentation: " $docdir
373echo "       Shaders: " $shaderdir
374echo "          RIBs: " $ribdir
375echo "      Textures: " $texturedir
376echo "      Displays: " $displaysdir
377echo "   Procedurals: " $proceduraldir
378echo "       Modules: " $modulesdir
379echo "------------------------------------------------"
380echo "To build Pixie:"
381echo ">make"
382echo ">make install"
383echo "              Terminus Est"
384echo
385
386