1 2AC_PREREQ(2.13) 3AC_INIT() 4 5VERSION=1.1.5 6PACKAGE=zoom 7 8UTIL_DISPLAY_INIT() 9UTIL_DISPLAY_HEADER(Andrew Hunter, 2000-2011) 10 11UTIL_DISPLAY_SECTION(automake) 12AM_INIT_AUTOMAKE($PACKAGE, $VERSION) 13AM_CONFIG_HEADER(config.h) 14 15UTIL_DISPLAY_SECTION(compilers) 16AC_PROG_CC 17AC_PROG_CPP 18AC_PROG_RANLIB 19AM_PROG_LEX 20AC_PROG_YACC 21AC_PATH_PROG(PERL, perl, noperl) 22 23OBJC="$CC -c" 24AC_SUBST(OBJC) 25 26if test "$PERL" = "noperl"; then 27 AC_MSG_ERROR([You must have a copy of perl installed to compile Zoom]) 28fi 29 30ACLOCAL="$ACLOCAL -I m4" 31 32UTIL_DISPLAY_SECTION(compiler characteristics) 33 34AC_C_INLINE 35UTIL_CHECK_CFLAG(Wall) 36UTIL_CHECK_CFLAG(finline-functions) 37UTIL_CHECK_CFLAG(funroll-loops) 38UTIL_CHECK_CFLAG(fomit-frame-pointer) 39 40AC_ARG_ENABLE([new-terp], 41[ --enable-new-terp Enable alternative interpreter (insignificant 42 performance hit, faster compile times, performance 43 boost on some architectures) ], 44[ 45UTIL_CHECK_CFLAG(fno-gcse) 46AC_MSG_CHECKING([for computed gotos]) 47AC_TRY_LINK([], 48 [ 49 void *foo[] = { &&bar, &&baz }; 50 51 bar: 52 goto *foo[0]; 53 baz: 54 goto *foo[1]; 55 ], 56 [ 57 AC_MSG_RESULT(yes) 58 AC_DEFINE(HAVE_COMPUTED_GOTOS) 59 ], 60 [ AC_MSG_RESULT(no) ]) 61]) 62 63UTIL_DISPLAY_SECTION(architecture characteristics) 64 65AC_CHECK_SIZEOF(unsigned char, 1) 66AC_CHECK_SIZEOF(short int, 2) 67AC_CHECK_SIZEOF(int, 4) 68AC_CHECK_SIZEOF(long int, 4) 69 70case 1 in 71$ac_cv_sizeof_unsigned_char) 72 ZBYTE_TYPE="unsigned char";; 73 74$ac_cv_sizeof_short_int) 75 ZBYTE_TYPE="unsigned short int";; 76 77*) 78 ZBYTE_TYPE="unsigned char" 79esac 80 81case 2 in 82$ac_cv_sizeof_short_int) 83 ZWORD_TYPE="signed short int" 84 ZUWORD_TYPE="unsigned short int";; 85 86$ac_cv_sizeof_int) 87 ZWORD_TYPE="signed int" 88 ZUWORD_TYPE="unsigned int";; 89 90*) 91 ZWORD_TYPE="signed short int" 92esac 93 94case 4 in 95$ac_cv_sizeof_int) 96 ZDWORD_TYPE="int";; 97 98$ac_cv_sizeof_long_int) 99 ZDWORD_TYPE="long int";; 100 101*) 102 ZDWORD_TYPE="long int" 103esac 104 105AC_SUBST(ZBYTE_TYPE) 106AC_SUBST(ZWORD_TYPE) 107AC_SUBST(ZUWORD_TYPE) 108AC_SUBST(ZDWORD_TYPE) 109 110AC_MSG_CHECKING(byte ordering of $ZWORD_TYPE) 111AC_TRY_RUN([ 112 int main() 113 { 114 union { $ZWORD_TYPE word; $ZBYTE_TYPE byte[2]; } foo; 115 116 foo.byte[0] = 1; 117 foo.byte[1] = 2; 118 119 if (foo.word == 0x102) 120 return 0; 121 else 122 return 1; 123 } 124 ], 125 AC_MSG_RESULT([zmachine standard]) 126 ZMACHINE_CONV_WORD=0, 127 AC_MSG_RESULT([backwards]) 128 ZMACHINE_CONV_WORD=1, 129 ZMACHINE_CONV_WORD=1 130 AC_MSG_RESULT([unknown - assuming is backwards]) 131) 132 133AC_SUBST(ZMACHINE_CONV_WORD) 134 135UTIL_DISPLAY_SECTION(features) 136 137AC_CYGWIN 138 139if test "$CYGWIN" != "yes"; then 140 MINGW32=yes 141 mingw_prefix=`echo $CC | sed "s/\(.*\)gcc/\1/"` 142 AC_PATH_PROG(MINGWWINDRES, "$mingw_prefix"windres) 143 AC_MSG_CHECKING([if we're cross-compiling using mingw32]) 144 145 ac_OLD_CFLAGS="$CFLAGS" 146 CFLAGS="$CFLAGS -mwindows" 147 AC_TRY_LINK([], [ { int x; x = 1; } ], 148 , MINGW32=no) 149 CFLAGS="$CFLAGS -mno-cygwin" 150 AC_TRY_LINK([], [ { int x; x = 1; } ], 151 , MINGW32=no) 152 153 AC_TRY_LINK([#include <windows.h>], 154 [ { MessageBox(NULL, "Arg", "Whoops", MB_OK | MB_SYSTEMMODAL); } ], 155 , MINGW32=no) 156 AC_MSG_RESULT($MINGW32) 157 CFLAGS=$ac_OLD_CFLAGS 158 159 if test "$MINGW32" = "yes"; then 160 UTIL_CHECK_CFLAG(mwindows) 161 UTIL_CHECK_LDFLAG(mwindows) 162 UTIL_CHECK_CFLAG(mno-cygwin) 163 UTIL_CHECK_LDFLAG(mno-cygwin) 164 AC_PATH_PROG(WINDRES, "$mingw_prefix"windres) 165 166 RESEXTN=o 167 AC_SUBST(RESEXTN) 168 169 AM_CONDITIONAL(WINDOWS_VERSION, true) 170 AM_CONDITIONAL(CREATE_EXE, true) 171 AM_CONDITIONAL(CARBON_VERSION, false) 172 173 WINDOW_SYSTEM=2 174 AC_DEFINE(WINDOW_SYSTEM, 2) 175 else 176 AM_CONDITIONAL(CREATE_EXE, false) 177 fi 178else 179 AM_CONDITIONAL(CREATE_EXE, false) 180fi 181 182if test "$CYGWIN" = "yes"; then 183 UTIL_CHECK_CFLAG(mwindows) 184 UTIL_CHECK_LDFLAG(mwindows) 185 UTIL_CHECK_CFLAG(mno-cygwin) 186 UTIL_CHECK_LDFLAG(mno-cygwin) 187 AC_PATH_PROG(WINDRES, windres) 188 RESEXTN=o 189 AC_SUBST(RESEXTN) 190 191 AM_CONDITIONAL(WINDOWS_VERSION, true) 192 AM_CONDITIONAL(CARBON_VERSION, false) 193 194 WINDOW_SYSTEM=2 195 AC_DEFINE(WINDOW_SYSTEM, 2) 196else 197if test "$MINGW32" != "yes"; then 198 CARBON_DETECT 199 if test "$carbon_present" = "no"; then 200 AC_PATH_XTRA 201 if test "$no_x" = "yes"; then 202 AC_MSG_ERROR([No supported configurations found]) 203 else 204 WINDOW_SYSTEM=1 205 AC_DEFINE(WINDOW_SYSTEM, 1) 206 207 AM_CONDITIONAL(WINDOWS_VERSION, false) 208 AM_CONDITIONAL(CARBON_VERSION, false) 209 fi 210 else 211 WINDOW_SYSTEM=3 212 AC_DEFINE(WINDOW_SYSTEM, 3) 213 AM_CONDITIONAL(WINDOWS_VERSION, false) 214 AM_CONDITIONAL(CARBON_VERSION, true) 215 216 QUICKTIME_DETECT 217 218 if test "x$quicktime_present" = "xno"; then 219 AC_MSG_ERROR([QuickTime not found (?)]) 220 fi 221 222 AC_CHECK_LIB(z, inflate, [ LIBS="$LIBS -lz" ]) 223 224 AC_CHECK_LIB(png, png_get_IHDR, 225 [ 226 AC_DEFINE(HAVE_LIBPNG) 227 LIBS="$LIBS -lpng" 228 ], 229 [ 230 AC_MSG_WARN([libpng not detected: blecherous QuickTime alpha blending will be used (Ew)]) 231 ]) 232 fi 233fi 234fi 235 236if test "$WINDOW_SYSTEM" = "2"; then 237 AC_MSG_CHECKING(that we can link to various windows libraries) 238 ac_OLD_LIBS=$LIBS 239 LIBS="$LIBS -lcomctl32 -lcomdlg32" 240 AC_TRY_LINK([#include <windows.h> 241 #include <commctrl.h> 242 #include <commdlg.h>], 243 [ { 244 InitCommonControls(); 245 } 246 ], 247 AC_MSG_RESULT(woohoo!) 248 , 249 AC_MSG_RESULT(doh!) 250 AC_WARN([Unable to link to common controls library - you may have to edit the makefile by hand]) 251 LIBS=$ac_OLD_LIBS) 252fi 253 254AC_HEADER_STDC 255AC_CHECK_HEADERS(unistd.h) 256AC_CHECK_HEADERS(sys/time.h) 257 258AC_MSG_CHECKING([for gettimeofday]) 259AC_TRY_LINK( 260 [ 261 #include <stdio.h> 262 #include <stdlib.h> 263 #include <sys/time.h> 264 ], 265 [{struct timeval tv; gettimeofday(&tv, NULL);}], 266 AC_MSG_RESULT([yes]) 267 AC_DEFINE(HAVE_GETTIMEOFDAY), 268 AC_MSG_RESULT([no])) 269 270AC_MSG_CHECKING([for argp]) 271 272AC_TRY_LINK([ 273 #include <argp.h> 274], 275[ 276 argp_parse(NULL, 0, NULL, 0, 0, NULL); 277], 278[ 279 AC_MSG_RESULT(yes) 280 AC_DEFINE(OPT_TYPE, 0) 281], 282 AC_MSG_RESULT(no) 283 AC_MSG_CHECKING([for getopt]) 284 AC_TRY_LINK([ 285 #include <unistd.h> 286 ], 287 [ 288 getopt(0, NULL, NULL); 289 ], 290 [ 291 AC_MSG_RESULT([yes]) 292 AC_DEFINE(OPT_TYPE, 1) 293 ], 294 [ 295 AC_MSG_RESULT(no) 296 AC_DEFINE(OPT_TYPE, 200) 297 ]) 298) 299 300#AC_CHECK_HEADERS([expat.h],,AC_MSG_ERROR([expat is required to compile Zoom])) 301#AC_CHECK_LIB(expat, XML_ParserReset,,AC_MSG_ERROR([expat is required to compile Zoom])) 302 303if test "$cross_compiling" = "yes"; then 304 UTIL_DISPLAY_SECTION([native gcc (as we're X-compiling)]) 305 AC_PATH_PROG(BUILDERCC, gcc) 306else 307 BUILDERCC=$CC 308fi 309 310AC_SUBST(BUILDERCC) 311 312HAVE_T1LIB=0 313if test "$WINDOW_SYSTEM" = "1"; then 314 LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS" 315 CFLAGS="$CFLAGS $X_CFLAGS" 316 LIBS="$LIBS -lX11" 317 318 AC_CHECK_LIB(m, sin) 319 AC_CHECK_LIB(t1, T1_InitLib, 320 [ 321 LIBS="$LIBS -lt1" 322 AC_CHECK_LIB(t1x, T1_SetCharX, 323 [ LIBS="$LIBS -lt1x"; HAVE_T1LIB=1 ]) 324 ]) 325 326 if test "$HAVE_T1LIB" = "1"; then 327 AC_MSG_CHECKING([that we can compile a T1Lib program]) 328 AC_TRY_LINK( 329 [ #include <t1lib.h> ], 330 [ T1_InitLib(0); ], 331 [ 332 AC_MSG_RESULT(yes) 333 AC_DEFINE(HAVE_T1LIB) 334 ], 335 [ 336 AC_MSG_RESULT([no]) 337 ]) 338 fi 339 340 AC_CHECK_LIB(Xext, XdbeQueryExtension, [ LIBS="$LIBS -lXext" ]) 341 AC_MSG_CHECKING([for the DBE X extension library]) 342 AC_TRY_LINK( 343 [ #include <X11/Xlib.h> 344 #include <X11/Xatom.h> 345 #include <X11/Xutil.h> 346 #include <X11/Xresource.h> 347 #include <X11/extensions/Xdbe.h> ], 348 [ XdbeQueryExtension(NULL, NULL, NULL); ], 349 [ 350 AC_MSG_RESULT(yes) 351 AC_DEFINE(HAVE_XDBE) 352 ], 353 [ 354 AC_MSG_RESULT(no) 355 ]) 356 357 # If Xft is installed, then there will be a xft-config file on the current path 358 AC_MSG_CHECKING([for xft-config]) 359 XFTCONFIG=`which xft-config` 360 XFT_CFLAGS="" 361 XFT_LIBS="" 362 if test -x ${XFTCONFIG}; then 363 AC_MSG_RESULT([$XFTCONFIG]) 364 XFT_CFLAGS=`${XFTCONFIG} --cflags` 365 XFT_LIBS=`${XFTCONFIG} --libs` 366 else 367 AC_MSG_RESULT(no) 368 fi 369 370 # Had to move this, Xft 2 again 371 AC_CHECK_LIB(Xrender, XRenderQueryExtension, 372 [ 373 LIBS="$LIBS -lXrender" 374 HAVE_XRENDER=1 375 ]) 376 if test "$HAVE_XRENDER" = "1"; then 377 AC_MSG_CHECKING([that we can compile an Xrender program]) 378 AC_TRY_LINK( 379 [ #include <X11/extensions/Xrender.h> ], 380 [ XRenderCreatePicture(NULL, None, NULL, 0, NULL); ], 381 [ 382 AC_MSG_RESULT(yes) 383 AC_DEFINE(HAVE_XRENDER) 384 ], 385 [ 386 AC_MSG_RESULT(no) 387 ]) 388 fi 389 390 # Xft 2 requires that we link to fontconfig, too 391 # Grr, I thought dependency hell was supposed to be a Windows thing. 392 AC_CHECK_LIB(fontconfig, FcPatternAddInteger) 393 394 AC_CHECK_LIB(Xft, XftInit, 395 [ 396 LIBS="$LIBS $XFT_LIBS" 397 CFLAGS="$CFLAGS $XFT_CFLAGS" 398 HAVE_XFT=1 399 ]) 400 if test "$HAVE_XFT" = "1"; then 401 AC_MSG_CHECKING([that we can compile an Xft program]) 402 AC_TRY_LINK( 403 [ #include <X11/Xft/Xft.h> ], 404 [ XftDrawCreate(NULL, 0, NULL, 0); ], 405 [ 406 AC_MSG_RESULT(yes) 407 AC_DEFINE(HAVE_XFT) 408 ], 409 [ 410 AC_MSG_RESULT(no) 411 ]) 412 fi 413 414 AC_CHECK_LIB(z, inflate, [ LIBS="$LIBS -lz" ]) 415 AC_CHECK_LIB(png, png_get_IHDR, 416 [ 417 AC_DEFINE(HAVE_LIBPNG) 418 LIBS="$LIBS -lpng" 419 ], 420 [ 421 AC_MSG_WARN([libpng not detected: image support will be disabled]) 422 ]) 423fi 424 425UTIL_DISPLAY_INFO(Generating files) 426 427AC_OUTPUT([ 428 Makefile 429 m4/Makefile 430 src/Makefile 431 src/ztypes.h 432 src/zoom.rc 433 builder/Makefile 434 manual/Makefile 435 bonus/Makefile]) 436