Skip to content

Commit

Permalink
Merge pull request #27 from Pesa/sync-build-flags
Browse files Browse the repository at this point in the history
Sync default `CXXFLAGS` and `DEFINES` with ndn-cxx
  • Loading branch information
pulsejet authored Feb 19, 2024
2 parents 7b5577b + 5ab3b6e commit 023ca70
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 15 deletions.
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

0 comments on commit 023ca70

Please sign in to comment.