3 macro (OCCT_CHECK_AND_UNSET VARNAME)
4 if (DEFINED ${VARNAME})
5 unset (${VARNAME} CACHE)
9 macro (OCCT_CHECK_AND_UNSET_GROUP VARNAME)
10 OCCT_CHECK_AND_UNSET ("${VARNAME}_DIR")
12 OCCT_CHECK_AND_UNSET ("${VARNAME}_INCLUDE_DIR")
14 OCCT_CHECK_AND_UNSET ("${VARNAME}_LIBRARY")
15 OCCT_CHECK_AND_UNSET ("${VARNAME}_LIBRARY_DIR")
17 OCCT_CHECK_AND_UNSET ("${VARNAME}_DLL")
18 OCCT_CHECK_AND_UNSET ("${VARNAME}_DLL_DIR")
21 # BUILD_POSTFIX, IS_BUILD_DEBUG variables
22 macro (OCCT_MAKE_BUILD_POSTFIX)
23 if ("${BUILD_CONFIGURATION}" STREQUAL "Debug")
24 set (BUILD_POSTFIX "d")
25 set (IS_BUILD_DEBUG "")
27 set (BUILD_POSTFIX "")
28 OCCT_CHECK_AND_UNSET (IS_BUILD_DEBUG)
32 # COMPILER_BITNESS variable
33 macro (OCCT_MAKE_COMPILER_BITNESS)
34 math (EXPR COMPILER_BITNESS "32 + 32*(${CMAKE_SIZEOF_VOID_P}/8)")
38 macro (OCCT_MAKE_OS_WITH_BITNESS)
40 OCCT_MAKE_COMPILER_BITNESS()
43 set (OS_WITH_BIT "win${COMPILER_BITNESS}")
45 set (OS_WITH_BIT "mac${COMPILER_BITNESS}")
47 set (OS_WITH_BIT "lin${COMPILER_BITNESS}")
52 macro (OCCT_MAKE_COMPILER_SHORT_NAME)
67 elseif (DEFINED CMAKE_COMPILER_IS_GNUCC)
69 elseif (DEFINED CMAKE_COMPILER_IS_GNUCXX)
71 elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
73 elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
76 set (COMPILER ${CMAKE_GENERATOR})
77 string (REGEX REPLACE " " "" COMPILER ${COMPILER})
81 function (SUBDIRECTORY_NAMES MAIN_DIRECTORY RESULT)
82 file (GLOB SUB_ITEMS "${MAIN_DIRECTORY}/*")
84 foreach (ITEM ${SUB_ITEMS})
85 if (IS_DIRECTORY "${ITEM}")
86 get_filename_component (ITEM_NAME "${ITEM}" NAME)
87 list (APPEND LOCAL_RESULT "${ITEM_NAME}")
90 set (${RESULT} ${LOCAL_RESULT} PARENT_SCOPE)
93 function (FIND_PRODUCT_DIR ROOT_DIR PRODUCT_NAME RESULT)
94 OCCT_MAKE_COMPILER_SHORT_NAME()
95 OCCT_MAKE_COMPILER_BITNESS()
97 string (TOLOWER "${PRODUCT_NAME}" lower_PRODUCT_NAME)
99 list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*${COMPILER}.*${COMPILER_BITNESS}")
100 list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER}.*${COMPILER_BITNESS}")
101 list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER_BITNESS}")
102 list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+")
103 list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}")
105 SUBDIRECTORY_NAMES ("${ROOT_DIR}" SUBDIR_NAME_LIST)
107 foreach (SEARCH_TEMPLATE ${SEARCH_TEMPLATES})
112 foreach (SUBDIR_NAME ${SUBDIR_NAME_LIST})
113 string (TOLOWER "${SUBDIR_NAME}" lower_SUBDIR_NAME)
115 string (REGEX MATCH "${SEARCH_TEMPLATE}" DUMMY_VAR "${lower_SUBDIR_NAME}")
117 list (APPEND LOCAL_RESULT ${SUBDIR_NAME})
123 list (LENGTH "${LOCAL_RESULT}" LOC_LEN)
124 math (EXPR LAST_ELEMENT_INDEX "${LOC_LEN}-1")
125 list (GET LOCAL_RESULT ${LAST_ELEMENT_INDEX} DUMMY)
126 set (${RESULT} ${DUMMY} PARENT_SCOPE)
130 macro (OCCT_INSTALL_FILE_OR_DIR BEING_INSTALLED_OBJECT DESTINATION_PATH)
131 if (BUILD_PATCH_DIR AND EXISTS "${BUILD_PATCH_DIR}/${BEING_INSTALLED_OBJECT}")
132 if (IS_DIRECTORY "${BUILD_PATCH_DIR}/${BEING_INSTALLED_OBJECT}")
133 # first of all, install original files
134 install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
136 # secondly, rewrite original files with patched ones
137 install (DIRECTORY "${BUILD_PATCH_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
139 install (FILES "${BUILD_PATCH_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
142 if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}")
143 install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
145 install (FILES "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
150 macro (OCCT_CONFIGURE_AND_INSTALL BEING_CONGIRUGED_FILE FINAL_NAME DESTINATION_PATH)
151 if (BUILD_PATCH_DIR AND EXISTS "${BUILD_PATCH_DIR}/${BEING_CONGIRUGED_FILE}")
152 configure_file("${BUILD_PATCH_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
154 configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
157 install(FILES "${OCCT_BINARY_DIR}/${FINAL_NAME}" DESTINATION "${DESTINATION_PATH}")
160 function (OCCT_IS_PRODUCT_REQUIRED CSF_VAR_NAME USE_PRODUCT)
161 set (${USE_PRODUCT} OFF PARENT_SCOPE)
163 if (NOT USED_TOOLKITS)
164 message(STATUS "Warning: the list of being used toolkits is empty")
166 foreach (USED_TOOLKIT ${USED_TOOLKITS})
167 if (BUILD_PATCH_DIR AND EXISTS "${BUILD_PATCH_DIR}/src/${USED_TOOLKIT}/EXTERNLIB")
168 file (READ "${BUILD_PATCH_DIR}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT)
169 elseif (EXISTS "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB")
170 file (READ "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT)
173 string (REGEX MATCH "${CSF_VAR_NAME}" DOES_FILE_CONTAIN "${FILE_CONTENT}")
175 if (DOES_FILE_CONTAIN)
176 set (${USE_PRODUCT} ON PARENT_SCOPE)