]> git.kaiwu.me - njs.git/commitdiff
Added extra configure options for debug builds.
authorDmitry Volyntsev <xeioex@nginx.com>
Wed, 13 Nov 2019 15:27:06 +0000 (18:27 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Wed, 13 Nov 2019 15:27:06 +0000 (18:27 +0300)
auto/cc
auto/help
auto/options

diff --git a/auto/cc b/auto/cc
index 1ae7d54fe677c33d277de7e915de67edc7d622da..295a1de939be2628bae4d22a86e2a7437904a13b 100644 (file)
--- a/auto/cc
+++ b/auto/cc
@@ -99,6 +99,11 @@ case $NJS_CC_NAME in
 
         # Debug.
         NJS_CFLAGS="$NJS_CFLAGS -g"
+
+        if [ "$NJS_ADDRESS_SANITIZER" = "YES" ]; then
+            NJS_CFLAGS="$NJS_CFLAGS -fsanitize=address"
+            NJS_CFLAGS="$NJS_CFLAGS -fno-omit-frame-pointer"
+        fi
     ;;
 
     clang)
@@ -135,6 +140,12 @@ case $NJS_CC_NAME in
             # error on PowerPC Clang.
             NJS_CFLAGS="$NJS_CFLAGS -g"
         fi
+
+        if [ "$NJS_ADDRESS_SANITIZER" = "YES" ]; then
+            NJS_CFLAGS="$NJS_CFLAGS -fsanitize=address"
+            NJS_CFLAGS="$NJS_CFLAGS -fno-omit-frame-pointer"
+            NJS_CFLAGS="$NJS_CFLAGS -fsanitize-address-use-after-scope"
+        fi
     ;;
 
     SunC)
@@ -147,6 +158,10 @@ case $NJS_CC_NAME in
         NJS_CFLAGS="$NJS_CFLAGS -errwarn=%all"
         # Debug.
         NJS_CFLAGS="$NJS_CFLAGS -g"
+
+        if [ "$NJS_ADDRESS_SANITIZER" = "YES" ]; then
+            echo " - Address sanitizer is not supported by $NJS_CC_NAME"
+        fi
     ;;
 
     *)
@@ -154,5 +169,10 @@ case $NJS_CC_NAME in
 
 esac
 
+if [ "$NJS_DEBUG" = "YES" ]; then
+        njs_define=NJS_DEBUG . auto/define
+        njs_define=NJS_DEBUG_MEMORY . auto/define
+fi
+
 # Stop on error exit status again.
 set -e
index 56de86531117b2acbcf942a329282c8d056af8aa..c9c307c11ad42a64ac4f55ecc71dff10f2a96a89 100644 (file)
--- a/auto/help
+++ b/auto/help
@@ -7,9 +7,15 @@ cat << END
 
 ./configure options:
 
-  --cc=FILE            set C compiler filename, default: "$CC"
-  --cc-opt=OPTIONS     set additional C compiler options
-  --ld-opt=OPTIONS     set additional linker options
-  --ar=FILE            set static linking program, default: "$AR"
+  --cc=FILE                 set C compiler filename, default: "$CC"
+  --cc-opt=OPTIONS          set additional C compiler options, \
+default: "$NJS_CC_OPT"
+  --ld-opt=OPTIONS          set additional linker options, \
+default: "$NJS_LD_OPT"
+  --ar=FILE                 set static linking program, default: "$AR"
 
+  --debug=YES               enables additional runtime checks, \
+default: "$NJS_DEBUG"
+  --address-sanitizer=YES   enables build with address sanitizer, \
+default: "$NJS_ADDRESS_SANITIZER"
 END
index 48aec1638a9ed670db57b14575e57d41b578793c..a7495b82df1597d12edd0fb4d80615a0063945f7 100644 (file)
@@ -3,10 +3,14 @@
 # Copyright (C) NGINX, Inc.
 
 
-NJS_CONFIGURE_OPTIONS=
 NJS_CC_OPT=${NJS_CC_OPT:--O}
 NJS_LD_OPT=${NJS_CC_OPT:--O}
 
+NJS_DEBUG=NO
+NJS_ADDRESS_SANITIZER=NO
+
+NJS_CONFIGURE_OPTIONS=
+
 for njs_option
 do
     case "$njs_option" in
@@ -20,6 +24,9 @@ do
         --ld-opt=*)                      NJS_LD_OPT="$value"                 ;;
         --ar=*)                          AR="$value"                         ;;
 
+        --debug=*)                       NJS_DEBUG="$value"                  ;;
+        --address-sanitizer=*)           NJS_ADDRESS_SANITIZER="$value"      ;;
+
         --help)
             . auto/help
             exit 0