1
0
mirror of https://github.com/eclipse/paho.mqtt.cpp.git synced 2025-06-04 16:34:26 +08:00
paho.mqtt.cpp/configure.ac

219 lines
6.6 KiB
Plaintext

#*******************************************************************************
# Copyright (c) 2016
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# and Eclipse Distribution License v1.0 which accompany this distribution.
#
# The Eclipse Public License is available at
# http://www.eclipse.org/legal/epl-v10.html
# and the Eclipse Distribution License is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# Contributors:
# Guilherme Maciel Ferreira - initial contribuition
#*******************************************************************************/
###############################################################################
# Autotools setup
###############################################################################
AC_PREREQ([2.65])
AC_INIT([paho.mqtt.cpp], [1.0.1])
AC_CONFIG_AUX_DIR([autotools_build])
AC_CONFIG_MACRO_DIR([m4])
AC_LANG_CPLUSPLUS
AM_INIT_AUTOMAKE([1.11 -Wall -Werror foreign subdir-objects])
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
AM_SILENT_RULES([yes])
LT_INIT([shared static pic-only])
AC_PROG_CC
AC_PROG_CXX([clang++ cxx cc++ c++ g++])
AC_PROG_CXXCPP
AC_PROG_INSTALL
AC_PROG_LIBTOOL
###############################################################################
# Input dependencies
###############################################################################
AC_CHECK_LIB([pthread], [pthread_create], , AC_MSG_ERROR([missing pthread library]))
AC_CHECK_HEADER([pthread.h], , AC_MSG_ERROR([missing pthread.h header]))
AC_SEARCH_LIBS([main], [stdc++], , AC_MSG_ERROR([missing libstdc++]))
AC_CHECK_HEADER([iostream], , AC_MSG_ERROR([missing STL iostream header]))
AC_CHECK_HEADER([list], , AC_MSG_ERROR([missing STL list header]))
AC_CHECK_HEADER([memory], , AC_MSG_ERROR([missing STL memory header]))
AC_CHECK_HEADER([string], , AC_MSG_ERROR([missing STL string header]))
AC_CHECK_HEADER([vector], , AC_MSG_ERROR([missing STL vector header]))
#AC_CHECK_HEADER([chrono], , AC_MSG_ERROR([missing STL chrono header]))
#AC_CHECK_HEADER([condition_variable], , AC_MSG_ERROR([missing STL condition_variable header]))
#AC_CHECK_HEADER([exception], , AC_MSG_ERROR([missing STL exception header]))
#AC_CHECK_HEADER([thread], , AC_MSG_ERROR([missing STL thread header]))
AC_HEADER_STDBOOL
AC_TYPE_SIZE_T
AC_TYPE_UINT32_T
AC_TYPE_UINT8_T
AC_C_INLINE
AC_FUNC_MALLOC
AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
###############################################################################
# Input options
###############################################################################
# Build samples
AC_ARG_ENABLE(
[samples],
AS_HELP_STRING(
[--enable-samples=@<:@yes/no@:>@],
[build sample programs @<:@default=no@:>@]
),
,
enable_samples=no
)
AM_CONDITIONAL([PAHO_BUILD_SAMPLES], [test "$enable_samples" = yes])
# Build documentation
AC_ARG_ENABLE(
[doc],
AS_HELP_STRING(
[--enable-doc=@<:@yes/no@:>@],
[build documentation @<:@default=no@:>@]
),
,
enable_doc=no
)
AS_IF([test "x$enable_doc" = "xyes"], [
AC_CHECK_PROGS([DOXYGEN], [doxygen])
AS_IF([test -z "$DOXYGEN"], [
AC_MSG_ERROR([Doxygen not found - disabling documentation build])
], [
AC_CONFIG_FILES([doc/Doxyfile])
])
])
AM_CONDITIONAL([PAHO_BUILD_DOC], [test "$enable_doc" = yes && test -n "$DOXYGEN"])
# Peak warnings
AC_ARG_ENABLE(
[peak_warnings],
AS_HELP_STRING(
[--enable-peak-warnings=@<:@yes/no@:>@],
[enable peak warnings level @<:@default=no@:>@]
),
,
enable_peak_warnings=no
)
AS_IF([test "x$enable_peak_warnings" = "xyes"], [
CXXFLAGS+=" -Wabi"
CXXFLAGS+=" -Wall"
CXXFLAGS+=" -Wcast-qual"
CXXFLAGS+=" -Wconversion"
CXXFLAGS+=" -Weffc++"
CXXFLAGS+=" -Wextra"
CXXFLAGS+=" -Wfloat-equal"
CXXFLAGS+=" -Winline"
CXXFLAGS+=" -Wmissing-declarations"
CXXFLAGS+=" -Wmissing-format-attribute"
CXXFLAGS+=" -Wno-deprecated-declarations"
CXXFLAGS+=" -Wno-unused-result"
CXXFLAGS+=" -Woverloaded-virtual"
CXXFLAGS+=" -Wpacked"
CXXFLAGS+=" -Wredundant-decls"
CXXFLAGS+=" -Wshadow"
CXXFLAGS+=" -Wsign-promo"
CXXFLAGS+=" -Wstack-protector -fstack-protector"
CXXFLAGS+=" -Wswitch-default"
CXXFLAGS+=" -fno-common"
])
# Add Paho MQTT C path
AC_ARG_WITH(
[paho-mqtt-c],
AS_HELP_STRING(
[--with-paho-mqtt-c=DIR],
[add a path to paho.mqtt.c library and headers]
),
[
LDFLAGS="$LDFLAGS -L$with_paho_mqtt_c/build/output -L$with_paho_mqtt_c/lib -L$with_paho_mqtt_c/lib64"
CPPFLAGS="$CPPFLAGS -I$with_paho_mqtt_c/src -I$with_paho_mqtt_c/include"
],
)
AC_CHECK_HEADER([MQTTAsync.h], , AC_MSG_ERROR([missing paho.mqtt.c headers]))
# Add OpenSSL support to build secure PAHO libraries
AC_ARG_WITH(
[ssl],
AS_HELP_STRING(
[--with-ssl=@<:@yes/no@:>@],
[with OpenSSL support @<:@default=no@:>@]
),
,
with_ssl=yes
)
AS_IF([test "x$with_ssl" = "xyes"], [
AC_CHECK_HEADER([openssl/crypto.h], , AC_MSG_ERROR([missing openssl/crypto.h header]))
AC_CHECK_LIB([crypto], [CRYPTO_num_locks], , AC_MSG_ERROR([missing crypto library]))
AC_CHECK_HEADER([openssl/ssl.h], , AC_MSG_ERROR([missing openssl/ssl.h header]))
AC_CHECK_LIB([ssl], [SSL_connect], , AC_MSG_ERROR([missing ssl library]))
AC_CHECK_LIB([paho-mqtt3as], [MQTTAsync_create], , AC_MSG_ERROR([missing paho.mqtt.c SSL library]))
AC_DEFINE([OPENSSL], [], [OpenSSL support])
],
[
AC_SEARCH_LIBS([MQTTAsync_create], [mqtt paho-mqtt mqtt3 paho-mqtt3 mqtt3a paho-mqtt3a], , AC_MSG_ERROR([missing paho.mqtt.c library]))
])
AM_CONDITIONAL([PAHO_WITH_SSL], [test "$with_ssl" = yes])
###############################################################################
# Output files
###############################################################################
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
###############################################################################
# Output message
###############################################################################
echo ""
echo "Paho MQTT C++ has been configured with the following options:"
echo " Build as shared library : $enable_shared"
echo " Build as static library : $enable_static"
echo " Build samples : $enable_samples"
echo " Build documentation : $enable_doc"
echo " Enable peak warning level : $enable_peak_warnings"
echo " With Paho MQTT C : $with_paho_mqtt_c"
echo " With OpenSSL library : $with_ssl"
echo " With CPPFLAGS : $CPPFLAGS"
echo " With CFLAGS : $CFLAGS"
echo " With CXXFLAGS : $CXXFLAGS"
echo " With LDFLAGS : $LDFLAGS"
echo " With libraries : $LIBS"