diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/opencascade | |
Diffstat (limited to 'vcpkg/ports/opencascade')
| -rw-r--r-- | vcpkg/ports/opencascade/dependencies.patch | 104 | ||||
| -rw-r--r-- | vcpkg/ports/opencascade/drop-bin-letter-d.patch | 45 | ||||
| -rw-r--r-- | vcpkg/ports/opencascade/fix-install-prefix-path.patch | 12 | ||||
| -rw-r--r-- | vcpkg/ports/opencascade/install-include-dir.patch | 16 | ||||
| -rw-r--r-- | vcpkg/ports/opencascade/portfile.cmake | 79 | ||||
| -rw-r--r-- | vcpkg/ports/opencascade/remove-vcpkg-enabling.patch | 14 | ||||
| -rw-r--r-- | vcpkg/ports/opencascade/vcpkg.json | 78 |
7 files changed, 348 insertions, 0 deletions
diff --git a/vcpkg/ports/opencascade/dependencies.patch b/vcpkg/ports/opencascade/dependencies.patch new file mode 100644 index 0000000..f319108 --- /dev/null +++ b/vcpkg/ports/opencascade/dependencies.patch @@ -0,0 +1,104 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 34300d41ad..263b4bcbd3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -518,8 +518,8 @@ endif() + if (CAN_USE_FREETYPE AND USE_FREETYPE) + message (STATUS "Info: FreeType is used by OCCT") + add_definitions (-DHAVE_FREETYPE) +- OCCT_ADD_VCPKG_FEATURE ("freetype") +- list (APPEND OCCT_3RDPARTY_CMAKE_LIST "adm/cmake/freetype") ++ find_package(Freetype MODULE REQUIRED) ++ set(CSF_FREETYPE Freetype::Freetype) + else() + if (NOT CAN_USE_FREETYPE) + OCCT_CHECK_AND_UNSET ("USE_FREETYPE") +@@ -534,9 +534,10 @@ endif() + # VTK + if (USE_VTK) + add_definitions (-DHAVE_VTK) +- OCCT_ADD_VCPKG_FEATURE ("vtk") + set (OCCT_VTK_USED_TARGETS "" CACHE INTERNAL "" FORCE) +- list (APPEND OCCT_3RDPARTY_CMAKE_LIST "adm/cmake/vtk") ++ find_package(VTK REQUIRED) ++ set(CSF_VTK VTK::CommonCore) ++ set(IS_VTK_9XX 1) + else() + OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_VTK") + OCCT_UNSET_VCPKG_FEATURE ("vtk") +@@ -551,8 +552,8 @@ endif() + # FREEIMAGE + if (CAN_USE_FREEIMAGE AND USE_FREEIMAGE) + add_definitions (-DHAVE_FREEIMAGE) +- OCCT_ADD_VCPKG_FEATURE ("freeimage") +- list (APPEND OCCT_3RDPARTY_CMAKE_LIST "adm/cmake/freeimage") ++ find_package(freeimage CONFIG REQUIRED) ++ set(CSF_FreeImagePlus freeimage::FreeImagePlus) + elseif (NOT CAN_USE_FREEIMAGE) + OCCT_CHECK_AND_UNSET ("USE_FREEIMAGE") + OCCT_UNSET_VCPKG_FEATURE ("freeimage") +@@ -647,8 +648,8 @@ endif() + # TBB + if (CAN_USE_TBB AND USE_TBB) + add_definitions (-DHAVE_TBB) +- OCCT_ADD_VCPKG_FEATURE ("tbb") +- list (APPEND OCCT_3RDPARTY_CMAKE_LIST "adm/cmake/tbb") ++ find_package(TBB CONFIG REQUIRED) ++ set(CSF_TBB TBB::tbb TBB::tbbmalloc) + elseif (NOT CAN_USE_TBB) + OCCT_CHECK_AND_UNSET ("USE_TBB") + OCCT_UNSET_VCPKG_FEATURE ("tbb") +@@ -664,8 +665,8 @@ endif() + OCCT_IS_PRODUCT_REQUIRED (CSF_RapidJSON CAN_USE_RAPIDJSON) + if (CAN_USE_RAPIDJSON AND USE_RAPIDJSON) + add_definitions (-DHAVE_RAPIDJSON) +- OCCT_ADD_VCPKG_FEATURE ("rapidjson") +- list (APPEND OCCT_3RDPARTY_CMAKE_LIST "adm/cmake/rapidjson") ++ find_package(RapidJSON CONFIG REQUIRED) ++ set(CSF_RapidJSON rapidjson) + elseif (NOT CAN_USE_RAPIDJSON) + OCCT_CHECK_AND_UNSET ("USE_RAPIDJSON") + OCCT_UNSET_VCPKG_FEATURE ("rapidjson") +diff --git a/adm/templates/OpenCASCADEConfig.cmake.in b/adm/templates/OpenCASCADEConfig.cmake.in +index add6a678c7..312930343e 100644 +--- a/adm/templates/OpenCASCADEConfig.cmake.in ++++ b/adm/templates/OpenCASCADEConfig.cmake.in +@@ -71,6 +71,23 @@ set (OpenCASCADE_WITH_GLES2 @USE_GLES2@) + @SET_OpenCASCADE_WITH_D3D@ + @SET_OpenCASCADE_WITH_GLX@ + ++include(CMakeFindDependencyMacro) ++if("@USE_FREEIMAGE@") ++ find_dependency(freeimage CONFIG) ++endif() ++if("@USE_FREETYPE@") ++ find_dependency(Freetype MODULE) ++endif() ++if("@USE_RAPIDJSON@") ++ find_package(RapidJSON CONFIG REQUIRED) ++endif() ++if("@USE_TBB@") ++ find_dependency(TBB CONFIG) ++endif() ++if("@USE_VTK@") ++ find_dependency(VTK REQUIRED) ++endif() ++ + # Import OpenCASCADE compile definitions, C and C++ flags for each installed configuration. + file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/OpenCASCADECompileDefinitionsAndFlags-*.cmake") + foreach(f ${CONFIG_FILES}) +diff --git a/src/Image/Image_AlienPixMap.cxx b/src/Image/Image_AlienPixMap.cxx +index 81289d953b..5ee49e9ff2 100644 +--- a/src/Image/Image_AlienPixMap.cxx ++++ b/src/Image/Image_AlienPixMap.cxx +@@ -19,10 +19,6 @@ + + #ifdef HAVE_FREEIMAGE + #include <FreeImage.h> +- +- #ifdef _MSC_VER +- #pragma comment(lib, "FreeImage.lib") +- #endif + #elif defined(HAVE_WINCODEC) + #include <wincodec.h> + // prevent warnings on MSVC10 diff --git a/vcpkg/ports/opencascade/drop-bin-letter-d.patch b/vcpkg/ports/opencascade/drop-bin-letter-d.patch new file mode 100644 index 0000000..d3c3df6 --- /dev/null +++ b/vcpkg/ports/opencascade/drop-bin-letter-d.patch @@ -0,0 +1,45 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d051f5ccce..91517a5936 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -317,7 +317,6 @@ set (CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" CACHE INTERNAL "" FORCE) + + set (BIN_LETTER "") + if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") +- set (BIN_LETTER "d") + elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") + set (BIN_LETTER "i") + endif() +@@ -1002,6 +1001,7 @@ if (WIN32) + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bini") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind") ++ set (CMAKE_PDB_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin") + endif() + + string(TIMESTAMP CURRENT_TIME "%H:%M:%S") +diff --git a/adm/cmake/occt_macros.cmake b/adm/cmake/occt_macros.cmake +index 92a8db33dc..3d4c95b584 100644 +--- a/adm/cmake/occt_macros.cmake ++++ b/adm/cmake/occt_macros.cmake +@@ -779,7 +779,7 @@ macro (OCCT_INSERT_CODE_FOR_TARGET) + elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$\") + set (OCCT_INSTALL_BIN_LETTER \"i\") + elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Dd][Ee][Bb][Uu][Gg])$\") +- set (OCCT_INSTALL_BIN_LETTER \"d\") ++ set (OCCT_INSTALL_BIN_LETTER \"\") + endif()") + endmacro() + +diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt +index beb934f7..95cec74a 100644 +--- a/tools/CMakeLists.txt ++++ b/tools/CMakeLists.txt +@@ -172,7 +172,6 @@ set (CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" CACHE INTERNAL "" FORCE) + + set (BIN_LETTER "") + if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") +- set (BIN_LETTER "d") + elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") + set (BIN_LETTER "i") + endif() diff --git a/vcpkg/ports/opencascade/fix-install-prefix-path.patch b/vcpkg/ports/opencascade/fix-install-prefix-path.patch new file mode 100644 index 0000000..ccc5598 --- /dev/null +++ b/vcpkg/ports/opencascade/fix-install-prefix-path.patch @@ -0,0 +1,12 @@ +diff --git a/adm/templates/OpenCASCADEConfig.cmake.in b/adm/templates/OpenCASCADEConfig.cmake.in +index e391ddfe8e..c926c499ac 100644 +--- a/adm/templates/OpenCASCADEConfig.cmake.in ++++ b/adm/templates/OpenCASCADEConfig.cmake.in +@@ -24,6 +24,7 @@ set (OpenCASCADE_DEVELOPMENT_VERSION "@OCC_VERSION_DEVELOPMENT@") + # - in Android style: $INSTALL_DIR/libs/$CMAKE_ANDROID_ARCH_ABI/cmake/opencascade-<version> + get_filename_component (OpenCASCADE_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) + get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) ++get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) + if (OpenCASCADE_INSTALL_PREFIX MATCHES "/cmake$") + get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) + endif() diff --git a/vcpkg/ports/opencascade/install-include-dir.patch b/vcpkg/ports/opencascade/install-include-dir.patch new file mode 100644 index 0000000..f250fbb --- /dev/null +++ b/vcpkg/ports/opencascade/install-include-dir.patch @@ -0,0 +1,16 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 715adb7c2e..a06f8a8c88 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1375,6 +1375,11 @@ foreach (OCCT_MODULE ${OCCT_MODULES}) + endforeach() + set (OCCT_MODULES_ENABLED ${OCCT_MODULES_ENABLED_SORTED}) + ++foreach (OCCT_LIBRARY IN LISTS OCCT_LIBRARIES) ++ target_include_directories(${OCCT_LIBRARY} INTERFACE $<INSTALL_INTERFACE:include/opencascade>) # OpenCASCADE_INCLUDE_DIR ++ target_include_directories(${OCCT_LIBRARY} INTERFACE $<INSTALL_INTERFACE:include>) # vcpkg lock-in ++endforeach() ++ + # Add all targets to the build-tree export set + export (TARGETS ${OCCT_LIBRARIES} FILE "${CMAKE_BINARY_DIR}/OpenCASCADETargets.cmake") + diff --git a/vcpkg/ports/opencascade/portfile.cmake b/vcpkg/ports/opencascade/portfile.cmake new file mode 100644 index 0000000..50af5ae --- /dev/null +++ b/vcpkg/ports/opencascade/portfile.cmake @@ -0,0 +1,79 @@ +string(REPLACE "." "_" VERSION_STR "V${VERSION}") +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO Open-Cascade-SAS/OCCT + REF "${VERSION_STR}" + SHA512 58f9ab91c5119e0a99fb7599bce574f17ce3e3a802a9c503fa0464228d5b2141e3f5557ef68355b4921b572bd10d99bec0f31836a103d5e5fa98cd0d685610a2 + HEAD_REF master + PATCHES + fix-install-prefix-path.patch + drop-bin-letter-d.patch + dependencies.patch + install-include-dir.patch + remove-vcpkg-enabling.patch +) + +if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + set(BUILD_TYPE "Shared") +else() + set(BUILD_TYPE "Static") +endif() + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + freeimage USE_FREEIMAGE + freetype USE_FREETYPE + rapidjson USE_RAPIDJSON + samples INSTALL_SAMPLES + tbb USE_TBB + vtk USE_VTK +) + +# We turn off BUILD_MODULE_Draw as it requires TCL 8.6 and TK 8.6 specifically which conflicts with vcpkg only having TCL 9.0 +# And pre-built ActiveTCL binaries are behind a marketing wall :( +# We use the Unix install layout for Windows as it matches vcpkg +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${FEATURE_OPTIONS} + -DBUILD_LIBRARY_TYPE=${BUILD_TYPE} + -DBUILD_MODULE_Draw=OFF + -DBUILD_DOC_Overview=OFF + -DBUILD_MODULE_DETools=OFF + -DINSTALL_DIR_LAYOUT=Unix + -DINSTALL_DIR_DOC=share/trash + -DINSTALL_DIR_SCRIPT=share/trash # not relocatable + -DINSTALL_TEST_CASES=OFF + -DUSE_TK=OFF + OPTIONS_DEBUG + -DINSTALL_SAMPLES=OFF +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/opencascade) + +#make occt includes relative to source_file +file(GLOB extra_headers + LIST_DIRECTORIES false + RELATIVE "${CURRENT_PACKAGES_DIR}/include/opencascade" + "${CURRENT_PACKAGES_DIR}/include/opencascade/*.h" +) +list(JOIN extra_headers "|" extra_headers) +file(GLOB files "${CURRENT_PACKAGES_DIR}/include/opencascade/*.[hgl]xx") +foreach(file_name IN LISTS files) + file(READ "${file_name}" filedata) + string(REGEX REPLACE "(# *include) <([a-zA-Z0-9_]*[.][hgl]xx|${extra_headers})>" [[\1 "\2"]] filedata "${filedata}") + file(WRITE "${file_name}" "${filedata}") +endforeach() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/opencascade/samples/qt") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/trash") + +vcpkg_install_copyright( + FILE_LIST + "${SOURCE_PATH}/LICENSE_LGPL_21.txt" + "${SOURCE_PATH}/OCCT_LGPL_EXCEPTION.txt" +) diff --git a/vcpkg/ports/opencascade/remove-vcpkg-enabling.patch b/vcpkg/ports/opencascade/remove-vcpkg-enabling.patch new file mode 100644 index 0000000..a11da75 --- /dev/null +++ b/vcpkg/ports/opencascade/remove-vcpkg-enabling.patch @@ -0,0 +1,14 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a06f8a8c88..de45605c62 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -2,9 +2,6 @@ cmake_minimum_required (VERSION 3.10 FATAL_ERROR) + + if (NOT DEFINED BUILD_USE_VCPKG) + set (BUILD_USE_VCPKG OFF CACHE BOOL "Use vcpkg for 3rdparty libraries.") +- if (CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg.cmake") +- set (BUILD_USE_VCPKG ON) +- endif() + endif() + + if (BUILD_USE_VCPKG) diff --git a/vcpkg/ports/opencascade/vcpkg.json b/vcpkg/ports/opencascade/vcpkg.json new file mode 100644 index 0000000..f66a404 --- /dev/null +++ b/vcpkg/ports/opencascade/vcpkg.json @@ -0,0 +1,78 @@ +{ + "name": "opencascade", + "version": "7.9.2", + "description": "Open CASCADE Technology (OCCT) is an open-source software development platform for 3D CAD, CAM, CAE.", + "homepage": "https://github.com/Open-Cascade-SAS/OCCT", + "license": "LGPL-2.1-only", + "supports": "!xbox", + "dependencies": [ + { + "name": "angle", + "platform": "uwp" + }, + { + "name": "opengl", + "platform": "!(android | ios | uwp | wasm32)" + }, + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "default-features": [ + { + "name": "freetype", + "platform": "!uwp" + } + ], + "features": { + "freeimage": { + "description": "Enable optional usage of freeimage", + "dependencies": [ + "freeimage" + ] + }, + "freetype": { + "description": "Use of freetype", + "supports": "!uwp", + "dependencies": [ + "fontconfig", + { + "name": "freetype", + "default-features": false + } + ] + }, + "rapidjson": { + "description": "Enable optional usage of rapidjson", + "dependencies": [ + "rapidjson" + ] + }, + "samples": { + "description": "Enable optional samples" + }, + "tbb": { + "description": "Enable optional usage of tbb", + "dependencies": [ + "tbb" + ] + }, + "vtk": { + "description": "Enable optional usage of vtk", + "dependencies": [ + { + "name": "vtk", + "default-features": false, + "features": [ + "opengl" + ] + } + ] + } + } +} |