@@ -142,22 +142,18 @@ ELSE()
142142 MESSAGE (STATUS "Looking for opencascade include files in: ${OCC_INCLUDE_DIR} " )
143143ENDIF ()
144144
145- FIND_FILE (gp_Pnt_hxx "gp_Pnt.hxx" ${OCC_INCLUDE_DIR} /usr/inc /usr/local/inc /usr/local/include/oce )
145+ FIND_FILE (gp_Pnt_hxx "gp_Pnt.hxx" ${OCC_INCLUDE_DIR} )
146146IF (gp_Pnt_hxx)
147147 MESSAGE (STATUS "Header files found" )
148148ELSE ()
149149 MESSAGE (FATAL_ERROR "Unable to find header files, aborting" )
150150ENDIF ()
151151
152- SET (OPENCASCADE_LIBRARIES
152+ SET (OPENCASCADE_LIBRARY_NAMES
153153 TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO
154154 TKFillet TKSTEP TKSTEPBase TKSTEPAttr TKXSBase TKSTEP209 TKIGES TKOffset
155155)
156156
157- IF (MSVC )
158- ADD_DEBUG_VARIANTS (OPENCASCADE_LIBRARIES "${OPENCASCADE_LIBRARIES} " "d" )
159- ENDIF ()
160-
161157IF ("${OCC_LIBRARY_DIR} " STREQUAL "" )
162158 SET (OCC_LIBRARY_DIR "/usr/lib/" CACHE FILEPATH "Open CASCADE library files" )
163159 MESSAGE (STATUS "Looking for opencascade library files in: ${OCC_LIBRARY_DIR} " )
@@ -167,41 +163,53 @@ ELSE()
167163 MESSAGE (STATUS "Looking for opencascade library files in: ${OCC_LIBRARY_DIR} " )
168164ENDIF ()
169165
170- FIND_LIBRARY (libTKernel NAMES TKernel TKerneld PATHS ${OCC_LIBRARY_DIR} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64 )
166+ FIND_LIBRARY (libTKernel NAMES TKernel TKerneld PATHS ${OCC_LIBRARY_DIR} NO_DEFAULT_PATH )
171167IF (libTKernel)
172168 MESSAGE (STATUS "Library files found" )
173169ELSE ()
174170 MESSAGE (FATAL_ERROR "Unable to find library files, aborting" )
175171ENDIF ()
176172
173+ # Use the found libTKernel as a template for all other OCC libraries
174+ foreach (lib ${OPENCASCADE_LIBRARY_NAMES} )
175+ string (REPLACE TKernel "${lib} " lib_path "${libTKernel} " )
176+ list (APPEND OPENCASCADE_LIBRARIES "${lib_path} " )
177+ endforeach ()
178+
179+ IF (MSVC )
180+ ADD_DEBUG_VARIANTS (OPENCASCADE_LIBRARIES "${OPENCASCADE_LIBRARIES} " "d" )
181+ ENDIF ()
182+
177183IF (UNICODE_SUPPORT)
178184 # Find ICU
179185 IF ("${ICU_INCLUDE_DIR} " STREQUAL "" )
180186 MESSAGE (STATUS "No ICU include directory specified" )
181- ElSE ()
182- SET (ICU_INCLUDE_DIR "${ICU_INCLUDE_DIR} " CACHE FILEPATH "ICU header files" )
183187 ENDIF ()
184188
185189 IF ("${ICU_LIBRARY_DIR} " STREQUAL "" )
186190 MESSAGE (STATUS "No ICU library directory specified" )
187- ElSE ()
188- SET (ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR} " CACHE FILEPATH "ICU library files" )
191+ FIND_LIBRARY (icu NAMES icuuc icuucd PATHS ${ICU_LIBRARY_DIR} )
192+ ELSE ()
193+ FIND_LIBRARY (icu NAMES icuuc icuucd PATHS ${ICU_LIBRARY_DIR} NO_DEFAULT_PATH )
189194 ENDIF ()
190195
191- FIND_LIBRARY (icu NAMES icuuc icuucd PATHS /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib ${ICU_LIBRARY_DIR} )
192-
193196 IF (icu)
197+ GET_FILENAME_COMPONENT (ICU_LIBRARY_DIR ${icu} PATH )
198+
194199 ADD_DEFINITIONS (-DHAVE_ICU )
195200 MESSAGE (STATUS "ICU libraries found" )
196201 # NOTE icudata appears to be icudt on Windows/MSVC and icudata on others
197202 # dl is included to resolve dlopen and friends symbols
198203 IF (WIN32 )
199- SET (ICU_LIBRARIES icuuc icudt)
204+ FIND_LIBRARY (icudt NAMES icudt PATHS ${ICU_LIBRARY_DIR} NO_DEFAULT_PATH )
205+ SET (ICU_LIBRARIES ${icu} ${icudt} )
200206 ADD_DEBUG_VARIANTS (ICU_LIBRARIES "${ICU_LIBRARIES} " "d" )
201- # TODO MinGW build would appear to be using dynamic ICU regardless of this definition.
202- ADD_DEFINITIONS (-DU_STATIC_IMPLEMENTATION ) # required for static ICU
207+ # TODO MinGW build would appear to be using dynamic ICU regardless of this definition.
208+ ADD_DEFINITIONS (-DU_STATIC_IMPLEMENTATION ) # required for static ICU
203209 ELSE ()
204- SET (ICU_LIBRARIES icuuc icudata dl)
210+ FIND_LIBRARY (icudt NAMES icudata PATHS ${ICU_LIBRARY_DIR} NO_DEFAULT_PATH )
211+ FIND_LIBRARY (dl NAMES dl )
212+ SET (ICU_LIBRARIES ${icu} ${icudt} ${dl} )
205213 ENDIF ()
206214 ELSE ()
207215 MESSAGE (FATAL_ERROR "UNICODE_SUPPORT enabled, but unable to find ICU. Disable UNICODE_SUPPORT or fix ICU paths to proceed." )
@@ -219,9 +227,13 @@ IF(COLLADA_SUPPORT)
219227
220228 IF ("${OPENCOLLADA_LIBRARY_DIR} " STREQUAL "" )
221229 MESSAGE (STATUS "No OpenCOLLADA library directory specified" )
222- FIND_LIBRARY (OPENCOLLADA_FRAMEWORK_LIB NAMES OpenCOLLADAFramework PATHS /usr/lib64/opencollada /usr/lib/opencollada /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib )
230+ FIND_LIBRARY (OPENCOLLADA_FRAMEWORK_LIB NAMES OpenCOLLADAFramework
231+ PATHS /usr/lib64/opencollada /usr/lib/opencollada /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib )
223232 GET_FILENAME_COMPONENT (OPENCOLLADA_LIBRARY_DIR ${OPENCOLLADA_FRAMEWORK_LIB} PATH )
224233 ENDIF ()
234+
235+ FIND_LIBRARY (OpenCOLLADAFramework NAMES OpenCOLLADAFramework PATHS ${OPENCOLLADA_LIBRARY_DIR} NO_DEFAULT_PATH )
236+
225237 SET (OPENCOLLADA_LIBRARY_DIR "${OPENCOLLADA_LIBRARY_DIR} " CACHE FILEPATH "OpenCOLLADA library files" )
226238
227239 SET (OPENCOLLADA_INCLUDE_DIRS "${OPENCOLLADA_INCLUDE_DIR} /COLLADABaseUtils" "${OPENCOLLADA_INCLUDE_DIR} /COLLADAStreamWriter" )
@@ -230,13 +242,29 @@ IF(COLLADA_SUPPORT)
230242 IF (COLLADASWStreamWriter_h)
231243 MESSAGE (STATUS "OpenCOLLADA header files found" )
232244 ADD_DEFINITIONS (-DWITH_OPENCOLLADA )
233- SET (OPENCOLLADA_LIBRARIES
245+ SET (OPENCOLLADA_LIBRARY_NAMES
234246 GeneratedSaxParser MathMLSolver OpenCOLLADABaseUtils OpenCOLLADAFramework OpenCOLLADASaxFrameworkLoader
235- OpenCOLLADAStreamWriter UTF buffer ftoa pcre
247+ OpenCOLLADAStreamWriter UTF buffer ftoa
236248 )
237- IF (NOT "${PCRE_LIBRARY_DIR} " STREQUAL "" )
249+
250+ # Use the found libTKernel as a template for all other OCC libraries
251+ foreach (lib ${OPENCOLLADA_LIBRARY_NAMES} )
252+ string (REPLACE OpenCOLLADAFramework "${lib} " lib_path "${OpenCOLLADAFramework} " )
253+ list (APPEND OPENCOLLADA_LIBRARIES "${lib_path} " )
254+ endforeach ()
255+
256+ IF ("${PCRE_LIBRARY_DIR} " STREQUAL "" )
257+ find_library (pcre_library NAMES pcre PATHS ${OPENCOLLADA_LIBRARY_DIR} )
258+ GET_FILENAME_COMPONENT (PCRE_LIBRARY_DIR ${pcre_library} PATH )
259+ else ()
260+ find_library (pcre_library NAMES pcre PATHS ${PCRE_LIBRARY_DIR} NO_DEFAULT_PATH )
261+ endif ()
262+
263+ if (${pcre_library} )
238264 SET (OPENCOLLADA_LIBRARY_DIR ${OPENCOLLADA_LIBRARY_DIR} ${PCRE_LIBRARY_DIR} )
239- ENDIF ()
265+ list (APPEND OPENCOLLADA_LIBRARIES "${pcre_library} " )
266+ endif ()
267+
240268 IF (MSVC )
241269 ADD_DEBUG_VARIANTS (OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES} " "d" )
242270 ENDIF ()
@@ -317,9 +345,6 @@ ENDIF()
317345INCLUDE_DIRECTORIES (${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS}
318346 ${ICU_INCLUDE_DIR} ${Boost_INCLUDE_DIRS}
319347)
320- if (NOT WIN32 )
321- INCLUDE_DIRECTORIES (${INCLUDE_DIRECTORIES} /usr/inc /usr/local/inc /usr/local/include/oce )
322- endif ()
323348
324349function (files_for_ifc_version IFC_VERSION RESULT_NAME )
325350 set (IFC_PARSE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /../src/ifcparse)
@@ -403,13 +428,6 @@ if(NOT Boost_VERSION LESS 105800)
403428 add_definitions (-DBOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE )
404429endif ()
405430
406- LINK_DIRECTORIES (${LINK_DIRECTORIES} ${IfcOpenShell_BINARY_DIR} ${OCC_LIBRARY_DIR} ${OPENCOLLADA_LIBRARY_DIR}
407- ${ICU_LIBRARY_DIR} ${Boost_LIBRARY_DIRS}
408- )
409- if (NOT WIN32 )
410- LINK_DIRECTORIES (${LINK_DIRECTORIES} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64 )
411- endif ()
412-
413431if (BUILD_SHARED_LIBS )
414432 SET (IFCOPENSHELL_LIBRARIES IfcGeom)
415433else ()
0 commit comments