mirror of https://github.com/wolfSSL/wolfMQTT.git
631 lines
18 KiB
Plaintext
631 lines
18 KiB
Plaintext
# wolfmqtt
|
|
# Copyright (C) 2026 wolfSSL Inc.
|
|
# All rights reserved.
|
|
|
|
AC_COPYRIGHT([Copyright (C) 2014-2026 wolfSSL Inc.])
|
|
AC_INIT([wolfmqtt],[2.0.0],[https://github.com/wolfssl/wolfMQTT/issues],[wolfmqtt],[http://www.wolfssl.com])
|
|
|
|
AC_PREREQ([2.63])
|
|
AC_CONFIG_AUX_DIR([build-aux])
|
|
|
|
# Check for pkg-config
|
|
PKG_PROG_PKG_CONFIG
|
|
|
|
# The following sets CFLAGS to empty if unset on command line.
|
|
: ${CFLAGS=""}
|
|
|
|
# Test ar for the "U" option. Should be checked before the libtool macros.
|
|
xxx_ar_flags=$(ar --help 2>&1)
|
|
AS_CASE([$xxx_ar_flags],[*'use actual timestamps and uids/gids'*],[: ${AR_FLAGS="Ucru"}])
|
|
|
|
AC_CANONICAL_HOST
|
|
AC_CANONICAL_TARGET
|
|
|
|
AM_INIT_AUTOMAKE([1.11 -Wall -Werror -Wno-portability foreign tar-ustar subdir-objects no-define color-tests])
|
|
|
|
AC_ARG_PROGRAM
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
AC_CONFIG_HEADERS([src/config.h])
|
|
|
|
WOLFMQTT_LIBRARY_VERSION=19:0:0
|
|
# | | |
|
|
# +------+ | +---+
|
|
# | | |
|
|
# current:revision:age
|
|
# | | |
|
|
# | | +- increment if interfaces have been added
|
|
# | | set to zero if interfaces have been removed
|
|
# | | or changed
|
|
# | +- increment if source code has changed
|
|
# | set to zero if current is incremented
|
|
# +- increment if interfaces have been added, removed or changed
|
|
AC_SUBST([WOLFMQTT_LIBRARY_VERSION])
|
|
|
|
|
|
LT_PREREQ([2.2])
|
|
LT_INIT([disable-static win32-dll])
|
|
LT_LANG([C])
|
|
|
|
gl_VISIBILITY
|
|
AS_IF([test -n "$CFLAG_VISIBILITY"],
|
|
[AM_CPPFLAGS="$AM_CPPFLAGS $CFLAG_VISIBILITY"
|
|
CPPFLAGS="$CPPFLAGS $CFLAG_VISIBILITY"])
|
|
|
|
# silent
|
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
|
|
#
|
|
m4_pattern_allow([AC_CHECK_LIB])
|
|
m4_pattern_allow([AC_MSG_ERROR])
|
|
|
|
# Checks for programs.
|
|
AC_PROG_CC
|
|
AM_PROG_CC_C_O
|
|
AC_PROG_INSTALL
|
|
|
|
AC_CHECK_SIZEOF([long long], 8)
|
|
AC_CHECK_SIZEOF([long], 4)
|
|
|
|
# Check headers/libs
|
|
AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stddef.h time.h sys/ioctl.h sys/socket.h sys/time.h errno.h sys/un.h])
|
|
AC_CHECK_FUNCS([gethostbyname getaddrinfo gettimeofday inet_ntoa memset socket signal rand])
|
|
AC_CHECK_LIB([network],[socket])
|
|
|
|
#wolfssl
|
|
AC_MSG_CHECKING([for wolfSSL])
|
|
if test "x$prefix" = "xNONE"
|
|
then
|
|
wcpath=$ac_default_prefix
|
|
else
|
|
wcpath=$prefix
|
|
fi
|
|
AC_MSG_NOTICE([prefix ${prefix}])
|
|
WOLFSSL_URL="http://www.wolfssl.com/download.html"
|
|
AC_ARG_WITH(libwolfssl-prefix,
|
|
[AS_HELP_STRING([--with-libwolfssl-prefix=PATH], [PATH to wolfssl install (default /usr/local)])],
|
|
[
|
|
if test "x$withval" != "xno" ; then
|
|
if test -d "${withval}/lib" && test -d "${withval}/include"; then
|
|
wcpath=${withval}
|
|
else
|
|
AC_MSG_ERROR([wolfSSL path error (${withval}): missing lib and include])
|
|
fi
|
|
fi
|
|
]
|
|
)
|
|
|
|
LDFLAGS="$LDFLAGS -L${wcpath}/lib"
|
|
CPPFLAGS="$CPPFLAGS -I${wcpath}/include"
|
|
|
|
|
|
# DEBUG
|
|
DEBUG_CFLAGS="-g -O0 -DDEBUG_WOLFMQTT"
|
|
|
|
# Optimizations
|
|
OPTIMIZE_CFLAGS="-O2"
|
|
|
|
AX_DEBUG
|
|
AS_IF([test "x$ax_enable_debug" = "xyes" || test "x$ax_enable_debug" = "xverbose" || test "x$ax_enable_debug" = "xtrace"],
|
|
[AM_CFLAGS="$DEBUG_CFLAGS $AM_CFLAGS -DDEBUG"],
|
|
[AM_CFLAGS="$AM_CFLAGS $OPTIMIZE_CFLAGS -DNDEBUG"])
|
|
|
|
|
|
AX_PTHREAD([
|
|
# If AX_PTHREAD is adding -Qunused-arguments, need to prepend with
|
|
# -Xcompiler libtool will use it. Newer versions of clang don't need
|
|
# the -Q flag when using pthreads.
|
|
AS_CASE([$PTHREAD_CFLAGS],[-Qunused-arguments*],[PTHREAD_CFLAGS="-Xcompiler $PTHREAD_CFLAGS"])
|
|
AM_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS"
|
|
])
|
|
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
if test "$ac_cv_sizeof_long" = "8"; then
|
|
AM_CFLAGS="$AM_CFLAGS -DSIZEOF_LONG=8"
|
|
else
|
|
if test "$ac_cv_sizeof_long_long" = "8"; then
|
|
AM_CFLAGS="$AM_CFLAGS -DSIZEOF_LONG_LONG=8"
|
|
fi
|
|
fi
|
|
|
|
|
|
# Logging / Tracing
|
|
if test "x$ax_enable_debug" = "xverbose" || test "x$ax_enable_debug" = "xtrace"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_DEBUG_CLIENT -DWOLFMQTT_DEBUG_SOCKET"
|
|
if test "x$ax_enable_debug" = "xtrace"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_DEBUG_TRACE"
|
|
fi
|
|
fi
|
|
|
|
|
|
# ALL FEATURES
|
|
AC_ARG_ENABLE([all],
|
|
[AS_HELP_STRING([--enable-all],[Enable all wolfMQTT features (default: disabled)])],
|
|
[ ENABLED_ALL=$enableval ],
|
|
[ ENABLED_ALL=no ]
|
|
)
|
|
if test "$ENABLED_ALL" = "yes"
|
|
then
|
|
test "$enable_tls" = "" && enable_tls=yes
|
|
test "$enable_nonblock" = "" && enable_nonblock=yes
|
|
test "$enable_timeout" = "" && enable_timeout=yes
|
|
test "$enable_examples" = "" && enable_examples=yes
|
|
test "$enable_errorstrings" = "" && enable_errorstrings=yes
|
|
test "$enable_stdincap" = "" && enable_stdincap=yes
|
|
test "$enable_sn" = "" && enable_sn=yes
|
|
test "$enable_v5" = "" && enable_v5=yes
|
|
test "$enable_discb" = "" && enable_discb=yes
|
|
test "$enable_mt" = "" && enable_mt=yes
|
|
test "$enable_broker" = "" && enable_broker=yes
|
|
fi
|
|
|
|
# TLS Support with wolfSSL
|
|
AC_ARG_ENABLE([tls],
|
|
[AS_HELP_STRING([--enable-tls],[Enable TLS support with wolfSSL (default: enabled)])],
|
|
[ ENABLED_TLS=$enableval ],
|
|
[ ENABLED_TLS=yes ]
|
|
)
|
|
|
|
if test "x$ENABLED_TLS" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DENABLE_MQTT_TLS"
|
|
|
|
AC_CHECK_LIB([wolfssl],[wolfCrypt_Init],,[AC_MSG_ERROR([libwolfssl is required and wasn't found on the system. It can be obtained from https://www.wolfssl.com/download.html/.])])
|
|
|
|
fi
|
|
|
|
|
|
# Non-Blocking support
|
|
AC_ARG_ENABLE([nonblock],
|
|
[AS_HELP_STRING([--enable-nonblock],[Enable non-blocking support (default: disabled)])],
|
|
[ ENABLED_NONBLOCK=$enableval ],
|
|
[ ENABLED_NONBLOCK=no ]
|
|
)
|
|
|
|
if test "x$ENABLED_NONBLOCK" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_NONBLOCK"
|
|
fi
|
|
|
|
|
|
# Timeout support
|
|
AC_ARG_ENABLE([timeout],
|
|
[AS_HELP_STRING([--enable-timeout],[Enable timeout support (default: enabled)])],
|
|
[ ENABLED_TIMEOUT=$enableval ],
|
|
[ ENABLED_TIMEOUT=yes ]
|
|
)
|
|
|
|
if test "x$ENABLED_TIMEOUT" = "xno"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_NO_TIMEOUT"
|
|
fi
|
|
|
|
# Examples, used to disable examples
|
|
AC_ARG_ENABLE([examples],
|
|
[AS_HELP_STRING([--enable-examples],[Enable examples (default: enabled)])],
|
|
[ ENABLED_EXAMPLES=$enableval ],
|
|
[ ENABLED_EXAMPLES=yes ]
|
|
)
|
|
|
|
|
|
# Error strings
|
|
AC_ARG_ENABLE([errorstrings],
|
|
[AS_HELP_STRING([--enable-errorstrings],[Enable error strings (default: enabled)])],
|
|
[ ENABLED_ERROR_STRINGS=$enableval ],
|
|
[ ENABLED_ERROR_STRINGS=yes ]
|
|
)
|
|
|
|
if test "x$ENABLED_ERROR_STRINGS" = "xno"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_NO_ERROR_STRINGS"
|
|
fi
|
|
|
|
|
|
# STDIN / FGETS for examples
|
|
AC_ARG_ENABLE([stdincap],
|
|
[AS_HELP_STRING([--enable-stdincap],[Enable examples STDIN capture (default: enabled)])],
|
|
[ ENABLED_STDINCAP=$enableval ],
|
|
[ ENABLED_STDINCAP=yes ]
|
|
)
|
|
|
|
if test "x$ENABLED_STDINCAP" = "xno"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_NO_STDIN_CAP"
|
|
fi
|
|
|
|
|
|
# MQTT-SN Sensor Network
|
|
AC_ARG_ENABLE([sn],
|
|
[AS_HELP_STRING([--enable-sn],[Enable MQTT-SN support (default: disabled)])],
|
|
[ ENABLED_SN=$enableval ],
|
|
[ ENABLED_SN=no ]
|
|
)
|
|
|
|
if test "x$ENABLED_SN" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_SN"
|
|
fi
|
|
|
|
|
|
# libcurl support
|
|
AC_ARG_ENABLE([curl],
|
|
[AS_HELP_STRING([--enable-curl],[Enable curl easy socket backend (default: disabled)])],
|
|
[ ENABLED_CURL=$enableval ],
|
|
[ ENABLED_CURL=no ]
|
|
)
|
|
|
|
if test "x$ENABLED_CURL" = "xyes"; then
|
|
if test "x$ENABLED_ALL" = "xyes"; then
|
|
AC_MSG_ERROR([--enable-all and --enable-curl are incompatible])
|
|
fi
|
|
|
|
if test "x$ENABLED_SN" = "xyes"; then
|
|
AC_MSG_ERROR([--enable-sn and --enable-curl are incompatible])
|
|
fi
|
|
|
|
AM_CFLAGS="$AM_CFLAGS -DENABLE_MQTT_CURL"
|
|
|
|
AC_CHECK_LIB([curl],[curl_easy_init],,[AC_MSG_ERROR([libcurl is required and wasn't found on the system. It can be obtained from https://curl.se/download.html.])])
|
|
fi
|
|
|
|
# MQTT v5.0
|
|
AC_ARG_ENABLE([v5],
|
|
[AS_HELP_STRING([--enable-v5],[Enable MQTT v5.0 support (default: disabled)])],
|
|
[ ENABLED_MQTTV50=$enableval ],
|
|
[ ENABLED_MQTTV50=no ]
|
|
)
|
|
# Keep old config option for backward compatibility
|
|
AC_ARG_ENABLE([mqtt5],
|
|
,
|
|
[ ENABLED_MQTTV50_old=$enableval ],
|
|
[ ENABLED_MQTTV50_old=no ]
|
|
)
|
|
if test "x$ENABLED_MQTTV50_old" = "xyes"
|
|
then
|
|
ENABLED_MQTTV50=yes
|
|
fi
|
|
if test "x$ENABLED_MQTTV50" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_V5"
|
|
if test "x$ENABLED_PROPCB" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_PROPERTY_CB"
|
|
fi
|
|
fi
|
|
|
|
|
|
if test "x$ENABLED_MQTTV50" = "xyes"
|
|
then
|
|
# Property callback, only available when v5 is configured
|
|
AC_ARG_ENABLE([propcb],
|
|
[AS_HELP_STRING([--enable-propcb],[Enable property callback (v5 only) (default: enabled)])],
|
|
[ ENABLED_PROPCB=$enableval ],
|
|
[ ENABLED_PROPCB=yes ]
|
|
)
|
|
|
|
if test "x$ENABLED_PROPCB" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_PROPERTY_CB"
|
|
fi
|
|
fi
|
|
|
|
# Disconnect callback
|
|
AC_ARG_ENABLE([discb],
|
|
[AS_HELP_STRING([--enable-discb],[Enable disconnect callback (default: enabled)])],
|
|
[ ENABLED_DISCB=$enableval ],
|
|
[ ENABLED_DISCB=yes ]
|
|
)
|
|
|
|
if test "x$ENABLED_DISCB" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_DISCONNECT_CB"
|
|
fi
|
|
|
|
# Multithread support
|
|
AC_ARG_ENABLE([mt],
|
|
[AS_HELP_STRING([--enable-mt],[Enable multiple thread support (default: disabled)])],
|
|
[ ENABLED_MULTITHREAD=$enableval ],
|
|
[ ENABLED_MULTITHREAD=no ]
|
|
)
|
|
|
|
if test "x$ENABLED_MULTITHREAD" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_MULTITHREAD"
|
|
fi
|
|
|
|
# Stress test convenience build option.
|
|
AC_ARG_ENABLE([stress],
|
|
[AS_HELP_STRING([--enable-stress],[Enable stress test (default: disabled)])],
|
|
[ ENABLED_STRESS=$enableval ],
|
|
[ ENABLED_STRESS=no ]
|
|
)
|
|
|
|
# Set defaults of t5,p4 if unset (5 tasks, 4 pubs per task).
|
|
NUM_TASKS=5
|
|
NUM_PUBS=4
|
|
|
|
for v in `echo $ENABLED_STRESS | tr "," " "`; do
|
|
case $v in
|
|
yes)
|
|
ENABLED_STRESS="yes"
|
|
;;
|
|
no)
|
|
ENABLED_STRESS="no"
|
|
;;
|
|
t*)
|
|
NUM_TASKS=`echo $v | cut -c 2-`
|
|
;;
|
|
p*)
|
|
NUM_PUBS=`echo $v | cut -c 2-`
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR([enable-stress: arg $v not supported])
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if test "x$ENABLED_STRESS" != "xno"; then
|
|
if test "x$ENABLED_ALL" = "xyes"; then
|
|
AC_MSG_ERROR([--enable-all and --enable-stress are incompatible])
|
|
fi
|
|
|
|
if test "x$ENABLED_SN" = "xyes"; then
|
|
AC_MSG_ERROR([--enable-sn and --enable-stress are incompatible])
|
|
fi
|
|
|
|
ENABLED_TIMEOUT=yes
|
|
ENABLED_NONBLOCK=yes
|
|
ENABLED_MULTITHREAD=yes
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_STRESS"
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_NONBLOCK"
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_TEST_NONBLOCK"
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_TEST_NONBLOCK_TIMES=2"
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_MULTITHREAD"
|
|
AM_CFLAGS="$AM_CFLAGS -DNUM_PUB_TASKS=$NUM_TASKS"
|
|
AM_CFLAGS="$AM_CFLAGS -DNUM_PUB_PER_TASK=$NUM_PUBS"
|
|
fi
|
|
|
|
# WebSocket
|
|
AC_ARG_ENABLE([websocket],
|
|
[AS_HELP_STRING([--enable-websocket],[Enable WebSocket support (default: disabled)])],
|
|
[ ENABLED_WEBSOCKET=$enableval ],
|
|
[ ENABLED_WEBSOCKET=no ]
|
|
)
|
|
|
|
if test "x$ENABLED_WEBSOCKET" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DENABLE_MQTT_WEBSOCKET"
|
|
ENABLED_WEBSOCKET=yes
|
|
|
|
# Check for libwebsockets
|
|
AC_CHECK_LIB([websockets], [lws_create_context],
|
|
[LIBS="$LIBS -lwebsockets"],
|
|
[AC_MSG_ERROR([libwebsockets not found. Install libwebsockets or use --disable-websocket])])
|
|
fi
|
|
|
|
# Broker
|
|
AC_ARG_ENABLE([broker],
|
|
[AS_HELP_STRING([--enable-broker],[Enable lightweight broker support (default: disabled)])],
|
|
[ ENABLED_BROKER=$enableval ],
|
|
[ ENABLED_BROKER=no ]
|
|
)
|
|
|
|
if test "x$ENABLED_BROKER" = "xyes"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_BROKER"
|
|
fi
|
|
|
|
# Broker feature toggles (only relevant when --enable-broker)
|
|
AC_ARG_ENABLE([broker-retained],
|
|
[AS_HELP_STRING([--disable-broker-retained],[Disable broker retained message support])],
|
|
[ ENABLED_BROKER_RETAINED=$enableval ],
|
|
[ ENABLED_BROKER_RETAINED=yes ]
|
|
)
|
|
if test "x$ENABLED_BROKER_RETAINED" = "xno"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_BROKER_NO_RETAINED"
|
|
fi
|
|
|
|
AC_ARG_ENABLE([broker-will],
|
|
[AS_HELP_STRING([--disable-broker-will],[Disable broker Last Will and Testament support])],
|
|
[ ENABLED_BROKER_WILL=$enableval ],
|
|
[ ENABLED_BROKER_WILL=yes ]
|
|
)
|
|
if test "x$ENABLED_BROKER_WILL" = "xno"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_BROKER_NO_WILL"
|
|
fi
|
|
|
|
AC_ARG_ENABLE([broker-wildcards],
|
|
[AS_HELP_STRING([--disable-broker-wildcards],[Disable broker wildcard subscription support])],
|
|
[ ENABLED_BROKER_WILDCARDS=$enableval ],
|
|
[ ENABLED_BROKER_WILDCARDS=yes ]
|
|
)
|
|
if test "x$ENABLED_BROKER_WILDCARDS" = "xno"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_BROKER_NO_WILDCARDS"
|
|
fi
|
|
|
|
AC_ARG_ENABLE([broker-auth],
|
|
[AS_HELP_STRING([--disable-broker-auth],[Disable broker username/password authentication])],
|
|
[ ENABLED_BROKER_AUTH=$enableval ],
|
|
[ ENABLED_BROKER_AUTH=yes ]
|
|
)
|
|
if test "x$ENABLED_BROKER_AUTH" = "xno"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_BROKER_NO_AUTH"
|
|
fi
|
|
|
|
AC_ARG_ENABLE([broker-log],
|
|
[AS_HELP_STRING([--disable-broker-log],[Disable broker logging])],
|
|
[ ENABLED_BROKER_LOG=$enableval ],
|
|
[ ENABLED_BROKER_LOG=yes ]
|
|
)
|
|
if test "x$ENABLED_BROKER_LOG" = "xno"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_BROKER_NO_LOG"
|
|
fi
|
|
|
|
AC_ARG_ENABLE([broker-insecure],
|
|
[AS_HELP_STRING([--disable-broker-insecure],[Disable broker plain-text (non-TLS) listener])],
|
|
[ ENABLED_BROKER_INSECURE=$enableval ],
|
|
[ ENABLED_BROKER_INSECURE=yes ]
|
|
)
|
|
if test "x$ENABLED_BROKER_INSECURE" = "xno"
|
|
then
|
|
AM_CFLAGS="$AM_CFLAGS -DWOLFMQTT_BROKER_NO_INSECURE"
|
|
fi
|
|
|
|
|
|
AM_CONDITIONAL([HAVE_LIBWOLFSSL], [test "x$ENABLED_TLS" = "xyes"])
|
|
AM_CONDITIONAL([HAVE_LIBCURL], [test "x$ENABLED_CURL" = "xyes"])
|
|
AM_CONDITIONAL([BUILD_STRESS], [test "x$ENABLED_STRESS" != "xno"])
|
|
AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$ENABLED_EXAMPLES" = "xyes"])
|
|
AM_CONDITIONAL([BUILD_STDINCAP], [test "x$ENABLED_STDINCAP" = "xyes"])
|
|
AM_CONDITIONAL([BUILD_SN], [test "x$ENABLED_SN" = "xyes"])
|
|
AM_CONDITIONAL([BUILD_MQTT5], [test "x$ENABLED_MQTTV50" = "xyes"])
|
|
AM_CONDITIONAL([BUILD_NONBLOCK], [test "x$ENABLED_NONBLOCK" = "xyes"])
|
|
AM_CONDITIONAL([BUILD_MULTITHREAD], [test "x$ENABLED_MULTITHREAD" = "xyes"])
|
|
AM_CONDITIONAL([BUILD_WEBSOCKET], [test "x$ENABLED_WEBSOCKET" = "xyes"])
|
|
AM_CONDITIONAL([BUILD_BROKER], [test "x$ENABLED_BROKER" = "xyes"])
|
|
|
|
# Fuzz target
|
|
AC_ARG_ENABLE([fuzz],
|
|
[AS_HELP_STRING([--enable-fuzz],[Enable libFuzzer targets (default: disabled)])],
|
|
[ ENABLED_FUZZ=$enableval ],
|
|
[ ENABLED_FUZZ=no ]
|
|
)
|
|
AM_CONDITIONAL([BUILD_FUZZ], [test "x$ENABLED_FUZZ" = "xyes"])
|
|
|
|
|
|
|
|
# HARDEN FLAGS
|
|
AX_HARDEN_CC_COMPILER_FLAGS
|
|
|
|
OPTION_FLAGS="$CFLAGS $CPPFLAGS $AM_CFLAGS"
|
|
|
|
CREATE_HEX_VERSION
|
|
AC_SUBST([AM_CPPFLAGS])
|
|
AC_SUBST([AM_CFLAGS])
|
|
AC_SUBST([AM_LDFLAGS])
|
|
|
|
# FINAL
|
|
AC_CONFIG_FILES([Makefile])
|
|
AC_CONFIG_FILES([wolfmqtt/version.h])
|
|
AC_CONFIG_FILES([wolfmqtt/options.h])
|
|
|
|
AX_CREATE_GENERIC_CONFIG
|
|
AX_AM_JOBSERVER([yes])
|
|
|
|
AC_OUTPUT
|
|
|
|
# force make clean
|
|
echo "---"
|
|
echo "Running make clean..."
|
|
make clean >/dev/null 2>&1
|
|
echo
|
|
|
|
# generate user options header
|
|
echo "---"
|
|
echo "Generating user options header..."
|
|
|
|
OPTION_FILE="wolfmqtt/options.h"
|
|
rm -f $OPTION_FILE
|
|
|
|
echo "/* wolfmqtt options.h" > $OPTION_FILE
|
|
echo " * generated from configure options" >> $OPTION_FILE
|
|
echo " *" >> $OPTION_FILE
|
|
echo " * Copyright (C) 2006-2020 wolfSSL Inc." >> $OPTION_FILE
|
|
echo " *" >> $OPTION_FILE
|
|
echo " * * This file is part of wolfMQTT." >> $OPTION_FILE
|
|
echo " *" >> $OPTION_FILE
|
|
echo " */" >> $OPTION_FILE
|
|
|
|
echo "" >> $OPTION_FILE
|
|
echo "#ifndef WOLFMQTT_OPTIONS_H" >> $OPTION_FILE
|
|
echo "#define WOLFMQTT_OPTIONS_H" >> $OPTION_FILE
|
|
echo "" >> $OPTION_FILE
|
|
echo "" >> $OPTION_FILE
|
|
echo "#ifdef __cplusplus" >> $OPTION_FILE
|
|
echo "extern \"C\" {" >> $OPTION_FILE
|
|
echo "#endif" >> $OPTION_FILE
|
|
echo "" >> $OPTION_FILE
|
|
|
|
for option in $OPTION_FLAGS; do
|
|
defonly=`echo $option | sed 's/-D//'`
|
|
if test "$defonly" != "$option"
|
|
then
|
|
noequalsign=`echo $defonly | sed 's/=/ /'`
|
|
if test "$noequalsign" = "NDEBUG" || test "$noequalsign" = "DEBUG"
|
|
then
|
|
echo "not outputting (N)DEBUG to $OPTION_FILE"
|
|
continue
|
|
fi
|
|
|
|
# allow user to ignore system options
|
|
ignoresys=no
|
|
if [[[ $noequalsign == _* ]]] ;
|
|
then
|
|
ignoresys=yes
|
|
echo "#ifndef WOLFSSL_OPTIONS_IGNORE_SYS" >> $OPTION_FILE
|
|
fi
|
|
|
|
noarg=`echo $defonly | sed 's/=.*//'`
|
|
echo "#undef $noarg" >> $OPTION_FILE
|
|
echo "#define $noequalsign" >> $OPTION_FILE
|
|
|
|
if test "$ignoresys" = "yes"
|
|
then
|
|
echo "#endif" >> $OPTION_FILE
|
|
fi
|
|
|
|
echo "" >> $OPTION_FILE
|
|
else
|
|
echo "option w/o begin -D is $option, not saving to $OPTION_FILE"
|
|
fi
|
|
done
|
|
|
|
echo "" >> $OPTION_FILE
|
|
echo "#ifdef __cplusplus" >> $OPTION_FILE
|
|
echo "}" >> $OPTION_FILE
|
|
echo "#endif" >> $OPTION_FILE
|
|
echo "" >> $OPTION_FILE
|
|
echo "" >> $OPTION_FILE
|
|
echo "#endif /* WOLFMQTT_OPTIONS_H */" >> $OPTION_FILE
|
|
echo "" >> $OPTION_FILE
|
|
echo
|
|
|
|
# output config summary
|
|
echo "---"
|
|
echo "Configuration summary for $PACKAGE_NAME version $VERSION"
|
|
echo ""
|
|
echo " * Installation prefix: $prefix"
|
|
echo " * System type: $host_vendor-$host_os"
|
|
echo " * Host CPU: $host_cpu"
|
|
echo " * C Compiler: $CC"
|
|
echo " * C Flags: $CFLAGS"
|
|
echo " * CPP Flags: $CPPFLAGS"
|
|
echo " * Linker Flags: $LDFLAGS"
|
|
echo " * LIB Flags: $LIB"
|
|
|
|
echo " * Disconnect Callback: $ENABLED_DISCB"
|
|
echo " * Error Strings: $ENABLED_ERROR_STRINGS"
|
|
echo " * Enable MQTT-SN: $ENABLED_SN"
|
|
echo " * Enable MQTT v5.0: $ENABLED_MQTTV50"
|
|
if test "x$ENABLED_MQTTV50" = "xyes"
|
|
then
|
|
echo " * Property Callback: $ENABLED_PROPCB"
|
|
fi
|
|
echo " * Examples: $ENABLED_EXAMPLES"
|
|
echo " * Non-Blocking: $ENABLED_NONBLOCK"
|
|
echo " * STDIN Capture: $ENABLED_STDINCAP"
|
|
echo " * TLS: $ENABLED_TLS"
|
|
echo " * CURL: $ENABLED_CURL"
|
|
echo " * Multi-thread: $ENABLED_MULTITHREAD"
|
|
echo " * Stress: $ENABLED_STRESS"
|
|
echo " * WebSocket: $ENABLED_WEBSOCKET"
|
|
echo " * Broker: $ENABLED_BROKER"
|
|
echo " * Fuzz: $ENABLED_FUZZ"
|