configure.ac: Do not set user variables.

The CFLAGS, CXXFLAGS, LDFLAGS and other variables intended to be
overridden by the user should not directly be set by the package.
This change uses one of the approaches recommended by the Autoconf and
Automake manuals, which is to use custom variables to accumulate flags
in the configure script and add them to the make targets they apply
to.  This has the benefit of not cluttering the flags used during the
Autoconf tests, which has proved problematic (see the previous commit
for a demonstration).

* configure.ac: Replace CFLAGS, CXXFLAGS, CPPFLAGS and LDFLAGS by
DAEMONCFLAGS, DAEMONCXXFLAGS, DAEMONCPPFLAGS and DAEMONLDFLAGS,
respectively.
Use these custom variables as the default values of AM_CFLAGS,
AM_CXXFLAGS, AM_CPPFLAGS and AM_LDFLAGS, respectively.  Remove an
extraneous check on jsoncpp.
* bin/Makefile.am (ringcli_CXXFLAGS): Honor the the AM_CXXFLAGS variable.
globals.mk: Extend rather than override the AM_CPPFLAGS variable.
* src/Makefile.am (libring_la_LDFLAGS): Honor AM_LDFLAGS.
(libring_la_CFLAGS): Honor AM_CFLAGS.
(libring_la_CXXFLAGS): Honor AM_CXXFLAGS.
* src/client/Makefile.am (libclient_la_CXXFLAGS): Honor AM_CXXFLAGS.
* src/im/Makefile.am (libim_la_CXXFLAGS): Remove variable.
* src/jamidht/Makefile.am (libringacc_la_CXXFLAGS): Likewise.
* src/media/audio/Makefile.am (libaudio_la_CXXFLAGS): Honor
AM_CXXFLAGS.
(libaudio_la_LDFLAGS): Honor the AM_CXXFLAGS variable.
* src/media/audio/coreaudio/Makefile.am (libcoreaudiolayer_la_CXXFLAGS):
Likewise.
* src/media/video/Makefile.am (libvideo_la_CFLAGS): Honor the
AM_CFLAGS variable.
(libvideo_la_CXXFLAGS): Honor the AM_CXXFLAGS variable.
* src/media/video/v4l2/Makefile.am (AM_CXXFLAGS): Extend rather than
override.
* src/plugin/Makefile.am (libplugin_la_CXXFLAGS): Honor the
AM_CXXFLAGS variable.
* src/security/Makefile.am (libsecurity_la_CXXFLAGS): Likewise.
* src/sip/Makefile.am (libsiplink_la_CXXFLAGS): Likewise.
* src/upnp/Makefile.am (libupnpcontrol_la_CXXFLAGS): Remove variable.
* src/upnp/protocol/Makefile.am (libupnpprotocol_la_CXXFLAGS): Likewise.
* src/upnp/protocol/natpmp/Makefile.am (libnat_pmp_la_CXXFLAGS): Likewise.
* src/upnp/protocol/pupnp/Makefile.am (libpupnp_la_CXXFLAGS): Likewise.
* test/sip/Makefile.am (AM_CXXFLAGS, AM_LDFLAGS): Extend rather than override.
* test/unitTest/Makefile.am (AM_CXXFLAGS, AM_LDFLAGS): Likewise.

GitLab: #487
Change-Id: I18be9d812159f8156efb9f7849e7eac6d4c6b3ca

squash! configure.ac: Do not set user variables.

Change-Id: I1146ea15d6fb75fe53d3cbdd782e981c933e82a6
This commit is contained in:
Maxim Cournoyer
2021-03-25 23:17:17 -04:00
committed by Adrien Béraud
parent 5cca262551
commit bfe7a84454
20 changed files with 150 additions and 139 deletions

View File

@ -22,14 +22,17 @@ AC_CONFIG_HEADERS([config.h])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
dnl debug mode is default-disabled
AC_ARG_ENABLE([debug], AS_HELP_STRING([--enable-debug], [Build in debug mode, adds stricter warnings, disables optimization]))
AS_IF([test "x$enable_debug" = "xyes"], [
CFLAGS="${CFLAGS} -g -fno-omit-frame-pointer -Wall -Wextra -Wnon-virtual-dtor -Wno-unknown-pragmas -Wformat=2 -O0"
CXXFLAGS="${CXXFLAGS} -g -fno-omit-frame-pointer -Wall -Wextra -Wnon-virtual-dtor -Wno-unknown-pragmas -Wformat=2 -O0"
], [
CFLAGS="${CFLAGS} -DNDEBUG=1 -O3"
CXXFLAGS="${CXXFLAGS} -DNDEBUG=1 -O3"
])
AC_ARG_ENABLE([debug],
AS_HELP_STRING([--enable-debug],
[Build in debug mode, adds stricter warnings, disables optimization]))
AS_IF([test "x$enable_debug" = "xyes"],
[DAEMONCFLAGS+=" -g -fno-omit-frame-pointer -Wall -Wextra -Wnon-virtual-dtor \
-Wno-unknown-pragmas -Wformat=2 -O0"
DAEMONCXXFLAGS+=" -g -fno-omit-frame-pointer -Wall -Wextra -Wnon-virtual-dtor \
-Wno-unknown-pragmas -Wformat=2 -O0"],
[DAEMONCFLAGS+=" -DNDEBUG=1 -O3"
DAEMONCXXFLAGS+=" -DNDEBUG=1 -O3"])
dnl Check for programs
AC_PROG_CC
@ -55,9 +58,9 @@ case "${host_os}" in
linux*)
SYS=linux
# Necessary for linking .a to a .so
LDFLAGS+=" -Wl,-Bsymbolic"
DAEMONLDFLAGS+=" -Wl,-Bsymbolic"
# Needed for plugin system
LDFLAGS+=" -ldl"
DAEMONLDFLAGS+=" -ldl"
;;
darwin*)
SYS=darwin
@ -87,8 +90,8 @@ case "${host_os}" in
AC_DEFINE([WIN32_LEAN_AND_MEAN],[1], [Define to limit the scope of <windows.h>.])
CPPFLAGS+="-D_WIN32_WINNT=0x0601 -DWINVER=0x0601 -D__USE_MINGW_ANSI_STDIO=1"
LDFLAGS+="-Wl,--nxcompat -Wl,--dynamicbase"
DAEMONCPPFLAGS+=" -D_WIN32_WINNT=0x0601 -DWINVER=0x0601 -D__USE_MINGW_ANSI_STDIO=1"
DAEMONLDFLAGS+=" -Wl,--nxcompat -Wl,--dynamicbase"
LIBS+=" -lws2_32 -lwsock32 -lshlwapi"
ac_default_prefix="`pwd`/_win32"
DESTDIR="`pwd`/_win32/"
@ -134,11 +137,9 @@ AS_IF([test "$SYS" = linux],[
])
AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
AS_IF([test "$SYS" = linux && test "${HAVE_ANDROID}" != "1"],[
CFLAGS="${CFLAGS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
CXXFLAGS="${CXXFLAGS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
],[
])
AS_IF([test "$SYS" = linux && test "${HAVE_ANDROID}" != "1"],
[DAEMONCPPFLAGS+=" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]
[])
dnl override platform specific check for dependent libraries
dnl otherwise libtool linking of shared libraries will
@ -198,91 +199,67 @@ AC_MSG_RESULT([$CLANG])
dnl define DRING_BUILD because we are building libring, not using it
dnl if building shared library, define dring_EXPORTS
AC_MSG_CHECKING([if compiling shared library])
CPPFLAGS="${CPPFLAGS} -fvisibility=hidden -DDRING_BUILD "
AS_IF([test "x$enable_shared" == "xyes"], [
RING_SHARED=yes
CPPFLAGS="${CPPFLAGS} -Ddring_EXPORTS "
],[
RING_SHARED=no
])
DAEMONCPPFLAGS+=" -fvisibility=hidden -DDRING_BUILD"
AS_IF([test "x$enable_shared" == "xyes"],
[RING_SHARED=yes
DAEMONCPPFLAGS+=" -Ddring_EXPORTS"],
[RING_SHARED=no])
AC_MSG_RESULT([$RING_SHARED])
CPPFLAGS="${CPPFLAGS} -DASIO_STANDALONE"
DAEMONCPPFLAGS+=" -DASIO_STANDALONE"
dnl
dnl Check for the contrib directory
dnl
AC_ARG_WITH(contrib,
[AS_HELP_STRING([--with-contrib[=DIR]],
[search for 3rd party libraries in DIR/include and DIR/lib])
])
[search for 3rd party libraries in DIR/include and DIR/lib])])
AC_MSG_CHECKING([for 3rd party libraries path])
AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
CONTRIB_DIR="${srcdir}/contrib/${host}"
AS_IF([test ! -d "${CONTRIB_DIR}"], [
echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
AS_IF([test ! -d "${CONTRIB_DIR}"], [
echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
CONTRIB_DIR=""
AC_MSG_RESULT([not found])
])
])
], [
AS_IF([test "${with_contrib}" != "no"], [
CONTRIB_DIR="${with_contrib}"
], [
CONTRIB_DIR=""
AC_MSG_RESULT([disabled])
])
])
AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"],
[CONTRIB_DIR="${srcdir}/contrib/${host}"
AS_IF([test ! -d "${CONTRIB_DIR}"],
[echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
AS_IF([test ! -d "${CONTRIB_DIR}"],
[echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
CONTRIB_DIR=""
AC_MSG_RESULT([not found])])])],
[AS_IF([test "${with_contrib}" != "no"],
[CONTRIB_DIR="${with_contrib}"],
[CONTRIB_DIR=""
AC_MSG_RESULT([disabled])])])
AS_IF([test -n "${CONTRIB_DIR}"], [
AS_IF([test -d "${CONTRIB_DIR}/lib"],[
CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
], [
echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
CONTRIB_DIR=""
AC_MSG_RESULT([not usable])
])
])
AS_IF([test -n "${CONTRIB_DIR}"],
[AS_IF([test -d "${CONTRIB_DIR}/lib"],
[CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`],
[echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
CONTRIB_DIR=""
AC_MSG_RESULT([not usable])])])
AS_IF([test -n "${CONTRIB_DIR}"], [
AC_MSG_RESULT([${CONTRIB_DIR}])
export PATH=${CONTRIB_DIR}/bin:$PATH
CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
AS_IF([test -n "${CONTRIB_DIR}"],
[AC_MSG_RESULT([${CONTRIB_DIR}])
export PATH=${CONTRIB_DIR}/bin:$PATH
CFLAGS="${CFLAGS} -DPJ_AUTOCONF=1 "
CXXFLAGS="${CXXFLAGS} -DPJ_AUTOCONF=1 "
AS_IF([test "${HAVE_WIN64}" = "1"],[
CFLAGS+=" -DPJ_WIN64=1"
CXXFLAGS+=" -DPJ_WIN64=1"
])
CFLAGS+=" -I${CONTRIB_DIR}/include"
CXXFLAGS+=" -I${CONTRIB_DIR}/include"
DAEMONCPPFLAGS+=" -I${CONTRIB_DIR}/include -DPJ_AUTOCONF=1"
OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
AS_IF([test "${SYS}" = "mingw32"],[
PKG_CONFIG_PATH_CUSTOM="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/lib64/pkgconfig"
AC_SUBST(PKG_CONFIG_PATH_CUSTOM)
export PKG_CONFIG_PATH_CUSTOM
])
export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/lib64/pkgconfig:$PKG_CONFIG_PATH"
LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
AS_IF([test "${HAVE_WIN64}" = "1"],
[DAEMONCPPFLAGS+=" -DPJ_WIN64=1"])
AS_IF([test "${SYS}" = "darwin"], [
export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
], [
PKG_CHECK_MODULES([Jsoncpp], [jsoncpp >= 1.6.5])
CPPFLAGS="${CPPFLAGS} ${Jsoncpp_CFLAGS}"
LDFLAGS="${LDFLAGS} ${Jsoncpp_LIBS}"
])
], [
AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
AC_MSG_ERROR([Third party libraries not found!])
])
])
AS_IF([test "${SYS}" = "mingw32"],
[PKG_CONFIG_PATH_CUSTOM="${CONTRIB_DIR}/lib/pkgconfig:\
${CONTRIB_DIR}/lib64/pkgconfig"
AC_SUBST(PKG_CONFIG_PATH_CUSTOM)
export PKG_CONFIG_PATH_CUSTOM])
export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:\
${CONTRIB_DIR}/lib64/pkgconfig:$PKG_CONFIG_PATH"
DAEMONLDFLAGS+=" -L${CONTRIB_DIR}/lib"
AS_IF([test "${SYS}" = "darwin"],
[export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"])],
[AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"],
[AC_MSG_ERROR([Third party libraries not found!])])])
AC_SUBST(CONTRIB_DIR)
dnl Add extras/tools to the PATH
@ -298,8 +275,13 @@ PKG_CHECK_MODULES(ZLIB, zlib,, AC_MSG_ERROR([zlib not found]))
dnl Check for pjproject
PKG_CHECK_MODULES(PJPROJECT, libpjproject,, AC_MSG_ERROR([Missing pjproject files]))
PKG_CHECK_MODULES([YAMLCPP], [yaml-cpp >= 0.5.1],, AC_MSG_ERROR([yaml-cpp not found]))
PKG_CHECK_MODULES([JSONCPP], [jsoncpp >= 1.6.5],, AC_MSG_ERROR([jsoncpp not found]))
PKG_CHECK_MODULES([YAMLCPP], [yaml-cpp >= 0.5.1],,
AC_MSG_ERROR([yaml-cpp not found]))
PKG_CHECK_MODULES([JSONCPP], [jsoncpp >= 1.6.5],
[DAEMONCPPFLAGS+=" ${JSONCPP_CFLAGS}"
DAEMONLDFLAGS+=" ${JSONCPP_LIBS}"],
AC_MSG_ERROR([jsoncpp not found]))
if test "${HAVE_ANDROID}" = "1"; then
dnl Check for OpenSL
@ -382,9 +364,9 @@ AM_CONDITIONAL(BUILD_JACK, test "x$have_jack" = "xyes")
dnl Coverage is default-disabled
AC_ARG_ENABLE([coverage], AS_HELP_STRING([--enable-coverage], [Enable coverage]))
AS_IF([test "x$enable_coverage" = "xyes"], [
CXXFLAGS="${CXXFLAGS} --coverage"
LDFLAGS="${LDFLAGS} --coverage"])
AS_IF([test "x$enable_coverage" = "xyes"],
[DAEMONCXXFLAGS+=" --coverage"
DAEMONLDFLAGS+=" --coverage"])
# DBUSCPP
dnl Check for dbuscpp, the C++ bindings for D-Bus
@ -660,5 +642,12 @@ AC_CONFIG_FILES([Makefile \
doc/Makefile \
doc/doxygen/Makefile])
dnl Transfer the Automake variables set here to Makefile.in.
echo DAEMONCPPFLAGS=$DAEMONCPPFLAGS
AC_SUBST([AM_CPPFLAGS], [$DAEMONCPPFLAGS])
AC_SUBST([AM_CFLAGS], [$DAEMONCFLAGS])
AC_SUBST([AM_CXXFLAGS], [$DAEMONCXXFLAGS])
AC_SUBST([AM_LDFLAGS], [$DAEMONLDFLAGS])
# Go!
AC_OUTPUT