mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-14 20:57:59 +00:00
Make it possible for users for select /Zi or /ZI over /Z7 when using MSVC (#18790)
Summary: Fixes https://github.com/pytorch/pytorch/issues/18701. Pull Request resolved: https://github.com/pytorch/pytorch/pull/18790 Differential Revision: D14748195 Pulled By: ezyang fbshipit-source-id: e50df1b5ca199a88d7b5ea3ea45d25d23cd31a27
This commit is contained in:
parent
06b7fe59f2
commit
5e33085f27
3 changed files with 38 additions and 27 deletions
|
|
@ -57,26 +57,6 @@ if(APPLE)
|
|||
set(CMAKE_MACOSX_RPATH ON)
|
||||
endif()
|
||||
|
||||
# For MSVC,
|
||||
# 1. Replace /Zi and /ZI with /Z7
|
||||
# 2. Switch off incremental linking in debug builds
|
||||
if (MSVC)
|
||||
foreach(flag_var
|
||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||
if(${flag_var} MATCHES "/Z[iI]")
|
||||
string(REGEX REPLACE "/Z[iI]" "/Z7" ${flag_var} "${${flag_var}}")
|
||||
endif(${flag_var} MATCHES "/Z[iI]")
|
||||
endforeach(flag_var)
|
||||
foreach(flag_var
|
||||
CMAKE_SHARED_LINKER_FLAGS_DEBUG CMAKE_STATIC_LINKER_FLAGS_DEBUG
|
||||
CMAKE_EXE_LINKER_FLAGS_DEBUG CMAKE_MODULE_LINKER_FLAGS_DEBUG)
|
||||
if(${flag_var} MATCHES "/INCREMENTAL" AND NOT ${flag_var} MATCHES "/INCREMENTAL:NO")
|
||||
string(REGEX REPLACE "/INCREMENTAL" "/INCREMENTAL:NO" ${flag_var} "${${flag_var}}")
|
||||
endif()
|
||||
endforeach(flag_var)
|
||||
endif(MSVC)
|
||||
|
||||
# ---[ Options.
|
||||
# Note to developers: if you add an option below, make sure you also add it to
|
||||
# cmake/Summary.cmake so that the summary prints out the option values.
|
||||
|
|
@ -155,8 +135,36 @@ cmake_dependent_option(
|
|||
# Used when building Caffe2 through setup.py
|
||||
option(BUILDING_WITH_TORCH_LIBS "Tell cmake if Caffe2 is being built alongside torch libs" OFF)
|
||||
|
||||
# /Z7 override option
|
||||
# When generating debug symbols, CMake default to use the flag /Zi.
|
||||
# However, it is not compatible with sccache. So we rewrite it off.
|
||||
# But some users don't use sccache; this override is for them.
|
||||
option(MSVC_Z7_OVERRIDE "Work around sccache bug by replacing /Zi and /ZI with /Z7 when using MSVC (if you are not using sccache, you can turn this OFF)" ON)
|
||||
|
||||
SET(ONNX_NAMESPACE "onnx_c2" CACHE STRING "onnx namespace")
|
||||
|
||||
# For MSVC,
|
||||
# 1. Replace /Zi and /ZI with /Z7
|
||||
# 2. Switch off incremental linking in debug builds
|
||||
if (MSVC)
|
||||
if(MSVC_Z7_OVERRIDE)
|
||||
foreach(flag_var
|
||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||
if(${flag_var} MATCHES "/Z[iI]")
|
||||
string(REGEX REPLACE "/Z[iI]" "/Z7" ${flag_var} "${${flag_var}}")
|
||||
endif(${flag_var} MATCHES "/Z[iI]")
|
||||
endforeach(flag_var)
|
||||
endif(MSVC_Z7_OVERRIDE)
|
||||
foreach(flag_var
|
||||
CMAKE_SHARED_LINKER_FLAGS_DEBUG CMAKE_STATIC_LINKER_FLAGS_DEBUG
|
||||
CMAKE_EXE_LINKER_FLAGS_DEBUG CMAKE_MODULE_LINKER_FLAGS_DEBUG)
|
||||
if(${flag_var} MATCHES "/INCREMENTAL" AND NOT ${flag_var} MATCHES "/INCREMENTAL:NO")
|
||||
string(REGEX REPLACE "/INCREMENTAL" "/INCREMENTAL:NO" ${flag_var} "${${flag_var}}")
|
||||
endif()
|
||||
endforeach(flag_var)
|
||||
endif(MSVC)
|
||||
|
||||
if (ANDROID OR IOS)
|
||||
set(BUILD_ATEN_MOBILE ON)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -46,13 +46,15 @@ endif()
|
|||
# 1. Replace /Zi and /ZI with /Z7
|
||||
# 2. Switch off incremental linking in debug builds
|
||||
if (MSVC)
|
||||
foreach(flag_var
|
||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||
if(${flag_var} MATCHES "/Z[iI]")
|
||||
string(REGEX REPLACE "/Z[iI]" "/Z7" ${flag_var} "${${flag_var}}")
|
||||
endif(${flag_var} MATCHES "/Z[iI]")
|
||||
endforeach(flag_var)
|
||||
if(MSVC_Z7_OVERRIDE)
|
||||
foreach(flag_var
|
||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||
if(${flag_var} MATCHES "/Z[iI]")
|
||||
string(REGEX REPLACE "/Z[iI]" "/Z7" ${flag_var} "${${flag_var}}")
|
||||
endif(${flag_var} MATCHES "/Z[iI]")
|
||||
endforeach(flag_var)
|
||||
endif(MSVC_Z7_OVERRIDE)
|
||||
foreach(flag_var
|
||||
CMAKE_SHARED_LINKER_FLAGS_DEBUG CMAKE_STATIC_LINKER_FLAGS_DEBUG
|
||||
CMAKE_EXE_LINKER_FLAGS_DEBUG CMAKE_MODULE_LINKER_FLAGS_DEBUG)
|
||||
|
|
|
|||
|
|
@ -149,6 +149,7 @@ def run_cmake(version,
|
|||
cflags = os.getenv('CFLAGS', "") + " " + os.getenv('CPPFLAGS', "")
|
||||
ldflags = os.getenv('LDFLAGS', "")
|
||||
if IS_WINDOWS:
|
||||
cmake_defines(cmake_args, MSVC_Z7_OVERRIDE=os.getenv('MSVC_Z7_OVERRIDE', "ON"))
|
||||
cflags += " /EHa"
|
||||
|
||||
mkdir_p(install_dir)
|
||||
|
|
|
|||
Loading…
Reference in a new issue