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