460 lines
13 KiB
Plaintext
460 lines
13 KiB
Plaintext
|
|
# -*- Autoconf -*-
|
||
|
|
# Process this file with autoconf to produce a configure script.
|
||
|
|
|
||
|
|
#
|
||
|
|
# Copyright 2016-2018 Nest Labs Inc. All Rights Reserved.
|
||
|
|
#
|
||
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
|
# you may not use this file except in compliance with the License.
|
||
|
|
# You may obtain a copy of the License at
|
||
|
|
#
|
||
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
#
|
||
|
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
|
# See the License for the specific language governing permissions and
|
||
|
|
# limitations under the License.
|
||
|
|
#
|
||
|
|
|
||
|
|
#
|
||
|
|
# Description:
|
||
|
|
# This file is the GNU autoconf input source file for
|
||
|
|
# @PACKAGE_DESCRIPTION@.
|
||
|
|
#
|
||
|
|
|
||
|
|
#
|
||
|
|
# Declare autoconf version requirements
|
||
|
|
#
|
||
|
|
AC_PREREQ([2.68])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Initialize autoconf for the package
|
||
|
|
#
|
||
|
|
AC_INIT([@PACKAGE_SHORT_LOWER@],
|
||
|
|
m4_esyscmd([@NLBUILD_AUTOTOOLS_STEM@/scripts/mkversion -b `cat .default-version` .]),
|
||
|
|
[@PACKAGE_EMAIL@],
|
||
|
|
[@PACKAGE_SHORT_LOWER@],
|
||
|
|
[@PACKAGE_URL@])
|
||
|
|
|
||
|
|
# Tell the rest of the build system the absolute path where the
|
||
|
|
# nlbuild-autotools repository is rooted at.
|
||
|
|
|
||
|
|
AC_SUBST(nlbuild_autotools_stem,[@NLBUILD_AUTOTOOLS_STEM@])
|
||
|
|
AC_SUBST(abs_top_nlbuild_autotools_dir,[\${abs_top_srcdir}/\${nlbuild_autotools_stem}])
|
||
|
|
|
||
|
|
#
|
||
|
|
# @PACKAGE_SHORT_UPPER@ interface current, revision, and age versions.
|
||
|
|
#
|
||
|
|
# Maintainters: Please manage these fields as follows:
|
||
|
|
#
|
||
|
|
# Interfaces removed: CURRENT++, AGE = 0, REVISION = 0
|
||
|
|
# Interfaces added: CURRENT++, AGE++, REVISION = 0
|
||
|
|
# No interfaces changed: REVISION++
|
||
|
|
#
|
||
|
|
#
|
||
|
|
AC_SUBST(LIB@PACKAGE_SHORT_UPPER@_VERSION_CURRENT, [1])
|
||
|
|
AC_SUBST(LIB@PACKAGE_SHORT_UPPER@_VERSION_AGE, [0])
|
||
|
|
AC_SUBST(LIB@PACKAGE_SHORT_UPPER@_VERSION_REVISION, [0])
|
||
|
|
AC_SUBST(LIB@PACKAGE_SHORT_UPPER@_VERSION_INFO, [${LIB@PACKAGE_SHORT_UPPER@_VERSION_CURRENT}:${LIB@PACKAGE_SHORT_UPPER@_VERSION_REVISION}:${LIB@PACKAGE_SHORT_UPPER@_VERSION_AGE}])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Check the sanity of the source directory by checking for the
|
||
|
|
# presence of a key watch file
|
||
|
|
#
|
||
|
|
AC_CONFIG_SRCDIR([include/@PACKAGE_SHORT_LOWER@.h])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Tell autoconf where to find auxilliary build tools (e.g. config.guess,
|
||
|
|
# install-sh, missing, etc.)
|
||
|
|
#
|
||
|
|
AC_CONFIG_AUX_DIR([@NLBUILD_AUTOTOOLS_STEM@/third_party/autoconf])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Tell autoconf where to find auxilliary M4 macros
|
||
|
|
#
|
||
|
|
AC_CONFIG_MACRO_DIRS([@NLBUILD_AUTOTOOLS_STEM@/third_party/autoconf/m4 @NLBUILD_AUTOTOOLS_STEM@/autoconf/m4])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Tell autoconf what file the package is using to aggregate C preprocessor
|
||
|
|
# defines.
|
||
|
|
#
|
||
|
|
AC_CONFIG_HEADERS([include/@PACKAGE_SHORT_LOWER@-config.h])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Figure out what the canonical build, host and target tuples are.
|
||
|
|
#
|
||
|
|
AC_CANONICAL_BUILD
|
||
|
|
AC_CANONICAL_HOST
|
||
|
|
AC_CANONICAL_TARGET
|
||
|
|
|
||
|
|
#
|
||
|
|
# Mac OS X / Darwin ends up putting some versioning cruft on the end of its
|
||
|
|
# tuple that we don't care about in this script. Create "clean" variables
|
||
|
|
# devoid of it.
|
||
|
|
#
|
||
|
|
|
||
|
|
NL_FILTERED_CANONICAL_BUILD
|
||
|
|
NL_FILTERED_CANONICAL_HOST
|
||
|
|
NL_FILTERED_CANONICAL_TARGET
|
||
|
|
|
||
|
|
#
|
||
|
|
# Configure automake with the desired options, indicating that this is not
|
||
|
|
# a native GNU package, that we want "silent" build rules, and that we want
|
||
|
|
# objects built in the same subdirectory as their source rather than collapsed
|
||
|
|
# together at the top-level directory.
|
||
|
|
#
|
||
|
|
# Disable silent build rules by either passing --disable-silent-rules to
|
||
|
|
# configure or passing V=1 to make
|
||
|
|
#
|
||
|
|
AM_INIT_AUTOMAKE([1.14 foreign silent-rules subdir-objects tar-pax])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Silent build rules requires at least automake-1.11. Employ
|
||
|
|
# techniques for not breaking earlier versions of automake.
|
||
|
|
#
|
||
|
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||
|
|
AM_SILENT_RULES([yes])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Enable maintainer mode to prevent the package from constantly trying
|
||
|
|
# to rebuild configure, Makefile.in, etc. Rebuilding such files rarely,
|
||
|
|
# if ever, needs to be done "in the field".
|
||
|
|
#
|
||
|
|
# Use the included 'bootstrap' script instead when necessary.
|
||
|
|
#
|
||
|
|
AM_MAINTAINER_MODE
|
||
|
|
|
||
|
|
#
|
||
|
|
# Checks for build host programs
|
||
|
|
#
|
||
|
|
|
||
|
|
# If we are cross-compiling and we are on an embedded target that
|
||
|
|
# doesn't support independent, standalone executables, then all
|
||
|
|
# compiler tests that attempt to create an executable will fail. In
|
||
|
|
# such circumstances, set AC_NO_EXECUTABLES (see http://sourceware.org/
|
||
|
|
# ml/newlib/2006/msg00353.html).
|
||
|
|
|
||
|
|
AC_MSG_CHECKING([whether to disable executable checking])
|
||
|
|
if test "$cross_compiling" = yes; then
|
||
|
|
AC_NO_EXECUTABLES
|
||
|
|
AC_MSG_RESULT([yes])
|
||
|
|
else
|
||
|
|
AC_MSG_RESULT([no])
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Passing -Werror to GCC-based or -compatible compilers breaks some
|
||
|
|
# autoconf tests (see
|
||
|
|
# http://lists.gnu.org/archive/html/autoconf-patches/2008-09/msg00014.html).
|
||
|
|
#
|
||
|
|
# If -Werror has been passed transform it into -Wno-error. We'll
|
||
|
|
# transform it back later with NL_RESTORE_WERROR.
|
||
|
|
|
||
|
|
NL_SAVE_WERROR
|
||
|
|
|
||
|
|
# Check for compilers.
|
||
|
|
#
|
||
|
|
# These should be checked BEFORE we check for and, implicitly,
|
||
|
|
# initialize libtool such that libtool knows what languages it has to
|
||
|
|
# work with.
|
||
|
|
|
||
|
|
AC_PROG_CPP
|
||
|
|
AC_PROG_CPP_WERROR
|
||
|
|
|
||
|
|
AC_PROG_CC
|
||
|
|
AC_PROG_CC_C_O
|
||
|
|
|
||
|
|
AC_PROG_CXXCPP
|
||
|
|
|
||
|
|
AC_PROG_CXX
|
||
|
|
AC_PROG_CXX_C_O
|
||
|
|
|
||
|
|
# Check for other compiler toolchain tools.
|
||
|
|
|
||
|
|
AC_CHECK_TOOL(AR, ar)
|
||
|
|
AC_CHECK_TOOL(RANLIB, ranlib)
|
||
|
|
AC_CHECK_TOOL(OBJCOPY, objcopy)
|
||
|
|
AC_CHECK_TOOL(STRIP, strip)
|
||
|
|
|
||
|
|
# Check for other host tools.
|
||
|
|
|
||
|
|
AC_PROG_INSTALL
|
||
|
|
AC_PROG_LN_S
|
||
|
|
|
||
|
|
AC_PATH_PROG(CMP, cmp)
|
||
|
|
AC_PATH_PROG(PERL, perl)
|
||
|
|
|
||
|
|
#
|
||
|
|
# Checks for specific compiler characteristics
|
||
|
|
#
|
||
|
|
|
||
|
|
#
|
||
|
|
# Common compiler flags we would like to have.
|
||
|
|
#
|
||
|
|
# -Wall CC, CXX
|
||
|
|
#
|
||
|
|
|
||
|
|
PROSPECTIVE_CFLAGS="-Wall"
|
||
|
|
PROSPECTIVE_CXXFLAGS=""
|
||
|
|
|
||
|
|
AX_CHECK_COMPILER_OPTIONS([C], ${PROSPECTIVE_CFLAGS})
|
||
|
|
AX_CHECK_COMPILER_OPTIONS([C++], ${PROSPECTIVE_CFLAGS} ${PROSPECTIVE_CXXFLAGS})
|
||
|
|
|
||
|
|
# Check for and initialize libtool
|
||
|
|
|
||
|
|
LT_INIT
|
||
|
|
|
||
|
|
#
|
||
|
|
# Debug instances
|
||
|
|
#
|
||
|
|
AC_MSG_NOTICE([checking whether to build debug instances])
|
||
|
|
|
||
|
|
# Debug
|
||
|
|
|
||
|
|
NL_ENABLE_DEBUG([no])
|
||
|
|
|
||
|
|
AM_CONDITIONAL([@PACKAGE_SHORT_UPPER@_BUILD_DEBUG], [test "${nl_cv_build_debug}" = "yes"])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Code coverage and compiler optimization
|
||
|
|
#
|
||
|
|
|
||
|
|
# Coverage
|
||
|
|
|
||
|
|
NL_ENABLE_COVERAGE([no])
|
||
|
|
|
||
|
|
AM_CONDITIONAL([@PACKAGE_SHORT_UPPER@_BUILD_COVERAGE], [test "${nl_cv_build_coverage}" = "yes"])
|
||
|
|
|
||
|
|
NL_ENABLE_COVERAGE_REPORTS([auto])
|
||
|
|
|
||
|
|
AM_CONDITIONAL([@PACKAGE_SHORT_UPPER@_BUILD_COVERAGE_REPORTS], [test "${nl_cv_build_coverage_reports}" = "yes"])
|
||
|
|
|
||
|
|
# Optimization
|
||
|
|
|
||
|
|
NL_ENABLE_OPTIMIZATION([yes])
|
||
|
|
|
||
|
|
AM_CONDITIONAL([@PACKAGE_SHORT_UPPER@_BUILD_OPTIMIZED], [test "${nl_cv_build_optimized}" = "yes"])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Tests
|
||
|
|
#
|
||
|
|
AC_MSG_NOTICE([checking whether to build tests])
|
||
|
|
|
||
|
|
# Tests
|
||
|
|
|
||
|
|
NL_ENABLE_TESTS([yes])
|
||
|
|
|
||
|
|
AM_CONDITIONAL([@PACKAGE_SHORT_UPPER@_BUILD_TESTS], [test "${nl_cv_build_tests}" = "yes"])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Documentation
|
||
|
|
#
|
||
|
|
|
||
|
|
# Determine whether or not documentation (via Doxygen) should be built
|
||
|
|
# or not, with 'auto' as the default and establish a default support
|
||
|
|
# value for GraphViz 'dot' support.
|
||
|
|
|
||
|
|
NL_ENABLE_DOCS([auto],[NO])
|
||
|
|
|
||
|
|
AM_CONDITIONAL(@PACKAGE_SHORT_UPPER@_BUILD_DOCS, [test "${nl_cv_build_docs}" = "yes"])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Checks for libraries and packages.
|
||
|
|
#
|
||
|
|
# At minimum, the following packages are optional, depending on
|
||
|
|
# configuration:
|
||
|
|
#
|
||
|
|
# * TBD
|
||
|
|
#
|
||
|
|
AC_MSG_NOTICE([checking required package dependencies])
|
||
|
|
|
||
|
|
# Check if the build host has pkg-config
|
||
|
|
|
||
|
|
AC_PATH_PROG([PKG_CONFIG],[pkg-config])
|
||
|
|
|
||
|
|
# Here is a package example with nlunit-test. Uncomment and adapt or delete
|
||
|
|
# this, as needed. If you choose to use this, please also take a look at
|
||
|
|
# Makefile.am and third_party/Makefile.am and uncomment the appropriate
|
||
|
|
# sections there.
|
||
|
|
|
||
|
|
# #
|
||
|
|
# # Nlunit-test
|
||
|
|
# #
|
||
|
|
#
|
||
|
|
# if test "${nl_cv_build_tests}" = "yes"; then
|
||
|
|
# NL_WITH_PACKAGE(
|
||
|
|
# [Nlunit-test],
|
||
|
|
# [NLUNIT_TEST],
|
||
|
|
# [nlunit_test],
|
||
|
|
# [-lnlunit-test],
|
||
|
|
# [
|
||
|
|
# # At this point, the internal Nlunit-test package will be neither
|
||
|
|
# # configured nor built, so the normal checks we undertake for an
|
||
|
|
# # external package cannot be run here. Simply set the appropriate
|
||
|
|
# # variables and trust all will be well.
|
||
|
|
#
|
||
|
|
# NLUNIT_TEST_CPPFLAGS="-I\${abs_top_srcdir}/third_party/nlunit-test/repo/src"
|
||
|
|
# NLUNIT_TEST_LDFLAGS="-L${ac_pwd}/third_party/nlunit-test/repo/src"
|
||
|
|
# NLUNIT_TEST_LIBS="-lnlunit-test"
|
||
|
|
# ],
|
||
|
|
# [
|
||
|
|
# # Check for required nlunit-test headers.
|
||
|
|
#
|
||
|
|
# AC_CHECK_HEADERS([nlunit-test.h],
|
||
|
|
# [],
|
||
|
|
# [
|
||
|
|
# AC_MSG_ERROR(The nlunit-test header "$ac_header" is required but cannot be found.)
|
||
|
|
# ])
|
||
|
|
# ])
|
||
|
|
# fi
|
||
|
|
#
|
||
|
|
# # Depending on whether nlunit-test has been configured for an internal
|
||
|
|
# # location, its directory stem within this package needs to be set
|
||
|
|
# # accordingly. In addition, if the location is internal, then we need
|
||
|
|
# # to attempt to pull it down using the bootstrap makefile.
|
||
|
|
#
|
||
|
|
# if test "${nl_with_nlunit_test}" = "internal"; then
|
||
|
|
# maybe_nlunit_test_dirstem="nlunit-test/repo"
|
||
|
|
# nlunit_test_dirstem="third_party/${maybe_nlunit_test_dirstem}"
|
||
|
|
#
|
||
|
|
# AC_MSG_NOTICE([attempting to create internal ${nlunit_test_dirstem}])
|
||
|
|
#
|
||
|
|
# ${MAKE-make} --no-print-directory -C ${srcdir} -f Makefile-bootstrap ${nlunit_test_dirstem}
|
||
|
|
#
|
||
|
|
# if test $? -ne 0; then
|
||
|
|
# AC_MSG_ERROR([failed to create ${nlunit_test_dirstem}. Please check your network connection or the correctness of 'repos.conf'])
|
||
|
|
# fi
|
||
|
|
# else
|
||
|
|
# maybe_nlunit_test_dirstem=""
|
||
|
|
# fi
|
||
|
|
#
|
||
|
|
# AC_SUBST(NLUNIT_TEST_SUBDIRS, [${maybe_nlunit_test_dirstem}])
|
||
|
|
# AM_CONDITIONAL([@PACKAGE_SHORT_UPPER@_WITH_NLUNIT_TEST_INTERNAL], [test "${nl_with_nlunit_test}" = "internal"])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Check for headers
|
||
|
|
#
|
||
|
|
AC_HEADER_STDBOOL
|
||
|
|
AC_HEADER_STDC
|
||
|
|
|
||
|
|
AC_CHECK_HEADERS([stdint.h])
|
||
|
|
AC_CHECK_HEADERS([string.h])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Check for types and structures
|
||
|
|
#
|
||
|
|
AC_TYPE_INT8_T
|
||
|
|
AC_TYPE_INT16_T
|
||
|
|
AC_TYPE_INT32_T
|
||
|
|
AC_TYPE_INT64_T
|
||
|
|
AC_TYPE_UINT8_T
|
||
|
|
AC_TYPE_UINT16_T
|
||
|
|
AC_TYPE_UINT32_T
|
||
|
|
AC_TYPE_UINT64_T
|
||
|
|
|
||
|
|
#
|
||
|
|
# Checks for library functions
|
||
|
|
#
|
||
|
|
|
||
|
|
if test "${ac_no_link}" != "yes"; then
|
||
|
|
AC_CHECK_FUNCS([memcpy])
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Here is an example with nlunit-test. Uncomment and adapt or delete
|
||
|
|
# this, as needed.
|
||
|
|
|
||
|
|
# # Add any nlunit-test CPPFLAGS, LDFLAGS, and LIBS
|
||
|
|
#
|
||
|
|
# CPPFLAGS="${CPPFLAGS} ${NLUNIT_TEST_CPPFLAGS}"
|
||
|
|
# LDFLAGS="${LDFLAGS} ${NLUNIT_TEST_LDFLAGS}"
|
||
|
|
# LIBS="${LIBS} ${NLUNIT_TEST_LIBS}"
|
||
|
|
|
||
|
|
# Add any code coverage CPPFLAGS and LIBS
|
||
|
|
|
||
|
|
CPPFLAGS="${CPPFLAGS} ${NL_COVERAGE_CPPFLAGS}"
|
||
|
|
LIBS="${LIBS} ${NL_COVERAGE_LIBS}"
|
||
|
|
LDFLAGS="${LDFLAGS} ${NL_COVERAGE_LDFLAGS}"
|
||
|
|
|
||
|
|
# At this point, we can restore the compiler flags to whatever the
|
||
|
|
# user passed in, now that we're clear of any -Werror issues by
|
||
|
|
# transforming -Wno-error back to -Werror.
|
||
|
|
|
||
|
|
NL_RESTORE_WERROR
|
||
|
|
|
||
|
|
# Here is an example with nlunit-test. Uncomment and adapt or delete
|
||
|
|
# this, as needed.
|
||
|
|
|
||
|
|
# # Configure any autotools-based subdirectories
|
||
|
|
#
|
||
|
|
# if test "${nl_with_nlunit_test}" = "internal"; then
|
||
|
|
# AC_CONFIG_SUBDIRS([third_party/nlunit-test/repo])
|
||
|
|
# fi
|
||
|
|
|
||
|
|
#
|
||
|
|
# Identify the various makefiles and auto-generated files for the package
|
||
|
|
#
|
||
|
|
AC_CONFIG_FILES([
|
||
|
|
Makefile
|
||
|
|
third_party/Makefile
|
||
|
|
src/Makefile
|
||
|
|
tests/Makefile
|
||
|
|
doc/Makefile
|
||
|
|
])
|
||
|
|
|
||
|
|
#
|
||
|
|
# Generate the auto-generated files for the package
|
||
|
|
#
|
||
|
|
AC_OUTPUT
|
||
|
|
|
||
|
|
#
|
||
|
|
# Summarize the package configuration
|
||
|
|
#
|
||
|
|
|
||
|
|
AC_MSG_NOTICE([
|
||
|
|
|
||
|
|
Configuration Summary
|
||
|
|
---------------------
|
||
|
|
Package : ${PACKAGE_NAME}
|
||
|
|
Version : ${PACKAGE_VERSION}
|
||
|
|
Interface : ${LIB@PACKAGE_SHORT_UPPER@_VERSION_INFO//:/.}
|
||
|
|
Build system : ${build}
|
||
|
|
Host system : ${host}
|
||
|
|
Target system : ${target}
|
||
|
|
Target architecture : ${target_cpu}
|
||
|
|
Target OS : ${target_os}
|
||
|
|
Cross compiling : ${cross_compiling}
|
||
|
|
Build shared libraries : ${enable_shared}
|
||
|
|
Build static libraries : ${enable_static}
|
||
|
|
Build debug libraries : ${nl_cv_build_debug}
|
||
|
|
Build optimized libraries : ${nl_cv_build_optimized}
|
||
|
|
Build coverage libraries : ${nl_cv_build_coverage}
|
||
|
|
Build coverage reports : ${nl_cv_build_coverage_reports}
|
||
|
|
Lcov : ${LCOV:--}
|
||
|
|
Genhtml : ${GENHTML:--}
|
||
|
|
Build tests : ${nl_cv_build_tests}
|
||
|
|
Prefix : ${prefix}
|
||
|
|
Shadow directory program : ${LNDIR}
|
||
|
|
Documentation support : ${nl_cv_build_docs}
|
||
|
|
Doxygen : ${DOXYGEN:--}
|
||
|
|
GraphViz dot : ${DOT:--}
|
||
|
|
PERL : ${PERL:--}
|
||
|
|
Nlunit-test source : ${nl_with_nlunit_test:--}
|
||
|
|
Nlunit-test compile flags : ${NLUNIT_TEST_CPPFLAGS:--}
|
||
|
|
Nlunit-test link flags : ${NLUNIT_TEST_LDFLAGS:--}
|
||
|
|
Nlunit-test link libraries : ${NLUNIT_TEST_LIBS:--}
|
||
|
|
C Preprocessor : ${CPP}
|
||
|
|
C Compiler : ${CC}
|
||
|
|
C++ Preprocessor : ${CXXCPP}
|
||
|
|
C++ Compiler : ${CXX}
|
||
|
|
Archiver : ${AR}
|
||
|
|
Archive Indexer : ${RANLIB}
|
||
|
|
Symbol Stripper : ${STRIP}
|
||
|
|
Object Copier : ${OBJCOPY}
|
||
|
|
C Preprocessor flags : ${CPPFLAGS:--}
|
||
|
|
C Compile flags : ${CFLAGS:--}
|
||
|
|
C++ Compile flags : ${CXXFLAGS:--}
|
||
|
|
Link flags : ${LDFLAGS:--}
|
||
|
|
Link libraries : ${LIBS}
|
||
|
|
|
||
|
|
])
|