1+ ## Included by CMakeLists
2+ if (PYTHON_BUILD_OPTIONS_cmake_included)
3+ return ()
4+ endif ()
5+ set (PYTHON_BUILD_OPTIONS_cmake_included true )
6+
7+ # check and set CMAKE_CXX_STANDARD
8+ string (FIND "${CMAKE_CXX_FLAGS} " "-std=c++" env_cxx_standard)
9+ if (env_cxx_standard GREATER -1)
10+ message (
11+ WARNING "C++ standard version definition detected in environment variable."
12+ "PyTorch requires -std=c++14. Please remove -std=c++ settings in your environment." )
13+ endif ()
14+ set (CMAKE_CXX_STANDARD 14)
15+ set (CMAKE_C_STANDARD 11)
16+ set (CMAKE_CXX_EXTENSIONS OFF )
17+
18+ set (_CXX11_ABI_FLAG 0)
19+ if (DEFINED GLIBCXX_USE_CXX11_ABI)
20+ if (${GLIBCXX_USE_CXX11_ABI} EQUAL 1)
21+ set (CXX_STANDARD_REQUIRED ON )
22+ set (_CXX11_ABI_FLAG 1)
23+ endif ()
24+ endif ()
25+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=${_CXX11_ABI_FLAG} " )
26+
27+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC" )
28+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing" )
29+ # Eigen fails to build with some versions, so convert this to a warning
30+ # Details at http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1459
31+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
32+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra" )
33+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers" )
34+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-type-limits" )
35+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-array-bounds" )
36+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas" )
37+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-compare" )
38+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter" )
39+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable" )
40+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function" )
41+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result" )
42+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-strict-overflow" )
43+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-strict-aliasing" )
44+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=deprecated-declarations" )
45+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-ignored-qualifiers" )
46+ if (CMAKE_COMPILER_IS_GNUCXX AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0.0))
47+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-stringop-overflow" )
48+ endif ()
49+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=pedantic" )
50+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=redundant-decls" )
51+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=old-style-cast" )
52+
53+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp" )
54+ # These flags are not available in GCC-4.8.5. Set only when using clang.
55+ # Compared against https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Option-Summary.html
56+ if ("${CMAKE_CXX_COMPILER_ID} " MATCHES "Clang" )
57+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-partial-specialization" )
58+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-typedef-redefinition" )
59+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option" )
60+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-private-field" )
61+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-inconsistent-missing-override" )
62+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-aligned-allocation-unavailable" )
63+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++14-extensions" )
64+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-constexpr-not-const" )
65+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-braces" )
66+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments" )
67+ if (${COLORIZE_OUTPUT} )
68+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics" )
69+ endif ()
70+ endif ()
71+ if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9)
72+ if (${COLORIZE_OUTPUT} )
73+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always" )
74+ endif ()
75+ endif ()
76+ if ((APPLE AND (NOT ("${CLANG_VERSION_STRING} " VERSION_LESS "9.0" )))
77+ OR (CMAKE_COMPILER_IS_GNUCXX
78+ AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0 AND NOT APPLE )))
79+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-new" )
80+ endif ()
81+ if (WERROR)
82+ check_cxx_compiler_flag("-Werror" COMPILER_SUPPORT_WERROR)
83+ if (NOT COMPILER_SUPPORT_WERROR)
84+ set (WERROR FALSE )
85+ else ()
86+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
87+ endif ()
88+ endif (WERROR)
89+ if (NOT APPLE )
90+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-but-set-variable" )
91+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized" )
92+ endif ()
93+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -O0" )
94+ set (CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_STATIC_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -O0" )
95+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-math-errno" )
96+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-trapping-math" )
97+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-Bsymbolic-functions" )
98+
99+ # Define build type
100+ IF (CMAKE_BUILD_TYPE MATCHES Debug)
101+ message ("Debug build." )
102+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_DEBUG" )
103+ ELSEIF (CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
104+ message ("RelWithDebInfo build" )
105+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG" )
106+ ELSE ()
107+ message ("Release build." )
108+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG" )
109+ ENDIF ()
110+
111+ SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" )
112+ SET (CMAKE_CXX_FLAGS_RELEASE "-O2" )
113+ SET (CMAKE_CXX_FLAGS_DEBUG "-O0 -g" )
0 commit comments