Fix OCE / OCC version detection.
This commit is contained in:
parent
8effb87566
commit
f050733132
|
@ -440,74 +440,7 @@ if(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER)
|
|||
|
||||
# -------------------------------- OpenCasCade --------------------------------
|
||||
|
||||
#first, look for OpenCASCADE Community Edition (OCE)
|
||||
#if OCE is installed in a nonstandard location, add -DOCE_DIR=/path/to/dir/containing/OCEConfig.cmake
|
||||
# when configuring with cmake, i.e. cmake .. -DOCE_DIR=/usr/share/cmake
|
||||
if(NOT DEFINED OCE_DIR)
|
||||
if(UNIX)
|
||||
set(OCE_DIR "/usr/local/share/cmake/")
|
||||
elseif(WIN32)
|
||||
set(OCE_DIR "c:/OCE-0.4.0/share/cmake")
|
||||
endif()
|
||||
endif()
|
||||
find_package (OCE QUIET)
|
||||
if(${OCE_FOUND})
|
||||
message(STATUS "-- OpenCASCADE Community Edition has been found.")
|
||||
#lib list copied from FreeCAD's FindOpenCasCade.cmake
|
||||
set(OCC_LIBRARIES
|
||||
TKFillet
|
||||
TKMesh
|
||||
TKernel
|
||||
TKG2d
|
||||
TKG3d
|
||||
TKMath
|
||||
TKIGES
|
||||
TKSTL
|
||||
TKShHealing
|
||||
TKXSBase
|
||||
TKBool
|
||||
TKBO
|
||||
TKBRep
|
||||
TKTopAlgo
|
||||
TKGeomAlgo
|
||||
TKGeomBase
|
||||
TKOffset
|
||||
TKPrim
|
||||
TKSTEP
|
||||
TKSTEPBase
|
||||
TKSTEPAttr
|
||||
TKHLR
|
||||
TKFeat
|
||||
)
|
||||
#lib list copied from FreeCAD's FindOpenCasCade.cmake
|
||||
set(OCC_OCAF_LIBRARIES
|
||||
TKCAF
|
||||
TKXCAF
|
||||
TKLCAF
|
||||
TKXDESTEP
|
||||
TKXDEIGES
|
||||
TKMeshVS
|
||||
)
|
||||
set(OCC_INCLUDE_DIR ${OCE_INCLUDE_DIRS})
|
||||
|
||||
CHECK_MINIMUM_OCC_VERSION_HEX(0x060703)
|
||||
if (NOT OCC_MIN_VERSION)
|
||||
set(OCC_OCAF_LIBRARIES
|
||||
${OCC_OCAF_LIBRARIES}
|
||||
TKAdvTools
|
||||
)
|
||||
endif()
|
||||
|
||||
set(OCC_FOUND ${OCE_FOUND})
|
||||
else() #look for OpenCASCADE
|
||||
find_package(OpenCasCade)
|
||||
if(NOT OCC_FOUND)
|
||||
message("Neither OpenCASCADE Community Edition nor OpenCasCade were found: will not build CAD modules!")
|
||||
else()
|
||||
message(STATUS "-- OpenCASCADE include directory: ${OCC_INCLUDE_PATH}")
|
||||
message(STATUS "-- OpenCASCADE shared libraries directory: ${OCC_LIB_PATH}")
|
||||
endif()
|
||||
endif()
|
||||
find_package(OpenCasCade)
|
||||
|
||||
# -------------------------------- Salome SMESH --------------------------
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Try to find OCC
|
||||
# Try to find OCE / OCC
|
||||
# Once done this will define
|
||||
#
|
||||
# OCC_FOUND - system has OCC - OpenCASCADE
|
||||
|
@ -7,56 +7,84 @@
|
|||
# OCC_LIBRARIES - Link this to use OCC
|
||||
# OCC_OCAF_LIBRARIES - Link this to use OCC OCAF framework
|
||||
|
||||
# First try to find OpenCASCADE Community Edition
|
||||
if(NOT DEFINED OCE_DIR)
|
||||
if(UNIX)
|
||||
set(OCE_DIR "/usr/local/share/cmake/")
|
||||
elseif(WIN32)
|
||||
set(OCE_DIR "c:/OCE-0.4.0/share/cmake")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
IF (WIN32)
|
||||
IF (CYGWIN OR MINGW)
|
||||
|
||||
find_package(OCE QUIET)
|
||||
if(OCE_FOUND)
|
||||
message("-- OpenCASCADE Community Edition has been found.")
|
||||
add_definitions (-DHAVE_CONFIG_H)
|
||||
set(OCC_INCLUDE_DIR ${OCE_INCLUDE_DIRS})
|
||||
#set(OCC_LIBRARY_DIR ${OCE_LIBRARY_DIR})
|
||||
else(OCE_FOUND) #look for OpenCASCADE
|
||||
if(WIN32)
|
||||
if(CYGWIN OR MINGW)
|
||||
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
|
||||
/usr/include/opencascade
|
||||
/usr/local/include/opencascade
|
||||
/opt/opencascade/include
|
||||
/opt/opencascade/inc
|
||||
)
|
||||
FIND_LIBRARY(OCC_LIBRARY TKernel
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/opencascade/lib
|
||||
)
|
||||
else(CYGWIN OR MINGW)
|
||||
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
|
||||
)
|
||||
FIND_LIBRARY(OCC_LIBRARY TKernel
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
|
||||
)
|
||||
endif(CYGWIN OR MINGW)
|
||||
else(WIN32)
|
||||
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
|
||||
/usr/include/opencascade
|
||||
/usr/local/include/opencascade
|
||||
/opt/opencascade/include
|
||||
/opt/opencascade/inc
|
||||
)
|
||||
|
||||
FIND_LIBRARY(OCC_LIBRARY TKernel
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/opencascade/lib
|
||||
)
|
||||
endif(WIN32)
|
||||
if(OCC_LIBRARY)
|
||||
GET_FILENAME_COMPONENT(OCC_LIBRARY_DIR ${OCC_LIBRARY} PATH)
|
||||
endif(OCC_LIBRARY)
|
||||
endif(OCE_FOUND)
|
||||
|
||||
ELSE (CYGWIN OR MINGW)
|
||||
|
||||
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
|
||||
)
|
||||
|
||||
FIND_LIBRARY(OCC_LIBRARY TKernel
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
|
||||
)
|
||||
|
||||
ENDIF (CYGWIN OR MINGW)
|
||||
|
||||
ELSE (WIN32)
|
||||
|
||||
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
|
||||
/usr/include/opencascade
|
||||
/usr/local/include/opencascade
|
||||
/opt/opencascade/include
|
||||
if(OCC_INCLUDE_DIR)
|
||||
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAJOR
|
||||
REGEX "#define OCC_VERSION_MAJOR.*"
|
||||
)
|
||||
|
||||
FIND_LIBRARY(OCC_LIBRARY TKernel
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/opencascade/lib
|
||||
string(REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR})
|
||||
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MINOR
|
||||
REGEX "#define OCC_VERSION_MINOR.*"
|
||||
)
|
||||
string(REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR})
|
||||
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAINT
|
||||
REGEX "#define OCC_VERSION_MAINTENANCE.*"
|
||||
)
|
||||
string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT})
|
||||
|
||||
ENDIF (WIN32)
|
||||
set(OCC_VERSION_STRING "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
|
||||
endif(OCC_INCLUDE_DIR)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set OCC_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING)
|
||||
|
||||
SET(OCC_FOUND FALSE)
|
||||
IF(OCC_LIBRARY)
|
||||
GET_FILENAME_COMPONENT(OCC_LIBRARY_DIR ${OCC_LIBRARY} PATH)
|
||||
SET(OCC_FOUND TRUE)
|
||||
if(OCC_FOUND)
|
||||
set(OCC_LIBRARIES
|
||||
TKFillet
|
||||
TKMesh
|
||||
|
@ -90,13 +118,12 @@ IF(OCC_LIBRARY)
|
|||
TKXDEIGES
|
||||
TKMeshVS
|
||||
)
|
||||
CHECK_MINIMUM_OCC_VERSION_HEX(0x060703)
|
||||
if (NOT OCC_MIN_VERSION)
|
||||
set(OCC_OCAF_LIBRARIES
|
||||
${OCC_OCAF_LIBRARIES}
|
||||
TKAdvTools
|
||||
)
|
||||
endif()
|
||||
|
||||
ENDIF(OCC_LIBRARY)
|
||||
|
||||
if(OCC_VERSION_STRING VERSION_LESS 6.7.3)
|
||||
list(APPEND OCC_OCAF_LIBRARIES TKAdvTools)
|
||||
endif(OCC_VERSION_STRING VERSION_LESS 6.7.3)
|
||||
message("-- Found OCE/OpenCASCADE version: ${OCC_VERSION_STRING}")
|
||||
message("-- OCE/OpenCASCADE include directory: ${OCC_INCLUDE_DIR}")
|
||||
message("-- OCE/OpenCASCADE shared libraries directory: ${OCC_LIBRARY_DIR}")
|
||||
else(OCC_FOUND)
|
||||
message("Neither OpenCASCADE Community Edition nor OpenCasCade were found: will not build CAD modules!")
|
||||
endif(OCC_FOUND)
|
||||
|
|
|
@ -252,62 +252,4 @@ MACRO(SET_PYTHON_PREFIX_SUFFIX ProjectName)
|
|||
if(WIN32)
|
||||
set_target_properties(${ProjectName} PROPERTIES SUFFIX ".pyd")
|
||||
endif(WIN32)
|
||||
ENDMACRO(SET_PYTHON_PREFIX_SUFFIX)
|
||||
|
||||
MACRO(CHECK_MINIMUM_OCC_VERSION_HEX MinVersionHex)
|
||||
message(STATUS "Check for OCC version >= ${MinVersionHex}")
|
||||
set(CMAKE_REQUIRED_INCLUDES ${OCC_INCLUDE_DIR})
|
||||
unset(OCC_MIN_VERSION CACHE)
|
||||
CHECK_CXX_SOURCE_RUNS("
|
||||
#include <Standard_Version.hxx>
|
||||
int main ()
|
||||
{
|
||||
return OCC_VERSION_HEX >= ${MinVersionHex} ? 0 : -1;
|
||||
}
|
||||
"
|
||||
OCC_MIN_VERSION)
|
||||
ENDMACRO(CHECK_MINIMUM_OCC_VERSION_HEX)
|
||||
|
||||
MACRO(GET_OCC_VERSION_HEX)
|
||||
# clear them to run the tests for each configure step
|
||||
unset(OCC_MAJOR CACHE)
|
||||
unset(OCC_MAJOR_COMPILED CACHE)
|
||||
unset(OCC_MAJOR_EXITCODE CACHE)
|
||||
unset(OCC_MINOR CACHE)
|
||||
unset(OCC_MINOR_COMPILED CACHE)
|
||||
unset(OCC_MINOR_EXITCODE CACHE)
|
||||
unset(OCC_MICRO CACHE)
|
||||
unset(OCC_MICRO_COMPILED CACHE)
|
||||
unset(OCC_MICRO_EXITCODE CACHE)
|
||||
|
||||
set(CMAKE_REQUIRED_INCLUDES ${OCC_INCLUDE_DIR})
|
||||
CHECK_CXX_SOURCE_RUNS("
|
||||
#include <Standard_Version.hxx>
|
||||
int main ()
|
||||
{
|
||||
return OCC_VERSION_MAJOR;
|
||||
}
|
||||
"
|
||||
OCC_MAJOR)
|
||||
CHECK_CXX_SOURCE_RUNS("
|
||||
#include <Standard_Version.hxx>
|
||||
int main ()
|
||||
{
|
||||
return OCC_VERSION_MINOR;
|
||||
}
|
||||
"
|
||||
OCC_MINOR)
|
||||
CHECK_CXX_SOURCE_RUNS("
|
||||
#include <Standard_Version.hxx>
|
||||
int main ()
|
||||
{
|
||||
return OCC_VERSION_MAINTENANCE;
|
||||
}
|
||||
"
|
||||
OCC_MICRO)
|
||||
|
||||
unset(OCC_VERSION_HEX CACHE)
|
||||
if (OCC_MAJOR_COMPILED AND OCC_MINOR_COMPILED AND OCC_MICRO_COMPILED)
|
||||
set (OCC_VERSION_HEX "0x0${OCC_MAJOR_EXITCODE}0${OCC_MINOR_EXITCODE}0${OCC_MICRO_EXITCODE}")
|
||||
endif()
|
||||
ENDMACRO(GET_OCC_VERSION_HEX)
|
||||
ENDMACRO(SET_PYTHON_PREFIX_SUFFIX)
|
||||
|
|
Loading…
Reference in New Issue
Block a user