diff options
author | Martijn Berger <martijn.berger@gmail.com> | 2016-03-31 14:45:33 +0300 |
---|---|---|
committer | Martijn Berger <martijn.berger@gmail.com> | 2016-03-31 14:46:14 +0300 |
commit | 4ec95d621ada1ffe9df742e0afee00679ce137ad (patch) | |
tree | 0fbf9165dc1dd42d23700612f55bde336059b02c | |
parent | e2059380de131dacabcfa876368d7aab913857cb (diff) |
CMAKE / msvc openmp, delay loading of openmp dll so we can set environment
variable before it is loaded
-rw-r--r-- | CMakeLists.txt | 11 | ||||
-rw-r--r-- | source/creator/creator.c | 5 |
2 files changed, 16 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a03e8fa86e..99c07996598 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1308,6 +1308,17 @@ elseif(WIN32) set(PLATFORM_LINKFLAGS_DEBUG "/IGNORE:4099 /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib") + # Use dynamic loading for OpenMP + if(WITH_OPENMP) + if(MSVC_VERSION EQUAL 1800) + set(OPENMP_DLL_NAME "vcomp120") + else() + set(OPENMP_DLL_NAME "vcomp140") + endif() + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /DELAYLOAD:${OPENMP_DLL_NAME}.dll delayimp.lib") + set(PLATFORM_LINKFLAGS_DEBUG "${PLATFORM_LINKFLAGS_DEBUG} /DELAYLOAD::${OPENMP_DLL_NAME}d.dll delayimp.lib") + endif() + if(NOT DEFINED LIBDIR) # Setup 64bit and 64bit windows systems diff --git a/source/creator/creator.c b/source/creator/creator.c index 2c2af7c199a..1010c9f06c8 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -205,6 +205,11 @@ int main( #ifdef WIN32 + /* We delay loading of openmp so we can set the policy here. */ +# if defined(_MSC_VER) + _putenv_s("OMP_WAIT_POLICY", "PASSIVE"); +# endif + /* FMA3 support in the 2013 CRT is broken on Vista and Windows 7 RTM (fixed in SP1). Just disable it. */ # if defined(_MSC_VER) && defined(_M_X64) _set_FMA3_enable(0); |