Hamlib/configure.ac
Bill Somerville 2828422e92 Stop rigctld and rotctld crashing when service threads cannot write to clients
Although there is  no reasonable recovery from SIGPIPE we  do not want
to terminate the server process,  just the client servicing thread. We
do this by setting the disposition for SIGPIPE to ignored, this causes
an EPIPE to be returned from blocked write() and send() calls that end
up trying to send to a broken pipe/socket.
2017-05-22 21:56:41 -05:00

799 lines
25 KiB
Plaintext

## Process this file with autoconf to create configure. -*- autoconf -*-
dnl Autoconf 2.67 is in Debian Squeeze--is an older version needed
dnl for some other distribution?
## FIXME: Is this too new? ##
AC_PREREQ([2.67])
## ------------------------ ##
## Autoconf initialisation. ##
## ------------------------ ##
dnl Please do not use '-' in the version number, as package managers will fail,
dnl however, the use of '~' should be fine as apt (others?) will treat
dnl it as an earlier version than the actual release. TNX KA6MAL
dnl PACKAGE_NAME + " " + PACKAGE_VERSION must not exceed 20 chars!
AC_INIT([Hamlib],
[3.2~git],
[hamlib-developer@lists.sourceforge.net],
[hamlib],
[http://www.hamlib.org])
AC_CONFIG_SRCDIR([include/hamlib/rig.h])
AC_CONFIG_MACRO_DIR([macros])
AC_CONFIG_HEADERS([include/config.h])
dnl Place build system provided programs in this directory.
AC_CONFIG_AUX_DIR([build-aux])
## ------------------------ ##
## Automake Initialisation. ##
## ------------------------ ##
dnl Passing AC_PACKAGE_TARNAME, AC_PACKAGE_VERSION to AM_INIT_AUTOMAKE is
dnl obsolete as these values are obtained from the AC_INIT macro.
AM_INIT_AUTOMAKE([-Wall subdir-objects])
dnl Clean compilation output makes compiler warnings more visible
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
## ------------------------------ ##
## Hamlib specific configuration. ##
## ------------------------------ ##
dnl New backends must be listed here! Also the new Makefile path must be
dnl added to AC_CONFIG_FILES near the end of this file. See README.developer
dnl Beware of duplication should a backend directory include both rig and
dnl rotor definitions, e.g. "dummy". Optional backends will not be listed
dnl here but will be added later, e.g. "winradio".
BACKEND_LIST="adat alinco aor dorji drake dummy flexradio icom icmarine jrc kachina kenwood kit lowe pcr prm80 racal rft rs skanti tapr tentec tuner uniden wj yaesu"
ROT_BACKEND_LIST="amsat ars celestron cnctrk easycomm ether6 fodtrack gs232a heathkit m2 rotorez sartek spid ts7400 prosistel"
dnl See README.release on setting these values
# Values given to -version-info when linking. See libtool documentation.
# Set them here to keep c++/Makefile and src/Makefile in sync.
ABI_VERSION=3
ABI_REVISION=1
ABI_AGE=1
AC_DEFINE_UNQUOTED([ABI_VERSION], [$ABI_VERSION], [Frontend ABI version])
AC_DEFINE_UNQUOTED([ABI_REVISION], [$ABI_REVISION], [Frontend ABI revision])
AC_DEFINE_UNQUOTED([ABI_AGE], [$ABI_AGE], [Frontend ABI age])
AC_SUBST([ABI_VERSION])
AC_SUBST([ABI_REVISION])
AC_SUBST([ABI_AGE])
# Add Hamlib define needed to link DLLs
AM_CPPFLAGS="${AM_CPPFLAGS} -DIN_HAMLIB"
# Add Hamlib header include paths
AM_CPPFLAGS="${AM_CPPFLAGS} -I\$(top_srcdir)/include -I\$(top_srcdir)/src -I\$(top_srcdir)/lib"
## --------------- ##
## Program checks ##
## --------------- ##
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CXX
AC_PROG_CPP
AC_PROG_AWK
AC_PROG_INSTALL
AC_PROG_LN_S
# TODO: check whether CXX is functional
AC_CHECK_PROG([cf_with_cxx], ["${CXX}"], [yes], [no])
AM_CONDITIONAL([ENABLE_CXX], [test x"${cf_with_cxx}" = "xyes"])
dnl Broke on older Automake, so test for its existence.
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
## ----------------------------------- ##
## Miscellaneous configuration macros ##
## ----------------------------------- ##
AC_C_INLINE
dnl Set warnings for compilation
dnl CFLAGS and CXXFLAGS are reserved for user, so set their AM_* counterparts.
# macros/ax_cflags_warn_all.m4
AX_CFLAGS_WARN_ALL([AM_CFLAGS])
AX_CXXFLAGS_WARN_ALL([AM_CXXFLAGS])
dnl Automake macro for rigmem compilation
AM_PROG_CC_C_O
## ------------------------------------------ ##
## Various parts of Hamlib need these headers ##
## ------------------------------------------ ##
AC_CHECK_HEADERS([errno.h fcntl.h getopt.h limits.h locale.h malloc.h \
netdb.h sgtty.h stddef.h termio.h termios.h values.h \
arpa/inet.h dev/ppbus/ppbconf.hdev/ppbus/ppi.h \
linux/hidraw.h linux/ioctl.h linux/parport.h linux/ppdev.h netinet/in.h \
sys/ioccom.h sys/ioctl.h sys/param.h sys/socket.h sys/stat.h sys/time.h])
dnl set host_os variable
AC_CANONICAL_HOST
dnl ws2tcpip.h not provided by cygwin and its test causes a configure warning.
dnl wspiapi.h provides needed freeaddrinfo function on W2k systems.
AS_IF([test "${host_os}" != "cygwin"], [
AC_CHECK_HEADERS([ws2tcpip.h wspiapi.h])
])
## ------------------------------------ ##
## System capability and library checks ##
## ------------------------------------ ##
dnl Check for Mingw (Win32 Sleep) support
# macros/gr_pwin32.m4
GR_PWIN32
dnl If pthread support is found, this macro defines HAVE_PTHREAD and
dnl AC_SUBST's PTHREAD_LIBS, PTHREAD_CFLAGS, and PTHREAD_CC making those
dnl variables available in Makefiles.
# macros/ax_pthread.m4
AX_PTHREAD
AC_SYS_POSIX_TERMIOS()
dnl Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_CHECK_TYPES([siginfo_t],[],[],[[#include <signal.h>]])
dnl Checks for libraries.
# The following comes from SC_TCL_LINK_LIBS
# we redefine them here because we want a separate NET_LIBS var
#--------------------------------------------------------------------
# On a few very rare systems, all of the libm.a stuff is
# already in libc.a. Set compiler flags accordingly.
#--------------------------------------------------------------------
AC_CHECK_FUNC([sin], [MATH_LIBS=""], [MATH_LIBS="-lm"])
AC_SUBST([MATH_LIBS])
#--------------------------------------------------------------------
# Check for the existence of the -lsocket and -lnsl libraries.
# The order here is important, so that they end up in the right
# order in the command line generated by make. Here are some
# special considerations:
# 1. Use "connect" and "accept" to check for -lsocket, and
# "gethostbyname" to check for -lnsl.
# 2. Use each function name only once: cannot redo a check because
# autoconf caches the results of the last check and will not redo it.
# 3. Use -lnsl and -lsocket only if they supply procedures that
# are not already present in the normal libraries. This is because
# IRIX 5.2 has libraries, but they aren't needed and they're
# bogus: they goof up name resolution if used.
# 4. On some SVR4 systems, can't use -lsocket without -lnsl too.
# To get around this problem, check for both libraries together
# if -lsocket doesn't work by itself.
#--------------------------------------------------------------------
hl_checkBoth=0
hl_oldLibs=$LIBS
AC_CHECK_FUNC([connect], [hl_checkSocket=0], [hl_checkSocket=1])
AS_IF([test "$hl_checkSocket" = 1], [
AC_CHECK_LIB([socket],
[main],
[NET_LIBS="$NET_LIBS -lsocket"],
[hl_checkBoth=1],
[])
])
AS_IF([test "$hl_checkBoth" = 1], [
hl2_oldLibs=$LIBS
LIBS="$LIBS -lsocket -lnsl"
AC_CHECK_FUNC([accept], [hl_checkNsl=0], [LIBS=$hl2_oldLibs])
])
# separate Name Service Library
AC_CHECK_FUNC([gethostbyname],
[],
[AC_CHECK_LIB([nsl],
[main],
[NET_LIBS="$NET_LIBS -lnsl"],
[],
[])
])
# Winsock2 32 bit
AC_CHECK_FUNC([gethostbyname],
[],
[AC_CHECK_LIB([ws2_32],
[main],
[NET_LIBS="$NET_LIBS -lws2_32"],
[],
[])
])
LIBS="$LIBS $NET_LIBS"
# macros/hl_getaddrinfo.m4
HL_GETADDRINFO
LIBS=$hl_oldLibs
AC_SUBST([NET_LIBS])
## End Hamlib socket test ##
dnl Checks for library functions.
AC_CHECK_FUNCS([cfmakeraw floor getpagesize getpagesize gettimeofday inet_ntoa \
ioctl memchr memmove memset pow rint select setitimer setlocale sigaction signal \
snprintf socket sqrt strchr strdup strerror strncasecmp strrchr strstr strtol])
AC_FUNC_ALLOCA
dnl AC_LIBOBJ replacement functions directory
AC_CONFIG_LIBOBJ_DIR([lib])
dnl Use Hamlib's termios
AC_LIBOBJ([termios])
dnl Assure libmisc is not empty
AC_LIBOBJ([dummy])
## ------------------------ ##
## libtool Initialisation. ##
## ------------------------ ##
LT_PREREQ([2.2.6b])
dnl N.B. LT_INIT([win32-dll]) does not work for older libtool
dnl so require new enough version above.
LT_INIT([win32-dll])
## -------------------------- ##
## Custom host configurations ##
## -------------------------- ##
dnl The host_os variable is set by the AC_CANONICAL_HOST macro above.
AS_CASE(["$host_os"],
[freebsd*], [
AM_CPPFLAGS="-I/usr/local/include ${AM_CPPFLAGS}"
AM_LDFLAGS="${AM_LDFLAGS} -L/usr/local/lib"
AC_SUBST([AM_LDFLAGS])],
[darwin* | rhapsody*], [
# Tell the OS X linker to allocate enough space inside the
# libhamlib.X.dylib shared object for install_name_tool(1) to
# work. This is useful when including hamlib in an app bundle.
OSXLDFLAGS="-Wl,-headerpad_max_install_names"
AC_SUBST([OSXLDFLAGS])],
[mingw* | pw32* | cygwin*], [
WINLDFLAGS="-Wl,--output-def,libhamlib.def -Wl,--add-stdcall-alias"
AC_SUBST([WINLDFLAGS])
# Enable ld's "auto import" for executables
WINEXELDFLAGS="-Wl,--enable-auto-import"
AC_SUBST([WINEXELDFLAGS])
])
## ---------------------- ##
## External package tests ##
## ---------------------- ##
dnl Check if C99 struct initializers are supported
AC_MSG_CHECKING([whether C99 struct/array initializers are supported])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
[[struct{char a;int b;}s[8]={[3]={.b=5}};]])],
[AC_MSG_RESULT(yes)],
[AC_MSG_ERROR([""
"You need a C99 compliant C compiler that supports struct/array intializers."
"Have you considered GCC lately?."])
])
dnl Check for libusb, treat LIBUSB_LIBS and LIBUSB_CFLAGS as precious variables
AC_ARG_VAR([LIBUSB_CFLAGS], [C compiler flags for libusb, overriding configure defaults])
AC_ARG_VAR([LIBUSB_LIBS], [linker flags for libusb, overriding configure check (useful for specifying static libusb-1.0.a (see INSTALL))])
cf_with_libusb="no"
AS_IF([test -z $LIBUSB_LIBS],
[AC_CHECK_LIB([usb-1.0], [libusb_init], [LIBUSB_LIBS="-lusb-1.0" cf_with_libusb="yes"],
[AC_MSG_WARN([libusb_init was not found in libusb-1.0--USB backends will be disabled])])
], [cf_with_libusb="yes"])
LIBUSB=""
AS_IF([test x"${cf_with_libusb}" = "xyes"],
[AC_CHECK_HEADERS([libusb.h libusb-1.0/libusb.h])
AC_DEFINE([HAVE_LIBUSB],
[1],
[Define if libusb-1.0 is available])
LIBUSB="libusb-1.0"])
# Only used in hamlib.pc.in
AC_SUBST([LIBUSB])
dnl Check if readline support in rigctl/rotctl is wanted
AC_MSG_CHECKING([whether to use readline in rigctl/rotctl])
AC_ARG_WITH([readline],
[AS_HELP_STRING([--without-readline],
[disable readline in rigctl/rotctl @<:@default=yes@:>@])],
[cf_with_readline_support=no],
[cf_with_readline_support=yes]
)
AC_MSG_RESULT([$cf_with_readline_support])
AS_IF([test x"$cf_with_readline_support" != "xno"], [
# macros/ax_lib_readline.m4
AX_LIB_READLINE
])
AS_IF([test x"$ax_cv_lib_readline" = "xno"], [
AC_MSG_WARN([readline support not found, using internal input handling.])
cf_with_readline_support=no
])
dnl Check if libgd-dev is installed, so we can enable rigmatrix
AC_MSG_CHECKING([whether to build HTML rig feature matrix])
AC_ARG_ENABLE([html-matrix],
[AS_HELP_STRING([--disable-html-matrix],
[do not generate HTML rig feature matrix (requires libgd-dev) @<:@default=check@:>@])],
[cf_enable_html_matrix=no],
[cf_enable_html_matrix=check]
)
AC_MSG_RESULT([$cf_enable_html_matrix])
AS_IF([test x"$cf_enable_html_matrix" != "xno"],
[AC_CHECK_HEADERS([gd.h],
[AC_CHECK_LIB([gd],
[gdImageCreate],
[cf_enable_html_matrix=yes],
[cf_enable_html_matrix=no],
[-lz])],
[cf_enable_html_matrix=no]
)
])
AM_CONDITIONAL([HTML_MATRIX], [test x"${cf_enable_html_matrix}" = "xyes"])
## ------------------ ##
## PKG Config support ##
## ------------------ ##
dnl These features rely on the external pkg-config functionality being available.
dnl Test for pkg-config only when these features are enabled.
# libxml2 required rigmem xml support, make it user optional
AC_MSG_CHECKING([whether to build rigmem XML support])
AC_ARG_WITH([xml-support],
[AS_HELP_STRING([--with-xml-support],
[build rigmem with XML support @<:@default=no@:>@])],
[cf_with_xml_support=$withval],
[cf_with_xml_support=no])
AC_MSG_RESULT([$cf_with_xml_support])
# USRP needs a C++ compiler, tested for presence above.
AS_IF([test x"${cf_with_cxx}" = "xyes"], [
AC_MSG_CHECKING([whether to build USRP backend])
AC_ARG_ENABLE([usrp],
[AS_HELP_STRING([--enable-usrp],
[build USRP backend @<:@default=no@:>@])],
[cf_with_usrp=$enableval],
[cf_with_usrp="no"])
AC_MSG_RESULT([$cf_with_usrp])
])
dnl Only check for pkg-config when either of the dependent features are enabled.
AS_IF([test x"${cf_with_xml_support}" = "xyes" || test x"${cf_with_usrp}" = "xyes"], [
dnl Check for pkg-config presence and if not installed define a dummy macro
dnl to disable libxml2 and USRP use. Code borrowed from:
dnl http://lists.gnu.org/archive/html/automake/2011-03/msg00008.html
dnl
dnl Check for pkg-config program, used for configuring some libraries.
m4_define_default([PKG_PROG_PKG_CONFIG],
[AC_MSG_CHECKING([pkg-config])
AC_MSG_RESULT([no])])
PKG_PROG_PKG_CONFIG
dnl If the pkg-config autoconf support isn't installed, define its
dnl autoconf macro to disable any packages depending on it.
m4_define_default([PKG_CHECK_MODULES],
[AC_MSG_CHECKING([$1])
AC_MSG_RESULT([no])
$4])
])
AS_IF([test x"${cf_with_xml_support}" = "xyes"], [
PKG_CHECK_MODULES([LIBXML2],
[libxml-2.0],
[AC_DEFINE([HAVE_XML2],
[1],
[Define if libxml2 is available])],
[AC_MSG_WARN([libxml-2.0 pkg-config not found, XML support will be disabled])
])
])
AC_SUBST([LIBXML2_LIBS])
AC_SUBST([LIBXML2_CFLAGS])
## ----------------- ##
## Language bindings ##
## ----------------- ##
BINDINGS=""
BINDING_ALL=""
BINDING_CHECK=""
BINDING_CLEAN=""
BINDING_DISTCLEAN=""
BINDING_DISTCHECK=""
BINDING_INSTALL_EXEC=""
BINDING_UNINSTALL=""
BINDING_LIST=""
BINDING_LIB_TARGETS=""
dnl Check if cxx-binding not wanted, default is to build it
# C++ binding
AC_MSG_CHECKING([whether to build C++ binding and demo])
AC_ARG_WITH([cxx-binding],
[AS_HELP_STRING([--without-cxx-binding],
[do not build C++ binding and demo @<:@default=yes@:>@])],
[cf_with_cxx_binding=$withval],
[cf_with_cxx_binding=$cf_with_cxx])
AC_MSG_RESULT([$cf_with_cxx_binding])
AS_IF([test x"${cf_with_cxx_binding}" = "xyes"],
[BINDINGS="${BINDINGS} c++"])
dnl Check if perl-binding is wanted, default is to not build it
# Perl binding
AC_MSG_CHECKING([whether to build perl binding and demo])
AC_ARG_WITH([perl-binding],
[AS_HELP_STRING([--with-perl-binding],
[build perl binding and demo @<:@default=no@:>@])],
[cf_with_perl_binding=$withval],
[cf_with_perl_binding=no])
AC_MSG_RESULT([$cf_with_perl_binding])
dnl SC_PATH_PERLINC from macros/perl.m4
AS_IF([test x"${cf_with_perl_binding}" = "xyes"],[
SC_PATH_PERLINC
BINDING_LIST="${BINDING_LIST} perl"
BINDING_ALL="${BINDING_ALL} all-perl"
BINDING_CHECK="${BINDING_CHECK} check-perl"
BINDING_CLEAN="${BINDING_CLEAN} clean-perl"
BINDING_DISTCLEAN="${BINDING_DISTCLEAN} distclean-perl"
BINDING_DISTCHECK="${BINDING_DISTCHECK} distcheck-perl"
BINDING_INSTALL_EXEC="${BINDING_INSTALL_EXEC} install-perl"
BINDING_UNINSTALL="${BINDING_UNINSTALL} uninstall-perl"
])
AM_CONDITIONAL([ENABLE_PERL], [test x"${cf_with_perl_binding}" = "xyes"])
dnl Check for python availability, so we can enable HamlibPy
# Python bindings
AC_MSG_CHECKING([whether to build python binding and demo])
AC_ARG_WITH([python-binding],
[AS_HELP_STRING([--with-python-binding],
[build python binding and demo @<:@default=no@:>@])],
[cf_with_python_binding=$withval],
[cf_with_python_binding=no])
AC_MSG_RESULT([$cf_with_python_binding])
dnl AX_PYTHON_DEVEL from macros/ax_python_devel.m4
AS_IF([test x"${cf_with_python_binding}" = "xyes"],[
AM_PATH_PYTHON([2.1],, [:])
AX_PYTHON_DEVEL
BINDING_LIST="${BINDING_LIST} python"
BINDING_ALL="${BINDING_ALL} all-py"
BINDING_CHECK="${BINDING_CHECK} check-py"
BINDING_CLEAN="${BINDING_CLEAN} clean-py"
BINDING_DISTCLEAN="${BINDING_DISTCLEAN} distclean-py"
BINDING_INSTALL_EXEC="${BINDING_INSTALL_EXEC} install-py"
BINDING_UNINSTALL="${BINDING_UNINSTALL} uninstall-py"
BINDING_LIB_TARGETS="${BINDING_LIB_TARGETS} \$(python_ltlib)"])
AM_CONDITIONAL([ENABLE_PYTHON], [test x"${cf_with_python_binding}" = "xyes"])
# Tcl binding
AC_MSG_CHECKING([Whether to build Tcl bindings and demos])
AC_ARG_WITH([tcl-binding],
[AS_HELP_STRING([--with-tcl-binding],
[build Tcl binding and demo @<:@default=no@:>@])],
[build_tcl=$withval],
[build_tcl=no])
AC_MSG_RESULT([$build_tcl])
dnl SC_PATH_TCLCONFIG and SC_LOAD_TCLCONFIG from macros/tcl.m4
AS_IF([test x"${build_tcl}" = "xyes"],[
SC_PATH_TCLCONFIG
SC_LOAD_TCLCONFIG
tcl_save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $TCL_INCLUDE_SPEC"
AC_CHECK_HEADERS([tcl.h],
[],
[AC_MSG_ERROR([Unable to find Tcl headers])])
CPPFLAGS=$tcl_save_CPPFLAGS
BINDING_LIST="${BINDING_LIST} tcl"
BINDING_ALL="${BINDING_ALL} all-tcl"
BINDING_CHECK="${BINDING_CHECK} check-tcl"
BINDING_CLEAN="${BINDING_CLEAN} clean-tcl"
BINDING_DISTCLEAN="${BINDING_DISTCLEAN} distclean-tcl"
BINDING_INSTALL_EXEC="${BINDING_INSTALL_EXEC} install-tcl"
BINDING_UNINSTALL="${BINDING_UNINSTALL} uninstall-tcl"
BINDING_LIB_TARGETS="${BINDING_LIB_TARGETS} \$(tcl_ltlib)"])
AM_CONDITIONAL([ENABLE_TCL], [test x"${build_tcl}" = "xyes"])
AC_SUBST([TCL_LIB_SPEC])
AC_SUBST([TCL_INCLUDE_SPEC])
AC_SUBST([TCL_SHLIB_SUFFIX])
dnl Check for lua availability, so we can enable HamlibLua
# Lua bindings
AC_MSG_CHECKING([whether to build lua binding and demo])
AC_ARG_WITH([lua-binding],
[AS_HELP_STRING([--with-lua-binding],
[build lua binding and demo @<:@default=no@:>@])],
[cf_with_lua_binding=$withval],
[cf_with_lua_binding=no])
AC_MSG_RESULT([$cf_with_lua_binding])
dnl AX_LUA_DEVEL from macros/ax_lua_devel.m4
AS_IF([test x"${cf_with_lua_binding}" = "xyes"],[
AX_PROG_LUA([5.2], [5.4])
AX_LUA_HEADERS
AX_LUA_LIBS
BINDING_LIST="${BINDING_LIST} lua"
BINDING_ALL="${BINDING_ALL} all-lua"
BINDING_CHECK="${BINDING_CHECK} check-lua"
BINDING_CLEAN="${BINDING_CLEAN} clean-lua"
BINDING_DISTCLEAN="${BINDING_DISTCLEAN} distclean-lua"
BINDING_INSTALL_EXEC="${BINDING_INSTALL_EXEC} install-lua"
BINDING_UNINSTALL="${BINDING_UNINSTALL} uninstall-lua"
BINDING_LIB_TARGETS="${BINDING_LIB_TARGETS} \$(lua_ltlib)"])
AM_CONDITIONAL([ENABLE_LUA], [test x"${cf_with_lua_binding}" = "xyes"])
dnl Only search for Swig if one or more bindings are enabled.
AS_IF([test "x${BINDING_ALL}" != "x"],
[# macros/ax_pkg_swig.m4
AX_PKG_SWIG([1.3.22],
[BINDINGS="${BINDINGS} bindings"
cf_with_bindings="yes"],
[AC_MSG_ERROR([SWIG is required to build bindings...])
])],
[cf_with_bindings="no"])
AC_MSG_CHECKING([whether to build bindings])
AC_MSG_RESULT([$cf_with_bindings])
AC_SUBST([BINDINGS])
AC_SUBST([BINDING_ALL])
AC_SUBST([BINDING_CHECK])
AC_SUBST([BINDING_CLEAN])
AC_SUBST([BINDING_DISTCLEAN])
AC_SUBST([BINDING_DISTCHECK])
AC_SUBST([BINDING_INSTALL_EXEC])
AC_SUBST([BINDING_UNINSTALL])
AC_SUBST([BINDING_LIST])
AC_SUBST([BINDING_LIB_TARGETS])
## ----------------- ##
## Optional backends ##
## ----------------- ##
dnl Winradio only under Linux (until someone ports it on other os)
AC_MSG_CHECKING([whether to build winradio backend])
AC_ARG_ENABLE([winradio],
[AS_HELP_STRING([--disable-winradio],
[do not build winradio backend @<:@default=yes@:>@])],
[cf_with_winradio="no"],
[cf_with_winradio="yes" AC_DEFINE([HAVE_WINRADIO],[1],[Define if winradio backend is built])])
AC_MSG_RESULT([$cf_with_winradio])
DL_LIBS=""
AS_IF([test x"${cf_with_winradio}" = "xyes"],
[BACKEND_LIST="$BACKEND_LIST winradio"
dnl Check for libdl and set DL_LIBS if found--used for linradio WR-G313 backend.
AC_CHECK_LIB([dl], [dlopen], [DL_LIBS="-ldl"],
[AC_MSG_WARN([dlopen was not found in libdl--linradio backend will be disabled])])
])
dnl Set conditional compilation for G-313.
AS_CASE(["$host_os"],
[mingw* | pw32* | cygwin ], [
AM_CONDITIONAL(G313_LINUX_GNU, false)
AM_CONDITIONAL(G313_WINDOWS, true)
],
dnl As g313-posix.c has a hard dependency on linux/types.h
dnl via linradio/wrg313api.h, disable compilation on other POSIX.
dnl (Certain systems have extra characters following "-gnu" such as
dnl the Raspberry Pi which is "linux-gnueabihf"; presume that "linux-gnu"
dnl is a sufficient test.)
[ *linux-gnu* ], [
AM_CONDITIONAL(G313_LINUX_GNU, true)
AM_CONDITIONAL(G313_WINDOWS, false)
],
[
AM_CONDITIONAL(G313_LINUX_GNU, false)
AM_CONDITIONAL(G313_WINDOWS, false)
AC_DEFINE([OTHER_POSIX], [1], [Compilation on POSIX other than Linux])
])
dnl If libdl is present, check for its header file.
AS_IF([test x"${DL_LIBS}" = "x-ldl"],
[AC_CHECK_HEADERS([dlfcn.h])])
AC_SUBST([DL_LIBS])
dnl stuff that requires C++ support
AS_IF([test x"${cf_with_usrp}" = "xyes"],[
PKG_CHECK_MODULES([USRP],
[usrp >= 0.8],
[AC_DEFINE([HAVE_USRP],[1],[Define if usrp is available])
])
])
AM_CONDITIONAL([HAVE_USRP], [test x"${cf_with_usrp}" = "xyes"])
## -------------------------------- ##
## Prepare rig backend dependencies ##
## -------------------------------- ##
dnl otherwise parallel 'make -jn' will fail
for be in ${BACKEND_LIST} ; do
BACKENDEPS="${BACKENDEPS} \$(top_builddir)/${be}/libhamlib-${be}.la"
done
AC_SUBST([BACKEND_LIST])
AC_SUBST([BACKENDEPS])
## ---------------------------------- ##
## Prepare rotor backend dependencies ##
## ---------------------------------- ##
# otherwise parallel 'make -jn' will fail
for be in ${ROT_BACKEND_LIST} ; do
ROT_BACKENDEPS="${ROT_BACKENDEPS} \$(top_builddir)/${be}/libhamlib-${be}.la"
done
AC_SUBST([ROT_BACKEND_LIST])
AC_SUBST([ROT_BACKENDEPS])
## ------------ ##
## Final output ##
## ------------ ##
dnl Output accumulated flags to the Makefile files.
AC_SUBST([AM_CPPFLAGS])
AC_SUBST([AM_CFLAGS])
AC_SUBST([AM_CXXFLAGS])
AC_CONFIG_FILES([Makefile
macros/Makefile
include/Makefile
lib/Makefile
dummy/Makefile
yaesu/Makefile
icom/Makefile
icmarine/Makefile
aor/Makefile
kenwood/Makefile
winradio/Makefile
pcr/Makefile
alinco/Makefile
uniden/Makefile
tentec/Makefile
kachina/Makefile
jrc/Makefile
drake/Makefile
lowe/Makefile
rft/Makefile
rs/Makefile
kit/Makefile
tapr/Makefile
skanti/Makefile
prm80/Makefile
wj/Makefile
racal/Makefile
tuner/Makefile
ars/Makefile
easycomm/Makefile
fodtrack/Makefile
gs232a/Makefile
heathkit/Makefile
spid/Makefile
sartek/Makefile
src/Makefile
c++/Makefile
bindings/Makefile
bindings/hamlibvb.bas
tests/Makefile
doc/Makefile
doc/hamlib.cfg
rotorez/Makefile
flexradio/Makefile
m2/Makefile
amsat/Makefile
adat/Makefile
ts7400/Makefile
celestron/Makefile
cnctrk/Makefile
ether6/Makefile
scripts/Makefile
android/Makefile
prosistel/Makefile
dorji/Makefile
hamlib.pc])
AC_OUTPUT
echo \
"----------------------------------------------------------------------
${PACKAGE_NAME} Version ${PACKAGE_VERSION} configuration:
Prefix ${prefix}
Preprocessor ${CPP} ${CPPFLAGS}
C Compiler ${CC} ${CFLAGS}
C++ Compiler ${CXX} ${CXXFLAGS}
Package features:
With C++ binding ${cf_with_cxx_binding}
With Perl binding ${cf_with_perl_binding}
With Python binding ${cf_with_python_binding}
With TCL binding ${build_tcl}
With Lua binding ${cf_with_lua_binding}
With rigmem XML support ${cf_with_xml_support}
With Readline support ${cf_with_readline_support}
Enable HTML rig feature matrix ${cf_enable_html_matrix}
Enable WinRadio ${cf_with_winradio}
Enable USRP ${cf_with_usrp}
Enable USB backends ${cf_with_libusb}
Enable shared libs ${enable_shared}
Enable static libs ${enable_static}
-----------------------------------------------------------------------"