diff options
author | unknown <konstantin@mysql.com> | 2006-04-07 02:25:59 +0400 |
---|---|---|
committer | unknown <konstantin@mysql.com> | 2006-04-07 02:25:59 +0400 |
commit | bcb8188758cd5ae73e28e1f3dd3401ad84dbfc8d (patch) | |
tree | 6b3d6246c3a0226add3bb3f0948cd16c8131ffad | |
parent | c992a1f7bbb80b3d762d49f12c37dac6d1670065 (diff) | |
download | mariadb-git-bcb8188758cd5ae73e28e1f3dd3401ad84dbfc8d.tar.gz |
Implement --warning-mode in SETUP.sh. The value of the
argument can be either "pedantic" or "old" (actually, or anything
else). In case of "pedantic" mode, use -ansi -pedantic compilation
flags. Fix the build to compile in pedantic mode. (Version 3 of
the patch, with after-review fixes)
BUILD/SETUP.sh:
Implement --warning-mode in SETUP.sh. The value of the
argument can be either "pedantic" or "old" (actually, or anything
else). In case of "pedantic" mode, use -ansi -pedantic compilation
flags.
BUILD/compile-pentium-debug-max-no-embedded:
Rename base_max_configs to base_no_embedded_configs
BUILD/compile-pentium-debug-max:
Use double quotes around $@
BUILD/compile-pentium-valgrind-max:
Pass command line arguments to SETUP.sh. Allows calling
compile-pentium-valgrind-max --warning-mode=pedantic
include/my_global.h:
Remove an unnecessary ifdef: -pedantic hides the system-wide
definition of ulong on Linux. In case there is no -pedantic,
the system-wide definition is available and HAVE_ULONG is defined
by configure.
-rwxr-xr-x | BUILD/SETUP.sh | 207 | ||||
-rwxr-xr-x | BUILD/compile-pentium-debug-max | 2 | ||||
-rwxr-xr-x | BUILD/compile-pentium-debug-max-no-embedded | 2 | ||||
-rwxr-xr-x | BUILD/compile-pentium-valgrind-max | 2 | ||||
-rw-r--r-- | include/my_global.h | 2 |
5 files changed, 142 insertions, 73 deletions
diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh index 74f1ba089b9..3c3facae34f 100755 --- a/BUILD/SETUP.sh +++ b/BUILD/SETUP.sh @@ -1,104 +1,173 @@ #!/bin/sh +######################################################################## + +get_key_value() +{ + echo "$1" | sed 's/^--[a-zA-Z_-]*=//' +} + +usage() +{ +cat <<EOF +Usage: $0 [-h|-n] [configure-options] + -h, --help Show this help message. + -n, --just-print Don't actually run any commands; just print them. + -c, --just-configure Stop after running configure. + --with-debug=full Build with full debug. + --warning-mode=[old|pedantic] + Influences the debug flags. Old is default. + --prefix=path Build with prefix 'path'. + +Note: this script is intended for internal use by MySQL developers. +EOF +} + +parse_options() +{ + while test $# -gt 0 + do + case "$1" in + --prefix=*) + prefix=`get_key_value "$1"`;; + --with-debug=full) + full_debug="=full";; + --warning-mode=*) + warning_mode=`get_key_value "$1"`;; + -c | --just-configure) + just_configure=1;; + -n | --just-print | --print) + just_print=1;; + -h | --help) + usage + exit 0;; + *) + echo "Unknown option '$1'" + exit 1;; + esac + shift + done +} + +######################################################################## + if ! test -f sql/mysqld.cc then echo "You must run this script from the MySQL top-level directory" exit 1 fi -prefix_configs="--prefix=/usr/local/mysql" +prefix="/usr/local/mysql" just_print= just_configure= full_debug= +warning_mode= + +parse_options "$@" + if test -n "$MYSQL_BUILD_PREFIX" then - prefix_configs="--prefix=$MYSQL_BUILD_PREFIX" + prefix="$MYSQL_BUILD_PREFIX" fi -while test $# -gt 0 -do - case "$1" in - --prefix=* ) prefix_configs="$1"; shift ;; - --with-debug=full ) full_debug="=full"; shift ;; - -c | --just-configure ) just_configure=1; shift ;; - -n | --just-print | --print ) just_print=1; shift ;; - -h | --help ) cat <<EOF; exit 0 ;; -Usage: $0 [-h|-n] [configure-options] - -h, --help Show this help message. - -n, --just-print Don't actually run any commands; just print them. - -c, --just-configure Stop after running configure. - --with-debug=full Build with full debug. - --prefix=path Build with prefix 'path'. - -Note: this script is intended for internal use by MySQL developers. -EOF - * ) - echo "Unknown option '$1'" - exit 1 - break ;; - esac -done - set -e +# +# Check for the CPU and set up CPU specific flags. We may reset them +# later. +# +path=`dirname $0` +. "$path/check-cpu" + export AM_MAKEFLAGS AM_MAKEFLAGS="-j 4" # SSL library to use. SSL_LIBRARY=--with-yassl -# If you are not using codefusion add "-Wpointer-arith" to WARNINGS -# The following warning flag will give too many warnings: -# -Wshadow -Wunused -Winline (The later isn't usable in C++ as -# __attribute()__ doesn't work with gnu C++) - -global_warnings="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings" -c_warnings="$global_warnings -Wunused" -cxx_warnings="$global_warnings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor" -base_max_configs="--with-innodb --with-berkeley-db --with-ndbcluster --with-archive-storage-engine --with-big-tables --with-blackhole-storage-engine --with-federated-storage-engine --with-csv-storage-engine --with-example-storage-engine --with-partition $SSL_LIBRARY" -base_max_no_ndb_configs="--with-innodb --with-berkeley-db --without-ndbcluster --with-archive-storage-engine --with-big-tables --with-blackhole-storage-engine --with-federated-storage-engine --with-csv-storage-engine --with-example-storage-engine --with-partition $SSL_LIBRARY" -max_configs="$base_max_configs --with-embedded-server" -max_no_ndb_configs="$base_max_no_ndb_configs --with-embedded-server" -valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify -DMYSQL_SERVER_SUFFIX=-valgrind-max" - -path=`dirname $0` -. "$path/check-cpu" - -alpha_cflags="$check_cpu_cflags -Wa,-m$cpu_flag" -amd64_cflags="$check_cpu_cflags" -pentium_cflags="$check_cpu_cflags" -pentium64_cflags="$check_cpu_cflags -m64" -ppc_cflags="$check_cpu_cflags" -sparc_cflags="" +if [ "x$warning_mode" != "xpedantic" ]; then +# Both C and C++ warnings + warnings="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W" + warnings="$warnings -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare" + warnings="$warnings -Wwrite-strings" +# C warnings + c_warnings="$warnings -Wunused" +# C++ warnings + cxx_warnings="$warnings -Woverloaded-virtual -Wsign-promo -Wreorder" + cxx_warnings="$warnings -Wctor-dtor-privacy -Wnon-virtual-dtor" +# Added unless --with-debug=full + debug_extra_cflags="-O1 -Wuninitialized" +else + warnings="-W -Wall -ansi -pedantic -Wno-long-long -D_POSIX_SOURCE" + c_warnings="$warnings" + cxx_warnings="$warnings -std=c++98" +# NOTE: warning mode should not influence optimize/debug mode. +# Please feel free to add a separate option if you don't feel it's an overkill. + debug_extra_flags="-O0" +# Reset CPU flags (-mtune), they don't work in -pedantic mode + check_cpu_cflags="" +fi -# be as fast as we can be without losing our ability to backtrace +# Set flags for various build configurations. +# Used in -valgrind builds +valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify " +valgrind_flags="$valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max" +# +# Used in -debug builds +debug_cflags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS " +debug_cflags="$debug_cflags -DSAFEMALLOC -DPEDANTIC_SAFEMALLOC -DSAFE_MUTEX" +# +# Base C++ flags for all builds +base_cxxflags="-felide-constructors -fno-exceptions -fno-rtti" +# +# Flags for optimizing builds. +# Be as fast as we can be without losing our ability to backtrace. fast_cflags="-O3 -fno-omit-frame-pointer" -# this is one is for someone who thinks 1% speedup is worth not being -# able to backtrace -reckless_cflags="-O3 -fomit-frame-pointer " -debug_cflags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS -DSAFEMALLOC -DPEDANTIC_SAFEMALLOC -DSAFE_MUTEX" -debug_extra_cflags="-O1 -Wuninitialized" +debug_configs="--with-debug$full_debug" +if [ -z "$full_debug" ] +then + debug_cflags="$debug_cflags $debug_extra_cflags" +fi -base_cxxflags="-felide-constructors -fno-exceptions -fno-rtti" -amd64_cxxflags="" # If dropping '--with-big-tables', add here "-DBIG_TABLES" - -base_configs="$prefix_configs --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-readline --with-big-tables" -static_link="--with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static" -amd64_configs="" -alpha_configs="" # Not used yet -pentium_configs="" -sparc_configs="" +# +# Configuration options. +# +base_configs="--prefix=$prefix --enable-assembler " +base_configs="$base_configs --with-extra-charsets=complex " +base_configs="$base_configs --enable-thread-safe-client --with-readline " +base_configs="$base_configs --with-big-tables" + +static_link="--with-mysqld-ldflags=-all-static " +static_link="$static_link --with-client-ldflags=-all-static" # we need local-infile in all binaries for rpl000001 # if you need to disable local-infile in the client, write a build script # and unset local_infile_configs local_infile_configs="--enable-local-infile" -debug_configs="--with-debug$full_debug" -if [ -z "$full_debug" ] -then - debug_cflags="$debug_cflags $debug_extra_cflags" -fi + +max_configs="--with-innodb --with-berkeley-db" +max_configs="$max_configs --with-archive-storage-engine" +max_configs="$max_configs --with-big-tables" +max_configs="$max_configs --with-blackhole-storage-engine" +max_configs="$max_configs --with-federated-storage-engine" +max_configs="$max_configs --with-csv-storage-engine" +max_configs="$max_configs --with-example-storage-engine" +max_configs="$max_configs --with-partition $SSL_LIBRARY" + +max_no_embedded_configs="$max_configs --with-ndbcluster" +max_no_ndb_configs="$max_configs --without-ndbcluster --with-embedded-server" +max_configs="$max_configs --with-ndbcluster --with-embedded-server" + +# +# CPU and platform specific compilation flags. +# +alpha_cflags="$check_cpu_cflags -Wa,-m$cpu_flag" +amd64_cflags="$check_cpu_cflags" +amd64_cxxflags="" # If dropping '--with-big-tables', add here "-DBIG_TABLES" +pentium64_cflags="$check_cpu_cflags -m64" +ppc_cflags="$check_cpu_cflags" +sparc_cflags="" if gmake --version > /dev/null 2>&1 then diff --git a/BUILD/compile-pentium-debug-max b/BUILD/compile-pentium-debug-max index cf7f00161fb..d799311526b 100755 --- a/BUILD/compile-pentium-debug-max +++ b/BUILD/compile-pentium-debug-max @@ -1,7 +1,7 @@ #! /bin/sh path=`dirname $0` -. "$path/SETUP.sh" $@ --with-debug=full +. "$path/SETUP.sh" "$@" --with-debug=full extra_flags="$pentium_cflags $debug_cflags" extra_configs="$pentium_configs $debug_configs $max_configs" diff --git a/BUILD/compile-pentium-debug-max-no-embedded b/BUILD/compile-pentium-debug-max-no-embedded index 35cb61d2ac5..2cae5eff694 100755 --- a/BUILD/compile-pentium-debug-max-no-embedded +++ b/BUILD/compile-pentium-debug-max-no-embedded @@ -4,6 +4,6 @@ path=`dirname $0` . "$path/SETUP.sh" extra_flags="$pentium_cflags $debug_cflags" -extra_configs="$pentium_configs $debug_configs $base_max_configs" +extra_configs="$pentium_configs $debug_configs $max_no_embedded_configs" . "$path/FINISH.sh" diff --git a/BUILD/compile-pentium-valgrind-max b/BUILD/compile-pentium-valgrind-max index 09cc162d2be..a2715e7c378 100755 --- a/BUILD/compile-pentium-valgrind-max +++ b/BUILD/compile-pentium-valgrind-max @@ -1,7 +1,7 @@ #! /bin/sh path=`dirname $0` -. "$path/SETUP.sh" +. "$path/SETUP.sh" "$@" extra_flags="$pentium_cflags $debug_cflags $valgrind_flags" extra_configs="$pentium_configs $debug_configs $max_configs" diff --git a/include/my_global.h b/include/my_global.h index 1f53804affe..ecee9c637c9 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -917,7 +917,7 @@ typedef unsigned long uint32; /* Short for unsigned integer >= 32 bits */ #error "Neither int or long is of 4 bytes width" #endif -#if !defined(HAVE_ULONG) && !defined(TARGET_OS_LINUX) && !defined(__USE_MISC) +#if !defined(HAVE_ULONG) && !defined(__USE_MISC) typedef unsigned long ulong; /* Short for unsigned long */ #endif #ifndef longlong_defined |