From b04c52b044527daab18481e58f7eebfebdd3995e Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Sun, 20 Feb 2022 15:20:02 -0500 Subject: [PATCH] build: raise minimum build requirements * Hard-depend on gcc >= 7.4 and clang >= 5.0, which have almost complete C++17 support * Require Xcode 10 on macOS but recommend 11.3 or later * Boost >= 1.65.1 is now a hard requirement Change-Id: I76eb915b226e8f5dd5c5fdbde9b23befc2a37c90 --- .waf-tools/default-compiler-flags.py | 25 +++++++++++++------------ INSTALL.md | 28 ++++++++++++++-------------- tests/chunks/consumer.t.cpp | 4 ---- tests/dump/ndndump.t.cpp | 4 ---- tests/global-configuration.cpp | 6 ------ tests/peek/ndnpeek.t.cpp | 4 ---- wscript | 6 +----- 7 files changed, 28 insertions(+), 49 deletions(-) diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py index 0bf48cc..53f0f8c 100644 --- a/.waf-tools/default-compiler-flags.py +++ b/.waf-tools/default-compiler-flags.py @@ -16,20 +16,21 @@ def configure(conf): errmsg = '' warnmsg = '' if cxx == 'gcc': - if ccver < (5, 3, 0): + if ccver < (7, 4, 0): errmsg = ('The version of gcc you are using is too old.\n' - 'The minimum supported gcc version is 7.4.0.') - elif ccver < (7, 4, 0): - warnmsg = ('Using a version of gcc older than 7.4.0 is not ' - 'officially supported and may result in build failures.') + 'The minimum supported gcc version is 7.4.') conf.flags = GccFlags() elif cxx == 'clang': - if Utils.unversioned_sys_platform() == 'darwin' and ccver < (9, 0, 0): - errmsg = ('The version of Xcode you are using is too old.\n' - 'The minimum supported Xcode version is 9.0.') - elif ccver < (4, 0, 0): + if Utils.unversioned_sys_platform() == 'darwin': + if ccver < (10, 0, 0): + errmsg = ('The version of Xcode you are using is too old.\n' + 'The minimum supported Xcode version is 11.3.') + elif ccver < (11, 0, 0): + warnmsg = ('Using a version of Xcode older than 11.3 is not ' + 'officially supported and may result in build failures.') + elif ccver < (5, 0, 0): errmsg = ('The version of clang you are using is too old.\n' - 'The minimum supported clang version is 4.0.') + 'The minimum supported clang version is 5.0.') conf.flags = ClangFlags() else: warnmsg = '%s compiler is unsupported' % cxx @@ -181,7 +182,7 @@ class GccFlags(GccBasicFlags): flags['CXXFLAGS'] += ['-fdiagnostics-color', '-Wredundant-tags', ] - if platform.machine() == 'armv7l' and self.getCompilerVersion(conf) >= (7, 1, 0): + if platform.machine() == 'armv7l': flags['CXXFLAGS'] += ['-Wno-psabi'] # Bug #5106 return flags @@ -190,7 +191,7 @@ class GccFlags(GccBasicFlags): flags['CXXFLAGS'] += ['-fdiagnostics-color', '-Wredundant-tags', ] - if platform.machine() == 'armv7l' and self.getCompilerVersion(conf) >= (7, 1, 0): + if platform.machine() == 'armv7l': flags['CXXFLAGS'] += ['-Wno-psabi'] # Bug #5106 return flags diff --git a/INSTALL.md b/INSTALL.md index 8e0cd24..fdd94e5 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -4,26 +4,26 @@ This document describes how to build and install ndn-tools. ## Prerequisites -- Install the [ndn-cxx](https://named-data.net/doc/ndn-cxx/current/) library and its prerequisites. - Please see [Getting Started with ndn-cxx](https://named-data.net/doc/ndn-cxx/current/INSTALL.html) - for how to install ndn-cxx. - Note: If you have installed ndn-cxx from a binary package, please make sure development headers - are installed (e.g., if using Ubuntu PPA, the `libndn-cxx-dev` package is needed). +- Install the [ndn-cxx](https://named-data.net/doc/ndn-cxx/current/) library and its prerequisites. + Please see [Getting Started with ndn-cxx](https://named-data.net/doc/ndn-cxx/current/INSTALL.html) + for instructions. + All operating systems and compilers supported by ndn-cxx are also supported by ndn-tools. - Any operating system and compiler supported by ndn-cxx is supported by ndn-tools. + *Note*: If you have installed ndn-cxx from a binary package, please make sure the development + headers are installed (e.g., if using Ubuntu PPA, the `libndn-cxx-dev` package is needed). -- `libpcap` +- `libpcap` - Comes with the base system on macOS. + Comes with the base system on macOS. - On Ubuntu: + On Ubuntu: - sudo apt install libpcap-dev + sudo apt install libpcap-dev - On CentOS and Fedora: + On CentOS and Fedora: - sudo dnf config-manager --enable powertools # CentOS only - sudo dnf install libpcap-devel + sudo dnf config-manager --enable powertools # CentOS only + sudo dnf install libpcap-devel ## Build Steps @@ -34,6 +34,6 @@ in ndn-tools source directory: ./waf sudo ./waf install -To uninstall ndn-tools: +To uninstall: sudo ./waf uninstall diff --git a/tests/chunks/consumer.t.cpp b/tests/chunks/consumer.t.cpp index e5a584f..d0a37fd 100644 --- a/tests/chunks/consumer.t.cpp +++ b/tests/chunks/consumer.t.cpp @@ -33,11 +33,7 @@ #include #include -#if BOOST_VERSION >= 105900 #include -#else -#include -#endif namespace ndn::chunks::tests { diff --git a/tests/dump/ndndump.t.cpp b/tests/dump/ndndump.t.cpp index 263691e..f3aa0df 100644 --- a/tests/dump/ndndump.t.cpp +++ b/tests/dump/ndndump.t.cpp @@ -29,11 +29,7 @@ #include #include -#if BOOST_VERSION >= 105900 #include -#else -#include -#endif #include #include diff --git a/tests/global-configuration.cpp b/tests/global-configuration.cpp index 49a330c..1d62e1e 100644 --- a/tests/global-configuration.cpp +++ b/tests/global-configuration.cpp @@ -59,12 +59,6 @@ private: std::string m_home; }; -#if BOOST_VERSION >= 106500 BOOST_TEST_GLOBAL_CONFIGURATION(GlobalConfiguration); -#elif BOOST_VERSION >= 105900 -BOOST_GLOBAL_FIXTURE(GlobalConfiguration); -#else -BOOST_GLOBAL_FIXTURE(GlobalConfiguration) -#endif } // namespace ndn::tests diff --git a/tests/peek/ndnpeek.t.cpp b/tests/peek/ndnpeek.t.cpp index b9631f7..30c305a 100644 --- a/tests/peek/ndnpeek.t.cpp +++ b/tests/peek/ndnpeek.t.cpp @@ -25,11 +25,7 @@ #include #include -#if BOOST_VERSION >= 105900 #include -#else -#include -#endif namespace ndn::peek::tests { diff --git a/wscript b/wscript index f0c4d6d..92b710c 100644 --- a/wscript +++ b/wscript @@ -36,14 +36,10 @@ def configure(conf): conf.define('WITH_TESTS', 1) conf.check_boost(lib=boost_libs, mt=True) - if conf.env.BOOST_VERSION_NUMBER < 105800: + if conf.env.BOOST_VERSION_NUMBER < 106501: conf.fatal('The minimum supported version of Boost is 1.65.1.\n' 'Please upgrade your distribution or manually install a newer version of Boost.\n' 'For more information, see https://redmine.named-data.net/projects/nfd/wiki/Boost') - elif conf.env.BOOST_VERSION_NUMBER < 106501: - Logs.warn('WARNING: Using a version of Boost older than 1.65.1 is not officially supported and may not work.\n' - 'If you encounter any problems, please upgrade your distribution or manually install a newer version of Boost.\n' - 'For more information, see https://redmine.named-data.net/projects/nfd/wiki/Boost') conf.recurse('tools')