diff options
-rw-r--r-- | BUILD/capture_warnings.sh | 17 | ||||
-rw-r--r-- | CMakeLists.txt | 14 |
2 files changed, 31 insertions, 0 deletions
diff --git a/BUILD/capture_warnings.sh b/BUILD/capture_warnings.sh new file mode 100644 index 00000000000..88fd2576c05 --- /dev/null +++ b/BUILD/capture_warnings.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +warn_path=$1 +shift +warn_file="$warn_path/compile.warnings" + +set -o pipefail +exec 3>&1 +x=$(("$@" >&2) 2>&1 1>&3) +error=${PIPESTATUS} + +if ! [[ -z "$x" ]]; then + echo -n "$x" >> $warn_file + echo -n "$x" >&2 +fi + +exit ${error} diff --git a/CMakeLists.txt b/CMakeLists.txt index 869e65baf8d..a1dea914043 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -480,3 +480,17 @@ IF(NON_DISTRIBUTABLE_WARNING) MESSAGE(WARNING " You have linked MariaDB with GPLv3 libraries! You may not distribute the resulting binary. If you do, you will put yourself into a legal problem with Free Software Foundation.") ENDIF() + +IF (CMAKE_BUILD_TYPE MATCHES "Debug") + SET_DIRECTORY_PROPERTIES(PROPERTIES RULE_LAUNCH_COMPILE + "bash ${CMAKE_SOURCE_DIR}/BUILD/capture_warnings.sh ${CMAKE_BINARY_DIR}") + SET_DIRECTORY_PROPERTIES(PROPERTY ADDITIONAL_MAKE_CLEAN_FILES + "${CMAKE_BINARY_DIR}/compile.warnings") + ADD_CUSTOM_TARGET(REMOVE_WARNINGS_FILE ALL + COMMAND rm -f "compile.warnings" + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + ADD_CUSTOM_TARGET(REPRINT ALL + COMMAND if [ -f "compile.warnings" ]; then cat "compile.warnings" \; fi + DEPENDS mysql udf_example explain_filename-t REMOVE_WARNINGS_FILE + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") +ENDIF() |