Fix cmake find of opencascade libraries for occt 7.8

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17654
This commit is contained in:
Marek Roszko 2024-04-01 20:48:29 -04:00
parent d82e8ee41a
commit c8e41dcfe8

View File

@ -27,7 +27,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Set the needed libraries # Set the needed libraries
set( OCC_LIBS set( OCC_LIBS_COMMON
TKBinL TKBinL
TKBin TKBin
TKBinTObj TKBinTObj
@ -45,7 +45,6 @@ set( OCC_LIBS
TKGeomAlgo TKGeomAlgo
TKGeomBase TKGeomBase
TKHLR TKHLR
TKIGES
TKLCAF TKLCAF
TKMath TKMath
TKMesh TKMesh
@ -56,18 +55,10 @@ set( OCC_LIBS
TKRWMesh TKRWMesh
TKService TKService
TKShHealing TKShHealing
TKSTEP209
TKSTEPAttr
TKSTEPBase
TKSTEP
TKSTL
TKTObj TKTObj
TKTopAlgo TKTopAlgo
TKV3d TKV3d
TKVRML
TKXCAF TKXCAF
TKXDEIGES
TKXDESTEP
TKXMesh TKXMesh
TKXmlL TKXmlL
TKXml TKXml
@ -76,6 +67,26 @@ set( OCC_LIBS
TKXSBase TKXSBase
) )
# Libraries valid pre-7.8.0
set( OCC_LIBS_PRE_78
TKIGES
TKSTEP209
TKSTEPAttr
TKSTEPBase
TKSTEP
TKSTL
TKVRML
TKXDEIGES
TKXDESTEP
)
# Libraries for versions >= 7.8.0
set( OCC_LIBS_POST_78
TKDEIGES
TKDESTEP
TKDESTL
)
set(OCC_TYPE "OpenCASCADE Standard Edition") set(OCC_TYPE "OpenCASCADE Standard Edition")
if(WIN32) if(WIN32)
if(CYGWIN OR MINGW) if(CYGWIN OR MINGW)
@ -178,9 +189,8 @@ endif(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFO
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING) FIND_PACKAGE_HANDLE_STANDARD_ARGS(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING)
if(OCC_FOUND) function(occ_lib_search SEARCH_LIST)
foreach(lib IN LISTS OCC_LIBS) foreach(lib IN LISTS ${SEARCH_LIST})
#Use the specified library location if given #Use the specified library location if given
find_library(OCC_TEMP_LIB ${lib} HINTS ${OCC_LIBRARY_DIR} NO_DEFAULT_PATH) find_library(OCC_TEMP_LIB ${lib} HINTS ${OCC_LIBRARY_DIR} NO_DEFAULT_PATH)
if(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND") if(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
@ -197,6 +207,15 @@ if(OCC_FOUND)
unset(OCC_TEMP_LIB CACHE) unset(OCC_TEMP_LIB CACHE)
endforeach(lib) endforeach(lib)
endfunction()
if(OCC_FOUND)
occ_lib_search( OCC_LIBS_COMMON )
if(OCC_VERSION_STRING VERSION_LESS "7.8.0")
occ_lib_search( OCC_LIBS_PRE_78 )
else()
occ_lib_search( OCC_LIBS_POST_78 )
endif()
#Convert path names to absolute for cleaner display #Convert path names to absolute for cleaner display
get_filename_component(OCC_INCLUDE_DIR "${OCC_INCLUDE_DIR}" ABSOLUTE) get_filename_component(OCC_INCLUDE_DIR "${OCC_INCLUDE_DIR}" ABSOLUTE)