# Copyright (C) 2008, 2009 Her Majesty the Queen in Right of Canada # (Communications Research Center Canada) # This file is part of ODR-DabMux. # # ODR-DabMux is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # ODR-DabMux is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with ODR-DabMux. If not, see . AC_PREREQ(2.61) AC_INIT([ODR-DabMux], [0.7.5], [matthias.braendli@mpb.li]) AC_CONFIG_AUX_DIR([build-aux]) AC_CANONICAL_SYSTEM AM_INIT_AUTOMAKE([-Wall subdir-objects foreign]) AC_CONFIG_SRCDIR([src/DabMux.cpp]) AC_CONFIG_HEADER([config.h]) AM_SILENT_RULES([yes]) AC_CONFIG_MACRO_DIR([m4]) case $host in *linux*) case $target_cpu in x86_64) AC_DEFINE([__64BIT__], [], [__16BIT__, __32BIT__]) ;; *) AC_DEFINE([__32BIT__], [], [__16BIT__, __64BIT__]) AC_SUBST([BUILD_TARGET], ["CC='gcc -m32' CXX='g++ -m32' --target=i686"]) flags="-m32" esac ;; *) AC_DEFINE([__32BIT__], [], [__16BIT__, __64BIT__]) AC_SUBST([GETOPT], ["xgetopt.cpp xgetopt.h"]) AC_SUBST([WSOCK32], ["-lwsock32"]) AC_SUBST([BUILD_HOST], ["--host i386-mingw32msvc"]) esac # Checks for programs. AC_PROG_CXX AC_PROG_CC AM_PROG_CC_C_O AC_PROG_INSTALL AX_CXX_COMPILE_STDCXX_11(noext,mandatory) # Checks for libraries. AC_CHECK_LIB([pthread], [pthread_create], [], AC_MSG_ERROR([libpthread is required])) AX_BOOST_BASE([1.41.0], [], AC_MSG_ERROR([BOOST 1.41 or later is required])) # we need to check for libm before checking for fec AC_CHECK_LIB([m], [sin]) AC_SEARCH_LIBS([init_rs_char], [fec], [], [ AC_MSG_ERROR([unable to find libfec]) ]) # Checks for header files. AC_MSG_CHECKING([for OS type]) AC_PREPROC_IFELSE( [AC_LANG_SOURCE([ #ifndef _WIN32 #error windows #endif ])], [OS=windows], [OS=linux] ) AC_MSG_RESULT([$OS]) AM_CONDITIONAL([WINDOWS], [test "x$OS" == "xwindows"]) AC_SUBST([FARSYNC_DIR], ['$(top_srcdir)/lib/farsync/'$OS]) AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_C_CONST AC_TYPE_SIZE_T AC_TYPE_SSIZE_T AC_HEADER_TIME AC_STRUCT_TM AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT8_T AC_C_VOLATILE # Checks for library functions. AC_PROG_GCC_TRADITIONAL AC_FUNC_MALLOC AC_FUNC_MEMCMP AC_FUNC_REALLOC AC_TYPE_SIGNAL AC_FUNC_VPRINTF AC_CHECK_FUNCS([bzero gethostbyname gettimeofday inet_ntoa memchr memmove memset socket strchr strdup strerror strrchr strstr strtol strtoul]) # Options # Inputs # FIFO AC_ARG_ENABLE([input_fifo], [AS_HELP_STRING([--disable-input-fifo], [Disable FIFO input])], [], [enable_input_fifo=yes]) AS_IF([test "x$enable_input_fifo" = "xyes"], [AC_DEFINE(HAVE_INPUT_FIFO, [1], [Define if FIFO input is enabled])]) # FILE AC_ARG_ENABLE([input_file], [AS_HELP_STRING([--disable-input-file], [Disable FILE input])], [], [enable_input_file=yes]) AS_IF([test "x$enable_input_file" = "xyes"], [AC_DEFINE(HAVE_INPUT_FILE, [1], [Define if FILE input is enabled])]) # ZeroMQ AC_ARG_ENABLE([input_zeromq], [AS_HELP_STRING([--disable-input-zeromq], [Disable ZeroMQ input])], [], [enable_input_zeromq=yes]) AS_IF([test "x$enable_input_zeromq" = "xyes"], [AC_CHECK_LIB(zmq, zmq_init, [] , AC_MSG_ERROR(ZeroMQ libzmq is required))]) AS_IF([test "x$enable_input_zeromq" = "xyes"], AC_DEFINE(HAVE_INPUT_ZEROMQ, [1], [Define if ZEROMQ input is enabled])) # PRBS AC_ARG_ENABLE([input_prbs], [AS_HELP_STRING([--enable-input-prbs], [Enable PRBS input])], [], [enable_input_prbs=no]) AS_IF([test "x$enable_input_prbs" = "xyes"], [AC_DEFINE(HAVE_INPUT_PRBS, [1], [Define if PRBS input is enabled])]) # TEST AC_ARG_ENABLE([input_test], [AS_HELP_STRING([--enable-input-test], [Enable TEST input])], [], [enable_input_test=no]) AS_IF([test "x$enable_input_test" = "xyes"], [AC_DEFINE(HAVE_INPUT_TEST, [1], [Define if TEST input is enabled])]) # SLIP AC_ARG_ENABLE([input_slip], [AS_HELP_STRING([--enable-input-slip], [Enable SLIP input])], [], [enable_input_slip=no]) AS_IF([test "x$enable_input_slip" = "xyes"], [AC_DEFINE(HAVE_INPUT_SLIP, [1], [Define if SLIP input is enabled])]) # UDP AC_ARG_ENABLE([input_udp], [AS_HELP_STRING([--enable-input-udp], [Enable UDP input])], [], [enable_input_udp=no]) AS_IF([test "x$enable_input_udp" = "xyes"], [AC_DEFINE(HAVE_INPUT_UDP, [1], [Define if UDP input is enabled])]) # Outputs # FILE AC_ARG_ENABLE([output_file], [AS_HELP_STRING([--disable-output-file], [Disable FILE output])], [], [enable_output_file=yes]) AS_IF([test "x$enable_output_file" = "xyes"], [AC_DEFINE(HAVE_OUTPUT_FILE, [1], [Define if FILE output is enabled])]) # FIFO AC_ARG_ENABLE([output_fifo], [AS_HELP_STRING([--disable-output-fifo], [Disable FIFO output])], [], [enable_output_fifo=yes]) AS_IF([test "x$enable_output_fifo" = "xyes"], [AC_DEFINE(HAVE_OUTPUT_FIFO, [1], [Define if FIFO output is enabled])]) # UDP AC_ARG_ENABLE([output_udp], [AS_HELP_STRING([--disable-output-udp], [Disable UDP output])], [], [enable_output_udp=yes]) AS_IF([test "x$enable_output_udp" = "xyes"], [AC_DEFINE(HAVE_OUTPUT_UDP, [1], [Define if UDP output is enabled])]) # TCP AC_ARG_ENABLE([output_tcp], [AS_HELP_STRING([--disable-output-tcp], [Disable TCP output])], [], [enable_output_tcp=yes]) AS_IF([test "x$enable_output_tcp" = "xyes"], [AC_DEFINE(HAVE_OUTPUT_TCP, [1], [Define if TCP output is enabled])]) # RAW AC_ARG_ENABLE([output_raw], AS_HELP_STRING([--enable-output-raw], [Enable RAW output])) AS_IF([test "x$enable_output_raw" = "xyes"], [AC_DEFINE(HAVE_OUTPUT_RAW, [1], [Define if RAW output is enabled])]) # SIMUL AC_ARG_ENABLE([output_simul], [AS_HELP_STRING([--disable-output-simul], [Disable SIMUL output])], [], [enable_output_simul=yes]) AS_IF([test "x$enable_output_simul" = "xyes"], [AC_DEFINE(HAVE_OUTPUT_SIMUL, [1], [Define if SIMUL output is enabled])]) # ZeroMQ message queue output AC_ARG_ENABLE([output_zeromq], [AS_HELP_STRING([--disable-output-zeromq], [Disable ZeroMQ output])], [], [enable_output_zeromq=yes]) AS_IF([test "x$enable_output_zeromq" = "xyes"], AC_CHECK_LIB(zmq, zmq_init, [true], [AC_MSG_ERROR([ZeroMQ libzmq is required])])) AS_IF([test "x$enable_output_zeromq" = "xyes"], AC_DEFINE(HAVE_OUTPUT_ZEROMQ, [1], [Define if ZeroMQ output is enabled])) # EDI AC_ARG_ENABLE([output_edi], AS_HELP_STRING([--enable-output-edi], [Enable EDI output])) AS_IF([test "x$enable_output_edi" = "xyes"], [AC_DEFINE(HAVE_OUTPUT_EDI, [1], [Define if EDI output is enabled])]) # Link against lzmq AM_CONDITIONAL([HAVE_ZEROMQ_TEST], [test "x$enable_output_zeromq" = "xyes" -o "x$enable_input_zeromq" = "xyes"]) # Formats # RAW AC_ARG_ENABLE([format_raw], [AS_HELP_STRING([--disable-format-raw], [Disable RAW format])], [], [enable_format_raw=yes]) AS_IF([test "x$enable_format_raw" = "xyes"], [AC_DEFINE(HAVE_FORMAT_RAW, [1], [Define if RAW format is enabled])]) # BRIDGE AC_ARG_ENABLE([format_bridge], [AS_HELP_STRING([--enable-format-bridge], [Enable BRIDGE format])], [], [enable_format_bridge=no]) AS_IF([test "x$enable_format_bridge" = "xno"], [AC_DEFINE(HAVE_FORMAT_BRIDGE, [1], [Define if BRIDGE format is enabled])]) # MPEG AC_ARG_ENABLE([format_mpeg], [AS_HELP_STRING([--disable-format-mpeg], [Disable MPEG format])], [], [enable_format_mpeg=yes]) AS_IF([test "x$enable_format_mpeg" = "xyes"], [AC_DEFINE(HAVE_FORMAT_MPEG, [1], [Define if MPEG format is enabled])]) # PACKET AC_ARG_ENABLE([format_packet], [AS_HELP_STRING([--disable-format-packet], [Disable PACKET format])], [], [enable_format_packet=yes]) AS_IF([test "x$enable_format_packet" = "xyes"], [AC_DEFINE(HAVE_FORMAT_PACKET, [1], [Define if PACKET format is enabled])]) # DABPLUS AC_ARG_ENABLE([format_dabplus], [AS_HELP_STRING([--disable-format-dabplus], [Disable DABPLUS format])], [], [enable_format_dabplus=yes]) AS_IF([test "x$enable_format_dabplus" = "xyes"], [AC_DEFINE(HAVE_FORMAT_DABPLUS, [1], [Define if DABPLUS format is enabled])]) # DMB AC_ARG_ENABLE([format_dmb], [AS_HELP_STRING([--disable-format-dmb], [Disable DMB format])], [], [enable_format_dmb=yes]) AS_IF([test "x$enable_format_dmb" = "xyes"], [AC_DEFINE(HAVE_FORMAT_DMB, [1], [Define if DMB format is enabled])]) # EPM AC_ARG_ENABLE([format_epm], [AS_HELP_STRING([--disable-format-epm], [Disable EPM format])], [], [enable_format_epm=yes]) AS_IF([test "x$enable_format_epm" = "xyes"], [AC_DEFINE(HAVE_FORMAT_EPM, [1], [Define if EPM format is enabled])]) AM_CONDITIONAL([IS_GIT_REPO], [test -d '.git']) AC_CONFIG_FILES([Makefile src/Makefile lib/Makefile lib/farsync/Makefile ]) AC_OUTPUT echo echo "***********************************************" echo echo "Inputs:" enabled="" disabled="" for output in prbs test slip udp fifo file zeromq do eval var=\$enable_input_$output AS_IF([test "x$var" = "xyes"], [enabled="$enabled $output"], [disabled="$disabled $output"]) done echo " Enabled: $enabled" echo " Disabled: $disabled" echo echo "Formats:" enabled="" disabled="" for format in raw bridge mpeg packet dabplus dmb epm do eval var=\$enable_format_$format AS_IF([test "x$var" = "xyes"], [enabled="$enabled $format"], [disabled="$disabled $format"]) done echo " Enabled: $enabled" echo " Disabled: $disabled" echo echo "Outputs:" enabled="" disabled="" for output in file fifo udp tcp raw simul zeromq edi do eval var=\$enable_output_$output AS_IF([test "x$var" = "xyes"], [enabled="$enabled $output"], [disabled="$disabled $output"]) done echo " Enabled: $enabled" echo " Disabled: $disabled" echo echo "***********************************************" echo