aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/openctm
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/openctm
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/openctm')
-rw-r--r--vcpkg/ports/openctm/CMakeLists.txt57
-rw-r--r--vcpkg/ports/openctm/portfile.cmake30
-rw-r--r--vcpkg/ports/openctm/use-7zip.patch24
-rw-r--r--vcpkg/ports/openctm/vcpkg.json19
4 files changed, 130 insertions, 0 deletions
diff --git a/vcpkg/ports/openctm/CMakeLists.txt b/vcpkg/ports/openctm/CMakeLists.txt
new file mode 100644
index 0000000..583a559
--- /dev/null
+++ b/vcpkg/ports/openctm/CMakeLists.txt
@@ -0,0 +1,57 @@
+cmake_minimum_required(VERSION 3.19...3.23)
+project(
+ openctm
+ VERSION 1.0.3
+ LANGUAGES C)
+
+find_package(7zip CONFIG REQUIRED)
+
+set(PUBLIC_HEADERS lib/openctm.h lib/openctmpp.h)
+
+add_library(
+ openctm
+ lib/compressMG1.c
+ lib/compressMG2.c
+ lib/compressRAW.c
+ lib/openctm.c
+ lib/stream.c)
+
+target_include_directories(
+ openctm
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/lib>
+ $<INSTALL_INTERFACE:include>)
+target_link_libraries(openctm PRIVATE 7zip::7zip)
+target_compile_definitions(openctm PRIVATE OPENCTM_BUILD)
+if(NOT BUILD_SHARED_LIBS)
+ target_compile_definitions(openctm PUBLIC OPENCTM_STATIC)
+endif()
+target_compile_features(openctm PRIVATE c_std_99)
+set_target_properties(openctm PROPERTIES C_VISIBILITY_PRESET hidden
+ PUBLIC_HEADER "${PUBLIC_HEADERS}")
+
+include(GNUInstallDirs)
+install(
+ TARGETS openctm
+ EXPORT unofficial-openctmConfig
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" COMPONENT dev)
+
+include(CMakePackageConfigHelpers)
+set(VERSION_FILE_PATH "${CMAKE_CURRENT_BINARY_DIR}/unofficial-openctmConfigVersion.cmake")
+write_basic_package_version_file(
+ "${VERSION_FILE_PATH}"
+ VERSION ${PROJECT_VERSION}
+ COMPATIBILITY SameMajorVersion)
+install(FILES "${VERSION_FILE_PATH}" DESTINATION share/unofficial-openctm)
+
+install(FILES ${PUBLIC_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+
+install(
+ EXPORT unofficial-openctmConfig
+ FILE unofficial-openctmConfig.cmake
+ NAMESPACE unofficial::openctm::
+ DESTINATION share/unofficial-openctm)
+
+export(PACKAGE openctm)
diff --git a/vcpkg/ports/openctm/portfile.cmake b/vcpkg/ports/openctm/portfile.cmake
new file mode 100644
index 0000000..17c29cc
--- /dev/null
+++ b/vcpkg/ports/openctm/portfile.cmake
@@ -0,0 +1,30 @@
+vcpkg_from_sourceforge(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO openctm
+ REF OpenCTM-1.0.3
+ SHA512 fdfa08d19ecbfea99ba01aa2032e941ed6313394a96bd69f8984c2d2d079d836c616471d2bdf6f40175e75659f3ad0ba41502bc3d8224091472f40893ea8746e
+ FILENAME "OpenCTM-1.0.3-src.tar.bz2"
+ PATCHES
+ use-7zip.patch
+)
+file(REMOVE_RECURSE "${SOURCE_PATH}/lib/liblzma")
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-openctm)
+
+vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/unofficial-openctm/unofficial-openctmConfig.cmake"
+"# Generated by CMake"
+[[# Generated by CMake
+include(CMakeFindDependencyMacro)
+find_dependency(7zip CONFIG)]])
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")
diff --git a/vcpkg/ports/openctm/use-7zip.patch b/vcpkg/ports/openctm/use-7zip.patch
new file mode 100644
index 0000000..002d557
--- /dev/null
+++ b/vcpkg/ports/openctm/use-7zip.patch
@@ -0,0 +1,24 @@
+diff --git a/lib/stream.c b/lib/stream.c
+index 53b1b72..bb47c3b 100644
+--- a/lib/stream.c
++++ b/lib/stream.c
+@@ -310,8 +310,7 @@ int _ctmStreamWritePackedInts(_CTMcontext * self, CTMint * aData,
+ outProps,
+ &outPropsSize,
+ self->mCompressionLevel, // Level (0-9)
+- 0, -1, -1, -1, -1, -1, // Default values (set by level)
+- lzmaAlgo // Algorithm (0 = fast, 1 = normal)
++ 0, -1, -1, -1, -1, -1 // Default values (set by level)
+ );
+
+ // Free temporary array
+@@ -477,8 +476,7 @@ int _ctmStreamWritePackedFloats(_CTMcontext * self, CTMfloat * aData,
+ outProps,
+ &outPropsSize,
+ self->mCompressionLevel, // Level (0-9)
+- 0, -1, -1, -1, -1, -1, // Default values (set by level)
+- lzmaAlgo // Algorithm (0 = fast, 1 = normal)
++ 0, -1, -1, -1, -1, -1 // Default values (set by level)
+ );
+
+ // Free temporary array
diff --git a/vcpkg/ports/openctm/vcpkg.json b/vcpkg/ports/openctm/vcpkg.json
new file mode 100644
index 0000000..1b1212d
--- /dev/null
+++ b/vcpkg/ports/openctm/vcpkg.json
@@ -0,0 +1,19 @@
+{
+ "name": "openctm",
+ "version": "1.0.3",
+ "port-version": 3,
+ "description": "OpenCTM — the Open Compressed Triangle Mesh file format — is a file format, a software library and a tool set for compression of 3D triangle meshes.",
+ "homepage": "https://openctm.sourceforge.net/",
+ "license": "Zlib",
+ "dependencies": [
+ "7zip",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}