Fix tests failing on AMD Ryzen, due TBB initialization order issue

Similar fix as the one we did for the blender executable, see T72015.
This commit is contained in:
Brecht Van Lommel 2020-01-31 12:51:35 +01:00
parent a075f45526
commit c82b8c5944
2 changed files with 14 additions and 13 deletions

@ -40,9 +40,14 @@ macro(BLENDER_SRC_GTEST_EX)
add_executable(${TARGET_NAME} ${ARG_SRC} ${MANIFEST})
target_include_directories(${TARGET_NAME} PUBLIC "${TEST_INC}")
target_include_directories(${TARGET_NAME} SYSTEM PUBLIC "${TEST_INC_SYS}")
target_link_libraries(${TARGET_NAME} ${ARG_EXTRA_LIBS} ${PLATFORM_LINKLIBS})
if(WITH_TBB)
# Force TBB libraries to be in front of MKL (part of OpenImageDenoise), so
# that it is initialized before MKL and static library initialization order
# issues are avoided.
target_link_libraries(${TARGET_NAME} ${TBB_LIBRARIES})
endif()
target_link_libraries(${TARGET_NAME}
${ARG_EXTRA_LIBS}
${PLATFORM_LINKLIBS}
bf_testing_main
bf_intern_eigen
bf_intern_guardedalloc

@ -38,20 +38,16 @@ blender_include_dirs(
)
set(LIB
# This forces TBB libraries to be in front of MKL (which is a part of OpenImageDenoise).
#
# The need of this comes to need to ensure static libraries initialization order, making it
# so TBB is initialized prior to MKL (or any other dpeendnecy).
#
# This isn't fully robust but seems to work.
${TBB_LIBRARIES}
bf_windowmanager
)
# Note: this should not be needed, but causes issues in some situations:
# See reply to daf290dcc80c.
if(WITH_TBB AND WITH_OPENIMAGEDENOISE)
if(WITH_TBB)
# Force TBB libraries to be in front of MKL (part of OpenImageDenoise), so
# that it is initialized before MKL and static library initialization order
# issues are avoided.
#
# This isn't fully robust but seems to work.
list(INSERT LIB 0 ${TBB_LIBRARIES})
list(INSERT LIB 0 bf_blenkernel)
endif()