From 1d3fa12747276ab87b9630e0c45769e1ab161f6e Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 5 Jun 2013 11:50:48 -0700 Subject: [PATCH] Build guacd and libguac. --- Makefile.am | 3 +- configure.ac | 12 +- init.d/guacd | 162 -------------------------- src/guacd/.gitignore | 3 + src/guacd/Makefile.am | 6 +- {init.d => src/guacd/init.d}/guacd.in | 0 {man => src/guacd/man}/guacd.8 | 0 src/libguac/Makefile.am | 39 ++++++- 8 files changed, 54 insertions(+), 171 deletions(-) delete mode 100755 init.d/guacd rename {init.d => src/guacd/init.d}/guacd.in (100%) rename {man => src/guacd/man}/guacd.8 (100%) diff --git a/Makefile.am b/Makefile.am index fce66815..2f7482c0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -37,6 +37,5 @@ ACLOCAL_AMFLAGS = -I m4 # Subprojects -DIST_SUBDIRS = libguac guacd protocols/vnc protocols/rdp protocols/ssh protocols/spice -SUBDIRS = libguac guacd $(PROTOCOL_DIRS) +SUBDIRS = src/libguac src/guacd diff --git a/configure.ac b/configure.ac index 119e9506..79903cea 100644 --- a/configure.ac +++ b/configure.ac @@ -60,7 +60,9 @@ AC_DEFINE([_BSD_SOURCE], [], [Uses BSD APIs]) AC_CHECK_LIB([dl], [dlopen],, AC_MSG_ERROR("libdl is required for loading client plugins")) AC_CHECK_LIB([png], [png_write_png],, AC_MSG_ERROR("libpng is required for writing png messages")) AC_CHECK_LIB([cairo], [cairo_create],, AC_MSG_ERROR("cairo is required for drawing instructions")) -AC_CHECK_LIB([pthread], [pthread_create], [PTHREAD_LIBS=-lpthread]) +AC_CHECK_LIB([pthread], [pthread_create], + [PTHREAD_LIBS=-lpthread + AC_DEFINE([HAVE_LIBPTHREAD])]) AC_CHECK_LIB([cunit], [CU_run_test], [CUNIT_LIBS=-lcunit]) AC_CHECK_LIB([wsock32], [main]) @@ -76,6 +78,10 @@ AC_CHECK_FUNCS([clock_gettime gettimeofday memmove memset select strdup png_get_ AC_TYPE_SIZE_T AC_TYPE_SSIZE_T +# Bundled libguac +AC_SUBST([LIBGUAC_LTLIB], '$(top_builddir)/src/libguac/libguac.la') +AC_SUBST([LIBGUAC_INCLUDE], '-I$(top_srcdir)/src/libguac') + # # Ogg Vorbis # @@ -143,6 +149,8 @@ $PACKAGE_NAME version $PACKAGE_VERSION: " -AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([Makefile + src/libguac/Makefile + src/guacd/Makefile]) AC_OUTPUT diff --git a/init.d/guacd b/init.d/guacd deleted file mode 100755 index c5a1ae17..00000000 --- a/init.d/guacd +++ /dev/null @@ -1,162 +0,0 @@ -#!/bin/sh - -# ***** 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. -# -# The Original Code is guacd. -# -# 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 ***** - -# guacd -# -# chkconfig: 2345 20 80 -# description: Guacamole proxy daemon - -### BEGIN INIT INFO -# Provides: guacd -# Required-Start: $network $syslog -# Required-Stop: $network $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Guacamole proxy daemon -# Description: The Guacamole proxy daemon, required to translate remote desktop protocols into the text-based Guacamole protocol used by the JavaScript application. -### END INIT INFO - -prog="guacd" -exec="/usr/local/sbin/$prog" -pidfile="/var/run/$prog.pid" - -# Returns PID of currently running process, if any -getpid() { - - if [ -f "$pidfile" ] - then - - read PID < "$pidfile" - - # If pidfile contains PID and PID is valid - if [ -n "$PID" ] && ps "$PID" > /dev/null 2>&1 - then - echo "$PID" - return 0 - fi - - fi - - # pidfile/pid not found, or process is dead - return 1 - -} - -start() { - [ -x $exec ] || exit 5 - echo -n "Starting $prog: " - - getpid > /dev/null || $exec -p "$pidfile" - retval=$? - - case "$retval" in - 0) - echo "SUCCESS" - ;; - *) - echo "FAIL" - ;; - esac - - return $retval -} - -stop() { - echo -n "Stopping $prog: " - - PID=`getpid` - retval=$? - - case "$retval" in - 0) - if kill $PID > /dev/null 2>&1 - then - echo "SUCCESS" - return 0 - fi - - echo "FAIL" - return 1 - ;; - *) - echo "SUCCESS (not running)" - return 0 - ;; - esac - -} - -restart() { - stop && start -} - -force_reload() { - restart -} - -status() { - - PID=`getpid` - retval=$? - - case "$retval" in - 0) - echo "$prog is running with PID=$PID." - ;; - *) - echo "$prog is not running." - ;; - esac - - return $retval - -} - -case "$1" in - start|stop|status|restart|force-reload) - $1 - ;; - try-restart) - status && restart - ;; - *) - echo "Usage: $0 {start|stop|status|restart|try-restart|force-reload}" - exit 2 -esac -exit $? - diff --git a/src/guacd/.gitignore b/src/guacd/.gitignore index 013e6325..c5e2fa21 100644 --- a/src/guacd/.gitignore +++ b/src/guacd/.gitignore @@ -1,4 +1,7 @@ +# Compiled init script +init.d/guacd + # Compiled proxy guacd guacd.exe diff --git a/src/guacd/Makefile.am b/src/guacd/Makefile.am index 4f9305dc..c5e4cc10 100644 --- a/src/guacd/Makefile.am +++ b/src/guacd/Makefile.am @@ -37,14 +37,14 @@ AUTOMAKE_OPTIONS = foreign initdir = @init_dir@ -AM_CFLAGS = -Werror -Wall -pedantic -Iinclude $(LIBGUAC_INCLUDE) +AM_CFLAGS = -Werror -Wall -pedantic $(LIBGUAC_INCLUDE) sbin_PROGRAMS = guacd init_SCRIPTS = init.d/guacd man_MANS = man/guacd.8 -noinst_HEADERS = include/client.h include/log.h -guacd_SOURCES = src/daemon.c src/client.c src/log.c +noinst_HEADERS = client.h log.h +guacd_SOURCES = daemon.c client.c log.c guacd_LDADD = $(LIBGUAC_LTLIB) EXTRA_DIST = init.d/guacd.in man/guacd.8 LICENSE diff --git a/init.d/guacd.in b/src/guacd/init.d/guacd.in similarity index 100% rename from init.d/guacd.in rename to src/guacd/init.d/guacd.in diff --git a/man/guacd.8 b/src/guacd/man/guacd.8 similarity index 100% rename from man/guacd.8 rename to src/guacd/man/guacd.8 diff --git a/src/libguac/Makefile.am b/src/libguac/Makefile.am index 0b85b25c..1126f6a8 100644 --- a/src/libguac/Makefile.am +++ b/src/libguac/Makefile.am @@ -36,8 +36,43 @@ AUTOMAKE_OPTIONS = foreign ACLOCAL_AMFLAGS = -I m4 +AM_CFLAGS = -Werror -Wall -pedantic -Iguacamole -SUBDIRS = src . tests +libguacincdir = $(includedir)/guacamole +libguacinc_HEADERS = \ + guacamole/client.h \ + guacamole/error.h \ + guacamole/hash.h \ + guacamole/instruction.h \ + guacamole/layer.h \ + guacamole/plugin.h \ + guacamole/pool.h \ + guacamole/protocol.h \ + guacamole/socket.h \ + guacamole/stream.h \ + guacamole/timestamp.h -EXTRA_DIST = LICENSE doc/Doxyfile +noinst_HEADERS = \ + client-handlers.h \ + palette.h \ + unicode.h + +libguac_la_SOURCES = \ + client.c \ + client-handlers.c \ + error.c \ + hash.c \ + instruction.c \ + palette.c \ + plugin.c \ + pool.c \ + protocol.c \ + socket.c \ + socket-fd.c \ + socket-nest.c \ + timestamp.c \ + unicode.c + +lib_LTLIBRARIES = libguac.la +libguac_la_LDFLAGS = -version-info 4:0:0