From: ddzama Date: Mon, 3 Oct 2022 07:37:14 +0000 (+0300) Subject: 0033147: [Regression to 7.6.3] Coding, Configuration - CMake Error TBB "Directory... X-Git-Tag: V7_7_0~20 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=92f1875fc025d1ba6c65b0815f40dabc1aa331cb;p=occt.git 0033147: [Regression to 7.6.3] Coding, Configuration - CMake Error TBB "Directory is not set". Previous approach do not taking into account, that oneTBB library may be installed in the system folder on Linux. So, solve the problem it is proposed to employ find_package utility, that works great as on Windows, as on Linux. --- diff --git a/adm/cmake/tbb.cmake b/adm/cmake/tbb.cmake index c39a1a9f2e..4e5f724ac2 100644 --- a/adm/cmake/tbb.cmake +++ b/adm/cmake/tbb.cmake @@ -1,262 +1,240 @@ # tbb -if (NOT DEFINED 3RDPARTY_DIR) - message (FATAL_ERROR "3RDPARTY_DIR is not defined.") -endif() - -if ((NOT EXISTS "${3RDPARTY_DIR}") OR ("${3RDPARTY_DIR}" STREQUAL "")) - message (FATAL_ERROR "Directory ${3RDPARTY_DIR} is not set.") +if (MSVC AND BUILD_SHARED_LIBS) + add_definitions (-D__TBB_NO_IMPLICIT_LINKAGE) + add_definitions (-D__TBBMALLOC_NO_IMPLICIT_LINKAGE) endif() if (NOT DEFINED INSTALL_TBB AND BUILD_SHARED_LIBS) set (INSTALL_TBB OFF CACHE BOOL "${INSTALL_TBB_DESCR}") endif() -# tbb directory +# Initialize tbb directory. if (NOT DEFINED 3RDPARTY_TBB_DIR) set (3RDPARTY_TBB_DIR "" CACHE PATH "The directory containing tbb") endif() -if (MSVC AND BUILD_SHARED_LIBS) - add_definitions (-D__TBB_NO_IMPLICIT_LINKAGE) - add_definitions (-D__TBBMALLOC_NO_IMPLICIT_LINKAGE) -endif() - -# include occt macros. compiler_bitness, os_wiht_bit, compiler -OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") +if (WIN32) + if (NOT DEFINED 3RDPARTY_DIR) + message (FATAL_ERROR "3RDPARTY_DIR is not defined.") + endif() + if ("${3RDPARTY_DIR}" STREQUAL "") + message (FATAL_ERROR "3RDPARTY_DIR is empty string.") + endif() + if (NOT EXISTS "${3RDPARTY_DIR}") + message (FATAL_ERROR "3RDPARTY_DIR is not exist.") + endif() -# specify TBB folder in connectin with 3RDPARTY_DIR -if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") - #CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_DIR 3RDPARTY_TBB_DIR PATH "The directory containing tbb") + # Below, we have correct 3RDPARTY_DIR. - if (NOT 3RDPARTY_TBB_DIR OR NOT EXISTS "${3RDPARTY_TBB_DIR}") + # Initialize TBB folder in connectin with 3RDPARTY_DIR. + if (("${3RDPARTY_TBB_DIR}" STREQUAL "") OR (NOT EXISTS "${3RDPARTY_TBB_DIR}")) FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" TBB TBB_DIR_NAME) if (TBB_DIR_NAME) set (3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${TBB_DIR_NAME}" CACHE PATH "The directory containing tbb" FORCE) endif() endif() -else() - #set (3RDPARTY_TBB_DIR "" CACHE PATH "The directory containing TBB" FORCE) -endif() - -if (NOT DEFINED 3RDPARTY_TBB_INCLUDE_DIR) - set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the TBB") -endif() - -if (3RDPARTY_TBB_DIR AND EXISTS "${3RDPARTY_TBB_DIR}") - # check 3RDPARTY_TBB_INCLUDE_DIR for consictency with specified 3RDPARTY_TBB_DIR - CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_TBB_DIR 3RDPARTY_TBB_INCLUDE_DIR PATH "The directory containing headers of the TBB") -endif() - -# tbb.h -if (NOT 3RDPARTY_TBB_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_TBB_INCLUDE_DIR}") - set (HEADER_NAMES tbb.h tbb/tbb.h) - - # set 3RDPARTY_TBB_INCLUDE_DIR as notfound, otherwise find_library can't assign a new value to 3RDPARTY_TBB_INCLUDE_DIR - set (3RDPARTY_TBB_INCLUDE_DIR "3RDPARTY_TBB_INCLUDE_DIR-NOTFOUND" CACHE PATH "the path to tbb.h" FORCE) - - if (3RDPARTY_TBB_DIR AND EXISTS "${3RDPARTY_TBB_DIR}") - find_path (3RDPARTY_TBB_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATHS ${3RDPARTY_TBB_DIR} - PATH_SUFFIXES include - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_path (3RDPARTY_TBB_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATH_SUFFIXES include - CMAKE_FIND_ROOT_PATH_BOTH) - endif() -endif() - -if (3RDPARTY_TBB_INCLUDE_DIR AND EXISTS "${3RDPARTY_TBB_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TBB_INCLUDE_DIR}") -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR) - - set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "the path to tbb.h" FORCE) -endif() - -# Throw execution if 3RDPARTY_TBB_DIR is equal to void string. -if ("${3RDPARTY_TBB_DIR}" STREQUAL "") - message (FATAL_ERROR "Directory with one TBB have not found.") -endif() - -# Searching TBBConfig.cmake and TBBTargets-release.cmake in 3RDPARTY_TBB_DIR -# TBBConfig.cmake - is required, TBBTargets-release.cmake is optional. -file (GLOB_RECURSE TBB_CONFIG_CMAKE_FILE "${3RDPARTY_TBB_DIR}/*TBBConfig.cmake") -if (NOT EXISTS "${TBB_CONFIG_CMAKE_FILE}") - message (FATAL_ERROR "TBBConfig.cmake has not been found.") -endif() -include ("${TBB_CONFIG_CMAKE_FILE}") - -file (GLOB_RECURSE TBB_TARGET_CMAKE_FILE "${3RDPARTY_TBB_DIR}/*TBBTargets-release.cmake") -if (EXISTS "${TBB_TARGET_CMAKE_FILE}") - include ("${TBB_TARGET_CMAKE_FILE}") -endif() - -# We do not know, full path to file is pointed, or local. -# So, we should check it and output FULL PATH to FILE. -macro (TBB_FILE_NAME_TO_FILEPATH FL_NAME FL_PATH) - if (EXISTS "${FL_NAME}") - # FL_NAME is full path. - set (${FL_PATH} "${FL_NAME}") - else() - # Here we deal with local path, so assign to var full path to file. - # Acquire full path. - set (${FL_PATH} "${3RDPARTY_TBB_DIR}${FL_NAME}") - if (NOT EXISTS "${${FL_PATH}}") - message (FATAL_ERROR "TBB: needed file not found (${FL_PATH}).") + # Here we have full path name to installation directory of TBB. + # Employ it. + if (EXISTS "${3RDPARTY_TBB_DIR}") + find_package ( + TBB 2021.5 + PATHS "${3RDPARTY_TBB_DIR}" NO_DEFAULT_PATH + REQUIRED + CONFIG) + + # Achive include directory + get_target_property (TBB_INCLUDE_DIR TBB::tbb INTERFACE_INCLUDE_DIRECTORIES) + if (NOT DEFINED 3RDPARTY_TBB_INCLUDE_DIR) + set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the TBB") + endif() + if (EXISTS "${TBB_INCLUDE_DIR}") + set (3RDPARTY_TBB_INCLUDE_DIR "${TBB_INCLUDE_DIR}" CACHE PATH "The directory containing headers of the TBB" FORCE) + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TBB_INCLUDE_DIR}") + else() + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR) endif() - endif() -endmacro() - -# TARGET_NAME - is target name from oneTBB cmake file -# it is either "TBB::tbb", or "TBB::tbbmalloc" -# LIB_NAME_UC - is library id (TBB or TBBMALLOC) -# PROPERTY_TO_SET - LIBRARY or DLL -macro (WIN_TBB_PARSE TARGET_NAME LIB_NAME PROPERTY_TO_SET) - set (FILE_NAME "") - set (FILE_PATH "") - set (FILE_DIR "") - - if ("${PROPERTY_TO_SET}" STREQUAL "LIBRARY") - get_target_property (FILE_NAME "${TARGET_NAME}" IMPORTED_IMPLIB_RELEASE) - else() - get_target_property (FILE_NAME "${TARGET_NAME}" IMPORTED_LOCATION_RELEASE) - endif() - - # acquire full path - TBB_FILE_NAME_TO_FILEPATH("${FILE_NAME}" FILE_PATH) - - get_filename_component (FILE_NAME "${FILE_PATH}" NAME) - get_filename_component (FILE_DIR "${FILE_PATH}" DIRECTORY) - - if (NOT EXISTS "${FILE_DIR}/${FILE_NAME}") - set (3RDPARTY_${LIB_NAME}_${PROPERTY_TO_SET} "" CACHE FILEPATH "${LIB_NAME} library" FORCE) - set (3RDPARTY_${LIB_NAME}_${PROPERTY_TO_SET}_DIR "" CACHE PATH "The directory containing ${LIB_NAME} shared library") - if ("${PROPERTY_TO_SET}" STREQUAL "LIBRARY") - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${LIB_NAME}_${PROPERTY_TO_SET}_DIR) + separate_arguments (CSF_TBB) + foreach (LIB IN LISTS CSF_TBB) + string(TOLOWER "${LIB}" LIB_LOWER) + string(TOUPPER "${LIB}" LIB_UPPER) + + # Achive *.lib files and directory containing it. + get_target_property (TBB_LIB_FILE "TBB::${LIB_LOWER}" IMPORTED_IMPLIB_RELEASE) + # Reserve cache variable for *.lib. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY) + set (3RDPARTY_${LIB_UPPER}_LIBRARY "" CACHE FILEPATH "${LIB_UPPER} library (*.lib)") + endif() + # Reserve cache variable for directory containing *.lib file. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) + set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR "" CACHE PATH "The directory containing ${LIB_UPPER} library (*.lib)") + endif() + if (EXISTS "${TBB_LIB_FILE}") + set (3RDPARTY_${LIB_UPPER}_LIBRARY + "${TBB_LIB_FILE}" + CACHE FILEPATH + "${LIB_UPPER} library (*.lib)" + FORCE) + get_filename_component (TBB_LIB_FILE_DIRECTORY "${TBB_LIB_FILE}" DIRECTORY) + set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR + "${TBB_LIB_FILE_DIRECTORY}" + CACHE PATH + "The directory containing ${LIB_UPPER} library (*.lib)" + FORCE) + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${LIB_UPPER}_LIBRARY_DIR}") + else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) + endif() + + # Achive *.dll files and directory containing it. + get_target_property (TBB_DLL_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_RELEASE) + # Reserve cache variable for *.dll. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_DLL) + set (3RDPARTY_${LIB_UPPER}_DLL "" CACHE FILEPATH "${LIB_UPPER} library (*.dll)") + endif() + # Reserve cache variable for directory containing *.dll file. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_DLL_DIR) + set (3RDPARTY_${LIB_UPPER}_DLL_DIR "" CACHE PATH "The directory containing ${LIB_UPPER} library (*.dll)") + endif() + if (EXISTS "${TBB_DLL_FILE}") + set (3RDPARTY_${LIB_UPPER}_DLL + "${TBB_DLL_FILE}" + CACHE FILEPATH + "${LIB_UPPER} library (*.dll)" + FORCE) + get_filename_component (TBB_DLL_FILE_DIRECTORY "${TBB_DLL_FILE}" DIRECTORY) + set (3RDPARTY_${LIB_UPPER}_DLL_DIR + "${TBB_DLL_FILE_DIRECTORY}" + CACHE PATH + "The directory containing ${LIB_UPPER} library (*.dll)" + FORCE) + list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${LIB_UPPER}_DLL_DIR}") + else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${LIB_UPPER}_DLL_DIR) + endif() + + # install *.dll (tbb & tbbmalloc) + if (INSTALL_TBB) + OCCT_MAKE_OS_WITH_BITNESS() + OCCT_MAKE_COMPILER_SHORT_NAME() + + if (SINGLE_GENERATOR) + install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} DESTINATION "${INSTALL_DIR_BIN}") + else() + install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS Release DESTINATION "${INSTALL_DIR_BIN}") + install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS RelWithDebInfo DESTINATION "${INSTALL_DIR_BIN}i") + install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS Debug DESTINATION "${INSTALL_DIR_BIN}d") + endif() + endif() + mark_as_advanced (3RDPARTY_${LIB_UPPER}_LIBRARY 3RDPARTY_${LIB_UPPER}_DLL) + endforeach() + if (INSTALL_TBB) + set (USED_3RDPARTY_TBB_DIR "") else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${LIB_NAME}_${PROPERTY_TO_SET}_DIR) + # the *.dll/*.so* directory for using by the executable + set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_DLL_DIR}) endif() else() - set (3RDPARTY_${LIB_NAME}_${PROPERTY_TO_SET} "${FILE_DIR}/${FILE_NAME}" CACHE FILEPATH "${LIB_NAME} library" FORCE) - set (3RDPARTY_${LIB_NAME}_${PROPERTY_TO_SET}_DIR "${FILE_DIR}" CACHE PATH "The directory containing ${LIB_NAME} shared library") - - if ("${PROPERTY_TO_SET}" STREQUAL "LIBRARY") - list (APPEND 3RDPARTY_LIBRARY_DIRS "${FILE_DIR}") + message (FATAL_ERROR "Installation directory with TBB is not exist.") + endif() +else () + # NOT WIN32 branch + if ((DEFINED 3RDPARTY_DIR) AND (NOT "${3RDPARTY_DIR}" STREQUAL "") AND (EXISTS "${3RDPARTY_DIR}")) + # Here, we have correct 3RDPARTY_DIR. + # Trying to specify TBB folder in connection with 3RDPARTY_DIR + if (("${3RDPARTY_TBB_DIR}" STREQUAL "") OR (NOT EXISTS "${3RDPARTY_TBB_DIR}")) + FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" TBB TBB_DIR_NAME) + if (TBB_DIR_NAME) + set (3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${TBB_DIR_NAME}" CACHE PATH "The directory containing tbb" FORCE) + endif() + endif() + if ((NOT "${3RDPARTY_TBB_DIR}" STREQUAL "") AND (EXISTS "${3RDPARTY_TBB_DIR}")) + # Find TBB 2021.5 in existing directory. + find_package ( + TBB 2021.5 + PATHS "${3RDPARTY_TBB_DIR}" NO_DEFAULT_PATH + REQUIRED + CONFIG) else() - list (APPEND 3RDPARTY_DLL_DIRS "${FILE_DIR}") + # Find TBB 2021.5 in system directory. + find_package ( + TBB 2021.5 + REQUIRED + CONFIG) endif() + else() + # Find TBB 2021.5 in system directory. + find_package ( + TBB 2021.5 + REQUIRED + CONFIG) endif() -endmacro() - -# TARGET_NAME - is target name from oneTBB cmake file -# it is either "TBB::tbb", or "TBB::tbbmalloc" -# LIB_NAME_UC - is library id (TBB or TBBMALLOC) -macro (LIN_TBB_PARSE TARGET_NAME LIB_NAME) - set (FILE_NAME "") - set (FILE_PATH "") - set (FILE_DIR "") - - get_target_property (FILE_NAME "${TARGET_NAME}" IMPORTED_LOCATION_RELEASE) - - # acquire full path - TBB_FILE_NAME_TO_FILEPATH("${FILE_NAME}" FILE_PATH) - - get_filename_component (FILE_NAME "${FILE_PATH}" NAME) - get_filename_component (FILE_DIR "${FILE_PATH}" DIRECTORY) + # TBB has been configured (in other case FATAL_ERROR occures). - if (NOT EXISTS "${FILE_DIR}/${FILE_NAME}") - set (3RDPARTY_${LIB_NAME}_LIBRARY "" CACHE FILEPATH "${LIB_NAME} library" FORCE) - set (3RDPARTY_${LIB_NAME}_LIBRARY_DIR "" CACHE PATH "The directory containing ${LIB_NAME} shared library") - - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${LIB_NAME}_LIBRARY_DIR) + # Achive include directory. + get_target_property (TBB_INCLUDE_DIR TBB::tbb INTERFACE_INCLUDE_DIRECTORIES) + if (NOT DEFINED 3RDPARTY_TBB_INCLUDE_DIR) + set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the TBB") + endif() + if (EXISTS "${TBB_INCLUDE_DIR}") + set (3RDPARTY_TBB_INCLUDE_DIR "${TBB_INCLUDE_DIR}" CACHE PATH "The directory containing headers of the TBB" FORCE) + list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TBB_INCLUDE_DIR}") else() - set (3RDPARTY_${LIB_NAME}_LIBRARY "${FILE_DIR}/${FILE_NAME}" CACHE FILEPATH "${LIB_NAME} library" FORCE) - set (3RDPARTY_${LIB_NAME}_LIBRARY_DIR "${FILE_DIR}" CACHE PATH "The directory containing ${LIB_NAME} shared library") - - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${LIB_NAME}_LIBRARY_DIR}") + list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR) endif() -endmacro() - -if (WIN32) - # Here we should set: - # - 3RDPARTY_*_LIBRARY - # - 3RDPARTY_*_LIBRARY_DIR - # - 3RDPARTY_*_DLL - # - 3RDPARTY_*_DLL_DIR - # where * - is TBB or TBBMALLOC separate_arguments (CSF_TBB) foreach (LIB IN LISTS CSF_TBB) string(TOLOWER "${LIB}" LIB_LOWER) string(TOUPPER "${LIB}" LIB_UPPER) - WIN_TBB_PARSE("TBB::${LIB_LOWER}" "${LIB_UPPER}" "LIBRARY") - WIN_TBB_PARSE("TBB::${LIB_LOWER}" "${LIB_UPPER}" "DLL") - endforeach() -else() - # Here we should set: - # - 3RDPARTY_*_LIBRARY - # - 3RDPARTY_*_LIBRARY_DIR - - separate_arguments (CSF_TBB) - foreach (LIB IN LISTS CSF_TBB) - string(TOLOWER "${LIB}" LIB_LOWER) - string(TOUPPER "${LIB}" LIB_UPPER) - LIN_TBB_PARSE("TBB::${LIB_LOWER}" "${LIB_UPPER}") - endforeach() -endif() -# install tbb/tbbmalloc -if (INSTALL_TBB) - OCCT_MAKE_OS_WITH_BITNESS() - OCCT_MAKE_COMPILER_SHORT_NAME() - - if (WIN32) - if (SINGLE_GENERATOR) - foreach (LIB IN LISTS CSF_TBB) - string(TOUPPER "${LIB}" LIB_UPPER) - install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} DESTINATION "${INSTALL_DIR_BIN}") - endforeach() + # Achive *.so files and directory containing it. + get_target_property (TBB_SO_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_RELEASE) + # Reserve cache variable for *.so. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY) + set (3RDPARTY_${LIB_UPPER}_LIBRARY "" CACHE FILEPATH "${LIB_UPPER} library (*.so)") + endif() + # Reserve cache variable for directory containing *.so file. + if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) + set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR "" CACHE PATH "The directory containing ${LIB_UPPER} library (*.so)") + endif() + if (EXISTS "${TBB_SO_FILE}") + set (3RDPARTY_${LIB_UPPER}_LIBRARY + "${TBB_SO_FILE}" + CACHE FILEPATH + "${LIB_UPPER} library (*.so)" + FORCE) + get_filename_component (TBB_SO_FILE_DIRECTORY "${TBB_SO_FILE}" DIRECTORY) + set (3RDPARTY_${LIB_UPPER}_LIBRARY_DIR + "${TBB_SO_FILE_DIRECTORY}" + CACHE PATH + "The directory containing ${LIB_UPPER} library (*.so)" + FORCE) + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${LIB_UPPER}_LIBRARY_DIR}") else() - foreach (LIB IN LISTS CSF_TBB) - string(TOUPPER "${LIB}" LIB_UPPER) - install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS Release DESTINATION "${INSTALL_DIR_BIN}") - install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS RelWithDebInfo DESTINATION "${INSTALL_DIR_BIN}i") - install (FILES ${3RDPARTY_${LIB_UPPER}_DLL} CONFIGURATIONS Debug DESTINATION "${INSTALL_DIR_BIN}d") - endforeach() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${LIB_UPPER}_LIBRARY_DIR) endif() - else() - if (SINGLE_GENERATOR) - foreach (LIB IN LISTS CSF_TBB) - string(TOUPPER "${LIB}" LIB_UPPER) + + # install *.so* (tbb & tbbmalloc) + if (INSTALL_TBB) + OCCT_MAKE_OS_WITH_BITNESS() + OCCT_MAKE_COMPILER_SHORT_NAME() + + if (SINGLE_GENERATOR) install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} DESTINATION "${INSTALL_DIR_LIB}") - endforeach() - else() - foreach (LIB IN LISTS CSF_TBB) - string(TOUPPER "${LIB}" LIB_UPPER) + else() install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} CONFIGURATIONS Release DESTINATION "${INSTALL_DIR_LIB}") install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} CONFIGURATIONS RelWithDebInfo DESTINATION "${INSTALL_DIR_LIB}i") install (FILES ${3RDPARTY_${LIB_UPPER}_LIBRARY} CONFIGURATIONS Debug DESTINATION "${INSTALL_DIR_LIB}d") - endforeach() + endif() endif() - endif() -endif() -foreach (LIB IN LISTS CSF_TBB) - string(TOUPPER "${LIB}" LIB_UPPER) - mark_as_advanced (3RDPARTY_${LIB_UPPER}_LIBRARY 3RDPARTY_${LIB_UPPER}_DLL) -endforeach() - -if (INSTALL_TBB) - set (USED_3RDPARTY_TBB_DIR "") -else() - # the library directory for using by the executable - if (WIN32) - set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_DLL_DIR}) + endforeach() + if (INSTALL_TBB) + set (USED_3RDPARTY_TBB_DIR "") else() + # the *.so* directory for using by the executable set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_LIBRARY_DIR}) endif() endif()