diff options
| author | Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> | 2020-12-04 16:38:05 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-04 16:38:05 -0800 |
| commit | d090a3e74cfaa2ea5e0688e73a26e6180cffc69b (patch) | |
| tree | 7b3b0f602276e83f9bda40e5d09a11e48fa18b57 | |
| parent | 87a908d7b18c6b16f9c145b664b090edecee338e (diff) | |
| download | vcpkg-d090a3e74cfaa2ea5e0688e73a26e6180cffc69b.tar.gz vcpkg-d090a3e74cfaa2ea5e0688e73a26e6180cffc69b.zip | |
[opencascade] Fix static build (#14901)
| -rw-r--r-- | ports/opencascade/CONTROL | 4 | ||||
| -rw-r--r-- | ports/opencascade/fix-build-with-vs2017.patch | 13 | ||||
| -rw-r--r-- | ports/opencascade/fix-static-build.patch | 76 | ||||
| -rw-r--r-- | ports/opencascade/portfile.cmake | 72 |
4 files changed, 134 insertions, 31 deletions
diff --git a/ports/opencascade/CONTROL b/ports/opencascade/CONTROL index a171581b6..7d26a2cc4 100644 --- a/ports/opencascade/CONTROL +++ b/ports/opencascade/CONTROL @@ -1,9 +1,9 @@ Source: opencascade Version: 7.4.0 -Port-Version: 1 +Port-Version: 2 Build-Depends: freetype Description: Open CASCADE Technology (OCCT) is an open-source software development platform for 3D CAD, CAM, CAE. -Supports: !(uwp|osx|linux|arm|static) +Supports: !(uwp|osx|linux|arm) Feature: freeimage Build-Depends: freeimage diff --git a/ports/opencascade/fix-build-with-vs2017.patch b/ports/opencascade/fix-build-with-vs2017.patch new file mode 100644 index 000000000..53b0ab0ea --- /dev/null +++ b/ports/opencascade/fix-build-with-vs2017.patch @@ -0,0 +1,13 @@ +diff --git a/adm/cmake/occt_defs_flags.cmake b/adm/cmake/occt_defs_flags.cmake +index 203ca6b..4ff433a 100644 +--- a/adm/cmake/occt_defs_flags.cmake ++++ b/adm/cmake/occt_defs_flags.cmake +@@ -18,7 +18,7 @@ endif() + + # Turn off the "improved inline analyzer" that stalls on x86 release builds using MSVC 16.7 for 32-bit + if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8) +- if (MSVC) ++ if (MSVC AND MSVC_VERSION GREATER 1919) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /d2DeepThoughtInliner-") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /d2DeepThoughtInliner-") + endif() diff --git a/ports/opencascade/fix-static-build.patch b/ports/opencascade/fix-static-build.patch new file mode 100644 index 000000000..05c105f58 --- /dev/null +++ b/ports/opencascade/fix-static-build.patch @@ -0,0 +1,76 @@ +diff --git a/adm/cmake/freetype.cmake b/adm/cmake/freetype.cmake +index 7f6f950..ca0c525 100644 +--- a/adm/cmake/freetype.cmake ++++ b/adm/cmake/freetype.cmake +@@ -111,6 +111,8 @@ if (IS_BUILTIN_SEARCH_REQUIRED) + endif() + + find_package(Freetype) ++ find_package(freetype CONFIG REQUIRED) ++ set(FREETYPE_LIBRARY freetype) + + # restore ENV{FREETYPE_DIR} + if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") +@@ -230,6 +232,22 @@ endif() + # set 3RDPARTY_FREETYPE_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_LIBRARY + set (3RDPARTY_FREETYPE_LIBRARY "3RDPARTY_FREETYPE_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to freetype library" FORCE) + ++ if (BUILD_SHARED_LIBS) ++ if (CMAKE_BUILD_TYPE STREQUAL "Debug") ++ get_target_property(3RDPARTY_FREETYPE_LIBRARY freetype IMPORTED_IMPLIB_DEBUG) ++ else() ++ get_target_property(3RDPARTY_FREETYPE_LIBRARY freetype IMPORTED_IMPLIB_RELEASE) ++ endif() ++ else() ++ if (CMAKE_BUILD_TYPE STREQUAL "Debug") ++ get_target_property(3RDPARTY_FREETYPE_LIBRARY freetype IMPORTED_LOCATION_DEBUG) ++ else() ++ get_target_property(3RDPARTY_FREETYPE_LIBRARY freetype IMPORTED_LOCATION_RELEASE) ++ endif() ++ endif() ++ get_filename_component(3RDPARTY_FREETYPE_LIBRARY_DIR ${3RDPARTY_FREETYPE_LIBRARY} DIRECTORY) ++ ++ if(0) + if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") + find_library (3RDPARTY_FREETYPE_LIBRARY ${CSF_FREETYPE} + PATHS "${3RDPARTY_FREETYPE_LIBRARY_DIR}" "${3RDPARTY_FREETYPE_DIR}" +@@ -257,9 +275,10 @@ endif() + + set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "The path to freetype library" FORCE) + endif() ++ endif() + + # freetype shared library +- if (WIN32) ++ if (0) + if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}") + + set (CMAKE_FIND_LIBRARY_SUFFIXES .dll) +diff --git a/adm/cmake/occt_toolkit.cmake b/adm/cmake/occt_toolkit.cmake +index f59b163..92175e4 100644 +--- a/adm/cmake/occt_toolkit.cmake ++++ b/adm/cmake/occt_toolkit.cmake +@@ -208,7 +208,7 @@ if (EXECUTABLE_PROJECT) + else() + add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RESOURCE_FILES} ${${PROJECT_NAME}_MOC_FILES}) + +- if (MSVC) ++ if (MSVC AND BUILD_SHARED_LIBS) + install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.pdb + CONFIGURATIONS Debug RelWithDebInfo + DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}") +diff --git a/src/Font/Font_FontMgr.cxx b/src/Font/Font_FontMgr.cxx +index 4fad2f6..ba64b51 100644 +--- a/src/Font/Font_FontMgr.cxx ++++ b/src/Font/Font_FontMgr.cxx +@@ -36,10 +36,6 @@ IMPLEMENT_STANDARD_RTTIEXT(Font_FontMgr,Standard_Transient) + #include <windows.h> + #include <stdlib.h> + +- #ifdef _MSC_VER +- #pragma comment (lib, "freetype.lib") +- #endif +- + namespace + { + diff --git a/ports/opencascade/portfile.cmake b/ports/opencascade/portfile.cmake index dd9531248..0a8bff044 100644 --- a/ports/opencascade/portfile.cmake +++ b/ports/opencascade/portfile.cmake @@ -1,5 +1,4 @@ vcpkg_fail_port_install(ON_ARCH "arm" "arm64" ON_TARGET "UWP" "OSX" "Linux") -vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH @@ -7,9 +6,18 @@ vcpkg_from_github( REF V7_4_0 SHA512 595ad7226b9365c1a7670b77001f71787a5d8aaa4a93a4a4d8eb938564670d79ae5a247ae7cc770b5da53c9a9f2e4166ba6e5ae104c1f2debad19ec2187f4a56 HEAD_REF master - PATCHES fix-msvc-32bit-builds.patch + PATCHES + fix-msvc-32bit-builds.patch + fix-build-with-vs2017.patch + fix-static-build.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 "freeimage" USE_FREEIMAGE "tbb" USE_TBB @@ -24,25 +32,21 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA - OPTIONS - -DBUILD_LIBRARY_TYPE="Shared" + OPTIONS ${FEATURE_OPTIONS} + -DBUILD_LIBRARY_TYPE=${BUILD_TYPE} -DBUILD_MODULE_Draw=OFF -DINSTALL_DIR_LAYOUT=Unix -DBUILD_SAMPLES_MFC=OFF -DBUILD_SAMPLES_QT=OFF -DBUILD_DOC_Overview=OFF - ## Options from vcpkg_check_features() - ${FEATURE_OPTIONS} + -DINSTALL_TEST_CASES=OFF + -DINSTALL_SAMPLES=OFF ) vcpkg_install_cmake() vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/opencascade TARGET_PATH share/opencascade) -# debug creates libd and bind directories that need moving -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin) -file(RENAME ${CURRENT_PACKAGES_DIR}/debug/bind ${CURRENT_PACKAGES_DIR}/debug/bin) - # Remove libd to lib, libd just has cmake files we dont want too file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib) file(RENAME ${CURRENT_PACKAGES_DIR}/debug/libd ${CURRENT_PACKAGES_DIR}/debug/lib) @@ -50,26 +54,36 @@ file(RENAME ${CURRENT_PACKAGES_DIR}/debug/libd ${CURRENT_PACKAGES_DIR}/debug/lib file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) -# fix paths in target files -list(APPEND TARGET_FILES - ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEApplicationFrameworkTargets-debug.cmake - ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADECompileDefinitionsAndFlags-debug.cmake - ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEDataExchangeTargets-debug.cmake - ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEFoundationClassesTargets-debug.cmake - ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEModelingAlgorithmsTargets-debug.cmake - ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEModelingDataTargets-debug.cmake - ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEVisualizationTargets-debug.cmake -) -foreach(TARGET_FILE ${TARGET_FILES}) - file(READ ${TARGET_FILE} filedata) - string(REGEX REPLACE "libd" "lib" filedata "${filedata}") - string(REGEX REPLACE "bind" "bin" filedata "${filedata}") - file(WRITE ${TARGET_FILE} ${filedata}) -endforeach() -# the bin directory ends up with bat files that are noise, let's clean that up -file(GLOB BATS ${CURRENT_PACKAGES_DIR}/bin/*.bat) -file(REMOVE_RECURSE ${BATS}) +if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) + # debug creates libd and bind directories that need moving + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin) + file(RENAME ${CURRENT_PACKAGES_DIR}/debug/bind ${CURRENT_PACKAGES_DIR}/debug/bin) + + # fix paths in target files + list(APPEND TARGET_FILES + ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEApplicationFrameworkTargets-debug.cmake + ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADECompileDefinitionsAndFlags-debug.cmake + ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEDataExchangeTargets-debug.cmake + ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEFoundationClassesTargets-debug.cmake + ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEModelingAlgorithmsTargets-debug.cmake + ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEModelingDataTargets-debug.cmake + ${CURRENT_PACKAGES_DIR}/share/opencascade/OpenCASCADEVisualizationTargets-debug.cmake + ) + + foreach(TARGET_FILE ${TARGET_FILES}) + file(READ ${TARGET_FILE} filedata) + string(REGEX REPLACE "libd" "lib" filedata "${filedata}") + string(REGEX REPLACE "bind" "bin" filedata "${filedata}") + file(WRITE ${TARGET_FILE} ${filedata}) + endforeach() + # the bin directory ends up with bat files that are noise, let's clean that up + file(GLOB BATS ${CURRENT_PACKAGES_DIR}/bin/*.bat) + file(REMOVE_RECURSE ${BATS}) +else() + # remove scripts in bin dir + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) +endif() file(INSTALL ${SOURCE_PATH}/OCCT_LGPL_EXCEPTION.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) |
