Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -197,23 +197,27 @@ if(NOT MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing")
# Eigen fails to build with some versions, so convert this to a warning
# Details at http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1459
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-partial-specialization")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-type-limits")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-typedef-redefinition")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-compare")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-private-field")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-inconsistent-missing-override")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-aligned-allocation-unavailable")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=deprecated-declarations")
# These flags are not available in GCC-4.8.5. Set only when using clang.
# Compared against https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Option-Summary.html
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-partial-specialization")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-typedef-redefinition")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-private-field")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-inconsistent-missing-override")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-aligned-allocation-unavailable")
endif()
if ((APPLE AND (NOT ("${CLANG_VERSION_STRING}" VERSION_LESS "9.0")))
OR (CMAKE_COMPILER_IS_GNUCXX AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)))
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-new")
Expand Down
36 changes: 4 additions & 32 deletions c10/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
project(c10 CXX C)

include(../cmake/Utils.cmake)

set(LIB_SOURCES
dummy.cpp
)
Expand All @@ -8,43 +10,13 @@ set(TEST_SOURCES
dummy_test.cpp
)

if(MSVC)
# TODO Also add some warning options that MSVC can understand
set(WARNING_OPTIONS "")
else()
set(WARNING_OPTIONS
-Wall
-Wextra
-Wold-style-cast
-Wno-missing-braces
-Wcast-align
-Wcast-qual
-Wctor-dtor-privacy
-Wdisabled-optimization
-Wformat=2
-Winit-self
-Wmissing-include-dirs
-Woverloaded-virtual
-Wredundant-decls
-Wshadow
-Wsign-promo
-Wstrict-overflow=5
-fdiagnostics-show-option
-Wconversion
-Wpedantic
-Wno-gnu-zero-variadic-macro-arguments
-Wundef
-Werror
)
endif()

add_library(${PROJECT_NAME} OBJECT ${LIB_SOURCES})
target_compile_options(${PROJECT_NAME} PRIVATE ${WARNING_OPTIONS})
target_enable_style_warnings(${PROJECT_NAME} TRUE)

if(BUILD_TEST)
add_executable(${PROJECT_NAME}_test ${TEST_SOURCES} $<TARGET_OBJECTS:${PROJECT_NAME}>)
add_test(NAME ${PROJECT_NAME}_test COMMAND $<TARGET_FILE:${PROJECT_NAME}_test>)
target_compile_options(${PROJECT_NAME}_test PRIVATE ${WARNING_OPTIONS})
target_enable_style_warnings(${PROJECT_NAME}_test TRUE)
target_link_libraries(${PROJECT_NAME}_test gtest_main)
install(TARGETS ${PROJECT_NAME}_test DESTINATION test)
endif()
21 changes: 18 additions & 3 deletions cmake/Utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,8 @@ endfunction(print_target_properties)

###
# Helper function to add style warning options to the given target
# Optionally pass in the second argument ($ARGV1) which will force -Werror if
# it evaluates to true.
function(target_enable_style_warnings TARGET)
if(MSVC)
# TODO Also add some warning options that MSVC can understand
Expand All @@ -280,11 +282,24 @@ function(target_enable_style_warnings TARGET)
-fdiagnostics-show-option
-Wconversion
-Wpedantic
-Wno-gnu-zero-variadic-macro-arguments
-Wundef
)
if ($ENV{WERROR})
set(WARNING_OPTIONS "${WARNING_OPTIONS} -Werror")
# -Wno-gnu-zero-variadic-macro-arguments is not available in GCC-4.8.5. Set
# only when using clang.
# Compared against https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Option-Summary.html
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
list(APPEND WARNING_OPTIONS "-Wno-gnu-zero-variadic-macro-arguments")
endif()
set(WERROR $ENV{WERROR})
if (${ARGC} GREATER 1)
# accessing ${ARGV1} is UB when ${ARGC} <= 1
# CMake doesn't do smart AND, so we have to use a nested `if`
if (${ARGV1})
set(WERROR TRUE)
endif()
endif()
if (WERROR)
list(APPEND WARNING_OPTIONS "-Werror")
endif()
endif()
target_compile_options(${TARGET} PRIVATE ${WARNING_OPTIONS})
Expand Down