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