diff --git a/build.sh b/build.sh index 62dd446b..abc7ab9d 100755 --- a/build.sh +++ b/build.sh @@ -19,7 +19,7 @@ export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:/usr/include/python3.9/" cores=`grep -c ^processor /proc/cpuinfo` export build_type="debug" install_dir="" -sanitizer="OFF" +sanitizer="false" enable_debug_exceptions="true" TEMP=`getopt -o hj:rsie --long help,jobs:,release,sanitize,install,debug_exceptions -n 'build.sh' -- "$@"` @@ -31,7 +31,7 @@ eval set -- "$TEMP" while true ; do case "$1" in -h|--help) show_help ; shift ;; - -s|--sanitize) sanitizer="ON" ; shift ;; + -s|--sanitize) sanitizer="true" ; shift ;; -r|--release) build_type="release" ; shift ;; -e|--disable_debug_exceptions) enable_debug_exceptions="false" ; shift ;; -j|--jobs) @@ -60,10 +60,10 @@ python3 scripts/generate_meson_dbzero.py dbzero/ mkdir -p build if [ "$build_type" == "debug" ]; then - meson setup --buildtype="debug" -Denable_debug_exceptions=$enable_debug_exceptions build/debug + meson setup --buildtype="debug" -Denable_debug_exceptions=$enable_debug_exceptions -Denable_sanitizers=$sanitizer build/debug cd build/debug else - meson setup --buildtype="release" -Denable_debug_exceptions=$enable_debug_exceptions build/release + meson setup --buildtype="release" -Denable_debug_exceptions=$enable_debug_exceptions -Denable_sanitizers=$sanitizer build/release cd build/release fi diff --git a/meson.build b/meson.build index 65f17b38..440d59f6 100644 --- a/meson.build +++ b/meson.build @@ -37,6 +37,16 @@ else add_project_arguments('-DENABLE_DEBUG_EXCEPTIONS=0', language: 'c') endif +enable_sanitizers = get_option('enable_sanitizers') + +if enable_sanitizers + message('Enabling address and undefined behavior sanitizers') + add_project_arguments('-fsanitize=address', language: 'cpp') + add_project_link_arguments('-fsanitize=address', language: 'cpp') +else + message('Disabling address and undefined behavior sanitizers') +endif + buildtype = get_option('buildtype') build_suffix = '' if buildtype.startswith('release') diff --git a/meson_options.txt b/meson_options.txt index 6a6ac36a..24fedc0a 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -2,4 +2,10 @@ option('enable_debug_exceptions', type: 'boolean', value: false, description: 'Enable debug exceptions (exceptions and stack traces from c++ code).' +) + +option('enable_sanitizers', + type: 'boolean', + value: false, + description: 'Enable address and undefined behavior sanitizers.' ) \ No newline at end of file