diff --git a/ports/netgen/cross-build.patch b/ports/netgen/cross-build.patch new file mode 100644 index 0000000000..10c4aa9c92 --- /dev/null +++ b/ports/netgen/cross-build.patch @@ -0,0 +1,64 @@ +diff --git a/libsrc/core/exception.cpp b/libsrc/core/exception.cpp +index 9c99a138..2d5a1ede 100644 +--- a/libsrc/core/exception.cpp ++++ b/libsrc/core/exception.cpp +@@ -36,7 +36,7 @@ namespace ngcore + + + // ********* STUFF FOR GETBACKTRACE *************************** +-#if defined __GNUC__ && !defined __EMSCRIPTEN__ ++#if defined __GNUC__ && !defined __EMSCRIPTEN__ && !defined __ANDROID__ + + #include + #include +diff --git a/libsrc/core/simd.hpp b/libsrc/core/simd.hpp +index d5a6341f..5f07a6d3 100644 +--- a/libsrc/core/simd.hpp ++++ b/libsrc/core/simd.hpp +@@ -28,7 +28,7 @@ + #include "simd_avx512.hpp" + #endif + +-#ifdef __aarch64__ ++#if defined __aarch64__ && !defined __ANDROID__ + #include "simd_arm64.hpp" + #endif + +diff --git a/libsrc/core/utils.hpp b/libsrc/core/utils.hpp +index 79d919c0..1318debf 100644 +--- a/libsrc/core/utils.hpp ++++ b/libsrc/core/utils.hpp +@@ -74,7 +74,7 @@ namespace ngcore + #elif defined(__EMSCRIPTEN__) + return std::chrono::high_resolution_clock::now().time_since_epoch().count(); + #else +-#warning "Unsupported CPU architecture" ++#pragma message ( "Unsupported CPU architecture" ) + return 0; + #endif + } +diff --git a/rules/CMakeLists.txt b/rules/CMakeLists.txt +index 2c281ca3..e2982f28 100644 +--- a/rules/CMakeLists.txt ++++ b/rules/CMakeLists.txt +@@ -1,14 +1,14 @@ + # this file is included from the parent directory (otherwise generated source files are not recognized properly by cmake) + + # generate .cpp files containing the string of the .rls meshing rule files +-if(EMSCRIPTEN) +- add_custom_command(OUTPUT makerls +- COMMAND g++ ${CMAKE_CURRENT_SOURCE_DIR}/rules/makerlsfile.cpp -o ${CMAKE_CURRENT_BINARY_DIR}/makerls +- ) +- set(rules_command ${CMAKE_BINARY_DIR}/makerls) +-else(EMSCRIPTEN) ++if(MAKERLS_EXECUTABLE) ++ add_executable(makerls IMPORTED) ++ set_target_properties(makerls PROPERTIES IMPORTED_LOCATION "${MAKERLS_EXECUTABLE}") ++ set(rules_command makerls) ++else() + add_executable(makerls rules/makerlsfile.cpp) + set(rules_command makerls) ++ install(TARGETS makerls DESTINATION ${NG_INSTALL_DIR} COMPONENT netgen) + endif() + + set(rules diff --git a/ports/netgen/portfile.cmake b/ports/netgen/portfile.cmake index c91e326984..f402c07bae 100644 --- a/ports/netgen/portfile.cmake +++ b/ports/netgen/portfile.cmake @@ -14,8 +14,10 @@ vcpkg_from_github( add_filesystem.patch occ-78.patch 142.diff + cross-build.patch ) +set(OPTIONS "") if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") list(APPEND OPTIONS "-DNGLIB_LIBRARY_TYPE=STATIC" @@ -26,9 +28,17 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") string(APPEND VCPKG_CXX_FLAGS " -DNGSTATIC_BUILD") endif() +if(VCPKG_CROSSCOMPILING) + list(APPEND OPTIONS "-DMAKERLS_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/${PORT}/makerls${VCPKG_HOST_EXECUTABLE_SUFFIX}") +endif() + vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS FEATURES python USE_PYTHON + cgns USE_CGNS + mpeg USE_MPEG + jpeg USE_JPEG + occ USE_OCC ) vcpkg_cmake_configure( @@ -36,10 +46,6 @@ vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS ${OPTIONS} ${FEATURE_OPTIONS} - -DUSE_JPEG=ON - -DUSE_CGNS=ON - -DUSE_OCC=ON - -DUSE_MPEG=ON -DUSE_SPDLOG=OFF # will be vendored otherwise -DUSE_GUI=OFF -DPREFER_SYSTEM_PYBIND11=ON @@ -62,31 +68,38 @@ vcpkg_cmake_install() vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/netgen) vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") +if(NOT VCPKG_CROSSCOMPILING) + vcpkg_copy_tools(TOOL_NAMES makerls AUTO_CLEAN) +endif() + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") endif() +if(USE_OCC) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/nglib.h" "define NGLIB\n" "define NGLIB\n#define OCCGEOMETRY\n") +endif() if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/nglib.h" "defined(NGSTATIC_BUILD)" "1") - vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/nglib.h" "define NGLIB" "define NGLIB\n#define OCCGEOMETRY\n#define JPEGLIB\n#define FFMPEG\n") vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/core/ngcore_api.hpp" "!defined(NGSTATIC_BUILD)" "0") endif() set(config_file "${CURRENT_PACKAGES_DIR}/share/netgen/NetgenConfig.cmake") file(READ "${config_file}" contents) string(REPLACE "${SOURCE_PATH}" "NOT-USABLE" contents "${contents}") -string(REGEX REPLACE "\\\$<\\\$:([^>]+)>" "\\1" contents "${contents}") -string(REPLACE "\${NETGEN_CMAKE_DIR}/../" "\${NETGEN_CMAKE_DIR}/../../" contents "${contents}") +string(REPLACE [[${NETGEN_CMAKE_DIR}/../../..]] [[${NETGEN_CMAKE_DIR}/../..]] contents "${contents}") +string(REPLACE [[lib/cmake/netgen]] [[share/netgen]] contents "${contents}") +string(REPLACE [[$:]] [[$<$>:]] contents "${contents}") if(NOT VCPKG_BUILD_TYPE) - string(REPLACE "/lib" "$<$:/debug>/lib" contents "${contents}") + string(REPLACE [[/lib/]] [[$<$:/debug>/lib/]] contents "${contents}") + string(REPLACE [[optimized;${VCPKG_IMPORT_PREFIX}$<$:/debug>/lib/]] [[optimized;${VCPKG_IMPORT_PREFIX}/lib/]] contents "${contents}") + string(REPLACE [[debug;${VCPKG_IMPORT_PREFIX}/debug$<$:/debug>/lib/]] [[debug;${VCPKG_IMPORT_PREFIX}/debug/lib/]] contents "${contents}") endif() -string(REGEX REPLACE "$:([^>]+)>" "\\1" contents "${contents}") file(WRITE "${config_file}" "${contents}") -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/netgen/NetgenConfig.cmake" "${SOURCE_PATH}" "NOT-USABLE") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") if("python" IN_LIST FEATURES) - vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/netgen/config.py" "CMAKE_INSTALL_PREFIX[^\n]+" "") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/netgen/config.py" "CMAKE_INSTALL_PREFIX = \"${CURRENT_PACKAGES_DIR}" "CMAKE_INSTALL_PREFIX_NOT_USABLE = \"") endif() diff --git a/ports/netgen/vcpkg.json b/ports/netgen/vcpkg.json index 175dc832f1..f4d9b67ff6 100644 --- a/ports/netgen/vcpkg.json +++ b/ports/netgen/vcpkg.json @@ -1,25 +1,15 @@ { "name": "netgen", "version": "6.2.2401", + "port-version": 1, "description": "NETGEN is an automatic 3d tetrahedral mesh generator. It accepts input from constructive solid geometry (CSG) or boundary representation (BRep) from STL file format. The connection to a geometry kernel allows the handling of IGES and STEP files. NETGEN contains modules for mesh optimization and hierarchical mesh refinement.", "homepage": "https://ngsolve.org/", "license": "LGPL-2.1-or-later", "supports": "arm64 | x64", "dependencies": [ { - "name": "cgns", - "default-features": false - }, - { - "name": "ffmpeg", - "default-features": false, - "features": [ - "avcodec" - ] - }, - "libjpeg-turbo", - { - "name": "opencascade", + "name": "netgen", + "host": true, "default-features": false }, { @@ -33,6 +23,42 @@ "zlib" ], "features": { + "cgns": { + "description": "CGNS file read/write support", + "dependencies": [ + { + "name": "cgns", + "default-features": false + } + ] + }, + "jpeg": { + "description": "enable snapshots using library libjpeg", + "dependencies": [ + "libjpeg-turbo" + ] + }, + "mpeg": { + "description": "enable video recording with FFmpeg", + "dependencies": [ + { + "name": "ffmpeg", + "default-features": false, + "features": [ + "avcodec" + ] + } + ] + }, + "occ": { + "description": "build with OpenCascade geometry kernel interface", + "dependencies": [ + { + "name": "opencascade", + "default-features": false + } + ] + }, "python": { "description": "Build python bindings", "dependencies": [ diff --git a/scripts/test_ports/vcpkg-ci-netgen/portfile.cmake b/scripts/test_ports/vcpkg-ci-netgen/portfile.cmake new file mode 100644 index 0000000000..065116c276 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-netgen/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/scripts/test_ports/vcpkg-ci-netgen/vcpkg.json b/scripts/test_ports/vcpkg-ci-netgen/vcpkg.json new file mode 100644 index 0000000000..a532ee7eb9 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-netgen/vcpkg.json @@ -0,0 +1,17 @@ +{ + "name": "vcpkg-ci-netgen", + "version-string": "ci", + "description": "Force non-default features of netgen within vcpkg CI", + "homepage": "https://github.com/microsoft/vcpkg", + "dependencies": [ + { + "name": "netgen", + "features": [ + "cgns", + "jpeg", + "mpeg", + "occ" + ] + } + ] +} diff --git a/versions/baseline.json b/versions/baseline.json index f5a9f59de6..fdd7f316e0 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -6094,7 +6094,7 @@ }, "netgen": { "baseline": "6.2.2401", - "port-version": 0 + "port-version": 1 }, "nethost": { "baseline": "8.0.3", diff --git a/versions/n-/netgen.json b/versions/n-/netgen.json index f869426c1d..c4ac86f649 100644 --- a/versions/n-/netgen.json +++ b/versions/n-/netgen.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "5f32bd93d58e5c5057f30d3564fa0a9b808498d6", + "version": "6.2.2401", + "port-version": 1 + }, { "git-tree": "289792b9ef5239988ae4c6a418fadfb59fadda5f", "version": "6.2.2401",