hdf5/release_docs/INSTALL_Warnings.txt
Sean McBride 44db310d8d
Removed mentions of Wdeclaration-after-statement now that C99 is requ… (#447)
* Removed mentions of Wdeclaration-after-statement now that C99 is required

* Remove -Werror=declaration-after-statement from error-general file.

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
2021-05-03 09:08:37 -05:00

470 lines
12 KiB
Plaintext

***********************************************************************
* COMPILER WARNINGS OPTIONS
***********************************************************************
Table of Contents
Section I: Managing Warnings
Section II: Default Warnings
Section III: All Warnings
Section IV: Group 0 Warnings
Section V: Group 1 Warnings
Section VI: Group 2 Warnings
Section VII: Group 3 Warnings
Section VIII: Group 4 Warnings
Section IX: Disable Warnings
************************************************************************
========================================================================
I. Managing Warnings
========================================================================
Compiler warnings are managed by setting the compiler flags variables.
Autotools uses the H5_CFLAGS and H5_CXXFLAGS, both variables set the flags nearly
identical, along with H5_FCFLAGS for Fortran. Autotools uses the type
and version of the compiler to determine which warning flags are used.
However, there is an option, enable-developer-warnings, to enable extra
flags for developers.
CMake uses the CMAKE_C_FLAGS and CMAKE_CXX_FLAGS, both sets are nearly
identical, along with CMAKE_Fortran_FLAGS for Fortran. CMake has a
minimum set of flags for GNU type compilers and for MSVC compilers. In
addition, CMake breaks the list of flags into groups. The groups for
GNU are roughly associated with the version of the compiler, while
the MSVC groups are associated with the warning levels for the
Microsoft compilers. The CMake option for enabling extra developer
warnings is HDF5_ENABLE_DEV_WARNINGS.
Custom settings can be used by setting;
Environment variables H5_CFLAGS and H5_CXXFLAGS for Autotools
CMake defines CMAKE_C_FLAGS and CMAKE_CXX_FLAGS for CMake
========================================================================
II. Default Warnings
========================================================================
--------------------------------------------------
Autotools UNIX warnings added to H5_CFLAGS
--------------------------------------------------
-std=c99
the following warning switches should not raise warnings by the current code
-pedantic
-Wall
-Wextra
-Wbad-function-cast
-Wc++-compat
-Wcast-align
-Wcast-qual
-Wconversion
-Wdisabled-optimization
-Wfloat-equal
-Wformat=2
-Winit-self
-Winvalid-pch
-Wmissing-declarations
-Wmissing-include-dirs
-Wmissing-prototypes
-Wnested-externs
-Wold-style-definition
-Wpacked
-Wpointer-arith
-Wredundant-decls
-Wshadow
-Wstrict-prototypes
-Wswitch-default
-Wswitch-enum
-Wundef
-Wunused-macros
-Wunsafe-loop-optimizations
-Wwrite-strings
enable-developer-warnings=ON
-Winline
-Waggregate-return
-Wmissing-format-attribute
-Wmissing-noreturn
-Wunsuffixed-float-constants (gcc 4.5+)
enable-developer-warnings=OFF
-Wno-inline
-Wno-aggregate-return
-Wno-missing-format-attribute
-Wno-missing-noreturn
-Wno-unsuffixed-float-constants (gcc 4.5+)
IF GCC <= 4.3
-Wno-long-long
-Wvolatile-register-var
-Wstrict-overflow
IF GCC <= 4.4
-Wno-long-long
-Wvolatile-register-var
-Wstrict-overflow
-Wlogical-op
-Wvla
IF GCC <= 4.5
-Wno-long-long
-Wvolatile-register-var
-Wstrict-overflow
-Wlogical-op
-Wvla
-Wlarger-than=2048
-Wsync-nand
-Wframe-larger-than=16384
-Wpacked-bitfield-compat
IF GCC <= 4.6
-Wno-long-long
-Wlogical-op
-Wvla
-Wlarger-than=2048
-Wsync-nand
-Wframe-larger-than=16384
-Wpacked-bitfield-compat
-Wstrict-aliasing
-Wstrict-overflow=5
-Wjump-misses-init
IF GCC <= 4.7
-Wno-long-long
-Wlogical-op
-Wvla
-Wlarger-than=2048
-Wsync-nand
-Wframe-larger-than=16384
-Wpacked-bitfield-compat
-Wstrict-aliasing
-Wstrict-overflow=5
-Wjump-misses-init
-Wdouble-promotion
-Wtrampolines
enable-developer-warnings=ON:
-Wsuggest-attribute=const
enable-developer-warnings=OFF:
-Wno-suggest-attribute=const
IF GCC <= 4.8
-Wlogical-op
-Wvla
-Wlarger-than=2048
-Wsync-nand
-Wframe-larger-than=16384
-Wpacked-bitfield-compat
-Wstrict-overflow=5
-Wjump-misses-init
-Wdouble-promotion
-Wtrampolines
-Wstack-usage=8192
-Wvector-operation-performance
enable-developer-warnings=ON:
-Wsuggest-attribute=const
-Wsuggest-attribute=pure
-Wsuggest-attribute=noreturn
enable-developer-warnings=OFF:
-Wno-suggest-attribute=const
-Wno-suggest-attribute=pure
-Wno-suggest-attribute=noreturn
IF GCC <= 4.9
-Wlogical-op
-Wvla
-Wlarger-than=2048
-Wsync-nand
-Wframe-larger-than=16384
-Wpacked-bitfield-compat
-Wstrict-overflow=5
-Wjump-misses-init
-Wdouble-promotion
-Wtrampolines
-Wstack-usage=8192
-Wvector-operation-performance
enable-developer-warnings=ON:
-Wsuggest-attribute=const
-Wsuggest-attribute=pure
-Wsuggest-attribute=noreturn
-Wsuggest-attribute=format
enable-developer-warnings=OFF:
-Wno-suggest-attribute=const
-Wno-suggest-attribute=pure
-Wno-suggest-attribute=noreturn
-Wno-suggest-attribute=format
IF GCC < 5
-Wlogical-op
-Wvla
-Wlarger-than=2048
-Wsync-nand
-Wframe-larger-than=16384
-Wpacked-bitfield-compat
-Wstrict-overflow=5
-Wjump-misses-init
-Wdouble-promotion
-Wtrampolines
-Wstack-usage=8192
-Wvector-operation-performance
-Wdate-time
enable-developer-warnings=ON:
-Wsuggest-attribute=const
-Wsuggest-attribute=pure
-Wsuggest-attribute=noreturn
-Wsuggest-attribute=format
enable-developer-warnings=OFF:
-Wno-suggest-attribute=const
-Wno-suggest-attribute=pure
-Wno-suggest-attribute=noreturn
-Wno-suggest-attribute=format
IF GCC < 6
-Wlogical-op
-Wvla
-Wlarger-than=2048
-Wsync-nand
-Wframe-larger-than=16384
-Wpacked-bitfield-compat
-Wstrict-overflow=5
-Wjump-misses-init
-Wdouble-promotion
-Wtrampolines
-Wstack-usage=8192
-Wvector-operation-performance
-Wdate-time
-Warray-bounds=2
-Wc99-c11-compat
enable-developer-warnings=ON:
-Wsuggest-attribute=const
-Wsuggest-attribute=pure
-Wsuggest-attribute=noreturn
-Wsuggest-attribute=format
enable-developer-warnings=OFF:
-Wno-suggest-attribute=const
-Wno-suggest-attribute=pure
-Wno-suggest-attribute=noreturn
-Wno-suggest-attribute=format
IF GCC < 7
-Wlogical-op
-Wvla
-Wlarger-than=2048
-Wsync-nand
-Wframe-larger-than=16384
-Wpacked-bitfield-compat
-Wstrict-overflow=5
-Wjump-misses-init
-Wdouble-promotion
-Wtrampolines
-Wstack-usage=8192
-Wvector-operation-performance
-Wdate-time
-Warray-bounds=2
-Wc99-c11-compat
-Wnull-dereference
-Wunused-const-variable
-Wduplicated-cond -Whsa
enable-developer-warnings=ON:
-Wsuggest-attribute=const
-Wsuggest-attribute=pure
-Wsuggest-attribute=noreturn
-Wsuggest-attribute=format
enable-developer-warnings=OFF:
-Wno-suggest-attribute=const
-Wno-suggest-attribute=pure
-Wno-suggest-attribute=noreturn
-Wno-suggest-attribute=format
--------------------------------------------
CMake warnings added to CMAKE_C_FLAGS
--------------------------------------------
IF GNU GCC
-pedantic
-Wall
-Wextra
-Wbad-function-cast
-Wc++-compat
-Wcast-align
-Wcast-qual
-Wconversion
-Wdisabled-optimization
-Wfloat-equal
-Wformat=2
-Winit-self
-Winvalid-pch
-Wmissing-declarations
-Wmissing-include-dirs
-Wmissing-prototypes
-Wnested-externs
-Wold-style-definition
-Wpacked
-Wpointer-arith
-Wredundant-decls
-Wshadow
-Wstrict-prototypes
-Wswitch-default
-Wswitch-enum
-Wundef
-Wunused-macros
-Wunsafe-loop-optimizations
-Wwrite-strings
-fmessage-length=0
HDF5_ENABLE_DEV_WARNINGS=ON
-Winline
-Waggregate-return
-Wunsuffixed-float-constants (gcc 4.5+)
HDF5_ENABLE_DEV_WARNINGS=OFF
-Wno-unused-parameter
-Wno-inline
-Wno-aggregate-return
-Wno-unsuffixed-float-constants (gcc 4.5+)
========================================================================
III. All Warnings in CMake
========================================================================
Default: HDF5_ENABLE_DEV_WARNINGS:BOOL=OFF
For Visual Studio:
/W3
HDF5_ENABLE_ALL_WARNINGS:BOOL=ON
For Visual Studio:
/Wall
/wd4668
For GNU GCC
Group 0 flags
Group 1 flags
Group 2 flags
========================================================================
IV. Group 0 Warnings in CMake
========================================================================
Default: HDF5_ENABLE_GROUPZERO_WARNINGS:BOOL=OFF
HDF5_ENABLE_GROUPZERO_WARNINGS:BOOL=ON
For Visual Studio
/W1
For GNU GCC
Default Warnings
========================================================================
V. Group 1 Warnings in CMake
========================================================================
Default: HDF5_ENABLE_GROUPONE_WARNINGS:BOOL=OFF
HDF5_ENABLE_GROUPONE_WARNINGS:BOOL=ON
For Visual Studio
/W2
For GNU GCC
IF GCC >= 4.3
-Wlogical-op
-Wvla
-Wlarger-than=2048
IF GCC >= 4.4
-Wsync-nand
-Wframe-larger-than=16384
-Wpacked-bitfield-compat
IF GCC >= 4.5
-Wstrict-overflow=5
-Wjump-misses-init
========================================================================
VI. Group 2 Warnings in CMake
========================================================================
Default: HDF5_ENABLE_GROUPTWO_WARNINGS:BOOL=OFF
HDF5_ENABLE_GROUPTWO_WARNINGS:BOOL=ON
For Visual Studio
/W3
For GNU GCC
IF GCC >= 4.6
-Wdouble-promotion
-Wtrampolines
enable-developer-warnings=ON:
-Wsuggest-attribute=const
enable-developer-warnings=OFF:
-Wno-suggest-attribute=const
IF GCC >= 4.7
-Wstack-usage=8192
-Wvector-operation-performance
enable-developer-warnings=ON:
-Wsuggest-attribute=pure
-Wsuggest-attribute=noreturn
enable-developer-warnings=OFF:
-Wno-suggest-attribute=pure
-Wno-suggest-attribute=noreturn
IF GCC >= 4.8
enable-developer-warnings=ON:
-Wsuggest-attribute=format
enable-developer-warnings=OFF:
-Wno-suggest-attribute=format
IF GCC >= 4.8
-Wdate-time
========================================================================
VII. Group 3 Warnings in CMake
========================================================================
Default: HDF5_ENABLE_GROUPTHREE_WARNINGS:BOOL=OFF
HDF5_ENABLE_GROUPTHREE_WARNINGS:BOOL=ON
For Visual Studio
/W4
For GNU GCC
IF GCC >= 5.1
-Warray-bounds=2
-Wc99-c11-compat
========================================================================
VIII. Group 4 Warnings in CMake
========================================================================
Default: HDF5_ENABLE_GROUPFOUR_WARNINGS:BOOL=OFF
HDF5_ENABLE_GROUPFOUR_WARNINGS:BOOL=ON
For GNU GCC
IF GCC >= 6.0
-Wnull-dereference
-Wunused-const-variable
-Wduplicated-cond
-Whsa
========================================================================
IX. Disable Warnings in CMake
========================================================================
Default: HDF5_DISABLE_COMPILER_WARNINGS:BOOL=OFF
HDF5_DISABLE_COMPILER_WARNINGS:BOOL=ON
For Visual Studio
HDF5_WARNINGS_BLOCKED:BOOL=ON
/W0
For GNU GCC
-w
========================================================================
For further assistance, send email to help@hdfgroup.org
========================================================================