2011-03-02 09:19:24 +00:00
|
|
|
# ***** BEGIN LICENSE BLOCK *****
|
|
|
|
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
|
|
#
|
|
|
|
# The contents of this file are subject to the Mozilla Public License Version
|
|
|
|
# 1.1 (the "License"); you may not use this file except in compliance with
|
|
|
|
# the License. You may obtain a copy of the License at
|
|
|
|
# http://www.mozilla.org/MPL/
|
|
|
|
#
|
|
|
|
# Software distributed under the License is distributed on an "AS IS" basis,
|
|
|
|
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
|
|
# for the specific language governing rights and limitations under the
|
|
|
|
# License.
|
|
|
|
#
|
2013-06-04 23:29:31 +00:00
|
|
|
# The Original Code is guacamole-server.
|
2011-03-02 09:19:24 +00:00
|
|
|
#
|
|
|
|
# The Initial Developer of the Original Code is
|
|
|
|
# Michael Jumper.
|
|
|
|
# Portions created by the Initial Developer are Copyright (C) 2010
|
|
|
|
# the Initial Developer. All Rights Reserved.
|
|
|
|
#
|
|
|
|
# Contributor(s):
|
|
|
|
#
|
|
|
|
# Alternatively, the contents of this file may be used under the terms of
|
|
|
|
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
|
|
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
|
|
# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
|
|
# of those above. If you wish to allow use of your version of this file only
|
|
|
|
# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
|
|
# use your version of this file under the terms of the MPL, indicate your
|
|
|
|
# decision by deleting the provisions above and replace them with the notice
|
|
|
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
|
|
# the provisions above, a recipient may use your version of this file under
|
|
|
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
|
|
|
#
|
|
|
|
# ***** END LICENSE BLOCK *****
|
2010-12-08 21:14:04 +00:00
|
|
|
|
|
|
|
|
2013-06-04 23:29:31 +00:00
|
|
|
AC_PREREQ([2.61])
|
2013-07-14 00:33:23 +00:00
|
|
|
AC_INIT([guacamole-server], [0.8.2])
|
2013-06-04 23:29:31 +00:00
|
|
|
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
|
2010-12-08 21:14:04 +00:00
|
|
|
|
2013-06-04 23:29:31 +00:00
|
|
|
LT_PREREQ([2.2])
|
|
|
|
LT_INIT([dlopen])
|
2011-02-28 04:27:12 +00:00
|
|
|
|
2013-06-04 23:29:31 +00:00
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
2013-06-05 17:45:07 +00:00
|
|
|
|
|
|
|
# Programs
|
|
|
|
AC_PROG_CC
|
|
|
|
AC_PROG_CC_C99
|
|
|
|
AC_PROG_LIBTOOL
|
|
|
|
|
|
|
|
# Headers
|
|
|
|
AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/socket.h time.h sys/time.h syslog.h unistd.h cairo/cairo.h pngstruct.h])
|
|
|
|
|
|
|
|
# Source characteristics
|
|
|
|
AC_DEFINE([_POSIX_C_SOURCE], [199309L], [Uses POSIX APIs])
|
|
|
|
AC_DEFINE([_BSD_SOURCE], [], [Uses BSD APIs])
|
|
|
|
|
2013-07-09 00:40:20 +00:00
|
|
|
# libdl
|
2013-07-09 02:05:06 +00:00
|
|
|
AC_CHECK_LIB([dl], [dlopen], [DL_LIBS=-ldl],
|
2013-07-09 00:40:20 +00:00
|
|
|
AC_MSG_ERROR("libdl is required for loading client plugins"))
|
|
|
|
|
|
|
|
# libpng
|
|
|
|
AC_CHECK_LIB([png], [png_write_png], [PNG_LIBS=-lpng],
|
|
|
|
AC_MSG_ERROR("libpng is required for writing png messages"))
|
|
|
|
|
|
|
|
# Cairo
|
|
|
|
AC_CHECK_LIB([cairo], [cairo_create], [CAIRO_LIBS=-lcairo],
|
|
|
|
AC_MSG_ERROR("Cairo is required for drawing instructions"))
|
|
|
|
|
|
|
|
# libpthread
|
|
|
|
AC_CHECK_LIB([pthread], [pthread_create], [PTHREAD_LIBS=-lpthread
|
2013-06-05 18:50:48 +00:00
|
|
|
AC_DEFINE([HAVE_LIBPTHREAD])])
|
2013-07-09 00:40:20 +00:00
|
|
|
|
|
|
|
# cunit
|
|
|
|
AC_CHECK_LIB([cunit], [CU_run_test], [CUNIT_LIBS=-lcunit])
|
|
|
|
|
|
|
|
# WinSock
|
2013-06-05 17:45:07 +00:00
|
|
|
AC_CHECK_LIB([wsock32], [main])
|
|
|
|
|
2013-07-09 00:40:20 +00:00
|
|
|
AC_SUBST(DL_LIBS)
|
|
|
|
AC_SUBST(PNG_LIBS)
|
|
|
|
AC_SUBST(CAIRO_LIBS)
|
2013-06-05 17:45:07 +00:00
|
|
|
AC_SUBST(PTHREAD_LIBS)
|
|
|
|
AC_SUBST(CUNIT_LIBS)
|
|
|
|
|
|
|
|
# Library functions
|
|
|
|
AC_FUNC_MALLOC
|
|
|
|
AC_FUNC_REALLOC
|
2013-07-16 18:27:46 +00:00
|
|
|
AC_CHECK_FUNCS([clock_gettime gettimeofday memmove memset select strdup nanosleep])
|
|
|
|
|
|
|
|
AC_CHECK_DECL([png_get_io_ptr],
|
|
|
|
[AC_DEFINE([HAVE_PNG_GET_IO_PTR])],,
|
|
|
|
[#include <png.h>])
|
|
|
|
|
|
|
|
AC_CHECK_DECL([cairo_format_stride_for_width],
|
|
|
|
[AC_DEFINE([HAVE_CAIRO_FORMAT_STRIDE_FOR_WIDTH])],,
|
|
|
|
[#include <cairo/cairo.h>])
|
2013-06-05 17:45:07 +00:00
|
|
|
|
|
|
|
# Typedefs
|
|
|
|
AC_TYPE_SIZE_T
|
|
|
|
AC_TYPE_SSIZE_T
|
|
|
|
|
2013-06-05 18:50:48 +00:00
|
|
|
# Bundled libguac
|
|
|
|
AC_SUBST([LIBGUAC_LTLIB], '$(top_builddir)/src/libguac/libguac.la')
|
|
|
|
AC_SUBST([LIBGUAC_INCLUDE], '-I$(top_srcdir)/src/libguac')
|
|
|
|
|
2013-07-08 17:35:56 +00:00
|
|
|
# Options
|
|
|
|
AC_ARG_WITH(init_dir,
|
|
|
|
[AS_HELP_STRING([--with-init-dir=<path>],
|
|
|
|
[install init scripts to the given directory])
|
|
|
|
],init_dir=$withval)
|
|
|
|
AM_CONDITIONAL([ENABLE_INIT], [test "x${init_dir}" != "x"])
|
|
|
|
AC_SUBST(init_dir)
|
|
|
|
|
2013-07-22 02:56:03 +00:00
|
|
|
#
|
|
|
|
# libssl
|
|
|
|
#
|
|
|
|
|
|
|
|
have_ssl=yes
|
|
|
|
SSL_LIBS=
|
|
|
|
|
|
|
|
AC_CHECK_HEADER(openssl/ssl.h,, [have_ssl=no])
|
|
|
|
AC_CHECK_LIB([ssl], [SSL_CTX_new], [SSL_LIBS="$SSL_LIBS -lssl"], [have_ssl=no])
|
|
|
|
AM_CONDITIONAL([ENABLE_SSL], [test "x${have_ssl}" = "xyes"])
|
|
|
|
|
|
|
|
if test "x${have_ssl}" = "xno"
|
|
|
|
then
|
|
|
|
AC_MSG_WARN([
|
|
|
|
--------------------------------------------
|
|
|
|
Unable to find libssl.
|
|
|
|
guacd will not support SSL connections.
|
|
|
|
--------------------------------------------])
|
|
|
|
else
|
|
|
|
AC_DEFINE([ENABLE_SSL])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_SUBST(SSL_LIBS)
|
|
|
|
|
|
|
|
|
2013-06-05 17:45:07 +00:00
|
|
|
#
|
|
|
|
# Ogg Vorbis
|
|
|
|
#
|
|
|
|
|
2013-07-09 07:58:14 +00:00
|
|
|
have_vorbis=yes
|
2013-06-05 17:45:07 +00:00
|
|
|
VORBIS_LIBS=
|
|
|
|
|
2013-07-09 07:58:14 +00:00
|
|
|
AC_CHECK_HEADER(vorbis/vorbisenc.h,, [have_vorbis=no])
|
2013-07-09 08:14:29 +00:00
|
|
|
AC_CHECK_LIB([ogg], [ogg_stream_init], [VORBIS_LIBS="$VORBIS_LIBS -logg"], [have_vorbis=no])
|
2013-07-09 07:58:14 +00:00
|
|
|
AC_CHECK_LIB([vorbis], [vorbis_block_init], [VORBIS_LIBS="$VORBIS_LIBS -lvorbis"], [have_vorbis=no])
|
2013-07-09 08:14:29 +00:00
|
|
|
AC_CHECK_LIB([vorbisenc], [vorbis_encode_init], [VORBIS_LIBS="$VORBIS_LIBS -lvorbisenc"], [have_vorbis=no])
|
2013-07-09 07:58:14 +00:00
|
|
|
AM_CONDITIONAL([ENABLE_OGG], [test "x${have_vorbis}" = "xyes"])
|
2013-06-05 17:45:07 +00:00
|
|
|
|
2013-07-09 07:58:14 +00:00
|
|
|
if test "x${have_vorbis}" = "xno"
|
2013-07-02 19:14:19 +00:00
|
|
|
then
|
|
|
|
AC_MSG_WARN([
|
|
|
|
--------------------------------------------
|
2013-07-09 08:14:29 +00:00
|
|
|
Unable to find libogg / libvorbis / libvorbisenc.
|
2013-07-02 19:14:19 +00:00
|
|
|
Sound will not be encoded with Ogg Vorbis.
|
|
|
|
--------------------------------------------])
|
|
|
|
else
|
|
|
|
AC_DEFINE([ENABLE_OGG])
|
|
|
|
fi
|
|
|
|
|
2013-06-12 05:41:23 +00:00
|
|
|
AC_SUBST(VORBIS_LIBS)
|
|
|
|
|
2013-06-12 18:47:44 +00:00
|
|
|
#
|
|
|
|
# PANGO
|
|
|
|
#
|
|
|
|
|
|
|
|
have_pango=yes
|
|
|
|
PKG_CHECK_MODULES([PANGO], [pango],, [have_pango=no]);
|
|
|
|
PKG_CHECK_MODULES([PANGOCAIRO], [pangocairo],, [have_pango=no]);
|
|
|
|
|
2013-06-05 17:45:07 +00:00
|
|
|
#
|
|
|
|
# libVNCServer
|
|
|
|
#
|
|
|
|
|
|
|
|
have_libvncserver=yes
|
|
|
|
VNC_LIBS=
|
|
|
|
|
|
|
|
AC_CHECK_LIB([vncclient], [rfbInitClient], [VNC_LIBS="$VNC_LIBS -lvncclient"], [have_libvncserver=no])
|
|
|
|
AM_CONDITIONAL([ENABLE_VNC], [test "x${have_libvncserver}" = "xyes"])
|
|
|
|
|
2013-06-12 05:41:23 +00:00
|
|
|
AC_SUBST(VNC_LIBS)
|
|
|
|
|
2013-07-08 20:03:04 +00:00
|
|
|
#
|
|
|
|
# Repeater support within libVNCServer
|
|
|
|
#
|
|
|
|
|
|
|
|
if test "x${have_libvncserver}" = "xyes"
|
|
|
|
then
|
|
|
|
|
|
|
|
have_vnc_repeater=yes
|
|
|
|
AC_CHECK_MEMBERS([rfbClient.destHost, rfbClient.destPort],
|
|
|
|
[], [have_vnc_repeater=no],
|
|
|
|
[[#include <rfb/rfbclient.h>]])
|
|
|
|
|
|
|
|
if test "x${have_vnc_repeater}" = "xno"
|
|
|
|
then
|
|
|
|
AC_MSG_WARN([
|
|
|
|
--------------------------------------------
|
|
|
|
No repeater support found in libvncclient.
|
|
|
|
Support for VNC repeaters will not be built.
|
|
|
|
--------------------------------------------])
|
|
|
|
else
|
|
|
|
AC_DEFINE([ENABLE_VNC_REPEATER])
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
2013-06-05 17:45:07 +00:00
|
|
|
#
|
|
|
|
# FreeRDP
|
|
|
|
#
|
|
|
|
|
2013-07-17 02:36:58 +00:00
|
|
|
have_winpr=yes
|
2013-06-05 17:45:07 +00:00
|
|
|
have_freerdp=yes
|
|
|
|
RDP_LIBS=
|
|
|
|
|
2013-07-17 01:54:35 +00:00
|
|
|
# libfreerdp-cache
|
|
|
|
AC_CHECK_LIB([freerdp-cache], [glyph_cache_register_callbacks],
|
|
|
|
[RDP_LIBS="$RDP_LIBS -lfreerdp-cache"],
|
|
|
|
[have_freerdp=no])
|
|
|
|
|
|
|
|
# libfreerdp-core
|
|
|
|
AC_CHECK_LIB([freerdp-core], [freerdp_new],
|
|
|
|
[RDP_LIBS="$RDP_LIBS -lfreerdp-core"],
|
|
|
|
[have_freerdp=no])
|
|
|
|
|
|
|
|
# libfreerdp-channels (1.0) / libfreerdp-client (1.1+)
|
|
|
|
AC_CHECK_LIB([freerdp-client], [freerdp_channels_new],
|
|
|
|
[RDP_LIBS="$RDP_LIBS -lfreerdp-client"],
|
|
|
|
[AC_CHECK_LIB([freerdp-channels], [freerdp_channels_new],
|
|
|
|
[RDP_LIBS="$RDP_LIBS -lfreerdp-channels"],
|
|
|
|
[have_freerdp=no])])
|
|
|
|
|
|
|
|
# libfreerdp-utils
|
|
|
|
AC_CHECK_LIB([freerdp-utils], [svc_plugin_init],
|
|
|
|
[RDP_LIBS="$RDP_LIBS -lfreerdp-utils"],
|
|
|
|
[have_freerdp=no])
|
|
|
|
|
|
|
|
# libfreerdp-codec
|
|
|
|
AC_CHECK_LIB([freerdp-codec], [freerdp_image_convert],
|
|
|
|
[RDP_LIBS="$RDP_LIBS -lfreerdp-codec"],
|
|
|
|
[have_freerdp=no])
|
|
|
|
|
2013-07-17 17:53:51 +00:00
|
|
|
# FreeRDP-specific structure members
|
|
|
|
AC_CHECK_MEMBERS([rdpSvcPlugin.interval_ms],
|
|
|
|
[[#include <freerdp/utils/svc_plugin.h>]])
|
|
|
|
|
2013-07-17 06:33:03 +00:00
|
|
|
# FreeRDP-specific headers
|
|
|
|
AC_CHECK_HEADERS([freerdp/locale/keyboard.h])
|
|
|
|
|
2013-07-17 02:22:03 +00:00
|
|
|
# Check for stream support via WinPR
|
2013-07-17 02:36:58 +00:00
|
|
|
AC_CHECK_HEADER(winpr/stream.h,, # <-- stable-1.1
|
|
|
|
[have_winpr=no,
|
|
|
|
AC_CHECK_LIB([freerdp-utils], [stream_write_uint8],, # <-- stable-1.0
|
|
|
|
[have_freerdp=no])])
|
2013-07-17 02:22:03 +00:00
|
|
|
|
2013-07-17 17:22:03 +00:00
|
|
|
# Check for types in WinPR
|
|
|
|
AC_CHECK_HEADER(winpr/wtypes.h,, # <-- stable-1.1
|
|
|
|
[have_winpr=no,
|
|
|
|
AC_CHECK_HEADER(freerdp/types.h,, # <-- stable-1.0
|
|
|
|
[have_freerdp=no])])
|
|
|
|
|
2013-07-17 02:36:58 +00:00
|
|
|
if test "x${have_winpr}" = "xyes"
|
|
|
|
then
|
|
|
|
AC_DEFINE([ENABLE_WINPR])
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
AM_CONDITIONAL([ENABLE_WINPR], [test "x${have_winpr}" = "xyes"])
|
|
|
|
AM_CONDITIONAL([ENABLE_RDP], [test "x${have_freerdp}" = "xyes"])
|
2013-06-05 17:45:07 +00:00
|
|
|
|
2013-06-12 05:41:23 +00:00
|
|
|
AC_SUBST(RDP_LIBS)
|
|
|
|
|
2013-06-05 17:45:07 +00:00
|
|
|
#
|
|
|
|
# libssh
|
|
|
|
#
|
|
|
|
|
|
|
|
have_libssh=yes
|
|
|
|
SSH_LIBS=
|
|
|
|
|
|
|
|
AC_CHECK_LIB([ssh], [ssh_new], [SSH_LIBS="$SSH_LIBS -lssh"], [have_libssh=no])
|
2013-06-12 18:47:44 +00:00
|
|
|
AM_CONDITIONAL([ENABLE_SSH], [test "x${have_libssh}" = "xyes" -a "x${have_pango}" = "xyes"])
|
2013-06-05 17:45:07 +00:00
|
|
|
|
2013-06-12 05:41:23 +00:00
|
|
|
AC_SUBST(SSH_LIBS)
|
|
|
|
|
2013-06-05 18:50:48 +00:00
|
|
|
AC_CONFIG_FILES([Makefile
|
2013-06-05 19:12:32 +00:00
|
|
|
tests/Makefile
|
2013-06-05 18:50:48 +00:00
|
|
|
src/libguac/Makefile
|
2013-06-05 19:05:39 +00:00
|
|
|
src/guacd/Makefile
|
|
|
|
src/protocols/rdp/Makefile
|
|
|
|
src/protocols/ssh/Makefile
|
|
|
|
src/protocols/vnc/Makefile])
|
2010-12-08 21:14:04 +00:00
|
|
|
AC_OUTPUT
|
2013-06-04 23:29:31 +00:00
|
|
|
|
2013-07-08 17:35:56 +00:00
|
|
|
AM_COND_IF([ENABLE_RDP], [build_rdp=yes], [build_rdp=no])
|
|
|
|
AM_COND_IF([ENABLE_SSH], [build_ssh=yes], [build_ssh=no])
|
|
|
|
AM_COND_IF([ENABLE_VNC], [build_vnc=yes], [build_vnc=no])
|
|
|
|
|
|
|
|
AM_COND_IF([ENABLE_INIT], [build_init="${init_dir}"], [build_init=no])
|
2013-06-12 18:47:44 +00:00
|
|
|
|
2013-06-05 22:18:53 +00:00
|
|
|
echo "
|
|
|
|
------------------------------------------------
|
|
|
|
$PACKAGE_NAME version $PACKAGE_VERSION
|
|
|
|
------------------------------------------------
|
|
|
|
|
2013-06-12 18:47:44 +00:00
|
|
|
Library status:
|
|
|
|
|
|
|
|
freerdp ............. ${have_freerdp}
|
|
|
|
pango ............... ${have_pango}
|
|
|
|
libssh .............. ${have_libssh}
|
2013-07-22 02:56:03 +00:00
|
|
|
libssl .............. ${have_ssl}
|
2013-06-12 18:47:44 +00:00
|
|
|
libVNCServer ........ ${have_libvncserver}
|
2013-07-09 07:58:14 +00:00
|
|
|
libvorbis ........... ${have_vorbis}
|
2013-06-12 18:47:44 +00:00
|
|
|
|
2013-06-05 22:18:53 +00:00
|
|
|
Protocol support:
|
|
|
|
|
2013-06-12 18:47:44 +00:00
|
|
|
RDP ....... ${build_rdp}
|
|
|
|
SSH ....... ${build_ssh}
|
|
|
|
VNC ....... ${build_vnc}
|
2013-06-05 22:18:53 +00:00
|
|
|
|
2013-07-08 17:35:56 +00:00
|
|
|
Init scripts: ${build_init}
|
|
|
|
|
2013-06-05 22:18:53 +00:00
|
|
|
Type \"make\" to compile $PACKAGE_NAME.
|
|
|
|
"
|
|
|
|
|