@@ -490,141 +490,7 @@ if(BUILD_IFCGEOM)
490490
491491 # Open CASCADE
492492 if (WITH_OPENCASCADE)
493- if (OCC_INCLUDE_DIR)
494- set (OCC_INCLUDE_DIR ${OCC_INCLUDE_DIR} CACHE FILEPATH "Open CASCADE header files" )
495- message (STATUS "Looking for Open CASCADE include files in: ${OCC_INCLUDE_DIR} " )
496- endif ()
497-
498- if (OCC_LIBRARY_DIR)
499- set (OCC_LIBRARY_DIR ${OCC_LIBRARY_DIR} CACHE FILEPATH "Open CASCADE library files" )
500- message (STATUS "Looking for Open CASCADE library files in: ${OCC_LIBRARY_DIR} " )
501- endif ()
502-
503- # No specific paths specified, try to find package.
504- if (OCC_INCLUDE_DIR AND OCC_LIBRARY_DIR)
505- message (
506- STATUS
507- "Using provided OCC_INCLUDE_DIR ('${OCC_INCLUDE_DIR} ') "
508- "and OCC_LIBRARY_DIR ('${OCC_LIBRARY_DIR} ')."
509- )
510- # Parse OCC_VERSION_STRING.
511- file (STRINGS ${OCC_INCLUDE_DIR} /Standard_Version.hxx OCC_MAJOR
512- REGEX "#define OCC_VERSION_MAJOR.*"
513- )
514- string (REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR} )
515- file (STRINGS ${OCC_INCLUDE_DIR} /Standard_Version.hxx OCC_MINOR
516- REGEX "#define OCC_VERSION_MINOR.*"
517- )
518- string (REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR} )
519- file (STRINGS ${OCC_INCLUDE_DIR} /Standard_Version.hxx OCC_MAINT
520- REGEX "#define OCC_VERSION_MAINTENANCE.*"
521- )
522- string (REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT} )
523- set (OCC_VERSION_STRING "${OCC_MAJOR} .${OCC_MINOR} .${OCC_MAINT} " )
524- elseif (NOT OCC_INCLUDE_DIR AND NOT OCC_LIBRARY_DIR)
525- # OCE is not supported for find_package, because it's using a different name (`oce`)
526- # and also has an odd directory structure (install/lib/oce-0.18/*.cmake).
527- find_package (OpenCASCADE CONFIG REQUIRED )
528- set (OCC_INCLUDE_DIR ${OpenCASCADE_INCLUDE_DIR} )
529- # Do not use OpenCASCADE_LIBRARY_DIR for OCC_LIBRARY_DIR - check target property explicitly.
530- # On Windows there is a case with OpenCASCADE_LIBRARY_DIR points to `lib` folder,
531- # while TKernel is actually in `libi`.
532- get_target_property (TKERNEL_LIB_PATH TKernel LOCATION )
533- get_filename_component (OCC_LIBRARY_DIR "${TKERNEL_LIB_PATH} " DIRECTORY )
534- set (OCC_VERSION_STRING ${OpenCASCADE_VERSION} )
535- message (
536- STATUS
537- "Found Open CASCADE package at '${OpenCASCADE_DIR} ', "
538- "deducing from it OCC_INCLUDE_DIR: '${OCC_INCLUDE_DIR} ' "
539- "and OCC_LIBRARY_DIR: '${OCC_LIBRARY_DIR} '."
540- )
541- else ()
542- message (
543- FATAL_ERROR
544- "Couldn't find Open CASCADE installation. "
545- "Either both OCC_INCLUDE_DIR ('${OCC_INCLUDE_DIR} ') and OCC_LIBRARY_DIR ('${OCC_LIBRARY_DIR} ') "
546- "must be specified or OpenCASCADE package should be discoverable. "
547- "If you're using OCE, then providing a package is not available "
548- "and you need to provide OCE_INCLUDE_DIR and OCE_LIBRARY_DIR directly."
549- )
550- endif ()
551-
552- set (
553- OPENCASCADE_LIBRARY_NAMES
554- TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO
555- TKFillet TKXSBase TKOffset TKHLR
556-
557- # @todo investigate the exact conditions when this is necessary
558- TKBin
559- )
560-
561- if (OCC_VERSION_STRING VERSION_LESS 7.8.0)
562- list (APPEND OPENCASCADE_LIBRARY_NAMES TKIGES TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP)
563- else (OCC_VERSION_STRING VERSION_LESS 7.8.0 )
564- list (APPEND OPENCASCADE_LIBRARY_NAMES TKDESTEP TKDEIGES)
565- endif (OCC_VERSION_STRING VERSION_LESS 7.8.0 )
566-
567- clear_wasm_sysroot ()
568- find_library (libTKernel NAMES TKernel TKerneld PATHS ${OCC_LIBRARY_DIR} NO_DEFAULT_PATH )
569- restore_wasm_sysroot ()
570-
571- if (libTKernel)
572- message (STATUS "Required Open Cascade Library files found" )
573- else ()
574- message (
575- FATAL_ERROR
576- "Unable to find Open Cascade library files in OCC_LIBRARY_DIR ('${OCC_LIBRARY_DIR} '), aborting"
577- )
578- endif ()
579-
580- # Use the found libTKernel as a template for all other OCC libraries
581- # TODO Extract this into macro/function
582- foreach (lib ${OPENCASCADE_LIBRARY_NAMES} )
583- # Make sure we'll handle the Windows/MSVC debug postfix convention too.
584- string (REPLACE TKerneld "${lib} " lib_path "${libTKernel} " )
585- string (REPLACE TKernel "${lib} " lib_path "${lib_path} " )
586- list (APPEND OPENCASCADE_LIBRARIES "${lib_path} " )
587- endforeach ()
588-
589- if (MSVC )
590- add_definitions (-DHAVE_NO_DLL )
591- add_debug_variants (OPENCASCADE_LIBRARIES "${OPENCASCADE_LIBRARIES} " d )
592- endif ()
593-
594- if (WIN32 )
595- # OCC might require linking to Winsock depending on the version and build configuration
596- list (APPEND OPENCASCADE_LIBRARIES ws2_32.lib)
597- endif ()
598-
599- # Make sure cross-referenced symbols between static OCC libraries get
600- # resolved. Also add thread and rt libraries.
601- get_filename_component (libTKernelExt ${libTKernel} EXT )
602- if ("${libTKernelExt} " STREQUAL ".a" )
603- set (OCCT_STATIC ON )
604- endif ()
605-
606- if (OCCT_STATIC)
607- find_package (Threads )
608-
609- if (WASM_BUILD)
610- set (OPENCASCADE_LIBRARIES ${OPENCASCADE_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} )
611- else ()
612- # OPENCASCADE_LIBRARIES repeated N times below in order to fix cyclic dependencies
613- # tfk: --start-group ... --end-group didn't work on the apple linker when last tested
614- if (APPLE )
615- set (OPENCASCADE_LIBRARIES ${OPENCASCADE_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} )
616- else ()
617- set (OPENCASCADE_LIBRARIES -Wl,--start-group ${OPENCASCADE_LIBRARIES} -Wl,--end-group ${CMAKE_THREAD_LIBS_INIT} )
618- endif ()
619- endif ()
620-
621- if (NOT APPLE AND NOT WIN32 )
622- set (OPENCASCADE_LIBRARIES ${OPENCASCADE_LIBRARIES} "rt" )
623- endif ()
624- if (NOT WIN32 )
625- set (OPENCASCADE_LIBRARIES ${OPENCASCADE_LIBRARIES} "dl" )
626- endif ()
627- endif ()
493+ find_package (OpenCASCADE REQUIRED )
628494 endif (WITH_OPENCASCADE )
629495endif (BUILD_IFCGEOM )
630496
@@ -969,7 +835,7 @@ if(BUILD_CONVERT OR BUILD_IFCPYTHON)
969835
970836 add_library (geometry_serializer_ifc${schema} STATIC ../src/ifcgeom/Serialization/schema/Serialization.cpp )
971837 set_target_properties (geometry_serializer_ifc${schema} PROPERTIES COMPILE_FLAGS "-DIFC_GEOMSERIALIZATION_EXPORTS -DIfcSchema=Ifc${schema} " )
972- target_link_libraries (geometry_serializer_ifc${schema} ${OPENCASCADE_LIBRARIES } )
838+ target_link_libraries (geometry_serializer_ifc${schema} ${OpenCASCADE_LIBRARIES } )
973839 list (APPEND geometry_serializer_libraries geometry_serializer_ifc${schema} )
974840 endforeach ()
975841
0 commit comments