0026460: Implicit cast to TopoDS_Shape compilation error due to ambiguous conversion
[occt.git] / adm / cmake / 3rdparty_macro.cmake
CommitLineData
9f33b387 1#
2
fa0cbe55 3# include occt macros. compiler_bitness, os_wiht_bit, compiler
19286d7c 4OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros")
9f33b387 5
6macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEBUG)
7
9f33b387 8 # define 3RDPARTY_${PRODUCT_NAME}_DIR variable is it isn't defined
9 if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DIR)
10 set (3RDPARTY_${PRODUCT_NAME}_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME}")
11 endif()
12
13 # search for product directory inside 3RDPARTY_DIR directory
14 if (NOT 3RDPARTY_${PRODUCT_NAME}_DIR AND 3RDPARTY_DIR)
15 FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" "${PRODUCT_NAME}" ${PRODUCT_NAME}_DIR_NAME)
16 if (${PRODUCT_NAME}_DIR_NAME)
17 message (STATUS "Info: ${PRODUCT_NAME}: ${${PRODUCT_NAME}_DIR_NAME} folder is used")
18 set (3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_DIR}/${${PRODUCT_NAME}_DIR_NAME}" CACHE PATH "The directory containing ${PRODUCT_NAME}" FORCE)
19 endif()
20 endif()
21
22 if (NOT DEFINED INSTALL_${PRODUCT_NAME})
23 set (INSTALL_${PRODUCT_NAME} OFF CACHE BOOL "Is ${PRODUCT_NAME} required to be copied into install directory")
24 endif()
25
26 # search for include directory
27 if (NOT 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
28 set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "The directory containing the headers of the ${PRODUCT_NAME}" FORCE)
29 find_path (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR ${HEADER_NAME} PATHS
30 "${3RDPARTY_${PRODUCT_NAME}_DIR}/include"
31 ${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_HEADER}
32 NO_DEFAULT_PATH)
33 find_path (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR ${HEADER_NAME})
34 endif()
19286d7c 35
9f33b387 36 if (NOT 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
37 set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "" CACHE FILEPATH "The directory containing the headers of the ${PRODUCT_NAME}" FORCE)
38 endif()
39
40 if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
41 set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" CACHE FILEPATH "${PRODUCT_NAME} library" FORCE)
42 elseif (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
43 get_filename_component(3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_TMP "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" PATH)
44 if (NOT "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" STREQUAL "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_TMP}")
45 set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" CACHE FILEPATH "${PRODUCT_NAME} library" FORCE)
46 endif()
47 endif()
48
49 # search for library
50 if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
51 set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "${PRODUCT_NAME} library" FORCE)
52
fa0cbe55 53 find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY ${LIBRARY_NAME} PATHS
54 "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}"
55 "${3RDPARTY_${PRODUCT_NAME}_DIR}/lib"
56 ${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_LIB}
57 NO_DEFAULT_PATH)
58 # second search if previous one do not find anything
59 find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY ${LIBRARY_NAME})
9f33b387 60 endif()
19286d7c 61
9f33b387 62 if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
63 set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "" CACHE FILEPATH "The directory containing ${PRODUCT_NAME} library" FORCE)
64 endif()
19286d7c 65
9f33b387 66 # library path
67 if (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
68 get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" PATH)
69 set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" CACHE FILEPATH "The directory containing ${PRODUCT_NAME} library" FORCE)
70 endif()
19286d7c 71
9f33b387 72 # search for shared library (just for win case)
73 if (WIN32)
74 set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
19286d7c 75
9f33b387 76 if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL_DIR)
77 set (3RDPARTY_${PRODUCT_NAME}_DLL "" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
78 elseif (3RDPARTY_${PRODUCT_NAME}_DLL AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
79 get_filename_component(3RDPARTY_${PRODUCT_NAME}_DLL_DIR_TMP "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH)
80 if (NOT "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" STREQUAL "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_TMP}")
81 set (3RDPARTY_${PRODUCT_NAME}_DLL "" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
82 endif()
83 endif()
84
85 if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
86 set (3RDPARTY_${PRODUCT_NAME}_DLL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
87
fa0cbe55 88 find_library (3RDPARTY_${PRODUCT_NAME}_DLL "${LIBRARY_NAME}" PATHS
89 "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}"
90 "${3RDPARTY_${PRODUCT_NAME}_DIR}/bin"
91 ${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_DLL}
92 NO_DEFAULT_PATH)
19286d7c 93
9f33b387 94 # second search if previous one do not find anything
95 find_library (3RDPARTY_${PRODUCT_NAME}_DLL "${LIBRARY_NAME}")
9f33b387 96 endif()
19286d7c 97
9f33b387 98 if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR)
99 set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "" CACHE FILEPATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
100 endif()
19286d7c 101
9f33b387 102 # shared library path
103 if (3RDPARTY_${PRODUCT_NAME}_DLL AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
104 get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH)
105 set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" CACHE FILEPATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
106 endif()
107 endif()
19286d7c 108
9f33b387 109 if (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
110 list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
111 else()
112 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR)
113 endif()
114
115 if (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
116 list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}")
117 else()
118 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
119 endif()
120
121 if (WIN32)
94829f84 122 if (3RDPARTY_${PRODUCT_NAME}_DLL OR EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
123 list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}")
124 else()
9f33b387 125 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR)
126 endif()
127 endif()
128
19286d7c 129 set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "")
130
9f33b387 131 if (INSTALL_${PRODUCT_NAME})
132 OCCT_MAKE_OS_WITH_BITNESS()
133 OCCT_MAKE_COMPILER_SHORT_NAME()
9f33b387 134
135 if (WIN32)
fa0cbe55 136 install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}"
137 CONFIGURATIONS Release
138 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
139 install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}"
140 CONFIGURATIONS RelWithDebInfo
141 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
142 install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}"
143 CONFIGURATIONS Debug
144 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
145
9f33b387 146 else()
19286d7c 147 get_filename_component(ABS_PATH ${3RDPARTY_${PRODUCT_NAME}_LIBRARY} REALPATH)
148 if ("${PRODUCT_NAME}" STREQUAL "FREEIMAGE")
149 get_filename_component(FREEIMLIB ${3RDPARTY_${PRODUCT_NAME}_LIBRARY} NAME)
fa0cbe55 150 install (FILES "${ABS_PATH}"
151 CONFIGURATIONS Release
152 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib"
153 RENAME ${FREEIMLIB}.3)
154 install (FILES "${ABS_PATH}"
155 CONFIGURATIONS RelWithDebInfo
156 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib"
157 RENAME ${FREEIMLIB}.3)
158 install (FILES "${ABS_PATH}"
159 CONFIGURATIONS Debug
160 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd"
161 RENAME ${FREEIMLIB}.3)
19286d7c 162 endif()
163 if("${PRODUCT_NAME}" STREQUAL "GL2PS")
164 get_filename_component(GL2PSLIB ${3RDPARTY_${PRODUCT_NAME}_LIBRARY} NAME)
fa0cbe55 165 install (FILES "${ABS_PATH}"
166 CONFIGURATIONS Release
167 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib"
168 RENAME ${GL2PSLIB}.1)
169 install (FILES "${ABS_PATH}"
170 CONFIGURATIONS RelWithDebInfo
171 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib"
172 RENAME ${GL2PSLIB}.1)
173 install (FILES "${ABS_PATH}"
174 CONFIGURATIONS Debug
175 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd"
176 RENAME ${GL2PSLIB}.1)
19286d7c 177 endif()
9f33b387 178 endif()
0a66e59d 179 else()
180 # the library directory for using by the executable
181 if (WIN32)
182 set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}")
183 else()
184 set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}")
185 endif()
9f33b387 186 endif()
19286d7c 187
9f33b387 188 mark_as_advanced (3RDPARTY_${PRODUCT_NAME}_LIBRARY 3RDPARTY_${PRODUCT_NAME}_DLL)
19286d7c 189endmacro()