From e6a1521e75480c112c4594668844dcb1259b1152 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 4 Jun 2013 16:29:31 -0700 Subject: [PATCH] Improved build scripts for guacd and libguac, added parent build scripts. --- Makefile.am | 41 +++++++++++++++++++++ configure.ac | 49 ++++++++++++++++++++++++++ guacd/{configure.in => configure.ac} | 24 ++++++++----- libguac/{configure.in => configure.ac} | 45 ++++++++++++----------- 4 files changed, 130 insertions(+), 29 deletions(-) create mode 100644 Makefile.am create mode 100644 configure.ac rename guacd/{configure.in => configure.ac} (87%) rename libguac/{configure.in => configure.ac} (90%) diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 00000000..ba196cc9 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,41 @@ +# ***** 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 guacamole-server. +# +# 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 ***** + +ACLOCAL_AMFLAGS = -I m4 + +# Subprojects +SUBDIRS = libguac guacd + diff --git a/configure.ac b/configure.ac new file mode 100644 index 00000000..3d0c795a --- /dev/null +++ b/configure.ac @@ -0,0 +1,49 @@ +# ***** 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 guacamole-server. +# +# 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 ***** + + +AC_PREREQ([2.61]) +AC_INIT([guacamole-server], [0.8.0]) +AM_INIT_AUTOMAKE([-Wall -Werror foreign]) + +LT_PREREQ([2.2]) +LT_INIT([dlopen]) + +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SUBDIRS([libguac guacd]) +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT + diff --git a/guacd/configure.in b/guacd/configure.ac similarity index 87% rename from guacd/configure.in rename to guacd/configure.ac index 9331367c..dab2a341 100644 --- a/guacd/configure.in +++ b/guacd/configure.ac @@ -34,24 +34,28 @@ # # ***** END LICENSE BLOCK ***** -AC_INIT(src/daemon.c) -AM_INIT_AUTOMAKE(guacd, 0.7.0) +AC_PREREQ([2.61]) +AC_INIT([guacd], [0.7.0]) +AM_INIT_AUTOMAKE([-Wall -Werror foreign]) -# Checks for programs. +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/client.c]) +AC_CONFIG_HEADERS([include/client.h]) + +# Programs AC_PROG_CC AC_PROG_CC_C99 -# Checks for libraries. -AC_CHECK_LIB([guac], [guac_client_plugin_open],, AC_MSG_ERROR("libguac must be installed first")) +# Libraries AC_CHECK_LIB([pthread], [pthread_create]) -# Checks for header files. -AC_CHECK_HEADERS([netinet/in.h stdlib.h string.h sys/socket.h syslog.h unistd.h guacamole/client.h]) - -# Checks for library functions. +# Functions AC_FUNC_MALLOC AC_CHECK_FUNCS([memset socket strerror fork]) +# Headers +AC_CHECK_HEADERS([netinet/in.h stdlib.h string.h sys/socket.h syslog.h unistd.h]) + # Options AC_ARG_WITH(init_dir, [AS_HELP_STRING([--with-init-dir=], @@ -59,5 +63,7 @@ AC_ARG_WITH(init_dir, ],init_dir=$withval) AC_SUBST(init_dir) +# Done AC_CONFIG_FILES([Makefile]) AC_OUTPUT + diff --git a/libguac/configure.in b/libguac/configure.ac similarity index 90% rename from libguac/configure.in rename to libguac/configure.ac index b72b78f9..589831c5 100644 --- a/libguac/configure.in +++ b/libguac/configure.ac @@ -34,46 +34,51 @@ # # ***** END LICENSE BLOCK ***** -AC_INIT(src/client.c) -AM_INIT_AUTOMAKE(libguac, 0.7.0) -AC_CONFIG_MACRO_DIR([m4]) +AC_PREREQ([2.61]) +AC_INIT([libguac], [0.7.0]) +AM_INIT_AUTOMAKE([-Wall -Werror foreign]) -# Checks for programs. +LT_PREREQ([2.2]) +LT_INIT([dlopen]) + +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/protocol.c]) +AC_CONFIG_HEADERS([include/protocol.h]) + +# Programs AC_PROG_CC AC_PROG_CC_C99 AC_PROG_LIBTOOL -# POSIX -AC_DEFINE(_POSIX_C_SOURCE, 199309L) +# 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]) -# BSD -AC_DEFINE(_BSD_SOURCE) - -# Checks for libraries. +# Libraries 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]) AC_CHECK_LIB([wsock32], [main]) -# Checks for header files. -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]) - -# Checks for typedefs, structures, and compiler characteristics. -AC_TYPE_SIZE_T -AC_TYPE_SSIZE_T - -# Checks for library functions. +# Library functions AC_FUNC_MALLOC AC_FUNC_REALLOC AC_CHECK_FUNCS([clock_gettime gettimeofday memmove memset select strdup png_get_io_ptr nanosleep]) -# Check for unit testing library +# Typedefs +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T + +# Unit tests AC_CHECK_LIB([cunit], [CU_run_test], [CUNIT_LIBS=-lcunit]) AC_SUBST(CUNIT_LIBS) +# Defines +AC_DEFINE(_POSIX_C_SOURCE, 199309L) +AC_DEFINE(_BSD_SOURCE) + AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile]) - AC_OUTPUT +