blob: 2eaa46aab9d5f12e2739974634b5f06283b6ee85 [file] [log] [blame]
San Mehata430b2b2014-09-23 08:30:51 -07001# 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