dnl Process this file with autoconf to produce a configure script. dnl Please do not use '-' in the version number, 'make rpm' will fail AC_INIT(hamlib, 1.1.4cvs, hamlib-developer@lists.sourceforge.net) AM_INIT_AUTOMAKE(hamlib, 1.1.4cvs) AC_CONFIG_SRCDIR([include/hamlib/rig.h]) AM_CONFIG_HEADER(include/config.h) AM_MAINTAINER_MODE ABI_VERSION=1 # Minimum Autoconf version required. AC_PREREQ(2.50) dnl Pick up the Hamlib macros. AM_ACLOCAL_INCLUDE(macros) AC_DEFINE_UNQUOTED(ABI_VERSION, $ABI_VERSION, [Frontend ABI version]) AC_SUBST(ABI_VERSION) dnl directory for docs (html) hamlibdocdir=$datadir/doc/hamlib AC_SUBST(hamlibdocdir) dnl Checks for programs. AC_PROG_CXX AC_PROG_AWK AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_CHECK_PROGS(RPMBUILD, rpmbuild, rpm) AC_AIX AC_ISC_POSIX AC_MINIX AM_PROG_CC_STDC AC_PROG_GCC_TRADITIONAL dnl Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS([alloca.h argz.h malloc.h memory.h string.h strings.h]) AC_CHECK_HEADERS([stdlib.h values.h rpc/rpc.h rpc/rpcent.h net/errno.h]) AC_CHECK_HEADERS([fcntl.h sys/ioctl.h sys/time.h sys/param.h unistd.h getopt.h errno.h]) AC_CHECK_HEADERS([sys/ioccom.h linux/ppdev.h sgtty.h term.h termio.h termios.h]) AC_CHECK_HEADERS([windows.h winioctl.h winbase.h]) AM_SYS_POSIX_TERMIOS INCLUDES="${INCLUDES} -I\$(top_srcdir)/include -I\$(top_srcdir)/src -I\$(top_srcdir)/lib" #CPPFLAGS="${CPPFLAGS} -D_ISOC99_SOURCE" if test "${ac_cv_c_compiler_gnu}" = "yes"; then CFLAGS="${CFLAGS} -Wall" fi if test "${ac_cv_cxx_compiler_gnu}" = "yes"; then CXXFLAGS="${CXXFLAGS} -Wall" fi dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T AC_HEADER_TIME AC_TYPE_SIGNAL AC_CHECK_TYPES([siginfo_t],[],[],[#include ]) 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. # Also, Linux requires the "ieee" library for math to work # right (and it must appear before "-lm"). #-------------------------------------------------------------------- AC_CHECK_FUNC(sin, [MATH_LIBS=""], [MATH_LIBS="-lm"]) AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"], [], []) #-------------------------------------------------------------------- # Interactive UNIX requires -linet instead of -lsocket, plus it # needs net/errno.h to define the socket-related error codes. #-------------------------------------------------------------------- AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"], [], []) #-------------------------------------------------------------------- # 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: can't redo a check because # autoconf caches the results of the last check and won't redo it. # 3. Use -lnsl and -lsocket only if they supply procedures that # aren't 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) if test "$hl_checkSocket" = 1; then AC_CHECK_LIB(socket, main, [NET_LIBS="$NET_LIBS -lsocket"], [hl_checkBoth=1], []) fi if test "$hl_checkBoth" = 1; then hl2_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" AC_CHECK_FUNC(accept, hl_checkNsl=0, [LIBS=$hl2_oldLibs]) fi AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, main, [NET_LIBS="$NET_LIBS -lnsl"], [], [])) LIBS=$hl_oldLibs AC_SUBST(NET_LIBS) AC_SUBST(MATH_LIBS) AC_CHECK_LIB(syslog,syslog) # OS/2 needs this dnl Checks for library functions. AC_CHECK_FUNCS([atexit snprintf select gettimeofday memmove memset]) AC_CHECK_FUNCS([strcasecmp strchr strdup strerror strrchr strstr strtol]) AC_CHECK_FUNCS([cfmakeraw]) AC_REPLACE_FUNCS([getopt_long usleep]) AC_FUNC_ALLOCA #AC_FUNC_MALLOC AC_FUNC_VPRINTF dnl initialize libtool dnl Enable building of the convenience library dnl and set LIBLTDL accordingly AC_LIBLTDL_CONVENIENCE dnl Substitute INCLTDL and LIBLTDL in the Makefiles AC_SUBST(INCLTDL) AC_SUBST(LIBLTDL) dnl Check for dlopen support AC_LIBTOOL_WIN32_DLL AC_LIBTOOL_DLOPEN dnl Configure libtool AC_PROG_LIBTOOL dnl Configure libltdl AC_CONFIG_SUBDIRS(libltdl) case "$host_os" in darwin* | rhapsody*) # Trick from http://fink.sourceforge.net/doc/porting/ # TODO: check the compiler actually does support these options CFLAGS="${CFLAGS} -no-cpp-precomp" CXXFLAGS="${CXXFLAGS} -no-cpp-precomp" ;; esac dnl Check if C99 struct initializers are supported AC_MSG_CHECKING(whether C99 struct/array initializers are supported) AC_TRY_COMPILE(,[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 if libgd-dev is installed, so we can enable rigmatrix AC_ARG_WITH(rigmatrix, [ --with-rigmatrix Generate rigmatrix tool (requires libgd)], [AC_CHECK_HEADERS([gd.h], [AC_CHECK_LIB([gd],[gdImageCreate], [enable_rigmatrix=yes], [enable_rigmatrix=no],[-lz]) ]) ], [enable_rigmatrix=no]) AC_MSG_CHECKING(whether to build rigmatrix) AC_MSG_RESULT($enable_rigmatrix) if test "${enable_rigmatrix}" = "no"; then RIGMATRIX= else RIGMATRIX="rigmatrix" fi AC_SUBST(RIGMATRIX) BACKEND_LIST="icom kenwood aor yaesu dummy pcr alinco uniden tentec kachina jrc drake" ROT_BACKEND_LIST="dummy easycomm rotorez" BINDING_LIST="" dnl Check if cxx-binding not wanted, default is to build it if test x"${CXX}" = x; then cf_with_cxx=no else cf_with_cxx=yes fi AC_MSG_CHECKING(whether to build C++ binding and demo) AC_ARG_WITH(cxx-binding, [ --without-cxx-binding do not build C++ binding and demo], [cf_with_cxx_binding=$withval], [cf_with_cxx_binding=$cf_with_cxx]) AC_MSG_RESULT($cf_with_cxx_binding) if test "${cf_with_cxx_binding}" = "yes" ; then BINDING_LIST="${BINDING_LIST} c++" fi dnl Check if perl-binding not wanted, default is to not build it SC_PATH_PERLINC if test x"${no_perl}" = x; then cf_with_perl=yes else cf_with_perl=no fi AC_MSG_CHECKING(whether to build perl binding and demo) AC_ARG_WITH(perl-binding, [ --with-perl-binding build perl binding and demo], [cf_with_perl_binding=$withval], [cf_with_perl_binding=$cf_with_perl]) AC_MSG_RESULT($cf_with_perl_binding) if test "${cf_with_perl_binding}" = "yes" ; then BINDING_LIST="${BINDING_LIST} perl" fi dnl Check if kylix-binding wanted, REM: nothing to build yet cf_with_kylix=no AC_MSG_CHECKING(whether to build Kylix binding and demo) AC_ARG_WITH(kylix-binding, [ --with-kylix-binding build Kylix binding and demo], [cf_with_kylix_binding=$withval], [cf_with_kylix_binding=$cf_with_kylix]) AC_MSG_RESULT($cf_with_kylix_binding) if test "${cf_with_kylix_binding}" = "yes" ; then BINDING_LIST="${BINDING_LIST} kylix" fi dnl Check for tcl-dev availability, so we can enable HamlibTCL SC_PATH_TCLCONFIG if test x"${no_tcl}" = x; then SC_LOAD_TCLCONFIG cf_with_tcl=yes else cf_with_tcl=no fi AC_MSG_CHECKING(whether to build tcl binding and demo) AC_ARG_WITH(tcl-binding, [ --with-tcl-binding build tcl binding and demo], [cf_with_tcl_binding=$withval], [cf_with_tcl_binding=$cf_with_tcl]) AC_MSG_RESULT($cf_with_tcl_binding) if test "${cf_with_tcl_binding}" = "yes" ; then BINDING_LIST="${BINDING_LIST} tcl" fi AC_SUBST(TCL_LIB_SPEC) # TODO: require "${ac_cv_header_sys_socket_h}" = "no" dnl Backend list case "$host_os" in linux-gnu*) # Winradio only under Linux (until someone port it on other os) BACKEND_LIST="$BACKEND_LIST winradio" # TODO: support parallel port interface on other systems too if test "${ac_cv_header_linux_ppdev_h}" = "yes"; then ROT_BACKEND_LIST="$ROT_BACKEND_LIST fodtrack" fi ;; *) esac # FIXME: check for presence of libgnuradio, libfftw if test "${cf_with_cxx}" = "yes" ; then AC_MSG_CHECKING(whether to build gnuradio backend) AC_ARG_WITH(gnuradio, [ --with-gnuradio build gnuradio backend], [cf_with_gnuradio=$withval], [cf_with_gnuradio="no"]) AC_MSG_RESULT($cf_with_gnuradio) if test "${cf_with_gnuradio}" = "yes" ; then PKG_CHECK_MODULES(GNURADIO, gnuradio >= 0.7) BACKEND_LIST="$BACKEND_LIST gnuradio" fi # So far, microtune has only support on Linux x86. # BTW, any platform with a parallel support may support it in the future AC_MSG_CHECKING(whether to build microtune backend) AC_ARG_WITH(microtune, [ --with-microtune build microtune backend], [cf_with_microtune=$withval], [cf_with_microtune="no"]) AC_MSG_RESULT($cf_with_microtune) if test "${cf_with_microtune}" = "yes" ; then BACKEND_LIST="$BACKEND_LIST microtune" fi fi AC_SUBST(GNURADIO_CFLAGS) AC_SUBST(GNURADIO_LIBS) AC_CHECK_PROG(cf_with_rpcgen, rpcgen, [yes], [no]) AC_MSG_CHECKING(whether to build rpc backends) # RPCRig must be the last one added to BACKEND_LIST # because it links against other backends (build order) if test "${ac_cv_header_rpc_rpc_h}" = "yes" -a "${cf_with_rpcgen}" = "yes"; then cf_with_rpc=yes else cf_with_rpc=no fi AC_ARG_WITH(rpc-backends, [ --without-rpc-backends do not build rpcrig and rpcrot backends], [cf_with_rpc_backends=$withval], [cf_with_rpc_backends=$cf_with_rpc]) AC_MSG_RESULT($cf_with_rpc_backends) if test "${cf_with_rpc_backends}" = "yes"; then BACKEND_LIST="$BACKEND_LIST rpcrig" ROT_BACKEND_LIST="$ROT_BACKEND_LIST rpcrot" fi # dlopen force or preopen self for static version ? BACKENDLNK="-dlopen force" for be in ${BACKEND_LIST} ; do BACKENDLNK="${BACKENDLNK} -dlopen ../${be}/hamlib-${be}.la" BACKENDEPS="${BACKENDEPS} ../${be}/hamlib-${be}.la" done AC_SUBST(BACKEND_LIST) AC_SUBST(BACKENDLNK) AC_SUBST(BACKENDEPS) # dlopen force or preopen self for static version ? ROT_BACKENDLNK="-dlopen force" for be in ${ROT_BACKEND_LIST} ; do ROT_BACKENDLNK="${ROT_BACKENDLNK} -dlopen ../${be}/hamlib-${be}.la" ROT_BACKENDEPS="${ROT_BACKENDEPS} ../${be}/hamlib-${be}.la" done AC_SUBST(ROT_BACKEND_LIST) AC_SUBST(ROT_BACKENDLNK) AC_SUBST(ROT_BACKENDEPS) BINDINGS="" AC_CHECK_PROG(cf_with_bindings, [swig], [yes], [no], [$PATH]) if test "${cf_with_bindings}" = "yes" ; then AC_MSG_CHECKING(for swig >= 1.3.14) cf_with_bindings=no case `swig -version 2>&1| grep 'SWIG Version'` in *1.3.1[[4-9]]*) cf_with_bindings=yes BINDINGS="bindings" ;; *2.*.*) cf_with_bindings=yes BINDINGS="bindings" ;; esac AC_MSG_RESULT($cf_with_bindings) fi AC_MSG_CHECKING(whether to build bindings) AC_MSG_RESULT($cf_with_bindings) AC_SUBST(BINDINGS) for bi in ${BINDING_LIST} ; do if test "${bi}" != "c++" -a "${bi}" != "kylix" ; then BINDING_LA="${BINDING_LA} hamlib${bi}.la" fi done AC_SUBST(BINDING_LA) AC_SUBST(BINDING_LIST) AC_SUBST(INCLUDES) #tcl/Makefile #perl/Makefile AC_CONFIG_FILES([Makefile macros/Makefile include/Makefile lib/Makefile dummy/Makefile yaesu/Makefile icom/Makefile aor/Makefile kenwood/Makefile winradio/Makefile pcr/Makefile alinco/Makefile uniden/Makefile tentec/Makefile kachina/Makefile jrc/Makefile drake/Makefile gnuradio/Makefile easycomm/Makefile fodtrack/Makefile rpcrig/Makefile rpcrot/Makefile src/Makefile c++/Makefile kylix/Makefile bindings/Makefile tests/Makefile doc/Makefile rotorez/Makefile microtune/Makefile hamlib.pc hamlib.spec] ) AC_OUTPUT