| 1 | dnl synergy -- mouse and keyboard sharing utility | 
|---|
| 2 | dnl Copyright (C) 2002 Chris Schoeneman | 
|---|
| 3 | dnl | 
|---|
| 4 | dnl This package is free software; you can redistribute it and/or | 
|---|
| 5 | dnl modify it under the terms of the GNU General Public License | 
|---|
| 6 | dnl found in the file COPYING that should have accompanied this file. | 
|---|
| 7 | dnl | 
|---|
| 8 | dnl This package is distributed in the hope that it will be useful, | 
|---|
| 9 | dnl but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 10 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|---|
| 11 | dnl GNU General Public License for more details. | 
|---|
| 12 |  | 
|---|
| 13 | dnl Process this file with autoconf to produce a configure script. | 
|---|
| 14 |  | 
|---|
| 15 | dnl initialize | 
|---|
| 16 | AC_INIT(lib/common/common.h) | 
|---|
| 17 | AC_CONFIG_AUX_DIR(config) | 
|---|
| 18 |  | 
|---|
| 19 | dnl current version, extracted from $srcdir/lib/common/Version.h | 
|---|
| 20 | MAJOR_VERSION=`grep '#.*define VERSION "' $srcdir/lib/common/Version.h | sed -e 's/.*"\([0-9]*\)\.[0-9]*\.[0-9]*".*/\1/'` | 
|---|
| 21 | MINOR_VERSION=`grep '#.*define VERSION "' $srcdir/lib/common/Version.h | sed -e 's/.*"[0-9]*\.\([0-9]*\)\.[0-9]*".*/\1/'` | 
|---|
| 22 | RELEASE_VERSION=`grep '#.*define VERSION "' $srcdir/lib/common/Version.h | sed -e 's/.*"[0-9]*\.[0-9]*\.\([0-9]*\)".*/\1/'` | 
|---|
| 23 |  | 
|---|
| 24 | dnl initialize automake | 
|---|
| 25 | AM_INIT_AUTOMAKE(synergy, $MAJOR_VERSION.$MINOR_VERSION.$RELEASE_VERSION) | 
|---|
| 26 | AM_CONFIG_HEADER(config.h) | 
|---|
| 27 |  | 
|---|
| 28 | dnl information on the package | 
|---|
| 29 |  | 
|---|
| 30 | dnl decide on platform | 
|---|
| 31 | ARCH_LIBS="" | 
|---|
| 32 | ARCH_CFLAGS="" | 
|---|
| 33 | AC_CANONICAL_HOST | 
|---|
| 34 | case $host in | 
|---|
| 35 | *-*-mingw32* | *-*-windows*) | 
|---|
| 36 | acx_host_arch="WIN32" | 
|---|
| 37 | acx_host_winapi="MSWINDOWS" | 
|---|
| 38 | ;; | 
|---|
| 39 | *-*-darwin*) | 
|---|
| 40 | acx_host_arch="UNIX" | 
|---|
| 41 | acx_host_winapi="CARBON" | 
|---|
| 42 | ;; | 
|---|
| 43 | *) | 
|---|
| 44 | acx_host_arch="UNIX" | 
|---|
| 45 | acx_host_winapi="XWINDOWS" | 
|---|
| 46 | ;; | 
|---|
| 47 | esac | 
|---|
| 48 | ARCH_CFLAGS="$ARCH_CFLAGS -DSYSAPI_$acx_host_arch=1 -DWINAPI_$acx_host_winapi=1" | 
|---|
| 49 | AM_CONDITIONAL(WIN32, test x$acx_host_arch = xWIN32) | 
|---|
| 50 | AM_CONDITIONAL(UNIX, test x$acx_host_arch = xUNIX) | 
|---|
| 51 | AM_CONDITIONAL(MSWINDOWS, test x$acx_host_winapi = xMSWINDOWS) | 
|---|
| 52 | AM_CONDITIONAL(CARBON, test x$acx_host_winapi = xCARBON) | 
|---|
| 53 | AM_CONDITIONAL(XWINDOWS, test x$acx_host_winapi = xXWINDOWS) | 
|---|
| 54 |  | 
|---|
| 55 | dnl checks for programs | 
|---|
| 56 | AC_PROG_CC | 
|---|
| 57 | AC_PROG_CXX | 
|---|
| 58 | AC_PROG_RANLIB | 
|---|
| 59 | AC_CHECK_PROG(HAVE_DOT, dot, YES, NO) | 
|---|
| 60 |  | 
|---|
| 61 | dnl AC_PROG_OBJC doesn't exist.  Borrow some ideas from KDE. | 
|---|
| 62 | dnl AC_MSG_CHECKING(for an Objective-C compiler) | 
|---|
| 63 | OBJC="${CC}" | 
|---|
| 64 | OBJCFLAGS="${CFLAGS}" | 
|---|
| 65 | AC_SUBST(OBJC) | 
|---|
| 66 | AC_SUBST(OBJCFLAGS) | 
|---|
| 67 | _AM_DEPENDENCIES(OBJC) | 
|---|
| 68 |  | 
|---|
| 69 | dnl do checks using C++ | 
|---|
| 70 | AC_LANG_CPLUSPLUS | 
|---|
| 71 |  | 
|---|
| 72 | dnl our files end in .cpp not .C so tests should also end in .cpp | 
|---|
| 73 | ac_ext=cpp | 
|---|
| 74 |  | 
|---|
| 75 | dnl enable debugging or disable asserts | 
|---|
| 76 | AC_ARG_ENABLE([debug], [  --enable-debug          enable debugging]) | 
|---|
| 77 | if test "x$enable_debug" != xno; then | 
|---|
| 78 | CXXFLAGS="$CXXFLAGS -g" | 
|---|
| 79 | else | 
|---|
| 80 | CXXFLAGS="$CXXFLAGS -DNDEBUG" | 
|---|
| 81 | fi | 
|---|
| 82 |  | 
|---|
| 83 | dnl check compiler | 
|---|
| 84 | ACX_CHECK_CXX | 
|---|
| 85 |  | 
|---|
| 86 | dnl checks for libraries | 
|---|
| 87 | if test x"$acx_host_arch" = xUNIX; then | 
|---|
| 88 | ACX_PTHREAD(,AC_MSG_ERROR(You must have pthreads to compile synergy)) | 
|---|
| 89 | ARCH_LIBS="$PTHREAD_LIBS $ARCH_LIBS" | 
|---|
| 90 | ARCH_CFLAGS="$ARCH_CFLAGS $PTHREAD_CFLAGS" | 
|---|
| 91 | fi | 
|---|
| 92 | if test x"$acx_host_winapi" = xCARBON; then | 
|---|
| 93 | ARCH_LIBS="-framework Carbon $ARCH_LIBS" | 
|---|
| 94 | fi | 
|---|
| 95 | ACX_CHECK_NANOSLEEP | 
|---|
| 96 | ACX_CHECK_INET_ATON | 
|---|
| 97 |  | 
|---|
| 98 | dnl checks for header files | 
|---|
| 99 | AC_HEADER_STDC | 
|---|
| 100 | AC_CHECK_HEADERS([unistd.h sys/time.h sys/types.h locale.h wchar.h]) | 
|---|
| 101 | AC_CHECK_HEADERS([sys/socket.h sys/select.h]) | 
|---|
| 102 | AC_CHECK_HEADERS([sys/utsname.h]) | 
|---|
| 103 | AC_CHECK_HEADERS([istream ostream sstream]) | 
|---|
| 104 | AC_HEADER_TIME | 
|---|
| 105 | if test x"$acx_host_winapi" = xXWINDOWS; then | 
|---|
| 106 | AC_PATH_X | 
|---|
| 107 | AC_PATH_XTRA | 
|---|
| 108 | save_CPPFLAGS="$CPPFLAGS" | 
|---|
| 109 | CPPFLAGS="$X_CFLAGS $CPPFLAGS" | 
|---|
| 110 | XEXT_LDADD= | 
|---|
| 111 |  | 
|---|
| 112 | AC_CHECK_LIB(Xtst, | 
|---|
| 113 | XTestQueryExtension, | 
|---|
| 114 | [XEXT_LDADD="$XEXT_LDADD -lXtst"], | 
|---|
| 115 | AC_MSG_ERROR(You must have the XTest library to build synergy), | 
|---|
| 116 | [$X_LIBS -lXext -lX11 $X_EXTRA_LIBS]) | 
|---|
| 117 | AC_CHECK_HEADERS([X11/extensions/XTest.h], | 
|---|
| 118 | , | 
|---|
| 119 | AC_MSG_ERROR(You must have the XTest headers to compile synergy)) | 
|---|
| 120 |  | 
|---|
| 121 | acx_have_xkb=no | 
|---|
| 122 | AC_CHECK_LIB(X11, | 
|---|
| 123 | XkbQueryExtension, | 
|---|
| 124 | [acx_have_xkb=yes], | 
|---|
| 125 | [acx_have_xkb=no], | 
|---|
| 126 | [$X_LIBS $X_EXTRA_LIBS]) | 
|---|
| 127 | if test x"$acx_have_xkb" = xyes; then | 
|---|
| 128 | AC_CHECK_HEADERS([X11/XKBlib.h X11/extensions/XKBstr.h], | 
|---|
| 129 | [acx_have_xkb=yes], | 
|---|
| 130 | [acx_have_xkb=no], | 
|---|
| 131 | [#include <X11/Xlib.h>]) | 
|---|
| 132 | if test x"$acx_have_xkb" = xyes; then | 
|---|
| 133 | AC_TRY_COMPILE([ | 
|---|
| 134 | #include <X11/Xlib.h> | 
|---|
| 135 | #include <X11/XKBlib.h> | 
|---|
| 136 | ],[ | 
|---|
| 137 | XkbQueryExtension(0, 0, 0, 0, 0, 0); | 
|---|
| 138 | ], | 
|---|
| 139 | [acx_have_xkb=yes], | 
|---|
| 140 | [acx_have_xkb=no]) | 
|---|
| 141 | fi | 
|---|
| 142 | fi | 
|---|
| 143 | if test x"$acx_have_xkb" = xyes; then | 
|---|
| 144 | AC_DEFINE(HAVE_XKB_EXTENSION, 1, | 
|---|
| 145 | [Define this if the XKB extension is available.]) | 
|---|
| 146 | fi | 
|---|
| 147 |  | 
|---|
| 148 | acx_have_xinerama=yes | 
|---|
| 149 | AC_CHECK_LIB(Xinerama, | 
|---|
| 150 | XineramaQueryExtension, | 
|---|
| 151 | [acx_have_xinerama=yes], | 
|---|
| 152 | [acx_have_xinerama=no], | 
|---|
| 153 | [$X_LIBS -lXext -lX11 $X_EXTRA_LIBS]) | 
|---|
| 154 | if test x"$acx_have_xinerama" = xyes; then | 
|---|
| 155 | AC_CHECK_HEADERS([X11/extensions/Xinerama.h], | 
|---|
| 156 | [acx_have_xinerama=yes], | 
|---|
| 157 | [acx_have_xinerama=no], | 
|---|
| 158 | [#include <X11/Xlib.h>]) | 
|---|
| 159 | fi | 
|---|
| 160 | if test x"$acx_have_xinerama" = xyes; then | 
|---|
| 161 | XEXT_LDADD="$XEXT_LDADD -lXinerama" | 
|---|
| 162 | fi | 
|---|
| 163 |  | 
|---|
| 164 | X_DPMS_LDADD= | 
|---|
| 165 | acx_have_dpms=no | 
|---|
| 166 | AC_CHECK_LIB(Xext, | 
|---|
| 167 | DPMSQueryExtension, | 
|---|
| 168 | [acx_have_dpms=yes], | 
|---|
| 169 | [acx_have_dpms=no], | 
|---|
| 170 | [$X_LIBS -lX11 $X_EXTRA_LIBS]) | 
|---|
| 171 | if test x"$acx_have_dpms" != xyes; then | 
|---|
| 172 | AC_CHECK_LIB(Xdpms, | 
|---|
| 173 | DPMSQueryExtension, | 
|---|
| 174 | [acx_have_dpms=yes; XDPMS_LDADD=-lXdpms], | 
|---|
| 175 | [acx_have_dpms=no], | 
|---|
| 176 | [$X_LIBS -lX11 $X_EXTRA_LIBS]) | 
|---|
| 177 | fi | 
|---|
| 178 | if test x"$acx_have_dpms" = xyes; then | 
|---|
| 179 | AC_CHECK_HEADERS([X11/extensions/dpms.h], | 
|---|
| 180 | [acx_have_dpms_h=yes], | 
|---|
| 181 | [acx_have_dpms_h=no], | 
|---|
| 182 | [#include <X11/Xlib.h>]) | 
|---|
| 183 | if test x"$acx_have_dpms_h" = xyes; then | 
|---|
| 184 | XEXT_LDADD="$XEXT_LDADD $XDPMS_LDADD" | 
|---|
| 185 | AC_MSG_CHECKING(for prototypes in X11/extensions/dpms.h) | 
|---|
| 186 | acx_have_dpms_protos=no | 
|---|
| 187 | AC_TRY_COMPILE([ | 
|---|
| 188 | #include <X11/Xlib.h> | 
|---|
| 189 | extern "C" { | 
|---|
| 190 | #include <X11/extensions/dpms.h> | 
|---|
| 191 | } | 
|---|
| 192 | ],[ | 
|---|
| 193 | int s = DPMSModeOn; | 
|---|
| 194 | DPMSQueryExtension(0, 0, 0); | 
|---|
| 195 | ], | 
|---|
| 196 | [acx_have_dpms_protos=yes]) | 
|---|
| 197 | AC_MSG_RESULT($acx_have_dpms_protos) | 
|---|
| 198 | if test x"$acx_have_dpms_protos" = xyes; then | 
|---|
| 199 | AC_DEFINE(HAVE_DPMS_PROTOTYPES,1,[Define if the <X11/extensions/dpms.h> header file declares function prototypes.]) | 
|---|
| 200 | fi | 
|---|
| 201 | fi | 
|---|
| 202 | fi | 
|---|
| 203 |  | 
|---|
| 204 | CPPFLAGS="$save_CPPFLAGS" | 
|---|
| 205 | ARCH_LIBS="$X_LIBS $X_PRE_LIBS $XEXT_LDADD -lXext -lX11 $X_EXTRA_LIBS $ARCH_LIBS" | 
|---|
| 206 | ARCH_CFLAGS="$ARCH_CFLAGS $X_CFLAGS" | 
|---|
| 207 | fi | 
|---|
| 208 |  | 
|---|
| 209 | dnl checks for types | 
|---|
| 210 | AC_TYPE_SIZE_T | 
|---|
| 211 | ACX_CHECK_SOCKLEN_T | 
|---|
| 212 |  | 
|---|
| 213 | dnl checks for structures | 
|---|
| 214 | AC_STRUCT_TM | 
|---|
| 215 |  | 
|---|
| 216 | dnl checks for compiler characteristics | 
|---|
| 217 | AC_CHECK_SIZEOF(char, 1) | 
|---|
| 218 | AC_CHECK_SIZEOF(short, 2) | 
|---|
| 219 | AC_CHECK_SIZEOF(int, 2) | 
|---|
| 220 | AC_CHECK_SIZEOF(long, 4) | 
|---|
| 221 | ACX_CHECK_CXX_BOOL(,AC_MSG_ERROR(Your compiler must support bool to compile synergy)) | 
|---|
| 222 | ACX_CHECK_CXX_EXCEPTIONS(,AC_MSG_ERROR(Your compiler must support exceptions to compile synergy)) | 
|---|
| 223 | ACX_CHECK_CXX_CASTS(,AC_MSG_ERROR(Your compiler must support C++ casts to compile synergy)) | 
|---|
| 224 | ACX_CHECK_CXX_MUTABLE(,AC_MSG_ERROR(Your compiler must support mutable to compile synergy)) | 
|---|
| 225 | ACX_CHECK_CXX_STDLIB(,AC_MSG_ERROR(Your compiler must support the C++ standard library to compile synergy)) | 
|---|
| 226 |  | 
|---|
| 227 | dnl checks for library functions | 
|---|
| 228 | dnl AC_TYPE_SIGNAL | 
|---|
| 229 | AC_FUNC_MEMCMP | 
|---|
| 230 | AC_FUNC_STRFTIME | 
|---|
| 231 | AC_CHECK_FUNCS(gmtime_r) | 
|---|
| 232 | ACX_CHECK_GETPWUID_R | 
|---|
| 233 | AC_CHECK_FUNCS(vsnprintf) | 
|---|
| 234 | AC_FUNC_SELECT_ARGTYPES | 
|---|
| 235 | ACX_CHECK_POLL | 
|---|
| 236 | dnl use AC_REPLACE_FUNCS() for stuff in string.h | 
|---|
| 237 |  | 
|---|
| 238 | dnl checks for system services | 
|---|
| 239 |  | 
|---|
| 240 | dnl enable maximum compiler warnings and warnings are errors. | 
|---|
| 241 | ACX_CXX_WARNINGS | 
|---|
| 242 | ACX_CXX_WARNINGS_ARE_ERRORS | 
|---|
| 243 |  | 
|---|
| 244 | dnl adjust compiler and linker variables | 
|---|
| 245 | CXXFLAGS="$CXXFLAGS $SYNERGY_CXXFLAGS $ARCH_CFLAGS" | 
|---|
| 246 | OBJCXXFLAGS="$OBJCXXFLAGS $CXXFLAGS $ARCH_CFLAGS" | 
|---|
| 247 | LIBS="$NANOSLEEP_LIBS $INET_ATON_LIBS $ARCH_LIBS $LIBS" | 
|---|
| 248 |  | 
|---|
| 249 | dnl we need to have an environment variable set when building on OS X. | 
|---|
| 250 | dnl i'm not sure of the right way to do that.  writing 'export ...' to | 
|---|
| 251 | dnl the makefiles isn't portable.  here we'll hijack XXXDEPMODE (where | 
|---|
| 252 | dnl XXX depends on the language) to insert setting the environment | 
|---|
| 253 | dnl variable when running the compiler.  we'd like to put that in CC, | 
|---|
| 254 | dnl CXX and OBJC but that breaks depcomp.  let's hope this works. | 
|---|
| 255 | if test x"$acx_host_winapi" = xCARBON; then | 
|---|
| 256 | MACOSX_DEPLOYMENT_TARGET="10.2" | 
|---|
| 257 | CCDEPMODE="MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET $CCDEPMODE" | 
|---|
| 258 | CXXDEPMODE="MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET $CXXDEPMODE" | 
|---|
| 259 | OBJCDEPMODE="MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET $OBJCDEPMODE" | 
|---|
| 260 | else | 
|---|
| 261 | MACOSX_DEPLOYMENT_TARGET="5" | 
|---|
| 262 | CXXDEPMODE="FOO=$MACOSX_DEPLOYMENT_TARGET $CXXDEPMODE" | 
|---|
| 263 | fi | 
|---|
| 264 |  | 
|---|
| 265 | AC_OUTPUT([ | 
|---|
| 266 | Makefile | 
|---|
| 267 | cmd/Makefile | 
|---|
| 268 | cmd/launcher/Makefile | 
|---|
| 269 | cmd/synergyc/Makefile | 
|---|
| 270 | cmd/synergys/Makefile | 
|---|
| 271 | dist/Makefile | 
|---|
| 272 | dist/nullsoft/Makefile | 
|---|
| 273 | dist/rpm/Makefile | 
|---|
| 274 | dist/rpm/synergy.spec | 
|---|
| 275 | doc/Makefile | 
|---|
| 276 | doc/doxygen.cfg | 
|---|
| 277 | lib/Makefile | 
|---|
| 278 | lib/arch/Makefile | 
|---|
| 279 | lib/base/Makefile | 
|---|
| 280 | lib/client/Makefile | 
|---|
| 281 | lib/common/Makefile | 
|---|
| 282 | lib/io/Makefile | 
|---|
| 283 | lib/mt/Makefile | 
|---|
| 284 | lib/net/Makefile | 
|---|
| 285 | lib/platform/Makefile | 
|---|
| 286 | lib/server/Makefile | 
|---|
| 287 | lib/synergy/Makefile | 
|---|
| 288 | ]) | 
|---|