From e3b3af14784598ffcee0e00386bb81f8b73bb0b2 Mon Sep 17 00:00:00 2001 From: afresh1 Date: Sat, 29 Nov 2025 23:38:42 +0000 Subject: [PATCH] Import cad/lib3mf lib3mf is a C++ implementation of the 3D Manufacturing Format file standard. It provides 3MF reading and writing capabilities, as well as conversion and validation tools for input and output data. lib3mf runs on Windows, Linux and MacOS and offers a clean and easy-to-use API in various programming languages to speed up the development and keep integration costs at a minimum. As 3MF shall become an universal 3D Printing standard, its quick adoption is very important. This library shall lower all barriers of adoption to any possible user, let it be software providers, hardware providers, service providers or middleware tools. The specification can be downloaded at http://3mf.io/specification/. Tweaks and OK from both sthen@ and jtt@ --- cad/lib3mf/Makefile | 31 +++++++++++++ cad/lib3mf/distinfo | 2 + cad/lib3mf/patches/patch-CMakeLists_txt | 23 ++++++++++ .../patch-Tests_CPP_Bindings_CMakeLists_txt | 28 ++++++++++++ cad/lib3mf/pkg/DESCR | 15 +++++++ cad/lib3mf/pkg/PLIST | 44 +++++++++++++++++++ 6 files changed, 143 insertions(+) create mode 100644 cad/lib3mf/Makefile create mode 100644 cad/lib3mf/distinfo create mode 100644 cad/lib3mf/patches/patch-CMakeLists_txt create mode 100644 cad/lib3mf/patches/patch-Tests_CPP_Bindings_CMakeLists_txt create mode 100644 cad/lib3mf/pkg/DESCR create mode 100644 cad/lib3mf/pkg/PLIST diff --git a/cad/lib3mf/Makefile b/cad/lib3mf/Makefile new file mode 100644 index 00000000000..c09048b2438 --- /dev/null +++ b/cad/lib3mf/Makefile @@ -0,0 +1,31 @@ + +V = 2.4.1 + +COMMENT = implementation of the 3D Manufacturing Format file standard +GH_ACCOUNT = 3MFConsortium +GH_PROJECT = lib3mf +GH_TAGNAME = v${V} + +CATEGORIES = cad + +# BSD-2-Clause license +PERMIT_PACKAGE = Yes + +MODULES = devel/cmake lang/python +COMPILER = base-clang ports-gcc base-gcc + +SHARED_LIBS += 3mf 0.0 # 0.0 + +BUILD_DEPENDS = devel/gtest + +LIB_DEPENDS = archivers/libzip + +CONFIGURE_ARGS = -DUSE_INCLUDED_ZLIB=OFF \ + -DUSE_INCLUDED_LIBZIP=OFF \ + -DUSE_INCLUDED_SSL=OFF \ + -DCMAKE_INSTALL_INCLUDEDIR=include/lib3mf + +post-install: + ${MODPY_COMPILEALL} ${PREFIX}/include/Bindings/Python/Lib3MF.py + +.include diff --git a/cad/lib3mf/distinfo b/cad/lib3mf/distinfo new file mode 100644 index 00000000000..9bdf737116b --- /dev/null +++ b/cad/lib3mf/distinfo @@ -0,0 +1,2 @@ +SHA256 (lib3mf-2.4.1.tar.gz) = CB3qZt3RuVhkS/rA/ppYDmNyYGFFnvzlGQoQFhCC+Pc= +SIZE (lib3mf-2.4.1.tar.gz) = 36313494 diff --git a/cad/lib3mf/patches/patch-CMakeLists_txt b/cad/lib3mf/patches/patch-CMakeLists_txt new file mode 100644 index 00000000000..cf42a9a7077 --- /dev/null +++ b/cad/lib3mf/patches/patch-CMakeLists_txt @@ -0,0 +1,23 @@ +Index: CMakeLists.txt +--- CMakeLists.txt.orig ++++ CMakeLists.txt +@@ -201,7 +201,8 @@ if (USE_INCLUDED_LIBZIP) + else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(LIBZIP REQUIRED libzip) +- target_link_libraries(${PROJECT_NAME} ${LIBZIP_LIBRARIES}) ++ target_link_libraries(${PROJECT_NAME} ${LIBZIP_LINK_LIBRARIES}) ++ target_include_directories(${PROJECT_NAME} PUBLIC ${LIBZIP_INCLUDE_DIRS}) + endif() + + +@@ -210,7 +211,8 @@ if (USE_INCLUDED_ZLIB) + else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(ZLIB REQUIRED zlib) +- target_link_libraries(${PROJECT_NAME} ${ZLIB_LIBRARIES}) ++ target_link_libraries(${PROJECT_NAME} ${ZLIB_LINK_LIBRARIES}) ++ target_include_directories(${PROJECT_NAME} PUBLIC ${ZLIB_INCLUDE_DIRS}) + endif() + + diff --git a/cad/lib3mf/patches/patch-Tests_CPP_Bindings_CMakeLists_txt b/cad/lib3mf/patches/patch-Tests_CPP_Bindings_CMakeLists_txt new file mode 100644 index 00000000000..c939c103852 --- /dev/null +++ b/cad/lib3mf/patches/patch-Tests_CPP_Bindings_CMakeLists_txt @@ -0,0 +1,28 @@ +Index: Tests/CPP_Bindings/CMakeLists.txt +--- Tests/CPP_Bindings/CMakeLists.txt.orig ++++ Tests/CPP_Bindings/CMakeLists.txt +@@ -3,7 +3,7 @@ + + SET(TESTNAME "Test_CPP_Bindings") + +-file(GLOB GTEST_SRC_FILES "${CMAKE_SOURCE_DIR}/Libraries/googletest/Source/*cc") ++#file(GLOB GTEST_SRC_FILES "${CMAKE_SOURCE_DIR}/Libraries/googletest/Source/*cc") + + set(SRCS_UNITTEST + ./Source/AllTests.cpp +@@ -48,10 +48,13 @@ add_executable(${TESTNAME} ${SRCS_UNITTEST} ${GTEST_SR + + set(STARTUPPROJECT ${TESTNAME}) + ++find_package(PkgConfig REQUIRED) ++pkg_check_modules(GTEST REQUIRED gtest) ++target_link_libraries(${TESTNAME} PUBLIC ${GTEST_LINK_LIBRARIES}) ++ + target_include_directories(${TESTNAME} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/Include +- ${CMAKE_SOURCE_DIR}/Libraries/googletest/Include +- ${CMAKE_CURRENT_SOURCE_DIR}/../../Libraries/libressl/include ++ ${GTEST_INCLUDE_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR_AUTOGENERATED}/Bindings/Cpp + ) + diff --git a/cad/lib3mf/pkg/DESCR b/cad/lib3mf/pkg/DESCR new file mode 100644 index 00000000000..fa3bfbea69f --- /dev/null +++ b/cad/lib3mf/pkg/DESCR @@ -0,0 +1,15 @@ +lib3mf is a C++ implementation of the 3D Manufacturing Format file +standard. + +It provides 3MF reading and writing capabilities, as well as +conversion and validation tools for input and output data. lib3mf +runs on Windows, Linux and MacOS and offers a clean and easy-to-use +API in various programming languages to speed up the development +and keep integration costs at a minimum. + +As 3MF shall become an universal 3D Printing standard, its quick +adoption is very important. This library shall lower all barriers +of adoption to any possible user, let it be software providers, +hardware providers, service providers or middleware tools. + +The specification can be downloaded at http://3mf.io/specification/. diff --git a/cad/lib3mf/pkg/PLIST b/cad/lib3mf/pkg/PLIST new file mode 100644 index 00000000000..5ec78cf92ad --- /dev/null +++ b/cad/lib3mf/pkg/PLIST @@ -0,0 +1,44 @@ +include/lib3mf/ +include/lib3mf/Bindings/ +include/lib3mf/Bindings/C/ +include/lib3mf/Bindings/C/lib3mf.h +include/lib3mf/Bindings/C/lib3mf_types.h +include/lib3mf/Bindings/CDynamic/ +include/lib3mf/Bindings/CDynamic/lib3mf_dynamic.cc +include/lib3mf/Bindings/CDynamic/lib3mf_dynamic.h +include/lib3mf/Bindings/CDynamic/lib3mf_types.h +include/lib3mf/Bindings/CSharp/ +include/lib3mf/Bindings/CSharp/Lib3MF.cs +include/lib3mf/Bindings/Cpp/ +include/lib3mf/Bindings/Cpp/lib3mf_abi.hpp +include/lib3mf/Bindings/Cpp/lib3mf_implicit.hpp +include/lib3mf/Bindings/Cpp/lib3mf_types.hpp +include/lib3mf/Bindings/CppDynamic/ +include/lib3mf/Bindings/CppDynamic/lib3mf_abi.hpp +include/lib3mf/Bindings/CppDynamic/lib3mf_dynamic.h +include/lib3mf/Bindings/CppDynamic/lib3mf_dynamic.hpp +include/lib3mf/Bindings/CppDynamic/lib3mf_types.hpp +include/lib3mf/Bindings/Go/ +include/lib3mf/Bindings/Go/cfunc.go +include/lib3mf/Bindings/Go/lib3mf.go +include/lib3mf/Bindings/Go/lib3mf_dynamic.c +include/lib3mf/Bindings/Go/lib3mf_dynamic.cc +include/lib3mf/Bindings/Go/lib3mf_dynamic.h +include/lib3mf/Bindings/Go/lib3mf_impl.go +include/lib3mf/Bindings/Go/lib3mf_types.h +include/lib3mf/Bindings/NodeJS/ +include/lib3mf/Bindings/NodeJS/binding.gyp +include/lib3mf/Bindings/NodeJS/lib3mf_dynamic.cc +include/lib3mf/Bindings/NodeJS/lib3mf_dynamic.h +include/lib3mf/Bindings/NodeJS/lib3mf_nodeaddon.cc +include/lib3mf/Bindings/NodeJS/lib3mf_nodewrapper.cc +include/lib3mf/Bindings/NodeJS/lib3mf_nodewrapper.h +include/lib3mf/Bindings/NodeJS/lib3mf_types.h +include/lib3mf/Bindings/Pascal/ +include/lib3mf/Bindings/Pascal/Unit_Lib3MF.pas +include/lib3mf/Bindings/Python/ +include/lib3mf/Bindings/Python/Lib3MF.py +lib/cmake/lib3mf/ +lib/cmake/lib3mf/lib3mfConfig.cmake +@lib lib/lib3mf.so.${LIB3mf_VERSION} +lib/pkgconfig/lib3mf.pc