Add option to enable all compiler warnings in GCC/Clang (#5897)
* Add option to enable all compiler warnings in GCC/Clang * Fix -Wall for CUDA sources * Make -Wall private req for xgboost-r
This commit is contained in:
parent
9b688aca3b
commit
627cf41a60
@ -32,6 +32,7 @@ option(R_LIB "Build shared library for R package" OFF)
|
|||||||
## Dev
|
## Dev
|
||||||
option(USE_DEBUG_OUTPUT "Dump internal training results like gradients and predictions to stdout.
|
option(USE_DEBUG_OUTPUT "Dump internal training results like gradients and predictions to stdout.
|
||||||
Should only be used for debugging." OFF)
|
Should only be used for debugging." OFF)
|
||||||
|
option(ENABLE_ALL_WARNINGS "Enable all compiler warnings. Only effective for GCC/Clang" OFF)
|
||||||
option(GOOGLE_TEST "Build google tests" OFF)
|
option(GOOGLE_TEST "Build google tests" OFF)
|
||||||
option(USE_DMLC_GTEST "Use google tests bundled with dmlc-core submodule" OFF)
|
option(USE_DMLC_GTEST "Use google tests bundled with dmlc-core submodule" OFF)
|
||||||
option(USE_NVTX "Build with cuda profiling annotations. Developers only." OFF)
|
option(USE_NVTX "Build with cuda profiling annotations. Developers only." OFF)
|
||||||
@ -79,6 +80,11 @@ endif (R_LIB AND GOOGLE_TEST)
|
|||||||
if (USE_AVX)
|
if (USE_AVX)
|
||||||
message(SEND_ERROR "The option 'USE_AVX' is deprecated as experimental AVX features have been removed from XGBoost.")
|
message(SEND_ERROR "The option 'USE_AVX' is deprecated as experimental AVX features have been removed from XGBoost.")
|
||||||
endif (USE_AVX)
|
endif (USE_AVX)
|
||||||
|
if (ENABLE_ALL_WARNINGS)
|
||||||
|
if ((NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
|
||||||
|
message(SEND_ERROR "ENABLE_ALL_WARNINGS is only available for Clang and GCC.")
|
||||||
|
endif ((NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
|
||||||
|
endif (ENABLE_ALL_WARNINGS)
|
||||||
|
|
||||||
#-- Sanitizer
|
#-- Sanitizer
|
||||||
if (USE_SANITIZER)
|
if (USE_SANITIZER)
|
||||||
@ -130,6 +136,9 @@ if (MSVC)
|
|||||||
-D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE)
|
-D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE)
|
||||||
endif (TARGET dmlc_unit_tests)
|
endif (TARGET dmlc_unit_tests)
|
||||||
endif (MSVC)
|
endif (MSVC)
|
||||||
|
if (ENABLE_ALL_WARNINGS)
|
||||||
|
target_compile_options(dmlc PRIVATE -Wall -Wextra)
|
||||||
|
endif (ENABLE_ALL_WARNINGS)
|
||||||
target_link_libraries(objxgboost PUBLIC dmlc)
|
target_link_libraries(objxgboost PUBLIC dmlc)
|
||||||
|
|
||||||
# rabit
|
# rabit
|
||||||
@ -159,6 +168,9 @@ foreach(lib rabit rabit_base rabit_empty rabit_mock rabit_mock_static)
|
|||||||
if (HIDE_CXX_SYMBOLS) # Hide all C++ symbols from Rabit
|
if (HIDE_CXX_SYMBOLS) # Hide all C++ symbols from Rabit
|
||||||
set_target_properties(${lib} PROPERTIES CXX_VISIBILITY_PRESET hidden)
|
set_target_properties(${lib} PROPERTIES CXX_VISIBILITY_PRESET hidden)
|
||||||
endif (HIDE_CXX_SYMBOLS)
|
endif (HIDE_CXX_SYMBOLS)
|
||||||
|
if (ENABLE_ALL_WARNINGS)
|
||||||
|
target_compile_options(${lib} PRIVATE -Wall -Wextra)
|
||||||
|
endif (ENABLE_ALL_WARNINGS)
|
||||||
endif (TARGET ${lib})
|
endif (TARGET ${lib})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,9 @@ file(GLOB_RECURSE R_SOURCES
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/src/*.c)
|
${CMAKE_CURRENT_LIST_DIR}/src/*.c)
|
||||||
# Use object library to expose symbols
|
# Use object library to expose symbols
|
||||||
add_library(xgboost-r OBJECT ${R_SOURCES})
|
add_library(xgboost-r OBJECT ${R_SOURCES})
|
||||||
|
if (ENABLE_ALL_WARNINGS)
|
||||||
|
target_compile_options(xgboost-r PRIVATE -Wall -Wextra)
|
||||||
|
endif (ENABLE_ALL_WARNINGS)
|
||||||
target_compile_definitions(xgboost-r
|
target_compile_definitions(xgboost-r
|
||||||
PUBLIC
|
PUBLIC
|
||||||
-DXGBOOST_STRICT_R_MODE=1
|
-DXGBOOST_STRICT_R_MODE=1
|
||||||
|
|||||||
@ -2,6 +2,9 @@ find_package(JNI REQUIRED)
|
|||||||
|
|
||||||
add_library(xgboost4j SHARED
|
add_library(xgboost4j SHARED
|
||||||
${PROJECT_SOURCE_DIR}/jvm-packages/xgboost4j/src/native/xgboost4j.cpp)
|
${PROJECT_SOURCE_DIR}/jvm-packages/xgboost4j/src/native/xgboost4j.cpp)
|
||||||
|
if (ENABLE_ALL_WARNINGS)
|
||||||
|
target_compile_options(xgboost4j PUBLIC -Wall -Wextra)
|
||||||
|
endif (ENABLE_ALL_WARNINGS)
|
||||||
target_link_libraries(xgboost4j PRIVATE objxgboost)
|
target_link_libraries(xgboost4j PRIVATE objxgboost)
|
||||||
target_include_directories(xgboost4j
|
target_include_directories(xgboost4j
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
|||||||
@ -72,6 +72,11 @@ if (MSVC)
|
|||||||
)
|
)
|
||||||
endif (MSVC)
|
endif (MSVC)
|
||||||
|
|
||||||
|
if (ENABLE_ALL_WARNINGS)
|
||||||
|
target_compile_options(objxgboost PUBLIC
|
||||||
|
$<IF:$<COMPILE_LANGUAGE:CUDA>,-Xcompiler=-Wall -Xcompiler=-Wextra,-Wall -Wextra>)
|
||||||
|
endif (ENABLE_ALL_WARNINGS)
|
||||||
|
|
||||||
set_target_properties(objxgboost PROPERTIES
|
set_target_properties(objxgboost PROPERTIES
|
||||||
POSITION_INDEPENDENT_CODE ON
|
POSITION_INDEPENDENT_CODE ON
|
||||||
CXX_STANDARD 14
|
CXX_STANDARD 14
|
||||||
|
|||||||
@ -4,7 +4,7 @@ set -e
|
|||||||
rm -rf build
|
rm -rf build
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. "$@" -DGOOGLE_TEST=ON -DUSE_DMLC_GTEST=ON -DCMAKE_VERBOSE_MAKEFILE=ON -GNinja
|
cmake .. "$@" -DGOOGLE_TEST=ON -DUSE_DMLC_GTEST=ON -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_ALL_WARNINGS=ON -GNinja
|
||||||
ninja clean
|
ninja clean
|
||||||
time ninja -v
|
time ninja -v
|
||||||
cd ..
|
cd ..
|
||||||
|
|||||||
@ -63,6 +63,10 @@ if (MSVC)
|
|||||||
-D_CRT_SECURE_NO_DEPRECATE
|
-D_CRT_SECURE_NO_DEPRECATE
|
||||||
)
|
)
|
||||||
endif (MSVC)
|
endif (MSVC)
|
||||||
|
if (ENABLE_ALL_WARNINGS)
|
||||||
|
target_compile_options(testxgboost PUBLIC
|
||||||
|
$<IF:$<COMPILE_LANGUAGE:CUDA>,-Xcompiler=-Wall -Xcompiler=-Wextra,-Wall -Wextra>)
|
||||||
|
endif (ENABLE_ALL_WARNINGS)
|
||||||
|
|
||||||
target_include_directories(testxgboost
|
target_include_directories(testxgboost
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user