diff --git a/adm/cmake/3rdparty_macro.cmake b/adm/cmake/3rdparty_macro.cmake index ac8a0ea729..c19724abf3 100644 --- a/adm/cmake/3rdparty_macro.cmake +++ b/adm/cmake/3rdparty_macro.cmake @@ -6,6 +6,137 @@ endif() set(3RDPARTY_MACRO_ALREADY_INCLUDED 1) +macro(THIRDPARTY_PRODUCT_LIBRARY PRODUCT_NAME LIBRARY_CSF_NAME LIBRARY_PATH_DEBUG_SUFFIX VARIABLE_DEBUG_SUFFIX) + OCCT_MAKE_OS_WITH_BITNESS() + OCCT_MAKE_COMPILER_SHORT_NAME() + + foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) + string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") +# if (BUILD_SHARED_LIBS) + # library + if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}") + set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a) + + set (${PRODUCT_NAME}_PATH_SUFFIXES lib${LIBRARY_PATH_DEBUG_SUFFIX}) + if (WIN32) + set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} win${COMPILER_BITNESS}/${COMPILER}/lib${LIBRARY_PATH_DEBUG_SUFFIX}) + set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} lib${LIBRARY_PATH_DEBUG_SUFFIX}/win${COMPILER_BITNESS}) + endif() + if (ANDROID) + set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} libs/${ANDROID_ABI}) + endif() + if(UNIX AND NOT APPLE AND NOT ANDROID) + set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} lib/linux${COMPILER_BITNESS}) + endif() + + # set 3RDPARTY_${PRODUCT_NAME}_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_LIBRARY + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + + if ((3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") OR (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}${VARIABLE_DEBUG_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}${VARIABLE_DEBUG_SUFFIX}}")) + find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} NAMES ${LIBRARY_NAME} + PATHS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}${VARIABLE_DEBUG_SUFFIX}}" "${3RDPARTY_${PRODUCT_NAME}_DIR}" + PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + if ("${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}-NOTFOUND") + # find directory recursive + FIND_SUBDIRECTORY (${3RDPARTY_${PRODUCT_NAME}_DIR} "${${PRODUCT_NAME}_PATH_SUFFIXES}" SUBDIR_NAME) + if (NOT "${SUBDIR_NAME}" STREQUAL "") + find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} NAMES ${LIBRARY_NAME_SUFFIX} + PATHS "${SUBDIR_NAME}" + PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH) + endif() + endif() + else() + find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} NAMES ${LIBRARY_NAME} + PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} + CMAKE_FIND_ROOT_PATH_BOTH) + endif() + + if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}") + get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}" PATH) + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + else() + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + endif() + endif() + + if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}") + list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}") + else() + list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}) + + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + endif() + + # shared library + if (WIN32) + if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}") + + set (CMAKE_FIND_LIBRARY_SUFFIXES .dll) + + # set 3RDPARTY_${PRODUCT_NAME}_DLL as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_DLL + set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + + if ((3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") OR (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}${VARIABLE_DEBUG_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}${VARIABLE_DEBUG_SUFFIX}}")) + find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} NAMES ${LIBRARY_NAME} + PATHS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}${VARIABLE_DEBUG_SUFFIX}}" "${3RDPARTY_${PRODUCT_NAME}_DIR}" + PATH_SUFFIXES bin${LIBRARY_PATH_DEBUG_SUFFIX} win${COMPILER_BITNESS}/${COMPILER}/bin${LIBRARY_PATH_DEBUG_SUFFIX} bin${LIBRARY_PATH_DEBUG_SUFFIX}/win${COMPILER_BITNESS} + NO_DEFAULT_PATH) + if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} STREQUAL "3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}-NOTFOUND") + # find directory recursive + FIND_SUBDIRECTORY (${3RDPARTY_${PRODUCT_NAME}_DIR} bin${LIBRARY_PATH_DEBUG_SUFFIX} SUBDIR_NAME) + if (NOT "${SUBDIR_NAME}" STREQUAL "") + find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} NAMES ${LIBRARY_NAME_SUFFIX} + PATHS "${SUBDIR_NAME}" + PATH_SUFFIXES bin${LIBRARY_PATH_DEBUG_SUFFIX} + NO_DEFAULT_PATH) + endif() + endif() + else() + find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} NAMES ${LIBRARY_NAME} PATH_SUFFIXES bin${LIBRARY_PATH_DEBUG_SUFFIX}) + endif() + + if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}") + get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}" PATH) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + else() + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + + set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} "" CACHE FILEPATH "${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + endif() + endif() + + if (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} OR EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}") + list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}}") + else() + list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}) + endif() + endif() + + if (WIN32) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIRS${VARIABLE_DEBUG_SUFFIX} "") + else() + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS${VARIABLE_DEBUG_SUFFIX} "") + endif() + + foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) + string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") + if (WIN32) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIRS${VARIABLE_DEBUG_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}};${3RDPARTY_${PRODUCT_NAME}_DLL_DIRS}") + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS${VARIABLE_DEBUG_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") + else() + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS${VARIABLE_DEBUG_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}:${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS}") + endif() + endforeach() + + mark_as_advanced (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX} 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}${VARIABLE_DEBUG_SUFFIX}) +# endif() + endforeach() +endmacro() + macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME_DEBUG_SUFFIX) if (NOT DEFINED INSTALL_${PRODUCT_NAME} AND BUILD_SHARED_LIBS) @@ -53,12 +184,27 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} OR NOT 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}") set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME} "" CACHE FILEPATH "${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) endif() - endif() - if (WIN32) if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}) set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") endif() + + #Debug + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}_DEBUG OR NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}_DEBUG OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}_DEBUG}") + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}_DEBUG "" CACHE FILEPATH "${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + endif() + + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}_DEBUG) + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}_DEBUG "" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"") + endif() + + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}_DEBUG OR NOT 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}_DEBUG OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}_DEBUG}") + set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}_DEBUG "" CACHE FILEPATH "${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + endif() + + if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}_DEBUG) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}_DEBUG "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") + endif() endif() endif() @@ -84,6 +230,25 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME else() CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") endif() + + #Debug + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}_DEBUG FILEPATH "the path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"") + + if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}_DEBUG AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}_DEBUG}") + get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}_DEBUG "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME}_DEBUG}" PATH) + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}_DEBUG "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}_DEBUG}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + else() + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}_DEBUG PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"") + endif() + + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}_DEBUG FILEPATH "the path to ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") + + if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}_DEBUG AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}_DEBUG}") + get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}_DEBUG "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME}_DEBUG}" PATH) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}_DEBUG "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}_DEBUG}" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + else() + CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}_DEBUG PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"") + endif() endif() endif() endif() @@ -116,192 +281,97 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "" CACHE FILEPATH "The path to ${HEADER_NAME}" FORCE) endif() - foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) - string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") -# if (BUILD_SHARED_LIBS) - # library - if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}") - set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a) - - set (${PRODUCT_NAME}_PATH_SUFFIXES lib) - if (WIN32) - set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} win${COMPILER_BITNESS}/${COMPILER}/lib) - set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} lib/win${COMPILER_BITNESS}) - endif() - if (ANDROID) - set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} libs/${ANDROID_ABI}) - endif() - if(UNIX AND NOT APPLE AND NOT ANDROID) - set (${PRODUCT_NAME}_PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} lib/linux${COMPILER_BITNESS}) - endif() - - # set 3RDPARTY_${PRODUCT_NAME}_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_LIBRARY - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} "3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - - if ((3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") OR (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}")) - find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} - PATHS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME}}" "${3RDPARTY_${PRODUCT_NAME}_DIR}" - PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - if ("${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}-NOTFOUND") - # find directory recursive - FIND_SUBDIRECTORY (${3RDPARTY_${PRODUCT_NAME}_DIR} "${${PRODUCT_NAME}_PATH_SUFFIXES}" SUBDIR_NAME) - if (NOT "${SUBDIR_NAME}" STREQUAL "") - find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME_SUFFIX} - PATHS "${SUBDIR_NAME}" - PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - endif() - endif() - else() - find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} - PATH_SUFFIXES ${${PRODUCT_NAME}_PATH_SUFFIXES} - CMAKE_FIND_ROOT_PATH_BOTH) - endif() - - if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}") - get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}" PATH) - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - else() - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} "" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - endif() + THIRDPARTY_PRODUCT_LIBRARY (${PRODUCT_NAME} ${LIBRARY_CSF_NAME} "" "") + if (NOT SINGLE_GENERATOR) + THIRDPARTY_PRODUCT_LIBRARY (${PRODUCT_NAME} ${LIBRARY_CSF_NAME} "d" "_DEBUG") + foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) + string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") + if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}_DEBUG) + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}_DEBUG "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) endif() - if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") - list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") - else() - list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}) - - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} "" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - endif() - - # shared library - if (WIN32) - if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}") - - set (CMAKE_FIND_LIBRARY_SUFFIXES .dll) - - # set 3RDPARTY_${PRODUCT_NAME}_DLL as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_DLL - set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} "3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) - - if ((3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}") OR (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}")) - find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} - PATHS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME}}" "${3RDPARTY_${PRODUCT_NAME}_DIR}" - PATH_SUFFIXES bin win${COMPILER_BITNESS}/${COMPILER}/bin bin/win${COMPILER_BITNESS} - NO_DEFAULT_PATH) - if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} STREQUAL "3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}-NOTFOUND") - # find directory recursive - FIND_SUBDIRECTORY (${3RDPARTY_${PRODUCT_NAME}_DIR} bin SUBDIR_NAME) - if (NOT "${SUBDIR_NAME}" STREQUAL "") - find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME_SUFFIX} - PATHS "${SUBDIR_NAME}" - PATH_SUFFIXES bin - NO_DEFAULT_PATH) - endif() - endif() - else() - find_library (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} NAMES ${LIBRARY_NAME} PATH_SUFFIXES bin) - endif() - - if (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}") - get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" PATH) - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) - else() - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) - - set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX} "" CACHE FILEPATH "${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) - endif() - endif() - - if (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} OR EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}") - list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}") - else() - list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}) + if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}_DEBUG) + set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}_DEBUG "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE) + if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}_DEBUG) + list (REMOVE_ITEM 3RDPARTY_NO_LIBS 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}_DEBUG) endif() endif() if (WIN32) - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIRS "") - else() - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS "") + if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}_DEBUG) + set (3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}_DEBUG "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" CACHE FILEPATH "${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + endif() + + if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}_DEBUG) + set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}_DEBUG "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library \"${LIBRARY_NAME}\"" FORCE) + if (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}_DEBUG) + list (REMOVE_ITEM 3RDPARTY_NO_DLLS 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}_DEBUG) + endif() + endif() endif() + endforeach() + endif() - foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) - string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") - if (WIN32) - set (3RDPARTY_${PRODUCT_NAME}_DLL_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}};${3RDPARTY_${PRODUCT_NAME}_DLL_DIRS}") - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}") - else() - set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}:${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIRS}") - endif() - endforeach() + set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "") - set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "") + if (INSTALL_${PRODUCT_NAME}) + set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "") - if (INSTALL_${PRODUCT_NAME}) - OCCT_MAKE_OS_WITH_BITNESS() - OCCT_MAKE_COMPILER_SHORT_NAME() - set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "") - - if (WIN32) - if (SINGLE_GENERATOR) - install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" DESTINATION "${INSTALL_DIR_BIN}") - else() - install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_BIN}") - install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_BIN}i") - install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_BIN}d") - endif() - else() - get_filename_component(ABS_PATH ${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}} REALPATH) - - if ("${PRODUCT_NAME}" STREQUAL "FREEIMAGE") - get_filename_component(FREEIMLIB ${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}} NAME) - - if (SINGLE_GENERATOR) - install (FILES "${ABS_PATH}" DESTINATION "${INSTALL_DIR_LIB}" RENAME ${FREEIMLIB}.3) - else() - install (FILES "${ABS_PATH}" - CONFIGURATIONS Release - DESTINATION "${INSTALL_DIR_LIB}" - RENAME ${FREEIMLIB}.3) - install (FILES "${ABS_PATH}" - CONFIGURATIONS RelWithDebInfo - DESTINATION "${INSTALL_DIR_LIB}i" - RENAME ${FREEIMLIB}.3) - install (FILES "${ABS_PATH}" - CONFIGURATIONS Debug - DESTINATION "${INSTALL_DIR_LIB}d" - RENAME ${FREEIMLIB}.3) - endif() - endif() - - endif() + if (WIN32) + if (SINGLE_GENERATOR) + install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" DESTINATION "${INSTALL_DIR_BIN}") else() - # the library directory for using by the executable - foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) - string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") - if (WIN32) - set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}};${USED_3RDPARTY_${PRODUCT_NAME}_DIRS}") - else() - set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}:${USED_3RDPARTY_${PRODUCT_NAME}_DIRS}") - endif() - endforeach() - if (WIN32) - set (USED_3RDPARTY_${PRODUCT_NAME}_DIR ${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}) + install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_BIN}") + install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_BIN}i") + install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}_DEBUG}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_BIN}d") + endif() + else() + get_filename_component(ABS_PATH ${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}} REALPATH) + + if ("${PRODUCT_NAME}" STREQUAL "FREEIMAGE") + get_filename_component(FREEIMLIB ${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}} NAME) + + if (SINGLE_GENERATOR) + install (FILES "${ABS_PATH}" DESTINATION "${INSTALL_DIR_LIB}" RENAME ${FREEIMLIB}.3) + else() + install (FILES "${ABS_PATH}" + CONFIGURATIONS Release + DESTINATION "${INSTALL_DIR_LIB}" + RENAME ${FREEIMLIB}.3) + install (FILES "${ABS_PATH}" + CONFIGURATIONS RelWithDebInfo + DESTINATION "${INSTALL_DIR_LIB}i" + RENAME ${FREEIMLIB}.3) + + get_filename_component(FREEIMLIB_DEBUG ${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}_DEBUG} NAME) + install (FILES "${ABS_PATH}" + CONFIGURATIONS Debug + DESTINATION "${INSTALL_DIR_LIB}d" + RENAME ${FREEIMLIB_DEBUG}.3) endif() endif() - mark_as_advanced (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX}) -# endif() - endforeach() + endif() + else() + # the library directory for using by the executable + foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}}) + string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}") + if (WIN32) + set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}};${USED_3RDPARTY_${PRODUCT_NAME}_DIRS}") + else() + set (USED_3RDPARTY_${PRODUCT_NAME}_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}:${USED_3RDPARTY_${PRODUCT_NAME}_DIRS}") + endif() + endforeach() + if (WIN32) + set (USED_3RDPARTY_${PRODUCT_NAME}_DIR ${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}) + endif() + endif() endmacro() macro (COMPLIANCE_PRODUCT_CONSISTENCY LIBNAME) @@ -364,25 +434,3 @@ macro (COMPLIANCE_PRODUCT_CONSISTENCY LIBNAME) endif() endif() endmacro() - -macro(CONFIGURE_DRACO_DEPS) - if (USE_DRACO) - set (USED_LIB_RELEASE ${3RDPARTY_DRACO_LIBRARY}) - if (WIN32) - set (USED_LIB_DEBUG ${3RDPARTY_DRACO_LIBRARY_DEBUG}) - else() - set (USED_LIB_DEBUG ${3RDPARTY_DRACO_LIBRARY}) - endif() - set (USED_LIB_CONF) - if (EXISTS ${USED_LIB_DEBUG}) - set (USED_LIB_CONF "$<$:${USED_LIB_DEBUG}>;${USED_LIB_CONF}") - endif() - if (EXISTS ${USED_LIB_RELEASE}) - set (USED_LIB_CONF "$<$:${USED_LIB_RELEASE}>;${USED_LIB_CONF}") - set (USED_LIB_CONF "$<$:${USED_LIB_RELEASE}>;${USED_LIB_CONF}") - endif() - if (DEFINED USED_LIB_CONF) - set_property (TARGET ${PROJECT_NAME} APPEND PROPERTY LINK_LIBRARIES "${USED_LIB_CONF}") - endif() - endif() -endmacro() diff --git a/adm/cmake/draco.cmake b/adm/cmake/draco.cmake index 30533b64de..d8bcb5f91f 100644 --- a/adm/cmake/draco.cmake +++ b/adm/cmake/draco.cmake @@ -1,98 +1,4 @@ # Draco - a library for a lossy vertex data compression, used as extension to glTF format. # https://github.com/google/draco -OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") - -if (NOT DEFINED 3RDPARTY_DRACO_DIR) - set (3RDPARTY_DRACO_DIR "" CACHE PATH "The directory containing Draco") -endif() - -if (NOT DEFINED 3RDPARTY_DRACO_INCLUDE_DIR) - set (3RDPARTY_DRACO_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the Draco") -endif() - -if (NOT DEFINED 3RDPARTY_DRACO_LIBRARY) - set (3RDPARTY_DRACO_LIBRARY "" CACHE FILEPATH "Draco library") -endif() - -if (NOT DEFINED 3RDPARTY_DRACO_LIBRARY_DIR) - set (3RDPARTY_DRACO_LIBRARY_DIR "" CACHE PATH "The directory containing Draco library") -endif() - -if (WIN32) - if (NOT DEFINED 3RDPARTY_DRACO_LIBRARY_DEBUG) - set (3RDPARTY_DRACO_LIBRARY_DEBUG "" CACHE FILEPATH "Draco debug library") - endif() - - if (NOT DEFINED 3RDPARTY_DRACO_LIBRARY_DIR_DEBUG) - set (3RDPARTY_DRACO_LIBRARY_DIR_DEBUG "" CACHE PATH "The directory containing Draco debug library") - endif() -endif() - -if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}") - if (NOT 3RDPARTY_DRACO_DIR OR NOT EXISTS "${3RDPARTY_DRACO_DIR}") - FIND_PRODUCT_DIR("${3RDPARTY_DIR}" draco DRACO_DIR_NAME) - if (DRACO_DIR_NAME) - set (3RDPARTY_DRACO_DIR "${3RDPARTY_DIR}/${DRACO_DIR_NAME}" CACHE PATH "The directory containing Draco" FORCE) - endif() - endif() -endif() - -# header -if (NOT 3RDPARTY_DRACO_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_DRACO_INCLUDE_DIR}") - set (HEADER_NAMES draco) - - # set 3RDPARTY_DRACO_INCLUDE_DIR as notfound, otherwise find_path can't assign a new value to 3RDPARTY_DRACO_INCLUDE_DIR - set (3RDPARTY_DRACO_INCLUDE_DIR "3RDPARTY_DRACO_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "The directory containing headers of the Draco" FORCE) - - if (3RDPARTY_DRACO_DIR AND EXISTS "${3RDPARTY_DRACO_DIR}") - find_path (3RDPARTY_DRACO_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATHS ${3RDPARTY_DRACO_DIR} - PATH_SUFFIXES "include" - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - else() - find_path (3RDPARTY_DRACO_INCLUDE_DIR NAMES ${HEADER_NAMES} - PATHS ${3RDPARTY_DRACO_DIR} - PATH_SUFFIXES "include" - CMAKE_FIND_ROOT_PATH_BOTH) - endif() -endif() - -if (3RDPARTY_DRACO_INCLUDE_DIR AND EXISTS "${3RDPARTY_DRACO_INCLUDE_DIR}") - list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_DRACO_INCLUDE_DIR}") -else() - list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_DRACO_INCLUDE_DIR) -endif() - -if (3RDPARTY_DRACO_DIR AND EXISTS "${3RDPARTY_DRACO_DIR}") - if (NOT 3RDPARTY_DRACO_LIBRARY OR NOT EXISTS "${3RDPARTY_DRACO_LIBRARY}") - set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .a) - set (3RDPARTY_DRACO_LIBRARY "3RDPARTY_DRACO_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to Draco library" FORCE) - - find_library (3RDPARTY_DRACO_LIBRARY NAMES ${CSF_Draco} - PATHS "${3RDPARTY_DRACO_DIR}" - PATH_SUFFIXES lib - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - if (3RDPARTY_DRACO_LIBRARY AND EXISTS "${3RDPARTY_DRACO_LIBRARY}") - get_filename_component (3RDPARTY_DRACO_LIBRARY_DIR "${3RDPARTY_DRACO_LIBRARY}" PATH) - set (3RDPARTY_DRACO_LIBRARY_DIR "${3RDPARTY_DRACO_LIBRARY_DIR}" CACHE FILEPATH "The directory containing Draco library" FORCE) - endif() - endif() - - if (WIN32 AND (NOT 3RDPARTY_DRACO_LIBRARY_DEBUG OR NOT EXISTS "${3RDPARTY_DRACO_LIBRARY_DEBUG}")) - set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .a) - set (3RDPARTY_DRACO_LIBRARY_DEBUG "3RDPARTY_DRACO_LIBRARY_DEBUG-NOTFOUND" CACHE FILEPATH "The path to debug Draco library" FORCE) - - find_library (3RDPARTY_DRACO_LIBRARY_DEBUG NAMES ${CSF_Draco} - PATHS "${3RDPARTY_DRACO_DIR}" - PATH_SUFFIXES libd - CMAKE_FIND_ROOT_PATH_BOTH - NO_DEFAULT_PATH) - if (3RDPARTY_DRACO_LIBRARY_DEBUG AND EXISTS "${3RDPARTY_DRACO_LIBRARY_DEBUG}") - get_filename_component (3RDPARTY_DRACO_LIBRARY_DIR_DEBUG "${3RDPARTY_DRACO_LIBRARY_DEBUG}" PATH) - set (3RDPARTY_DRACO_LIBRARY_DIR_DEBUG "${3RDPARTY_DRACO_LIBRARY_DIR_DEBUG}" CACHE FILEPATH "The directory containing debug Draco library" FORCE) - endif() - endif() -endif() +THIRDPARTY_PRODUCT("DRACO" "draco/draco_features.h" "CSF_Draco" "") diff --git a/adm/cmake/occt_toolkit.cmake b/adm/cmake/occt_toolkit.cmake index 60032361e1..c288172ef9 100644 --- a/adm/cmake/occt_toolkit.cmake +++ b/adm/cmake/occt_toolkit.cmake @@ -28,6 +28,9 @@ if ("${USED_PACKAGES}" STREQUAL "") set (USED_PACKAGES ${PROJECT_NAME}) endif() +set (PROJECT_LIBRARIES_DEBUG) +set (PROJECT_LIBRARIES_RELEASE) + if (USE_QT) # Qt dependencies OCCT_INCLUDE_CMAKE_FILE (adm/cmake/qt_macro) @@ -203,7 +206,9 @@ set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_D VERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}") set (USED_TOOLKITS_BY_CURRENT_PROJECT) +set (USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT) set (USED_EXTERNLIB_AND_TOOLKITS) +set (USED_PROJECT_LIBRARIES) # SOME EXECUTABLE PROJECTS MAY USE CUSTOM TOOLKITS AND EXTERNAL LIBRARIES if (CUSTOM_EXTERNLIB) @@ -259,14 +264,22 @@ foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS}) set (CURRENT_CACHE_LIBRARY ${${CACHE_VARIABLE}}) string (TOLOWER "${CACHE_VARIABLE}" CACHE_VARIABLE) if (EXISTS "${CURRENT_CACHE_LIBRARY}" AND NOT IS_DIRECTORY "${CURRENT_CACHE_LIBRARY}") - string (REGEX MATCH "_${CSF_LIBRARY}$" IS_ENDING "${CACHE_VARIABLE}") + string (REGEX MATCH "_${CSF_LIBRARY}(_debug|_release)*$" IS_ENDING "${CACHE_VARIABLE}") string (REGEX MATCH "^([a-z]+)" CSF_WO_VERSION "${CSF_LIBRARY}") - string (REGEX MATCH "_${CSF_WO_VERSION}$" IS_ENDING_WO_VERSION "${CACHE_VARIABLE}") + string (REGEX MATCH "_${CSF_WO_VERSION}(_debug|_release)*$" IS_ENDING_WO_VERSION "${CACHE_VARIABLE}") if ("3rdparty_${CSF_LIBRARY}_library" STREQUAL "${CACHE_VARIABLE}" OR "3rdparty_${CSF_WO_VERSION}_library" STREQUAL "${CACHE_VARIABLE}" OR NOT "x${IS_ENDING}" STREQUAL "x" OR NOT "x${IS_ENDING_WO_VERSION}" STREQUAL "x") - list (APPEND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT "${CURRENT_CACHE_LIBRARY}") + string (REGEX MATCH "_debug$" IS_DEBUG "${CACHE_VARIABLE}") + list (APPEND USED_PROJECT_LIBRARIES "${CSF_LIBRARY}") + if ("x${IS_DEBUG}" STREQUAL "x") + list (APPEND PROJECT_LIBRARIES_RELEASE "${CURRENT_CACHE_LIBRARY}") + set (USED_PROJECT_LIBRARY_${CSF_LIBRARY}_RELEASE "${CURRENT_CACHE_LIBRARY}") + else() + list (APPEND PROJECT_LIBRARIES_DEBUG "${CURRENT_CACHE_LIBRARY}") + set (USED_PROJECT_LIBRARY_${CSF_LIBRARY}_DEBUG "${CURRENT_CACHE_LIBRARY}") + endif() set (LIBRARY_FROM_CACHE 1) endif() endif() @@ -279,6 +292,15 @@ foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS}) endif() endforeach() +foreach (USED_ITEM ${USED_PROJECT_LIBRARIES}) + if (USED_PROJECT_LIBRARY_${USED_ITEM}_RELEASE AND NOT USED_PROJECT_LIBRARY_${USED_ITEM}_DEBUG) + list (APPEND PROJECT_LIBRARIES_DEBUG "${USED_PROJECT_LIBRARY_${USED_ITEM}_RELEASE}") + endif() + unset (USED_PROJECT_LIBRARY_${CSF_LIBRARY}_RELEASE) + unset (USED_PROJECT_LIBRARY_${CSF_LIBRARY}_DEBUG) +endforeach() +unset (USED_PROJECT_LIBRARIES) + if (APPLE) list (FIND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT X11 IS_X11_FOUND) if (NOT ${IS_X11_FOUND} EQUAL -1) @@ -321,14 +343,12 @@ if (BUILD_SHARED_LIBS OR EXECUTABLE_PROJECT) endif() target_link_libraries (${PROJECT_NAME} ${USED_TOOLKITS_BY_CURRENT_PROJECT} ${USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT}) -if (USE_QT) - foreach (PROJECT_LIBRARY_DEBUG ${PROJECT_LIBRARIES_DEBUG}) - target_link_libraries (${PROJECT_NAME} debug ${PROJECT_LIBRARY_DEBUG}) - endforeach() - foreach (PROJECT_LIBRARY_RELEASE ${PROJECT_LIBRARIES_RELEASE}) - target_link_libraries (${PROJECT_NAME} optimized ${PROJECT_LIBRARY_RELEASE}) - endforeach() -endif() +foreach (PROJECT_LIBRARY_DEBUG ${PROJECT_LIBRARIES_DEBUG}) + target_link_libraries (${PROJECT_NAME} debug ${PROJECT_LIBRARY_DEBUG}) +endforeach() +foreach (PROJECT_LIBRARY_RELEASE ${PROJECT_LIBRARIES_RELEASE}) + target_link_libraries (${PROJECT_NAME} optimized ${PROJECT_LIBRARY_RELEASE}) +endforeach() # suppress deprecation warnings inside OCCT itself for old gcc versions with unavailable Standard_DISABLE_DEPRECATION_WARNINGS if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) diff --git a/adm/templates/custom.build.bat.in b/adm/templates/custom.build.bat.in index b968dc854a..33022bb917 100644 --- a/adm/templates/custom.build.bat.in +++ b/adm/templates/custom.build.bat.in @@ -16,7 +16,12 @@ if /I "%VCVER%" == "@COMPILER@" ( set "FFMPEG_DIR=@3RDPARTY_FFMPEG_DLL_DIR@" set "JEMALLOC_DIR=@3RDPARTY_JEMALLOC_LIBRARY_DIR@" set "OPENVR_DIR=@3RDPARTY_OPENVR_DLL_DIRS@" - + if exist "@3RDPARTY_DRACO_DLL_DIR_draco@%3" ( + set "DRACO_DIR=@3RDPARTY_DRACO_DLL_DIR_draco@%3" + ) else ( + set "DRACO_DIR=@3RDPARTY_DRACO_DLL_DIR_draco@" + ) + if not "@3RDPARTY_QT_DIR@" == "" ( set "QTDIR=@3RDPARTY_QT_DIR@" ) diff --git a/adm/templates/custom.build.sh.in b/adm/templates/custom.build.sh.in index bcf340164e..56b0a8dfb7 100644 --- a/adm/templates/custom.build.sh.in +++ b/adm/templates/custom.build.sh.in @@ -13,6 +13,7 @@ if [ "$1" == "@BIN_LETTER@" ]; then export VTK_DIR="@3RDPARTY_VTK_LIBRARY_DIR@" export FFMPEG_DIR="@3RDPARTY_FFMPEG_LIBRARY_DIR@" export JEMALLOC_DIR="@3RDPARTY_JEMALLOC_LIBRARY_DIR@" + export DRACO_DIR="@3RDPARTY_DRACO_LIBRARY_DIRS@" if [ "x@3RDPARTY_QT_DIR" != "x" ]; then export QTDIR="@3RDPARTY_QT_DIR@" diff --git a/adm/templates/custom.install.bat.in b/adm/templates/custom.install.bat.in index 2f2af3a5ac..e61d54dab6 100644 --- a/adm/templates/custom.install.bat.in +++ b/adm/templates/custom.install.bat.in @@ -18,6 +18,11 @@ if /I "%VCVER%" == "@COMPILER@" ( set "FFMPEG_DIR=@USED_3RDPARTY_FFMPEG_DIR@" set "JEMALLOC_DIR=@USED_3RDPARTY_JEMALLOC_DIR@" set "OPENVR_DIR=@USED_3RDPARTY_OPENVR_DIR@" + if exist "@USED_3RDPARTY_DRACO_DIR@%3" ( + set "DRACO_DIR=@USED_3RDPARTY_DRACO_DIR@%3" + ) else ( + set "DRACO_DIR=@USED_3RDPARTY_DRACO_DIR@" + ) if not "@USED_3RDPARTY_QT_DIR@" == "" ( set "QTDIR=@USED_3RDPARTY_QT_DIR@" diff --git a/adm/templates/custom.install.sh.in b/adm/templates/custom.install.sh.in index dc6552b342..e24b731428 100644 --- a/adm/templates/custom.install.sh.in +++ b/adm/templates/custom.install.sh.in @@ -13,6 +13,7 @@ if [ "$1" == "@BIN_LETTER@" ]; then export VTK_DIR="@USED_3RDPARTY_VTK_DIR@" export FFMPEG_DIR="@USED_3RDPARTY_FFMPEG_DIR@" export JEMALLOC_DIR="@USED_3RDPARTY_JEMALLOC_DIR@" + export DRACO_DIR="@USED_3RDPARTY_DRACO_DIR@" if [ "x@USED_3RDPARTY_QT_DIR@" != "x" ]; then export QTDIR="@USED_3RDPARTY_QT_DIR@" diff --git a/adm/templates/env.bat.in b/adm/templates/env.bat.in index d83de73336..69a28a0345 100644 --- a/adm/templates/env.bat.in +++ b/adm/templates/env.bat.in @@ -160,6 +160,7 @@ if not ["%VTK_DIR%"] == [""] set "PATH=%VTK_DIR%;%PATH%" if not ["%FFMPEG_DIR%"] == [""] set "PATH=%FFMPEG_DIR%;%PATH%" if not ["%JEMALLOC_DIR%"] == [""] set "PATH=%JEMALLOC_DIR%;%PATH%" if not ["%OPENVR_DIR%"] == [""] set "PATH=%OPENVR_DIR%;%PATH%" +if not ["%DRACO_DIR%"] == [""] set "PATH=%DRACO_DIR%;%PATH%" rem ----- Set path to 3rd party and OCCT libraries ----- if not "%CSF_OCCTBinPath%" == "" ( diff --git a/src/DRAWEXE/CMakeLists.txt b/src/DRAWEXE/CMakeLists.txt index f2101ab4c1..c1d03299bd 100644 --- a/src/DRAWEXE/CMakeLists.txt +++ b/src/DRAWEXE/CMakeLists.txt @@ -27,10 +27,6 @@ OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit) unset (EXECUTABLE_PROJECT) unset (CUSTOM_EXTERNLIB) -if (NOT BUILD_SHARED_LIBS) - CONFIGURE_DRACO_DEPS() -endif() - if (EMSCRIPTEN) # Look for Tcl version string from file tcl.h set (TCL_MAJOR_VERSION 8) diff --git a/src/TKDEGLTF/CMakeLists.txt b/src/TKDEGLTF/CMakeLists.txt index 9c6fb872a5..8b9c4468b0 100644 --- a/src/TKDEGLTF/CMakeLists.txt +++ b/src/TKDEGLTF/CMakeLists.txt @@ -1,5 +1,3 @@ project(TKDEGLTF) OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit) - -CONFIGURE_DRACO_DEPS() diff --git a/src/TKRWMesh/CMakeLists.txt b/src/TKRWMesh/CMakeLists.txt index 22402a32e2..ab9f7b3b98 100644 --- a/src/TKRWMesh/CMakeLists.txt +++ b/src/TKRWMesh/CMakeLists.txt @@ -2,4 +2,3 @@ project(TKRWMesh) OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit) -CONFIGURE_DRACO_DEPS()