1# Process this file with autoconf to produce a configure script. 2AC_INIT(LibVNCServer, 0.9.9, http://sourceforge.net/projects/libvncserver) 3AM_INIT_AUTOMAKE(LibVNCServer, 0.9.9) 4m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 5AM_CONFIG_HEADER(rfbconfig.h) 6AX_PREFIX_CONFIG_H([rfb/rfbconfig.h]) 7 8# Checks for programs. 9AC_PROG_CC 10AM_PROG_CC_C_O 11if test -z "$CC"; then 12 CCLD="\$(CC)" 13else 14 CCLD="$CC" 15fi 16test "x$GCC" = "xyes" && CFLAGS="$CFLAGS -Wall" 17AC_PROG_MAKE_SET 18AC_LIBTOOL_WIN32_DLL 19AC_PROG_LIBTOOL 20AC_PATH_PROG([AR], [ar], [/usr/bin/ar], 21 [$PATH:/usr/ccs/bin]) 22 23# Options 24AH_TEMPLATE(WITH_TIGHTVNC_FILETRANSFER, [Disable TightVNCFileTransfer protocol]) 25AC_ARG_WITH(tightvnc-filetransfer, 26 [ --without-filetransfer disable TightVNC file transfer protocol], 27 , [ with_tightvnc_filetransfer=yes ]) 28# AC_DEFINE moved to after libpthread check. 29 30# WebSockets support 31AC_CHECK_LIB(resolv, __b64_ntop, HAVE_B64="true", HAVE_B64="false") 32AH_TEMPLATE(WITH_WEBSOCKETS, [Disable WebSockets support]) 33AC_ARG_WITH(websockets, 34 [ --without-websockets disable WebSockets support], 35 , [ with_websockets=yes ]) 36# AC_DEFINE moved to after libresolve check. 37 38AH_TEMPLATE(ALLOW24BPP, [Enable 24 bit per pixel in native framebuffer]) 39AC_ARG_WITH(24bpp, 40 [ --without-24bpp disable 24 bpp framebuffers], 41 , [ with_24bpp=yes ]) 42if test "x$with_24bpp" = "xyes"; then 43 AC_DEFINE(ALLOW24BPP) 44fi 45AH_TEMPLATE(FFMPEG, [Use ffmpeg (for vnc2mpg)]) 46AC_ARG_WITH(ffmpeg, 47 [ --with-ffmpeg=dir set ffmpeg home directory],,) 48AC_SUBST(with_ffmpeg) 49AM_CONDITIONAL(WITH_FFMPEG, test ! -z "$with_ffmpeg") 50if test ! -z "$with_ffmpeg"; then 51 AC_CHECK_LIB(mp3lame, lame_init, HAVE_MP3LAME="true", HAVE_MP3LAME="false" ) 52fi 53AM_CONDITIONAL(HAVE_MP3LAME, test "$HAVE_MP3LAME" = "true") 54 55# Seem to need this dummy here to induce the 'checking for egrep... grep -E', etc. 56# before it seemed to be inside the with_jpeg conditional. 57AC_CHECK_HEADER(thenonexistentheader.h, HAVE_THENONEXISTENTHEADER_H="true") 58 59# set some ld -R nonsense 60# 61uname_s=`(uname -s) 2>/dev/null` 62ld_minus_R="yes" 63if test "x$uname_s" = "xHP-UX"; then 64 ld_minus_R="no" 65elif test "x$uname_s" = "xOSF1"; then 66 ld_minus_R="no" 67elif test "x$uname_s" = "xDarwin"; then 68 ld_minus_R="no" 69fi 70 71# Check for OpenSSL 72AH_TEMPLATE(HAVE_LIBCRYPT, [libcrypt library present]) 73AC_ARG_WITH(crypt, 74[ --without-crypt disable support for libcrypt],,) 75if test "x$with_crypt" != "xno"; then 76 AC_CHECK_FUNCS([crypt], HAVE_LIBC_CRYPT="true") 77 if test -z "$HAVE_LIBC_CRYPT"; then 78 AC_CHECK_LIB(crypt, crypt, 79 CRYPT_LIBS="-lcrypt" 80 [AC_DEFINE(HAVE_LIBCRYPT)], ,) 81 fi 82fi 83AC_SUBST(CRYPT_LIBS) 84 85# some OS's need both -lssl and -lcrypto on link line: 86AH_TEMPLATE(HAVE_LIBCRYPTO, [openssl libcrypto library present]) 87AC_ARG_WITH(crypto, 88[ --without-crypto disable support for openssl libcrypto],,) 89 90AH_TEMPLATE(HAVE_LIBSSL, [openssl libssl library present]) 91AC_ARG_WITH(ssl, 92[ --without-ssl disable support for openssl libssl] 93[ --with-ssl=DIR use openssl include/library files in DIR],,) 94 95if test "x$with_crypto" != "xno" -a "x$with_ssl" != "xno"; then 96 if test ! -z "$with_ssl" -a "x$with_ssl" != "xyes"; then 97 saved_CPPFLAGS="$CPPFLAGS" 98 saved_LDFLAGS="$LDFLAGS" 99 CPPFLAGS="$CPPFLAGS -I$with_ssl/include" 100 LDFLAGS="$LDFLAGS -L$with_ssl/lib" 101 if test "x$ld_minus_R" = "xno"; then 102 : 103 elif test "x$GCC" = "xyes"; then 104 LDFLAGS="$LDFLAGS -Xlinker -R$with_ssl/lib" 105 else 106 LDFLAGS="$LDFLAGS -R$with_ssl/lib" 107 fi 108 fi 109 AC_CHECK_LIB(crypto, RAND_file_name, 110 [AC_DEFINE(HAVE_LIBCRYPTO) HAVE_LIBCRYPTO="true"], ,) 111 if test ! -z "$with_ssl" -a "x$with_ssl" != "xyes"; then 112 if test "x$HAVE_LIBCRYPTO" != "xtrue"; then 113 CPPFLAGS="$saved_CPPFLAGS" 114 LDFLAGS="$saved_LDFLAGS" 115 fi 116 fi 117fi 118 119AH_TEMPLATE(HAVE_X509_PRINT_EX_FP, [open ssl X509_print_ex_fp available]) 120if test "x$with_ssl" != "xno"; then 121 if test "x$HAVE_LIBCRYPTO" = "xtrue"; then 122 AC_CHECK_LIB(ssl, SSL_library_init, 123 SSL_LIBS="-lssl -lcrypto" 124 [AC_DEFINE(HAVE_LIBSSL) HAVE_LIBSSL="true"], , 125 -lcrypto) 126 else 127 AC_CHECK_LIB(ssl, SSL_library_init, 128 SSL_LIBS="-lssl" 129 [AC_DEFINE(HAVE_LIBSSL) HAVE_LIBSSL="true"], ,) 130 fi 131fi 132AC_SUBST(SSL_LIBS) 133AM_CONDITIONAL(HAVE_LIBSSL, test ! -z "$SSL_LIBS") 134 135# Checks for X libraries 136HAVE_X11="false" 137AC_PATH_XTRA 138AH_TEMPLATE(HAVE_X11, [X11 build environment present]) 139 140# See if we are to build x11vnc: 141AH_TEMPLATE(HAVE_SYSTEM_LIBVNCSERVER, [Use the system libvncserver build environment for x11vnc.]) 142AC_ARG_WITH(system-libvncserver, 143[ --with-system-libvncserver use installed libvncserver for x11vnc] 144[ --with-system-libvncserver=DIR use libvncserver installed in DIR for x11vnc],,) 145AC_ARG_WITH(x11vnc, 146[ --with-x11vnc configure for building the x11vnc subdir (if present)] 147[ you will need to cd to x11vnc and run 'make' etc.],,) 148 149if test ! -z "$with_x11vnc" -a "$with_x11vnc" = "yes"; then 150 build_x11vnc="yes" 151elif test "$PACKAGE_NAME" = "x11vnc"; then 152 build_x11vnc="yes" 153else 154 build_x11vnc="no" 155fi 156 157# x11vnc only: 158if test "$build_x11vnc" = "yes"; then 159 160AH_TEMPLATE(HAVE_XSHM, [MIT-SHM extension build environment present]) 161AH_TEMPLATE(HAVE_XTEST, [XTEST extension build environment present]) 162AH_TEMPLATE(HAVE_XTESTGRABCONTROL, [XTEST extension has XTestGrabControl]) 163AH_TEMPLATE(HAVE_XKEYBOARD, [XKEYBOARD extension build environment present]) 164AH_TEMPLATE(HAVE_LIBXINERAMA, [XINERAMA extension build environment present]) 165AH_TEMPLATE(HAVE_LIBXRANDR, [XRANDR extension build environment present]) 166AH_TEMPLATE(HAVE_LIBXFIXES, [XFIXES extension build environment present]) 167AH_TEMPLATE(HAVE_LIBXDAMAGE, [XDAMAGE extension build environment present]) 168AH_TEMPLATE(HAVE_LIBXTRAP, [DEC-XTRAP extension build environment present]) 169AH_TEMPLATE(HAVE_RECORD, [RECORD extension build environment present]) 170AH_TEMPLATE(HAVE_SOLARIS_XREADSCREEN, [Solaris XReadScreen available]) 171AH_TEMPLATE(HAVE_IRIX_XREADDISPLAY, [IRIX XReadDisplay available]) 172AH_TEMPLATE(HAVE_FBPM, [FBPM extension build environment present]) 173AH_TEMPLATE(HAVE_DPMS, [DPMS extension build environment present]) 174AH_TEMPLATE(HAVE_LINUX_VIDEODEV_H, [video4linux build environment present]) 175AH_TEMPLATE(HAVE_LINUX_FB_H, [linux fb device build environment present]) 176AH_TEMPLATE(HAVE_LINUX_INPUT_H, [linux/input.h present]) 177AH_TEMPLATE(HAVE_LINUX_UINPUT_H, [linux uinput device build environment present]) 178AH_TEMPLATE(HAVE_MACOSX_NATIVE_DISPLAY, [build MacOS X native display support]) 179AH_TEMPLATE(HAVE_MACOSX_OPENGL_H, [MacOS X OpenGL present]) 180 181AC_ARG_WITH(xkeyboard, 182[ --without-xkeyboard disable xkeyboard extension support],,) 183AC_ARG_WITH(xinerama, 184[ --without-xinerama disable xinerama extension support],,) 185AC_ARG_WITH(xrandr, 186[ --without-xrandr disable xrandr extension support],,) 187AC_ARG_WITH(xfixes, 188[ --without-xfixes disable xfixes extension support],,) 189AC_ARG_WITH(xdamage, 190[ --without-xdamage disable xdamage extension support],,) 191AC_ARG_WITH(xtrap, 192[ --without-xtrap disable xtrap extension support],,) 193AC_ARG_WITH(xrecord, 194[ --without-xrecord disable xrecord extension support],,) 195AC_ARG_WITH(fbpm, 196[ --without-fbpm disable fbpm extension support],,) 197AC_ARG_WITH(dpms, 198[ --without-dpms disable dpms extension support],,) 199AC_ARG_WITH(v4l, 200[ --without-v4l disable video4linux support],,) 201AC_ARG_WITH(fbdev, 202[ --without-fbdev disable linux fb device support],,) 203AC_ARG_WITH(uinput, 204[ --without-uinput disable linux uinput device support],,) 205AC_ARG_WITH(macosx-native, 206[ --without-macosx-native disable MacOS X native display support],,) 207 208fi 209# end x11vnc only. 210 211if test "x$with_x" = "xno"; then 212 HAVE_X11="false" 213elif test "$X_CFLAGS" != "-DX_DISPLAY_MISSING"; then 214 AC_CHECK_LIB(X11, XGetImage, [AC_DEFINE(HAVE_X11) HAVE_X11="true"], 215 HAVE_X11="false", 216 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 217 218 # x11vnc only: 219 if test $HAVE_X11 = "true" -a "$build_x11vnc" = "yes"; then 220 X_PRELIBS="$X_PRELIBS -lXext" 221 222 AC_CHECK_LIB(Xext, XShmGetImage, 223 [AC_DEFINE(HAVE_XSHM)], , 224 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 225 226 AC_CHECK_LIB(Xext, XReadScreen, 227 [AC_DEFINE(HAVE_SOLARIS_XREADSCREEN)], , 228 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 229 230 AC_CHECK_HEADER(X11/extensions/readdisplay.h, 231 [AC_DEFINE(HAVE_IRIX_XREADDISPLAY)], , 232 [#include <X11/Xlib.h>]) 233 234 if test "x$with_fbpm" != "xno"; then 235 AC_CHECK_LIB(Xext, FBPMForceLevel, 236 [AC_DEFINE(HAVE_FBPM)], , 237 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 238 fi 239 240 if test "x$with_dpms" != "xno"; then 241 AC_CHECK_LIB(Xext, DPMSForceLevel, 242 [AC_DEFINE(HAVE_DPMS)], , 243 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 244 fi 245 246 AC_CHECK_LIB(Xtst, XTestGrabControl, 247 X_PRELIBS="-lXtst $X_PRELIBS" 248 [AC_DEFINE(HAVE_XTESTGRABCONTROL) HAVE_XTESTGRABCONTROL="true"], , 249 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 250 251 AC_CHECK_LIB(Xtst, XTestFakeKeyEvent, 252 X_PRELIBS="-lXtst $X_PRELIBS" 253 [AC_DEFINE(HAVE_XTEST) HAVE_XTEST="true"], , 254 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 255 256 if test "x$with_xrecord" != "xno"; then 257 AC_CHECK_LIB(Xtst, XRecordEnableContextAsync, 258 X_PRELIBS="-lXtst $X_PRELIBS" 259 [AC_DEFINE(HAVE_RECORD)], , 260 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 261 fi 262 263 # we use XTRAP on X11R5, or user can set X11VNC_USE_XTRAP 264 if test "x$with_xtrap" != "xno"; then 265 if test ! -z "$X11VNC_USE_XTRAP" -o -z "$HAVE_XTESTGRABCONTROL"; then 266 AC_CHECK_LIB(XTrap, XETrapSetGrabServer, 267 X_PRELIBS="$X_PRELIBS -lXTrap" 268 [AC_DEFINE(HAVE_LIBXTRAP)], , 269 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 270 # tru64 uses libXETrap.so 271 AC_CHECK_LIB(XETrap, XETrapSetGrabServer, 272 X_PRELIBS="$X_PRELIBS -lXETrap" 273 [AC_DEFINE(HAVE_LIBXTRAP)], , 274 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 275 fi 276 fi 277 278 if test "x$with_xkeyboard" != "xno"; then 279 saved_CPPFLAGS="$CPPFLAGS" 280 CPPFLAGS="$CPPFLAGS $X_CFLAGS" 281 AC_CHECK_HEADER(X11/XKBlib.h, HAVE_XKBLIB_H="true", 282 HAVE_XKBLIB_H="false", [#include <X11/Xlib.h>]) 283 CPPFLAGS="$saved_CPPFLAGS" 284 if test $HAVE_XKBLIB_H = "true"; then 285 AC_CHECK_LIB(X11, XkbSelectEvents, 286 [AC_DEFINE(HAVE_XKEYBOARD)], , 287 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 288 fi 289 fi 290 291 if test "x$with_xinerama" != "xno"; then 292 AC_CHECK_LIB(Xinerama, XineramaQueryScreens, 293 X_PRELIBS="$X_PRELIBS -lXinerama" 294 [AC_DEFINE(HAVE_LIBXINERAMA)], , 295 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 296 fi 297 298 if test "x$with_xrandr" != "xno"; then 299 AC_CHECK_LIB(Xrandr, XRRSelectInput, 300 X_PRELIBS="$X_PRELIBS -lXrandr" 301 [AC_DEFINE(HAVE_LIBXRANDR) HAVE_LIBXRANDR="true"], , 302 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 303 fi 304 305 if test "x$with_xfixes" != "xno"; then 306 AC_CHECK_LIB(Xfixes, XFixesGetCursorImage, 307 X_PRELIBS="$X_PRELIBS -lXfixes" 308 [AC_DEFINE(HAVE_LIBXFIXES) HAVE_LIBXFIXES="true"], , 309 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 310 fi 311 312 if test "x$with_xdamage" != "xno"; then 313 AC_CHECK_LIB(Xdamage, XDamageQueryExtension, 314 X_PRELIBS="$X_PRELIBS -lXdamage" 315 [AC_DEFINE(HAVE_LIBXDAMAGE) HAVE_LIBXDAMAGE="true"], , 316 $X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS) 317 fi 318 319 if test ! -z "$HAVE_LIBXFIXES" -o ! -z "$HAVE_LIBXDAMAGE"; then 320 # need /usr/sfw/lib in RPATH for Solaris 10 and later 321 case `(uname -sr) 2>/dev/null` in 322 "SunOS 5"*) X_EXTRA_LIBS="$X_EXTRA_LIBS -R/usr/sfw/lib" ;; 323 esac 324 fi 325 if test ! -z "$HAVE_LIBXRANDR"; then 326 # also need /usr/X11/include for Solaris 10 10/08 and later 327 case `(uname -sr) 2>/dev/null` in 328 "SunOS 5"*) CPPFLAGS="$CPPFLAGS -I/usr/X11/include" ;; 329 esac 330 fi 331 332 X_LIBS="$X_LIBS $X_PRELIBS -lX11 $X_EXTRA_LIBS" 333 fi 334 # end x11vnc only. 335fi 336 337AC_SUBST(X_LIBS) 338AM_CONDITIONAL(HAVE_X11, test $HAVE_X11 != "false") 339 340# x11vnc only: 341if test "$build_x11vnc" = "yes"; then 342 343if test "x$HAVE_X11" = "xfalse" -a "x$with_x" != "xno"; then 344 AC_MSG_ERROR([ 345========================================================================== 346*** A working X window system build environment is required to build *** 347x11vnc. Make sure any required X development packages are installed. 348If they are installed in non-standard locations, one can use the 349--x-includes=DIR and --x-libraries=DIR configure options or set the 350CPPFLAGS and LDFLAGS environment variables to indicate where the X 351window system header files and libraries may be found. On 64+32 bit 352machines you may need to point to lib64 or lib32 directories to pick up 353the correct word size. 354 355If you want to build x11vnc without X support (e.g. for -rawfb use only 356or for native Mac OS X), specify the --without-x configure option. 357========================================================================== 358]) 359fi 360 361if test "x$HAVE_X11" = "xtrue" -a "x$HAVE_XTEST" != "xtrue"; then 362 AC_MSG_WARN([ 363========================================================================== 364*** A working build environment for the XTEST extension was not found *** 365(libXtst). An x11vnc built this way will be *ONLY BARELY USABLE*. 366You will be able to move the mouse but not click or type. There can 367also be deadlocks if an application grabs the X server. 368 369It is recommended that you install the necessary development packages 370for XTEST (perhaps it is named something like libxtst-dev) and run 371configure again. 372========================================================================== 373]) 374 sleep 5 375fi 376 377if test "x$with_v4l" != "xno"; then 378 AC_CHECK_HEADER(linux/videodev.h, 379 [AC_DEFINE(HAVE_LINUX_VIDEODEV_H)],,) 380fi 381if test "x$with_fbdev" != "xno"; then 382 AC_CHECK_HEADER(linux/fb.h, 383 [AC_DEFINE(HAVE_LINUX_FB_H)],,) 384fi 385if test "x$with_uinput" != "xno"; then 386 AC_CHECK_HEADER(linux/input.h, 387 [AC_DEFINE(HAVE_LINUX_INPUT_H) HAVE_LINUX_INPUT_H="true"],,) 388 if test "x$HAVE_LINUX_INPUT_H" = "xtrue"; then 389 AC_CHECK_HEADER(linux/uinput.h, 390 [AC_DEFINE(HAVE_LINUX_UINPUT_H)],, [#include <linux/input.h>]) 391 fi 392fi 393 394if test "x$with_macosx_native" != "xno"; then 395 AC_DEFINE(HAVE_MACOSX_NATIVE_DISPLAY) 396fi 397 398# Check for OS X opengl header 399AC_CHECK_HEADER(OpenGL/OpenGL.h, 400 [AC_DEFINE(HAVE_MACOSX_OPENGL_H) HAVE_MACOSX_OPENGL_H="true"],,) 401 402AH_TEMPLATE(HAVE_AVAHI, [Avahi/mDNS client build environment present]) 403AC_ARG_WITH(avahi, 404[ --without-avahi disable support for Avahi/mDNS] 405[ --with-avahi=DIR use avahi include/library files in DIR],,) 406if test "x$with_avahi" != "xno"; then 407 printf "checking for avahi... " 408 if test ! -z "$with_avahi" -a "x$with_avahi" != "xyes"; then 409 AVAHI_CFLAGS="-I$with_avahi/include" 410 AVAHI_LIBS="-L$with_avahi/lib -lavahi-common -lavahi-client" 411 echo "using $with_avahi" 412 with_avahi=yes 413 elif pkg-config --atleast-version=0.6.4 avahi-client >/dev/null 2>&1; then 414 AVAHI_CFLAGS=`pkg-config --cflags avahi-client` 415 AVAHI_LIBS=`pkg-config --libs avahi-client` 416 with_avahi=yes 417 echo yes 418 else 419 with_avahi=no 420 echo no 421 fi 422fi 423if test "x$with_avahi" = "xyes"; then 424 AC_DEFINE(HAVE_AVAHI) 425 AC_SUBST(AVAHI_CFLAGS) 426 AC_SUBST(AVAHI_LIBS) 427fi 428 429fi 430# end x11vnc only. 431 432# only used in x11vnc/Makefile.am but needs to always be defined: 433AM_CONDITIONAL(OSX_OPENGL, test "$HAVE_MACOSX_OPENGL_H" = "true") 434 435# Checks for libraries. 436 437if test ! -z "$with_system_libvncserver" -a "x$with_system_libvncserver" != "xno"; then 438 printf "checking for system libvncserver... " 439 vneed="0.9.1" 440 if test "X$VNEED" != "X"; then 441 vneed=$VNEED 442 fi 443 if test "x$with_system_libvncserver" != "xyes"; then 444 rflag="" 445 if test "x$ld_minus_R" = "xno"; then 446 : 447 elif test "x$GCC" = "xyes"; then 448 rflag="-Xlinker -R$with_system_libvncserver/lib" 449 else 450 rflag="-R$with_system_libvncserver/lib" 451 fi 452 cmd="$with_system_libvncserver/bin/libvncserver-config" 453 if $cmd --version 1>/dev/null 2>&1; then 454 cvers=`$cmd --version 2>/dev/null` 455 cscore=`echo "$cvers" | tr '.' ' ' | awk '{print 10000 * $1 + 100 * $2 + $3}'` 456 nscore=`echo "$vneed" | tr '.' ' ' | awk '{print 10000 * $1 + 100 * $2 + $3}'` 457 458 if test $cscore -lt $nscore; then 459 echo "no" 460 with_system_libvncserver=no 461 AC_MSG_ERROR([ 462========================================================================== 463*** Need libvncserver version $vneed, have version $cvers *** 464You are building with a system installed libvncserver and it is not 465new enough. 466========================================================================== 467]) 468 else 469 SYSTEM_LIBVNCSERVER_CFLAGS="-I$with_system_libvncserver/include" 470 SYSTEM_LIBVNCSERVER_LIBS="-L$with_system_libvncserver/lib $rflag -lvncserver -lvncclient" 471 echo "using $with_system_libvncserver" 472 with_system_libvncserver=yes 473 fi 474 else 475 echo " *** cannot run $cmd *** " 1>&2 476 with_system_libvncserver=no 477 echo no 478 fi 479 elif libvncserver-config --version 1>/dev/null 2>&1; then 480 rflag="" 481 rprefix=`libvncserver-config --prefix` 482 if test "x$ld_minus_R" = "xno"; then 483 : 484 elif test "x$GCC" = "xyes"; then 485 rflag=" -Xlinker -R$rprefix/lib " 486 else 487 rflag=" -R$rprefix/lib " 488 fi 489 cvers=`libvncserver-config --version 2>/dev/null` 490 cscore=`echo "$cvers" | tr '.' ' ' | awk '{print 10000 * $1 + 100 * $2 + $3}'` 491 nscore=`echo "$vneed" | tr '.' ' ' | awk '{print 10000 * $1 + 100 * $2 + $3}'` 492 493 if test $cscore -lt $nscore; then 494 echo "no" 495 AC_MSG_ERROR([ 496========================================================================== 497*** Need libvncserver version $vneed, have version $cvers *** 498You are building with a system installed libvncserver and it is not 499new enough. 500========================================================================== 501]) 502 else 503 SYSTEM_LIBVNCSERVER_CFLAGS=`libvncserver-config --cflags` 504 SYSTEM_LIBVNCSERVER_LIBS="$rflag"`libvncserver-config --libs` 505 with_system_libvncserver=yes 506 echo yes 507 fi 508 else 509 with_system_libvncserver=no 510 echo no 511 fi 512fi 513 514if test "x$with_system_libvncserver" = "xyes"; then 515 AC_DEFINE(HAVE_SYSTEM_LIBVNCSERVER) 516 AC_SUBST(SYSTEM_LIBVNCSERVER_CFLAGS) 517 AC_SUBST(SYSTEM_LIBVNCSERVER_LIBS) 518fi 519AM_CONDITIONAL(HAVE_SYSTEM_LIBVNCSERVER, test "x$with_system_libvncserver" = "xyes") 520 521 522AC_ARG_WITH(jpeg, 523[ --without-jpeg disable support for jpeg] 524[ --with-jpeg=DIR use jpeg include/library files in DIR],,) 525 526# At this point: 527# no jpeg on command line with_jpeg="" 528# -with-jpeg with_jpeg="yes" 529# -without-jpeg with_jpeg="no" 530# -with-jpeg=/foo/dir with_jpeg="/foo/dir" 531 532HAVE_LIBJPEG_TURBO="false" 533 534if test "x$with_jpeg" != "xno"; then 535 AC_ARG_VAR(JPEG_LDFLAGS, 536 [Linker flags to use when linking with libjpeg, e.g. -L/foo/dir/lib -Wl,-static -ljpeg -Wl,-shared. This overrides the linker flags set by --with-jpeg.]) 537 saved_CPPFLAGS="$CPPFLAGS" 538 saved_LDFLAGS="$LDFLAGS" 539 saved_LIBS="$LIBS" 540 if test ! -z "$with_jpeg" -a "x$with_jpeg" != "xyes"; then 541 # add user supplied directory to flags: 542 CPPFLAGS="$CPPFLAGS -I$with_jpeg/include" 543 LDFLAGS="$LDFLAGS -L$with_jpeg/lib" 544 if test "x$ld_minus_R" = "xno"; then 545 : 546 elif test "x$GCC" = "xyes"; then 547 # this is not complete... in general a rat's nest. 548 LDFLAGS="$LDFLAGS -Xlinker -R$with_jpeg/lib" 549 else 550 LDFLAGS="$LDFLAGS -R$with_jpeg/lib" 551 fi 552 fi 553 if test "x$JPEG_LDFLAGS" != "x"; then 554 LDFLAGS="$saved_LDFLAGS" 555 LIBS="$LIBS $JPEG_LDFLAGS" 556 else 557 LIBS="-ljpeg" 558 fi 559 AC_CHECK_HEADER(jpeglib.h, HAVE_JPEGLIB_H="true") 560 AC_MSG_CHECKING(for jpeg_CreateCompress in libjpeg) 561 if test "x$HAVE_JPEGLIB_H" = "xtrue"; then 562 AC_LINK_IFELSE([AC_LANG_CALL([], [jpeg_CreateCompress])], 563 [AC_MSG_RESULT(yes); 564 AC_DEFINE(HAVE_LIBJPEG, 1, libjpeg support enabled)], 565 [AC_MSG_RESULT(no); HAVE_JPEGLIB_H=""]) 566 fi 567 if test "x$HAVE_JPEGLIB_H" != "xtrue"; then 568 # restore old flags on failure: 569 CPPFLAGS="$saved_CPPFLAGS" 570 LDFLAGS="$saved_LDFLAGS" 571 LIBS="$saved_LIBS" 572 AC_MSG_WARN([ 573========================================================================== 574*** The libjpeg compression library was not found. *** 575This may lead to reduced performance, especially over slow links. 576If libjpeg is in a non-standard location use --with-jpeg=DIR to 577indicate the header file is in DIR/include/jpeglib.h and the library 578in DIR/lib/libjpeg.a. You can also set the JPEG_LDFLAGS variable to 579specify more detailed linker flags. A copy of libjpeg-turbo may be 580obtained from: https://sourceforge.net/projects/libjpeg-turbo/files/ 581A copy of libjpeg may be obtained from: http://ijg.org/files/ 582========================================================================== 583]) 584 sleep 5 585 fi 586 587 if test "x$HAVE_JPEGLIB_H" = "xtrue"; then 588 AC_MSG_CHECKING(whether JPEG library is libjpeg-turbo) 589 m4_define([LJT_TEST], 590 [AC_LANG_PROGRAM([#include <stdio.h> 591 #include <jpeglib.h>], 592 [struct jpeg_compress_struct cinfo; 593 struct jpeg_error_mgr jerr; 594 cinfo.err=jpeg_std_error(&jerr); 595 jpeg_create_compress(&cinfo); 596 cinfo.input_components = 3; 597 jpeg_set_defaults(&cinfo); 598 cinfo.in_color_space = JCS_EXT_RGB; 599 jpeg_default_colorspace(&cinfo); 600 return 0;])] 601 ) 602 if test "x$cross_compiling" != "xyes"; then 603 AC_RUN_IFELSE([LJT_TEST], 604 [HAVE_LIBJPEG_TURBO="true"; AC_MSG_RESULT(yes)], 605 [AC_MSG_RESULT(no)]) 606 else 607 AC_LINK_IFELSE([LJT_TEST], 608 [HAVE_LIBJPEG_TURBO="true"; AC_MSG_RESULT(yes)], 609 [AC_MSG_RESULT(no)]) 610 fi 611 fi 612 613 if test "x$HAVE_JPEGLIB_H" = "xtrue" -a "x$HAVE_LIBJPEG_TURBO" != "xtrue"; then 614 AC_MSG_WARN([ 615========================================================================== 616*** The libjpeg library you are building against is not libjpeg-turbo. 617Performance will be reduced. You can obtain libjpeg-turbo from: 618https://sourceforge.net/projects/libjpeg-turbo/files/ *** 619========================================================================== 620]) 621 fi 622 623fi 624 625AC_ARG_WITH(png, 626[ --without-png disable support for png] 627[ --with-png=DIR use png include/library files in DIR],,) 628 629# At this point: 630# no png on command line with_png="" 631# -with-png with_png="yes" 632# -without-png with_png="no" 633# -with-png=/foo/dir with_png="/foo/dir" 634 635if test "x$with_png" != "xno"; then 636 if test ! -z "$with_png" -a "x$with_png" != "xyes"; then 637 # add user supplied directory to flags: 638 saved_CPPFLAGS="$CPPFLAGS" 639 saved_LDFLAGS="$LDFLAGS" 640 CPPFLAGS="$CPPFLAGS -I$with_png/include" 641 LDFLAGS="$LDFLAGS -L$with_png/lib" 642 if test "x$ld_minus_R" = "xno"; then 643 : 644 elif test "x$GCC" = "xyes"; then 645 # this is not complete... in general a rat's nest. 646 LDFLAGS="$LDFLAGS -Xlinker -R$with_png/lib" 647 else 648 LDFLAGS="$LDFLAGS -R$with_png/lib" 649 fi 650 fi 651 AC_CHECK_HEADER(png.h, HAVE_PNGLIB_H="true") 652 if test "x$HAVE_PNGLIB_H" = "xtrue"; then 653 AC_CHECK_LIB(png, png_create_write_struct, , HAVE_PNGLIB_H="") 654 fi 655 if test ! -z "$with_png" -a "x$with_png" != "xyes"; then 656 if test "x$HAVE_PNGLIB_H" != "xtrue"; then 657 # restore old flags on failure: 658 CPPFLAGS="$saved_CPPFLAGS" 659 LDFLAGS="$saved_LDFLAGS" 660 fi 661 fi 662 if test "$build_x11vnc" = "yes"; then 663 if test "x$HAVE_PNGLIB_H" != "xtrue"; then 664 AC_MSG_WARN([ 665========================================================================== 666*** The libpng compression library was not found. *** 667This may lead to reduced performance, especially over slow links. 668If libpng is in a non-standard location use --with-png=DIR to 669indicate the header file is in DIR/include/png.h and the library 670in DIR/lib/libpng.a. A copy of libpng may be obtained from: 671http://www.libpng.org/pub/png/libpng.html 672========================================================================== 673]) 674 sleep 5 675 fi 676 fi 677fi 678 679AC_ARG_WITH(libz, 680[ --without-libz disable support for deflate],,) 681AC_ARG_WITH(zlib, 682[ --without-zlib disable support for deflate] 683[ --with-zlib=DIR use zlib include/library files in DIR],,) 684 685if test "x$with_zlib" != "xno" -a "x$with_libz" != "xno"; then 686 if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then 687 saved_CPPFLAGS="$CPPFLAGS" 688 saved_LDFLAGS="$LDFLAGS" 689 CPPFLAGS="$CPPFLAGS -I$with_zlib/include" 690 LDFLAGS="$LDFLAGS -L$with_zlib/lib" 691 if test "x$ld_minus_R" = "xno"; then 692 : 693 elif test "x$GCC" = "xyes"; then 694 LDFLAGS="$LDFLAGS -Xlinker -R$with_zlib/lib" 695 else 696 LDFLAGS="$LDFLAGS -R$with_zlib/lib" 697 fi 698 fi 699 AC_CHECK_HEADER(zlib.h, HAVE_ZLIB_H="true") 700 if test "x$HAVE_ZLIB_H" = "xtrue"; then 701 AC_CHECK_LIB(z, deflate, , HAVE_ZLIB_H="") 702 fi 703 if test ! -z "$with_zlib" -a "x$with_zlib" != "xyes"; then 704 if test "x$HAVE_ZLIB_H" != "xtrue"; then 705 CPPFLAGS="$saved_CPPFLAGS" 706 LDFLAGS="$saved_LDFLAGS" 707 fi 708 fi 709 if test "$build_x11vnc" = "yes"; then 710 if test "x$HAVE_ZLIB_H" != "xtrue"; then 711 AC_MSG_WARN([ 712========================================================================== 713*** The libz compression library was not found. *** 714This may lead to reduced performance, especially over slow links. 715If libz is in a non-standard location use --with-zlib=DIR to indicate the 716header file is in DIR/include/zlib.h and the library in DIR/lib/libz.a. 717A copy of libz may be obtained from: http://www.gzip.org/zlib/ 718========================================================================== 719]) 720 sleep 5 721 fi 722 fi 723fi 724 725AC_ARG_WITH(pthread, 726[ --without-pthread disable support for libpthread],,) 727 728if test "x$with_pthread" != "xno"; then 729 AC_CHECK_HEADER(pthread.h, HAVE_PTHREAD_H="true") 730 if test ! -z "$HAVE_PTHREAD_H"; then 731 AC_CHECK_LIB(pthread, pthread_mutex_lock) 732 AC_CHECK_LIB(pthread, pthread_mutex_lock, HAVE_LIBPTHREAD="true") 733 fi 734fi 735AM_CONDITIONAL(HAVE_LIBPTHREAD, test ! -z "$HAVE_LIBPTHREAD") 736 737AC_MSG_CHECKING([for __thread]) 738AC_LINK_IFELSE([AC_LANG_PROGRAM(, [static __thread int p = 0])], 739 [AC_DEFINE(HAVE_TLS, 1, 740 Define to 1 if compiler supports __thread) 741 AC_MSG_RESULT([yes])], 742 [AC_MSG_RESULT([no])]) 743 744# tightvnc-filetransfer implemented using threads: 745if test -z "$HAVE_LIBPTHREAD"; then 746 with_tightvnc_filetransfer="" 747fi 748if test "x$with_tightvnc_filetransfer" = "xyes"; then 749 AC_DEFINE(WITH_TIGHTVNC_FILETRANSFER) 750fi 751AM_CONDITIONAL(WITH_TIGHTVNC_FILETRANSFER, test "$with_tightvnc_filetransfer" = "yes") 752 753# websockets implemented using base64 from resolve 754if test "x$HAVE_B64" != "xtrue"; then 755 with_websockets="" 756fi 757if test "x$with_websockets" = "xyes"; then 758 LIBS="$LIBS -lresolv $SSL_LIBS" 759 AC_DEFINE(WITH_WEBSOCKETS) 760fi 761AM_CONDITIONAL(WITH_WEBSOCKETS, test "$with_websockets" = "yes") 762 763AM_CONDITIONAL(HAVE_LIBZ, test ! -z "$HAVE_ZLIB_H") 764AM_CONDITIONAL(HAVE_LIBJPEG, test ! -z "$HAVE_JPEGLIB_H") 765AM_CONDITIONAL(HAVE_LIBPNG, test ! -z "$HAVE_PNGLIB_H") 766 767 768SDLCONFIG="sdl-config" 769AC_ARG_WITH(sdl-config, 770[[ --with-sdl-config=FILE 771 Use the given path to sdl-config when determining 772 SDL configuration; defaults to "sdl-config"]], 773[ 774 if test "$withval" != "yes" -a "$withval" != ""; then 775 SDLCONFIG=$withval 776 fi 777]) 778 779if test -z "$with_sdl"; then 780 if $SDLCONFIG --version >/dev/null 2>&1; then 781 with_sdl=yes 782 SDL_CFLAGS=`$SDLCONFIG --cflags` 783 SDL_LIBS=`$SDLCONFIG --libs` 784 else 785 with_sdl=no 786 fi 787fi 788AM_CONDITIONAL(HAVE_LIBSDL, test "x$with_sdl" = "xyes") 789AC_SUBST(SDL_CFLAGS) 790AC_SUBST(SDL_LIBS) 791 792 793# Check for GTK+. if present, build the GTK+ vnc viewer example 794PKG_CHECK_MODULES([GTK], [gtk+-2.0],,:) 795AM_CONDITIONAL(HAVE_LIBGTK, test ! -z "$GTK_LIBS") 796 797AC_CANONICAL_HOST 798MINGW=`echo $host_os | grep mingw32 2>/dev/null` 799AM_CONDITIONAL(MINGW, test ! -z "$MINGW" ) 800if test ! -z "$MINGW"; then 801 WSOCKLIB="-lws2_32" 802 LDFLAGS="$LDFLAGS -no-undefined" 803fi 804AC_SUBST(WSOCKLIB) 805 806# Check for libgcrypt 807AH_TEMPLATE(WITH_CLIENT_GCRYPT, [Enable support for libgcrypt in libvncclient]) 808AC_ARG_WITH(gcrypt, 809[ --without-gcrypt disable support for gcrypt],,) 810AC_ARG_WITH(client-gcrypt, 811[ --without-client-gcrypt disable support for gcrypt in libvncclient],,) 812 813if test "x$with_gcrypt" != "xno"; then 814 AM_PATH_LIBGCRYPT(1.4.0, , with_client_gcrypt=no) 815 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS" 816 LIBS="$LIBS $LIBGCRYPT_LIBS" 817 if test "x$with_client_gcrypt" != "xno"; then 818 AC_DEFINE(WITH_CLIENT_GCRYPT) 819 fi 820fi 821 822# Checks for GnuTLS 823AH_TEMPLATE(HAVE_GNUTLS, [GnuTLS library present]) 824AC_ARG_WITH(gnutls, 825[ --without-gnutls disable support for gnutls] 826[ --with-gnutls=DIR use gnutls include/library files in DIR],,) 827 828if test "x$with_gnutls" != "xno"; then 829 PKG_CHECK_MODULES(GNUTLS, gnutls >= 2.4.0,,:) 830 CFLAGS="$CFLAGS $GNUTLS_CFLAGS" 831 LIBS="$LIBS $GNUTLS_LIBS" 832fi 833AM_CONDITIONAL(HAVE_GNUTLS, test ! -z "$GNUTLS_LIBS") 834if test ! -z "$GNUTLS_LIBS" ; then 835 AC_DEFINE(HAVE_GNUTLS) 836fi 837 838 839# warn if neither GnuTLS nor OpenSSL are available 840if test -z "$SSL_LIBS" -a -z "$GNUTLS_LIBS"; then 841 AC_MSG_WARN([ 842========================================================================== 843*** No encryption library could be found. *** 844A libvncserver/libvncclient built this way will not support SSL encryption. 845To enable SSL install the necessary development packages (perhaps it is named 846something like libssl-dev or gnutls-dev) and run configure again. 847========================================================================== 848]) 849 sleep 5 850fi 851 852 853# IPv6 854AH_TEMPLATE(IPv6, [Enable IPv6 support]) 855AC_ARG_WITH(ipv6, 856[ --without-ipv6 disable IPv6 support],,) 857if test "x$with_ipv6" != "xno"; then 858 AC_CHECK_FUNC(getaddrinfo, AC_DEFINE(IPv6,1), 859 AC_CHECK_LIB(socket, getaddrinfo, AC_DEFINE(IPv6,1), [ 860 AC_MSG_CHECKING([for getaddrinfo in -lws2_32]) 861 LIBS="$LIBS -lws2_32" 862 AC_TRY_LINK([#include <ws2tcpip.h>], [getaddrinfo(0, 0, 0, 0);], [ 863 AC_DEFINE(IPv6,1) 864 AC_MSG_RESULT([yes]) 865 ], 866 AC_MSG_RESULT([no])) 867 ])) 868fi 869 870 871 872# Checks for header files. 873AC_HEADER_STDC 874AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h syslog.h unistd.h ws2tcpip.h]) 875 876# x11vnc only: 877if test "$build_x11vnc" = "yes"; then 878 AC_CHECK_HEADERS([pwd.h sys/wait.h utmpx.h termios.h sys/ioctl.h sys/stropts.h]) 879fi 880 881# Checks for typedefs, structures, and compiler characteristics. 882AC_C_CONST 883AC_C_INLINE 884AC_C_BIGENDIAN 885AC_TYPE_SIZE_T 886AC_HEADER_TIME 887AC_HEADER_SYS_WAIT 888AC_TYPE_SOCKLEN_T 889if test ! -d ./rfb; then 890 echo "creating subdir ./rfb for rfbint.h" 891 mkdir ./rfb 892fi 893AC_CREATE_STDINT_H(rfb/rfbint.h) 894AC_CACHE_CHECK([for in_addr_t], 895 vnc_cv_inaddrt, [ 896 AC_TRY_COMPILE([#include <sys/types.h> 897#include <netinet/in.h>], 898 [in_addr_t foo; return 0;], 899 [inaddrt=yes], 900 [inaddrt=no]), 901 ]) 902AH_TEMPLATE(NEED_INADDR_T, [Need a typedef for in_addr_t]) 903if test $inaddrt = no ; then 904 AC_DEFINE(NEED_INADDR_T) 905fi 906# Checks for library functions. 907AC_FUNC_MEMCMP 908AC_FUNC_STAT 909AC_FUNC_STRFTIME 910AC_FUNC_VPRINTF 911AC_FUNC_FORK 912AC_CHECK_LIB(nsl,gethostbyname) 913AC_CHECK_LIB(socket,socket) 914 915uname_s=`(uname -s) 2>/dev/null` 916if test "x$uname_s" = "xHP-UX"; then 917 # need -lsec for getspnam() 918 LDFLAGS="$LDFLAGS -lsec" 919fi 920 921AC_CHECK_FUNCS([ftime gethostbyname gethostname gettimeofday inet_ntoa memmove memset mmap mkfifo select socket strchr strcspn strdup strerror strstr]) 922# x11vnc only: 923if test "$build_x11vnc" = "yes"; then 924 AC_CHECK_FUNCS([setsid setpgrp getpwuid getpwnam getspnam getuid geteuid setuid setgid seteuid setegid initgroups waitpid setutxent grantpt shmat]) 925fi 926 927# check, if shmget is in cygipc.a 928AC_CHECK_LIB(cygipc,shmget) 929AM_CONDITIONAL(CYGIPC, test "$HAVE_CYGIPC" = "true") 930 931# Check if /usr/include/linux exists, if so, define LINUX 932AM_CONDITIONAL(LINUX, test -d /usr/include/linux) 933 934# Check for OS X specific header 935AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h, HAVE_OSX="true") 936AM_CONDITIONAL(OSX, test "$HAVE_OSX" = "true") 937 938# Check for Android specific header 939AC_CHECK_HEADER(android/api-level.h, HAVE_ANDROID="true") 940AM_CONDITIONAL(ANDROID, test "$HAVE_ANDROID" = "true") 941if test "$HAVE_ANDROID" = "true"; then 942 AC_DEFINE(HAVE_ANDROID, 1, [Android host system detected]) 943fi 944 945# On Solaris 2.7, write() returns ENOENT when it really means EAGAIN 946AH_TEMPLATE(ENOENT_WORKAROUND, [work around when write() returns ENOENT but does not mean it]) 947case `(uname -sr) 2>/dev/null` in 948 "SunOS 5.7") 949 AC_DEFINE(ENOENT_WORKAROUND) 950 ;; 951esac 952 953# Check for rpm SOURCES path 954printf "checking for rpm sources path... " 955RPMSOURCEDIR="NOT-FOUND" 956for directory in packages OpenLinux redhat RedHat rpm RPM "" ; do 957 if test -d /usr/src/${directory}/SOURCES; then 958 RPMSOURCEDIR="/usr/src/${directory}/SOURCES/" 959 fi 960done 961echo "$RPMSOURCEDIR" 962AM_CONDITIONAL(HAVE_RPM, test "$RPMSOURCEDIR" != "NOT-FOUND") 963AM_CONDITIONAL(WITH_X11VNC, test "$build_x11vnc" = "yes") 964AC_SUBST(RPMSOURCEDIR) 965 966AC_CONFIG_FILES([Makefile 967 libvncserver.pc 968 libvncclient.pc 969 libvncserver/Makefile 970 examples/Makefile 971 examples/android/Makefile 972 vncterm/Makefile 973 webclients/Makefile 974 webclients/java-applet/Makefile 975 webclients/java-applet/ssl/Makefile 976 libvncclient/Makefile 977 client_examples/Makefile 978 test/Makefile 979 libvncserver-config 980 LibVNCServer.spec]) 981# 982# x11vnc only: 983# 984if test "$build_x11vnc" = "yes"; then 985 # 986 # NOTE: if you are using the LibVNCServer-X.Y.Z.tar.gz source 987 # tarball and nevertheless want to run autoconf (i.e. aclocal, 988 # autoheader, automake, autoconf) AGAIN (perhaps you have a 989 # special target system, e.g. embedded) then you will need to 990 # comment out the following 'AC_CONFIG_FILES' line to avoid 991 # automake error messages like: 992 # 993 # configure.ac:690: required file `x11vnc/Makefile.in' not found 994 # 995 AC_CONFIG_FILES([x11vnc/Makefile x11vnc/misc/Makefile x11vnc/misc/turbovnc/Makefile]) 996 997 if test ! -z "$with_system_libvncserver" -a "x$with_system_libvncserver" != "xno"; then 998 # need to move local tarball rfb headers aside: 999 hdrs="rfb.h rfbclient.h rfbproto.h rfbregion.h rfbint.h" 1000 echo "with-system-libvncserver: moving aside headers $hdrs" 1001 for hdr in $hdrs 1002 do 1003 if test -f "rfb/$hdr"; then 1004 echo "with-system-libvncserver: moving rfb/$hdr to rfb/$hdr.ORIG" 1005 mv rfb/$hdr rfb/$hdr.ORIG 1006 fi 1007 done 1008 echo "with-system-libvncserver: *NOTE* move them back manually to start over." 1009 fi 1010fi 1011 1012AC_CONFIG_COMMANDS([chmod-libvncserver-config],[chmod a+x libvncserver-config]) 1013AC_OUTPUT 1014chmod a+x ./libvncserver-config 1015 1016