Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync default CXXFLAGS and DEFINES with ndn-cxx #27

Merged
merged 3 commits into from
Feb 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true

[*.{cpp,hpp}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true

[{*.{py,sh},.jenkins,wscript}]
indent_style = space
indent_size = 4
trim_trailing_whitespace = true

[*.md]
indent_style = space
trim_trailing_whitespace = false

[*.rst]
indent_style = space
trim_trailing_whitespace = true

[*.{yaml,yml}]
indent_style = space
indent_size = 2
25 changes: 20 additions & 5 deletions .jenkins.d/00-deps.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,23 @@
#!/usr/bin/env bash
set -eo pipefail

APT_PKGS=(build-essential pkg-config python3-minimal
libboost-all-dev libssl-dev libsqlite3-dev)
APT_PKGS=(
build-essential
libboost-chrono-dev
libboost-date-time-dev
libboost-dev
libboost-filesystem-dev
libboost-iostreams-dev
libboost-log-dev
libboost-program-options-dev
libboost-stacktrace-dev
libboost-test-dev
libboost-thread-dev
libsqlite3-dev
libssl-dev
pkg-config
python3-minimal
)
FORMULAE=(boost openssl pkg-config)
PIP_PKGS=()
case $JOB_NAME in
Expand All @@ -25,10 +40,10 @@ if [[ $ID == macos ]]; then
brew update
brew install --formula "${FORMULAE[@]}"
elif [[ $ID_LIKE == *debian* ]]; then
sudo apt-get -qq update
sudo apt-get -qy install "${APT_PKGS[@]}"
sudo apt-get update -qq
sudo apt-get install -qy --no-install-recommends "${APT_PKGS[@]}"
elif [[ $ID_LIKE == *fedora* ]]; then
sudo dnf -y install gcc-c++ libasan lld pkgconf-pkg-config python3 \
sudo dnf install -y gcc-c++ libasan lld pkgconf-pkg-config python3 \
boost-devel openssl-devel sqlite-devel
fi

Expand Down
6 changes: 3 additions & 3 deletions .jenkins.d/01-ndn-cxx.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ sudo ./waf --color=yes install
popd >/dev/null
popd >/dev/null

if [[ $ID_LIKE == *fedora* ]]; then
sudo tee /etc/ld.so.conf.d/ndn.conf >/dev/null <<< /usr/local/lib64
fi
if [[ $ID_LIKE == *linux* ]]; then
if [[ $(uname -m) == x86_64 && -d /usr/lib64 ]]; then
sudo tee /etc/ld.so.conf.d/ndn.conf >/dev/null <<< /usr/local/lib64
fi
sudo ldconfig
fi
6 changes: 3 additions & 3 deletions .jenkins.d/10-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ fi
# Install
sudo ./waf --color=yes install

if [[ $ID_LIKE == *fedora* ]]; then
sudo tee /etc/ld.so.conf.d/ndn.conf >/dev/null <<< /usr/local/lib64
fi
if [[ $ID_LIKE == *linux* ]]; then
if [[ $(uname -m) == x86_64 && -d /usr/lib64 ]]; then
sudo tee /etc/ld.so.conf.d/ndn.conf >/dev/null <<< /usr/local/lib64
fi
sudo ldconfig
fi
3 changes: 2 additions & 1 deletion .jenkins.d/20-tests.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
#!/usr/bin/env bash
set -eo pipefail

# https://github.com/google/sanitizers/wiki/SanitizerCommonFlags
# https://github.com/google/sanitizers/wiki/AddressSanitizerFlags
ASAN_OPTIONS="color=always"
ASAN_OPTIONS+=":strip_path_prefix=${PWD}/"
ASAN_OPTIONS+=":check_initialization_order=1"
ASAN_OPTIONS+=":detect_stack_use_after_return=1"
ASAN_OPTIONS+=":strict_init_order=1"
ASAN_OPTIONS+=":strict_string_checks=1"
ASAN_OPTIONS+=":detect_invalid_pointer_pairs=2"
ASAN_OPTIONS+=":strip_path_prefix=${PWD}/"
export ASAN_OPTIONS

# https://www.boost.org/doc/libs/release/libs/test/doc/html/boost_test/runtime_config/summary.html
Expand Down
4 changes: 2 additions & 2 deletions .jenkins.d/40-headers-check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ if [[ -n $DISABLE_HEADERS_CHECK ]]; then
exit 0
fi

if [[ $ID_LIKE == *fedora* ]]; then
if [[ $ID_LIKE == *linux* && -d /usr/local/lib64/pkgconfig ]]; then
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
fi

CXX=${CXX:-g++}
STD=-std=c++17
CXXFLAGS="-O2 -Wall -Wno-unneeded-internal-declaration -Wno-unused-const-variable $(pkg-config --cflags libndn-cxx $PCFILE)"
CXXFLAGS="-O2 -Wall -Wno-unknown-warning-option -Wno-enum-constexpr-conversion -Wno-unused-const-variable $(pkg-config --cflags libndn-cxx $PCFILE)"
INCLUDEDIR="$(pkg-config --variable=includedir $PCFILE)"/$PROJ

echo "Using: $CXX $STD $CXXFLAGS"
Expand Down
15 changes: 14 additions & 1 deletion .waf-tools/default-compiler-flags.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ def getGeneralFlags(self, conf):

def getDebugFlags(self, conf):
"""Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in debug mode"""
return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': ['_DEBUG']}
return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': []}

def getOptimizedFlags(self, conf):
"""Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in optimized mode"""
Expand Down Expand Up @@ -175,6 +175,9 @@ def getDebugFlags(self, conf):
'-Wno-error=maybe-uninitialized', # Bug #1615
]
flags['LINKFLAGS'] += self.__linkFlags
# Enable assertions in libstdc++
# https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html
flags['DEFINES'] += ['_GLIBCXX_ASSERTIONS=1']
return flags

def getOptimizedFlags(self, conf):
Expand Down Expand Up @@ -223,6 +226,9 @@ def getGeneralFlags(self, conf):
elif Utils.unversioned_sys_platform() == 'freebsd':
# Bug #4790
flags['CXXFLAGS'] += [['-isystem', '/usr/local/include']]
if self.getCompilerVersion(conf) >= (18, 0, 0):
# Bug #5300
flags['CXXFLAGS'] += ['-Wno-enum-constexpr-conversion']
return flags

__cxxFlags = [
Expand All @@ -233,6 +239,13 @@ def getGeneralFlags(self, conf):
def getDebugFlags(self, conf):
flags = super().getDebugFlags(conf)
flags['CXXFLAGS'] += self.__cxxFlags
# Enable assertions in libc++
if self.getCompilerVersion(conf) >= (18, 0, 0):
# https://libcxx.llvm.org/Hardening.html
flags['DEFINES'] += ['_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE']
elif self.getCompilerVersion(conf) >= (15, 0, 0):
# https://releases.llvm.org/15.0.0/projects/libcxx/docs/UsingLibcxx.html#enabling-the-safe-libc-mode
flags['DEFINES'] += ['_LIBCPP_ENABLE_ASSERTIONS=1']
return flags

def getOptimizedFlags(self, conf):
Expand Down