[embree] Update (embree3) to 4.4.0 [libigl] Test and fix (#47815)

This commit is contained in:
Kai Pastor 2025-10-31 18:20:39 +01:00 committed by GitHub
parent 5b392ae422
commit fef715db0c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
26 changed files with 742 additions and 320 deletions

View File

@ -0,0 +1,14 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1292e26..93a673a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -708,3 +708,9 @@ ENDIF()
##############################################################
INCLUDE(CPack)
+
+foreach(lib IN ITEMS lexers math simd sys tasking)
+ if(TARGET ${lib})
+ set_target_properties(${lib} PROPERTIES OUTPUT_NAME ${EMBREE_LIBRARY_NAME}_${lib})
+ endif()
+endforeach()

View File

@ -0,0 +1,38 @@
diff --git a/common/cmake/embree-config.cmake b/common/cmake/embree-config.cmake
index c0009fd..e80df05 100644
--- a/common/cmake/embree-config.cmake
+++ b/common/cmake/embree-config.cmake
@@ -5,7 +5,7 @@ SET(EMBREE_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/@EMBREE_RELATIVE_ROOT_DIR@")
GET_FILENAME_COMPONENT(EMBREE_ROOT_DIR "${EMBREE_ROOT_DIR}" ABSOLUTE)
SET(EMBREE_INCLUDE_DIRS "${EMBREE_ROOT_DIR}/@CMAKE_INSTALL_INCLUDEDIR@")
-SET(EMBREE_LIBRARY "${EMBREE_ROOT_DIR}/@CMAKE_INSTALL_LIBDIR@/@EMBREE_LIBRARY_FULLNAME@")
+SET(EMBREE_LIBRARY "unofficial::embree::embree") # Improve diagnostics with namespaced target
SET(EMBREE_LIBRARIES ${EMBREE_LIBRARY})
SET(EMBREE_VERSION @EMBREE_VERSION@)
@@ -104,6 +104,10 @@ IF (EMBREE_SYCL_SUPPORT)
ENDIF()
INCLUDE("${EMBREE_ROOT_DIR}/@EMBREE_CMAKEEXPORT_DIR@/embree-targets.cmake")
+if(NOT TARGET unofficial::embree::embree)
+ add_library(unofficial::embree::embree INTERFACE IMPORTED)
+ target_link_libraries(unofficial::embree::embree INTERFACE embree)
+endif()
SET(EMBREE_TESTING_ONLY_SYCL_TESTS @EMBREE_TESTING_ONLY_SYCL_TESTS@)
diff --git a/common/cmake/package.cmake b/common/cmake/package.cmake
index 7cd3775..3fe79bb 100644
--- a/common/cmake/package.cmake
+++ b/common/cmake/package.cmake
@@ -218,6 +218,9 @@ ELSE()
FILE(RELATIVE_PATH EMBREE_RELATIVE_ROOT_DIR "/${EMBREE_CMAKECONFIG_DIR}" "/")
ENDIF()
#ENDIF()
+SET(EMBREE_CMAKECONFIG_DIR "share/embree")
+SET(EMBREE_CMAKEEXPORT_DIR "share/embree")
+SET(EMBREE_RELATIVE_ROOT_DIR "../../")
CONFIGURE_FILE(common/cmake/embree-config.cmake embree-config-install.cmake @ONLY)
CONFIGURE_FILE(common/cmake/embree-config-version.cmake embree-config-version.cmake @ONLY)

View File

@ -0,0 +1,12 @@
diff --git a/common/cmake/package.cmake b/common/cmake/package.cmake
index daa4f49..7cd3775 100644
--- a/common/cmake/package.cmake
+++ b/common/cmake/package.cmake
@@ -119,6 +119,7 @@ ENDIF()
##############################################################
IF (WIN32)
+ELSEIF (0)
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS TRUE)

98
ports/embree/portfile.cmake Executable file
View File

@ -0,0 +1,98 @@
if(EXISTS "${CURRENT_INSTALLED_DIR}/share/embree/embree-config.cmake")
message(FATAL_ERROR "Port embree3 must be removed before installing embree.")
endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO RenderKit/embree
REF v${VERSION}
SHA512 5e77a033192ade6562b50d32c806c6a467580722898ca52ccfe002b51279314055e9c0e6c969651b0d03716d04ab249301340cd2790556a0dbfb8c296e8f0574
HEAD_REF master
PATCHES
avoid-library-conflicts.diff
cmake-config.diff
no-runtime-install.patch
)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" static EMBREE_STATIC_LIB)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" static EMBREE_STATIC_RUNTIME)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
backface-culling EMBREE_BACKFACE_CULLING
compact-polys EMBREE_COMPACT_POLYS
filter-function EMBREE_FILTER_FUNCTION
ray-mask EMBREE_RAY_MASK
ray-packets EMBREE_RAY_PACKETS
geometry-triangle EMBREE_GEOMETRY_TRIANGLE
geometry-quad EMBREE_GEOMETRY_QUAD
geometry-curve EMBREE_GEOMETRY_CURVE
geometry-subdivision EMBREE_GEOMETRY_SUBDIVISION
geometry-user EMBREE_GEOMETRY_USER
geometry-instance EMBREE_GEOMETRY_INSTANCE
geometry-grid EMBREE_GEOMETRY_GRID
geometry-point EMBREE_GEOMETRY_POINT
)
if("tasking-tbb" IN_LIST FEATURES)
set(EMBREE_TASKING_SYSTEM "TBB")
list(APPEND FEATURE_OPTIONS "-DVCPKG_LOCK_FIND_PACKAGE_TBB=ON")
else()
set(EMBREE_TASKING_SYSTEM "INTERNAL")
endif()
if(VCPKG_TARGET_IS_OSX AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")
# "Using Embree as static library is not supported with AppleClang >= 9.0
# when multiple ISAs are selected."
# The port follows linkage and selects a single ISA for static linkage.
# Per-port customization may override VCPKG_LIBRARY_LINKAGE or ISA flags.
list(APPEND FEATURE_OPTIONS "-DEMBREE_MAX_ISA=NONE")
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
list(APPEND FEATURE_OPTIONS
-DEMBREE_ISA_SSE2=OFF
-DEMBREE_ISA_SSE42=OFF
-DCOMPILER_SUPPORTS_AVX=OFF
-DEMBREE_ISA_AVX2=ON
-DCOMPILER_SUPPORTS_AVX512=OFF
)
endif()
endif()
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
DISABLE_PARALLEL_CONFIGURE # in-source CONFIGURE_FILE
OPTIONS
${FEATURE_OPTIONS}
-DEMBREE_INSTALL_DEPENDENCIES=OFF
-DEMBREE_ISPC_SUPPORT=OFF
-DEMBREE_STATIC_RUNTIME=${EMBREE_STATIC_RUNTIME}
-DEMBREE_STATIC_LIB=${EMBREE_STATIC_LIB}
-DEMBREE_TASKING_SYSTEM:STRING=${EMBREE_TASKING_SYSTEM}
-DEMBREE_TUTORIALS=OFF
MAYBE_UNUSED_VARIABLES
EMBREE_STATIC_RUNTIME
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup()
file(RENAME "${CURRENT_PACKAGES_DIR}/share/doc" "${CURRENT_PACKAGES_DIR}/share/${PORT}/doc")
file(REMOVE_RECURSE
"${CURRENT_PACKAGES_DIR}/debug/embree-vars.csh"
"${CURRENT_PACKAGES_DIR}/debug/embree-vars.sh"
"${CURRENT_PACKAGES_DIR}/debug/include"
"${CURRENT_PACKAGES_DIR}/debug/share"
"${CURRENT_PACKAGES_DIR}/embree-vars.csh"
"${CURRENT_PACKAGES_DIR}/embree-vars.sh"
"${CURRENT_PACKAGES_DIR}/share/man"
"${CURRENT_PACKAGES_DIR}/share/${PORT}/doc/LICENSE.txt"
)
file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
vcpkg_install_copyright(
COMMENT "The embree package contains third-party software which may be governed by
separate license terms."
FILE_LIST "${SOURCE_PATH}/LICENSE.txt"
)

4
ports/embree/usage Executable file
View File

@ -0,0 +1,4 @@
embree provides CMake targets:
find_package(embree CONFIG REQUIRED)
target_link_libraries(main PRIVATE embree)

View File

@ -1,11 +1,10 @@
{
"name": "embree3",
"version": "3.13.5",
"port-version": 6,
"name": "embree",
"version": "4.4.0",
"description": "High Performance Ray Tracing Kernels.",
"homepage": "https://github.com/embree/embree",
"license": "Apache-2.0",
"supports": "!arm | osx",
"homepage": "https://github.com/RenderKit/embree",
"license": null,
"supports": "linux | osx | (windows & !uwp & !arm)",
"dependencies": [
{
"name": "vcpkg-cmake",

View File

@ -1,13 +0,0 @@
diff --git a/common/tasking/CMakeLists.txt b/common/tasking/CMakeLists.txt
index 2aeb736..3b4d856 100644
--- a/common/tasking/CMakeLists.txt
+++ b/common/tasking/CMakeLists.txt
@@ -20,7 +20,7 @@ ELSEIF (TASKING_TBB)
TARGET_LINK_LIBRARIES(tasking PUBLIC TBB::${EMBREE_TBB_COMPONENT})
else()
# Try getting TBB via config first
- find_package(TBB 2021 COMPONENTS ${EMBREE_TBB_COMPONENT} CONFIG ${TBB_FIND_PACKAGE_OPTION})
+ find_package(TBB COMPONENTS ${EMBREE_TBB_COMPONENT} CONFIG ${TBB_FIND_PACKAGE_OPTION})
if (TBB_FOUND)
TARGET_LINK_LIBRARIES(tasking PUBLIC TBB::${EMBREE_TBB_COMPONENT})
message("-- Found TBB: ${TBB_VERSION} at ${TBB_DIR} via TBBConfig.cmake")

View File

@ -1,32 +0,0 @@
diff --git a/common/math/CMakeLists.txt b/common/math/CMakeLists.txt
index fcfa455..c5184cd 100644
--- a/common/math/CMakeLists.txt
+++ b/common/math/CMakeLists.txt
@@ -2,6 +2,11 @@
## SPDX-License-Identifier: Apache-2.0
ADD_LIBRARY(math STATIC constants.cpp)
+SET_TARGET_PROPERTIES(math PROPERTIES # avoid conflict with vcpkg port openmvs
+ OUTPUT_NAME embree-math
+ ARCHIVE_OUTPUT_NAME embree-math
+ RUNTIME_OUTPUT_NAME embree-math
+)
SET_PROPERTY(TARGET math PROPERTY FOLDER common)
SET_PROPERTY(TARGET math APPEND PROPERTY COMPILE_FLAGS " ${FLAGS_LOWEST}")
diff --git a/common/simd/CMakeLists.txt b/common/simd/CMakeLists.txt
index 989a00d..043fec2 100644
--- a/common/simd/CMakeLists.txt
+++ b/common/simd/CMakeLists.txt
@@ -2,6 +2,11 @@
## SPDX-License-Identifier: Apache-2.0
ADD_LIBRARY(simd STATIC sse.cpp)
+SET_TARGET_PROPERTIES(simd PROPERTIES # avoid conflict with vcpkg port simd
+ OUTPUT_NAME embree-simd
+ ARCHIVE_OUTPUT_NAME embree-simd
+ RUNTIME_OUTPUT_NAME embree-simd
+)
SET_PROPERTY(TARGET simd PROPERTY FOLDER common)
SET_PROPERTY(TARGET simd APPEND PROPERTY COMPILE_FLAGS " ${FLAGS_LOWEST}")

View File

@ -1,13 +0,0 @@
diff --git a/common/cmake/package.cmake b/common/cmake/package.cmake
index 5429436..8c89f5b 100644
--- a/common/cmake/package.cmake
+++ b/common/cmake/package.cmake
@@ -24,7 +24,7 @@ ENDIF()
# Install MSVC runtime
##############################################################
-IF (WIN32)
+IF (0)
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
INCLUDE(InstallRequiredSystemLibraries)
LIST(FILTER CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS INCLUDE REGEX ".*msvcp[0-9]+\.dll|.*vcruntime[0-9]+\.dll|.*vcruntime[0-9]+_[0-9]+\.dll")

View File

@ -1,125 +0,0 @@
vcpkg_download_distfile(OPERATOR_FIX
URLS https://github.com/RenderKit/embree/commit/cda4cf1919bb2a748e78915fbd6e421a1056638d.diff?full_index=1
FILENAME embree3-operator-fix-cda4cf1919bb2a748e78915fbd6e421a1056638d.diff
SHA512 3b8492f136b8616da3c21deea32df0629c48d2e0d9b92d418c04570cb71c4c29e280b63f5447a70479ba3bcef989132ea9ccfa20793f46595554ac04f65fe3bd
)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO embree/embree
REF v${VERSION}
SHA512 13ae19b1750197fb4887ba601c75d1b54b3c388224672b6561dd922bc9b9747139cf46ce554727e3afa13dcf152ce4d703935cb9105ced792b011f2d05fa3e95
HEAD_REF master
PATCHES
no-runtime-install.patch
001-downgrade-find-package-tbb-2020.patch
avoid-library-conflicts.diff
"${OPERATOR_FIX}"
)
string(COMPARE EQUAL ${VCPKG_LIBRARY_LINKAGE} static EMBREE_STATIC_LIB)
string(COMPARE EQUAL ${VCPKG_CRT_LINKAGE} static EMBREE_STATIC_RUNTIME)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
backface-culling EMBREE_BACKFACE_CULLING
compact-polys EMBREE_COMPACT_POLYS
filter-function EMBREE_FILTER_FUNCTION
ray-mask EMBREE_RAY_MASK
ray-packets EMBREE_RAY_PACKETS
geometry-triangle EMBREE_GEOMETRY_TRIANGLE
geometry-quad EMBREE_GEOMETRY_QUAD
geometry-curve EMBREE_GEOMETRY_CURVE
geometry-subdivision EMBREE_GEOMETRY_SUBDIVISION
geometry-user EMBREE_GEOMETRY_USER
geometry-instance EMBREE_GEOMETRY_INSTANCE
geometry-grid EMBREE_GEOMETRY_GRID
geometry-point EMBREE_GEOMETRY_POINT
)
# Automatically select best ISA based on platform or VCPKG_CMAKE_CONFIGURE_OPTIONS.
vcpkg_list(SET EXTRA_OPTIONS)
if(VCPKG_TARGET_IS_EMSCRIPTEN)
# Disable incorrect ISA set for Emscripten and enable NEON which is supported and should provide decent performance.
# cf. [Using SIMD with WebAssembly](https://emscripten.org/docs/porting/simd.html#using-simd-with-webassembly)
vcpkg_list(APPEND EXTRA_OPTIONS
-DEMBREE_MAX_ISA:STRING=NONE
-DEMBREE_ISA_AVX:BOOL=OFF
-DEMBREE_ISA_AVX2:BOOL=OFF
-DEMBREE_ISA_AVX512:BOOL=OFF
-DEMBREE_ISA_SSE2:BOOL=OFF
-DEMBREE_ISA_SSE42:BOOL=OFF
-DEMBREE_ISA_NEON:BOOL=ON
)
elseif(VCPKG_TARGET_IS_OSX AND (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64"))
# The best ISA for Apple arm64 is unique and unambiguous.
vcpkg_list(APPEND EXTRA_OPTIONS
-DEMBREE_MAX_ISA:STRING=NONE
)
elseif(VCPKG_TARGET_IS_OSX AND (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") AND (VCPKG_LIBRARY_LINKAGE STREQUAL "static"))
# AppleClang >= 9.0 does not support selecting multiple ISAs.
# Let Embree select the best and unique one.
vcpkg_list(APPEND EXTRA_OPTIONS
-DEMBREE_MAX_ISA:STRING=DEFAULT
)
else()
# Let Embree select the best ISA set for the targeted platform.
vcpkg_list(APPEND EXTRA_OPTIONS
-DEMBREE_MAX_ISA:STRING=NONE
)
endif()
if("tasking-tbb" IN_LIST FEATURES)
set(EMBREE_TASKING_SYSTEM "TBB")
else()
set(EMBREE_TASKING_SYSTEM "INTERNAL")
endif()
vcpkg_replace_string("${SOURCE_PATH}/common/cmake/installTBB.cmake" "IF (EMBREE_STATIC_LIB)" "IF (0)")
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
DISABLE_PARALLEL_CONFIGURE
OPTIONS ${FEATURE_OPTIONS} ${EXTRA_OPTIONS}
-DEMBREE_ISPC_SUPPORT=OFF
-DEMBREE_TUTORIALS=OFF
-DEMBREE_STATIC_RUNTIME=${EMBREE_STATIC_RUNTIME}
-DEMBREE_STATIC_LIB=${EMBREE_STATIC_LIB}
-DEMBREE_TASKING_SYSTEM:STRING=${EMBREE_TASKING_SYSTEM}
-DEMBREE_INSTALL_DEPENDENCIES=OFF
MAYBE_UNUSED_VARIABLES
EMBREE_STATIC_RUNTIME
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/embree-${VERSION} PACKAGE_NAME embree)
set(config_file "${CURRENT_PACKAGES_DIR}/share/embree/embree-config.cmake")
# Fix details in config.
file(READ "${config_file}" contents)
string(REPLACE "SET(EMBREE_BUILD_TYPE Release)" "" contents "${contents}")
string(REPLACE "/../../../" "/../../" contents "${contents}")
string(REPLACE "FIND_PACKAGE" "include(CMakeFindDependencyMacro)\n find_dependency" contents "${contents}")
string(REPLACE "REQUIRED" "COMPONENTS" contents "${contents}")
string(REPLACE "/lib/cmake/embree-${VERSION}" "/share/embree" contents "${contents}")
if(NOT VCPKG_BUILD_TYPE)
string(REPLACE "/lib/embree3.lib" "$<$<CONFIG:DEBUG>:/debug>/lib/embree3.lib" contents "${contents}")
endif()
file(WRITE "${config_file}" "${contents}")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
endif()
if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS)
file(REMOVE "${CURRENT_PACKAGES_DIR}/uninstall.command" "${CURRENT_PACKAGES_DIR}/debug/uninstall.command")
endif()
file(RENAME "${CURRENT_PACKAGES_DIR}/share/doc" "${CURRENT_PACKAGES_DIR}/share/${PORT}/")
file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")

View File

@ -1,4 +0,0 @@
The package embree3 provides CMake targets:
find_package(embree 3 CONFIG REQUIRED)
target_link_libraries(main PRIVATE embree)

View File

@ -1,8 +1,8 @@
diff --git a/cmake/igl/modules/copyleft/cgal.cmake b/cmake/igl/modules/copyleft/cgal.cmake
index f6abe8c..7ee7d84 100644
index f6abe8c..e3aa831 100644
--- a/cmake/igl/modules/copyleft/cgal.cmake
+++ b/cmake/igl/modules/copyleft/cgal.cmake
@@ -14,13 +14,12 @@ file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/*.cpp")
@@ -14,7 +14,7 @@ file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/*.cpp")
igl_target_sources(igl_copyleft_cgal ${INC_FILES} ${SRC_FILES})
# 4. Dependencies
@ -11,12 +11,6 @@ index f6abe8c..7ee7d84 100644
igl_include(copyleft core)
target_link_libraries(igl_copyleft_cgal ${IGL_SCOPE}
igl::core
igl_copyleft::core
CGAL::CGAL
- CGAL::CGAL_Core
)
# 5. Unit tests
diff --git a/cmake/igl/modules/core.cmake b/cmake/igl/modules/core.cmake
index 2aefcd6..137d30b 100644
--- a/cmake/igl/modules/core.cmake
@ -31,41 +25,33 @@ index 2aefcd6..137d30b 100644
target_link_libraries(igl_core ${IGL_SCOPE}
Eigen3::Eigen
diff --git a/cmake/igl/modules/embree.cmake b/cmake/igl/modules/embree.cmake
index 6f22319..de85066 100644
index 6f22319..7f333b0 100644
--- a/cmake/igl/modules/embree.cmake
+++ b/cmake/igl/modules/embree.cmake
@@ -14,10 +14,10 @@ file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/embree/*.cpp")
@@ -14,7 +14,8 @@ file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/embree/*.cpp")
igl_target_sources(igl_embree ${INC_FILES} ${SRC_FILES})
# 4. Dependencies
-include(embree)
+find_package(embree 3 CONFIG REQUIRED)
+find_package(embree CONFIG REQUIRED)
+add_library(embree::embree ALIAS embree)
target_link_libraries(igl_embree ${IGL_SCOPE}
igl::core
- embree::embree
+ $<TARGET_NAME:embree>
)
# 5. Unit tests
embree::embree
diff --git a/cmake/igl/modules/glfw.cmake b/cmake/igl/modules/glfw.cmake
index 79c2126..6d06775 100644
index 79c2126..2da8b0a 100644
--- a/cmake/igl/modules/glfw.cmake
+++ b/cmake/igl/modules/glfw.cmake
@@ -14,12 +14,12 @@ file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/opengl/glfw/*.cpp")
@@ -14,7 +14,8 @@ file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/opengl/glfw/*.cpp")
igl_target_sources(igl_glfw ${INC_FILES} ${SRC_FILES})
# 4. Dependencies
-include(glfw)
+find_package(glfw3 CONFIG REQUIRED)
+add_library(glfw::glfw ALIAS glfw)
igl_include(opengl)
target_link_libraries(igl_glfw ${IGL_SCOPE}
igl::core
igl::opengl
- glfw::glfw
+ $<TARGET_NAME:glfw>
)
# 5. Unit tests
diff --git a/cmake/igl/modules/imgui.cmake b/cmake/igl/modules/imgui.cmake
index d7ffb9d..f331854 100644
--- a/cmake/igl/modules/imgui.cmake
@ -100,6 +86,24 @@ index 4580c03..dfadb38 100644
find_package(OpenGL REQUIRED OPTIONAL_COMPONENTS OpenGL)
target_link_libraries(igl_opengl ${IGL_SCOPE}
igl::core
diff --git a/cmake/igl/modules/stb.cmake b/cmake/igl/modules/stb.cmake
index 20607ec..14db8cf 100644
--- a/cmake/igl/modules/stb.cmake
+++ b/cmake/igl/modules/stb.cmake
@@ -21,11 +21,11 @@ endif()
igl_target_sources(igl_stb ${INC_FILES} ${SRC_FILES})
# 4. Dependencies
-include(stb)
+find_package(Stb REQUIRED)
target_link_libraries(igl_stb ${IGL_SCOPE}
igl::core
- stb::stb
)
+target_include_directories(igl_stb ${IGL_SCOPE} ${Stb_INCLUDE_DIR})
if(LIBIGL_OPENGL)
igl_include(opengl)
diff --git a/cmake/igl/modules/xml.cmake b/cmake/igl/modules/xml.cmake
index 3763b77..31ab979 100644
--- a/cmake/igl/modules/xml.cmake

View File

@ -0,0 +1,44 @@
diff --git a/include/igl/opengl/glfw/imgui/ImGuiPlugin.cpp b/include/igl/opengl/glfw/imgui/ImGuiPlugin.cpp
index ce5ac08..c240c57 100644
--- a/include/igl/opengl/glfw/imgui/ImGuiPlugin.cpp
+++ b/include/igl/opengl/glfw/imgui/ImGuiPlugin.cpp
@@ -10,8 +10,8 @@
#include "ImGuiPlugin.h"
#include "ImGuiHelpers.h"
#include "../../../project.h"
-#include <backends/imgui_impl_glfw.h>
-#include <backends/imgui_impl_opengl3.h>
+#include <imgui_impl_glfw.h>
+#include <imgui_impl_opengl3.h>
#include <imgui.h>
#include <imgui_fonts_droid_sans.h>
#include <GLFW/glfw3.h>
diff --git a/include/igl/opengl/glfw/imgui/ImGuizmoWidget.cpp b/include/igl/opengl/glfw/imgui/ImGuizmoWidget.cpp
index 61f15b1..ec082de 100644
--- a/include/igl/opengl/glfw/imgui/ImGuizmoWidget.cpp
+++ b/include/igl/opengl/glfw/imgui/ImGuizmoWidget.cpp
@@ -1,7 +1,7 @@
#include "ImGuizmoWidget.h"
#include <imgui.h>
-#include <backends/imgui_impl_glfw.h>
-#include <backends/imgui_impl_opengl3.h>
+#include <imgui_impl_glfw.h>
+#include <imgui_impl_opengl3.h>
#include <imgui_fonts_droid_sans.h>
#include <GLFW/glfw3.h>
diff --git a/include/igl/opengl/glfw/imgui/SelectionWidget.cpp b/include/igl/opengl/glfw/imgui/SelectionWidget.cpp
index ca1261c..6a363d9 100644
--- a/include/igl/opengl/glfw/imgui/SelectionWidget.cpp
+++ b/include/igl/opengl/glfw/imgui/SelectionWidget.cpp
@@ -8,8 +8,8 @@
#include "SelectionWidget.h"
#include <imgui.h>
-#include <backends/imgui_impl_glfw.h>
-#include <backends/imgui_impl_opengl3.h>
+#include <imgui_impl_glfw.h>
+#include <imgui_impl_opengl3.h>
#include <imgui_fonts_droid_sans.h>
#include <GLFW/glfw3.h>
#include "../../../PI.h"

View File

@ -1,129 +1,131 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4a98749..bc121a5 100644
index 498caee..f3ba717 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -166,7 +166,7 @@ if(LIBIGL_INSTALL)
@@ -166,7 +166,11 @@ if(LIBIGL_INSTALL)
set(version_config_file "${CMAKE_CURRENT_BINARY_DIR}/LibiglConfigVersion.cmake")
set(export_dest_dir "${CMAKE_INSTALL_LIBDIR}/cmake/igl")
- foreach(suffix IN ITEMS "") #"_restricted" "_copyleft")
+ foreach(suffix IN ITEMS "" "_copyleft") # "_restricted"
+ get_directory_property(targets BUILDSYSTEM_TARGETS)
+ foreach(suffix IN ITEMS "" "_restricted" "_copyleft")
+ if(NOT targets MATCHES "igl${suffix}")
+ continue()
+ endif()
install(EXPORT LibiglTargets${suffix}
DESTINATION ${export_dest_dir}
NAMESPACE igl${suffix}::
diff --git a/cmake/igl/libigl-config.cmake.in b/cmake/igl/libigl-config.cmake.in
index d3ff19f..60e50c7 100644
index d3ff19f..df11bf5 100644
--- a/cmake/igl/libigl-config.cmake.in
+++ b/cmake/igl/libigl-config.cmake.in
@@ -4,4 +4,27 @@ include(CMakeFindDependencyMacro)
@@ -3,5 +3,30 @@
include(CMakeFindDependencyMacro)
find_dependency(Eigen3 REQUIRED)
find_dependency(Threads REQUIRED)
include("${CMAKE_CURRENT_LIST_DIR}/LibiglConfigTargets.cmake")
+if(TARGET igl::igl_embree)
+ find_dependency(embree 3)
+if("@LIBIGL_EMBREE@")
+ find_dependency(embree CONFIG)
+endif()
+if(TARGET igl::igl_glfw)
+if("@LIBIGL_GLFW@")
+ find_dependency(glfw3)
+endif()
+if(TARGET igl::igl_imgui)
+if("@LIBIGL_IMGUI@")
+ find_dependency(imgui)
+ find_dependency(imguizmo)
+endif()
+if(TARGET igl::igl_opengl)
+if("@LIBIGL_OPENGL@")
+ find_dependency(OpenGL)
+ find_dependency(glad)
+endif()
+if(TARGET igl::igl_xml)
+if("@LIBIGL_XML@")
+ find_dependency(tinyxml2)
+endif()
+
+include("${CMAKE_CURRENT_LIST_DIR}/LibiglConfigTargets_copyleft.cmake" OPTIONAL)
+if(TARGET igl_copyleft::igl_copyleft_cgal)
+ find_dependency(CGAL)
+if("@LIBIGL_COPYLEFT_CGAL@")
+ # cf. cmake/recipes/external/cgal.cmake
+ set(CGAL_CMAKE_EXACT_NT_BACKEND "BOOST_BACKEND" CACHE STRING "CGAL exact NT backend")
+ set(CGAL_DISABLE_GMP ON CACHE BOOL "Disable GMP")
+ find_dependency(CGAL CONFIG COMPONENTS Core)
+endif()
+
include("${CMAKE_CURRENT_LIST_DIR}/LibiglConfigTargets.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/LibiglConfigTargets_copyleft.cmake" OPTIONAL)
check_required_components(Libigl)
diff --git a/cmake/igl/modules/copyleft/cgal.cmake b/cmake/igl/modules/copyleft/cgal.cmake
index 7ee7d84..d06c6ee 100644
index e3aa831..371dc7a 100644
--- a/cmake/igl/modules/copyleft/cgal.cmake
+++ b/cmake/igl/modules/copyleft/cgal.cmake
@@ -9,7 +9,7 @@ target_include_directories(igl_copyleft_cgal ${IGL_SCOPE}
)
@@ -10,6 +10,7 @@ target_include_directories(igl_copyleft_cgal ${IGL_SCOPE}
# 3. Target sources
-file(GLOB INC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/*.h")
+file(GLOB INC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/*.h" "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/*.hpp")
file(GLOB INC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/*.h")
+list(APPEND INC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/CGAL_includes.hpp")
file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/*.cpp")
igl_target_sources(igl_copyleft_cgal ${INC_FILES} ${SRC_FILES})
@@ -22,6 +22,8 @@ target_link_libraries(igl_copyleft_cgal ${IGL_SCOPE}
CGAL::CGAL
@@ -28,6 +29,9 @@ target_link_libraries(igl_copyleft_cgal ${IGL_SCOPE}
CGAL::CGAL_Core
)
+# n. Install target & headers
+igl_install(igl_copyleft_cgal ${INC_FILES} ${SRC_FILES})
+
# 5. Unit tests
file(GLOB SRC_FILES
"${libigl_SOURCE_DIR}/tests/include/igl/copyleft/boolean/*.cpp"
@@ -31,3 +33,4 @@ igl_add_test(igl_copyleft_cgal ${SRC_FILES})
if(TARGET test_igl_copyleft_cgal)
igl_copy_dll(test_igl_copyleft_cgal)
endif()
+
diff --git a/cmake/igl/modules/copyleft/core.cmake b/cmake/igl/modules/copyleft/core.cmake
index 8d03a90..aff8241 100644
index 8d03a90..24eb6e5 100644
--- a/cmake/igl/modules/copyleft/core.cmake
+++ b/cmake/igl/modules/copyleft/core.cmake
@@ -17,3 +17,5 @@ igl_target_sources(igl_copyleft_core ${INC_FILES} ${SRC_FILES})
@@ -17,3 +17,6 @@ igl_target_sources(igl_copyleft_core ${INC_FILES} ${SRC_FILES})
target_link_libraries(igl_copyleft_core ${IGL_SCOPE}
igl::core
)
+
+# n. Install target & headers
+igl_install(igl_copyleft_core ${INC_FILES} ${SRC_FILES})
diff --git a/cmake/igl/modules/core.cmake b/cmake/igl/modules/core.cmake
index 137d30b..597c26b 100644
index 137d30b..187a3ec 100644
--- a/cmake/igl/modules/core.cmake
+++ b/cmake/igl/modules/core.cmake
@@ -12,8 +12,8 @@ target_include_directories(igl_core ${IGL_SCOPE}
@@ -12,7 +12,7 @@ target_include_directories(igl_core ${IGL_SCOPE}
)
# 3. Target sources
-file(GLOB INC_FILES "${libigl_SOURCE_DIR}/include/igl/*.h")
-file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/*.cpp")
+file(GLOB INC_FILES "${libigl_SOURCE_DIR}/include/igl/*.h" "${libigl_SOURCE_DIR}/include/igl/*.hpp")
+file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/*.cpp" "${libigl_SOURCE_DIR}/include/igl/*.c")
file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/*.cpp")
igl_target_sources(igl_core ${INC_FILES} ${SRC_FILES})
# 4. Install target & headers
diff --git a/cmake/igl/modules/embree.cmake b/cmake/igl/modules/embree.cmake
index de85066..c54949c 100644
index 7f333b0..5fbabe7 100644
--- a/cmake/igl/modules/embree.cmake
+++ b/cmake/igl/modules/embree.cmake
@@ -20,6 +20,8 @@ target_link_libraries(igl_embree ${IGL_SCOPE}
$<TARGET_NAME:embree>
@@ -21,6 +21,9 @@ target_link_libraries(igl_embree ${IGL_SCOPE}
embree::embree
)
+# n. Install target & headers
+igl_install(igl_embree ${INC_FILES} ${SRC_FILES})
+
# 5. Unit tests
file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/tests/include/igl/embree/*.cpp")
igl_add_test(igl_embree ${SRC_FILES})
diff --git a/cmake/igl/modules/glfw.cmake b/cmake/igl/modules/glfw.cmake
index 6d06775..7126a23 100644
index 2da8b0a..853759f 100644
--- a/cmake/igl/modules/glfw.cmake
+++ b/cmake/igl/modules/glfw.cmake
@@ -22,6 +22,9 @@ target_link_libraries(igl_glfw ${IGL_SCOPE}
$<TARGET_NAME:glfw>
@@ -23,6 +23,9 @@ target_link_libraries(igl_glfw ${IGL_SCOPE}
glfw::glfw
)
+
+# n. Install target & headers
+igl_install(igl_glfw ${INC_FILES} ${SRC_FILES})
+
# 5. Unit tests
if(LIBIGL_GLFW_TESTS)
file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/tests/include/igl/opengl/glfw/*.cpp")
diff --git a/cmake/igl/modules/imgui.cmake b/cmake/igl/modules/imgui.cmake
index 6152756..34359c6 100644
index f331854..37fe9c3 100644
--- a/cmake/igl/modules/imgui.cmake
+++ b/cmake/igl/modules/imgui.cmake
@@ -23,3 +23,6 @@ target_link_libraries(igl_imgui ${IGL_SCOPE}
@ -131,10 +133,10 @@ index 6152756..34359c6 100644
imguizmo::imguizmo
)
+
+# n. Install target & headers
+igl_install(igl_imgui ${INC_FILES} ${SRC_FILES})
+
diff --git a/cmake/igl/modules/opengl.cmake b/cmake/igl/modules/opengl.cmake
index dfadb38..d3deaba 100644
index dfadb38..89ba687 100644
--- a/cmake/igl/modules/opengl.cmake
+++ b/cmake/igl/modules/opengl.cmake
@@ -22,3 +22,6 @@ target_link_libraries(igl_opengl ${IGL_SCOPE}
@ -142,29 +144,27 @@ index dfadb38..d3deaba 100644
$<IF:$<TARGET_EXISTS:OpenGL::OpenGL>,OpenGL::OpenGL,OpenGL::GL>
)
+
+# n. Install target & headers
+igl_install(igl_opengl ${INC_FILES} ${SRC_FILES})
diff --git a/cmake/igl/modules/stb.cmake b/cmake/igl/modules/stb.cmake
index 14db8cf..23c5c66 100644
--- a/cmake/igl/modules/stb.cmake
+++ b/cmake/igl/modules/stb.cmake
@@ -33,3 +33,6 @@ if(LIBIGL_OPENGL)
igl::opengl
)
endif()
+
+# n. Install target & headers
+igl_install(igl_stb ${INC_FILES} ${SRC_FILES})
diff --git a/cmake/igl/modules/xml.cmake b/cmake/igl/modules/xml.cmake
index 31ab979..815ea62 100644
index 31ab979..20c2139 100644
--- a/cmake/igl/modules/xml.cmake
+++ b/cmake/igl/modules/xml.cmake
@@ -19,3 +19,5 @@ target_link_libraries(igl_xml ${IGL_SCOPE}
@@ -19,3 +19,6 @@ target_link_libraries(igl_xml ${IGL_SCOPE}
igl::core
tinyxml2::tinyxml2
)
+
+# n. Install target & headers
+igl_install(igl_xml ${INC_FILES} ${SRC_FILES})
diff --git a/cmake/igl/modules/stb.cmake b/cmake/igl/modules/stb.cmake
index 20607ec..5bc3211 100644
--- a/cmake/igl/modules/stb.cmake
+++ b/cmake/igl/modules/stb.cmake
@@ -21,7 +21,7 @@ endif()
igl_target_sources(igl_stb ${INC_FILES} ${SRC_FILES})
# 4. Dependencies
-include(stb)
+find_package(Stb REQUIRED)
target_link_libraries(igl_stb ${IGL_SCOPE}
igl::core
stb::stb

View File

@ -0,0 +1,176 @@
diff --git a/include/igl/copyleft/cgal/outer_edge.cpp b/include/igl/copyleft/cgal/outer_edge.cpp
index 06abbea..f9043d1 100644
--- a/include/igl/copyleft/cgal/outer_edge.cpp
+++ b/include/igl/copyleft/cgal/outer_edge.cpp
@@ -147,11 +147,15 @@ IGL_INLINE void igl::copyleft::cgal::outer_edge(
#include <cstdint>
template void igl::copyleft::cgal::outer_edge<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 1, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, std::ptrdiff_t, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 1, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, std::ptrdiff_t&, std::ptrdiff_t&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&);
template void igl::copyleft::cgal::outer_edge<Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,std::ptrdiff_t,Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,1,0,-1,1> > const&,std::ptrdiff_t&,std::ptrdiff_t&,Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >&);
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::outer_edge<Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1>,std::ptrdiff_t,Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> > const&,std::ptrdiff_t&,std::ptrdiff_t&,Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >&);
+#endif
template void igl::copyleft::cgal::outer_edge<Eigen::Matrix<double,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,std::ptrdiff_t,Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,std::ptrdiff_t&,std::ptrdiff_t&,Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >&);
template void igl::copyleft::cgal::outer_edge<Eigen::Matrix<double,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,std::ptrdiff_t,Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,1,0,-1,1> > const&,std::ptrdiff_t&,std::ptrdiff_t&,Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >&);
template void igl::copyleft::cgal::outer_edge<Eigen::Matrix<double,-1,3,0,-1,3>,Eigen::Matrix<int,-1,3,0,-1,3>,Eigen::Matrix<int,-1,1,0,-1,1>,std::ptrdiff_t,Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,3,0,-1,3> > const &,Eigen::MatrixBase<Eigen::Matrix<int,-1,3,0,-1,3> > const &,Eigen::MatrixBase<Eigen::Matrix<int,-1,1,0,-1,1> > const &,std::ptrdiff_t &,std::ptrdiff_t &,Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> > &);
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::outer_edge<Eigen::Matrix<double,-1,3,0,-1,3>,Eigen::Matrix<int,-1,3,0,-1,3>,Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1>,std::ptrdiff_t,Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,3,0,-1,3> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,3,0,-1,3> > const&,Eigen::MatrixBase<Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> > const&,std::ptrdiff_t&,std::ptrdiff_t&,Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >&);
+#endif
#ifdef WIN32
template void __cdecl igl::copyleft::cgal::outer_edge<class Eigen::Matrix<class CGAL::Epeck::FT,-1,-1,0,-1,-1>,class Eigen::Matrix<int,-1,-1,0,-1,-1>,class Eigen::Matrix<long,-1,1,0,-1,1>,std::ptrdiff_t,class Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >(class Eigen::MatrixBase<class Eigen::Matrix<class CGAL::Epeck::FT,-1,-1,0,-1,-1> > const &,class Eigen::MatrixBase<class Eigen::Matrix<int,-1,-1,0,-1,-1> > const &,class Eigen::MatrixBase<class Eigen::Matrix<long,-1,1,0,-1,1> > const &,std::ptrdiff_t &,std::ptrdiff_t &,class Eigen::PlainObjectBase<class Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> > &);
diff --git a/include/igl/copyleft/cgal/outer_facet.cpp b/include/igl/copyleft/cgal/outer_facet.cpp
index 0de3f01..e5348a0 100644
--- a/include/igl/copyleft/cgal/outer_facet.cpp
+++ b/include/igl/copyleft/cgal/outer_facet.cpp
@@ -154,12 +154,18 @@ IGL_INLINE void igl::copyleft::cgal::outer_facet(
// Explicit template instantiation
// generated by autoexplicit.sh
#include <cstdint>
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::outer_facet<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 1, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, std::ptrdiff_t>(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 1, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, std::ptrdiff_t&, bool&);
+#endif
// generated by autoexplicit.sh
template void igl::copyleft::cgal::outer_facet<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 1, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 1, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, int&, bool&);
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::outer_facet<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Index>(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, Eigen::Index &, bool&);
+#endif
template void igl::copyleft::cgal::outer_facet<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, int&, bool&);
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::outer_facet<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Index>(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, Eigen::Index&, bool&);
+#endif
template void igl::copyleft::cgal::outer_facet<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, int>(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, int&, bool&);
template void igl::copyleft::cgal::outer_facet<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, int&, bool&);
//template void igl::copyleft::cgal::outer_facet<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<long, -1, 1, 0, -1, 1>, int>(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<long, -1, 1, 0, -1, 1> > const&, int&, bool&);
diff --git a/include/igl/copyleft/cgal/outer_vertex.cpp b/include/igl/copyleft/cgal/outer_vertex.cpp
index d6a02e9..b5d057a 100644
--- a/include/igl/copyleft/cgal/outer_vertex.cpp
+++ b/include/igl/copyleft/cgal/outer_vertex.cpp
@@ -87,10 +87,14 @@ IGL_INLINE void igl::copyleft::cgal::outer_vertex(
#include <cstdint>
template void igl::copyleft::cgal::outer_vertex<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 1, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, std::ptrdiff_t, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 1, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, std::ptrdiff_t&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&);
template void igl::copyleft::cgal::outer_vertex<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, std::ptrdiff_t, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, std::ptrdiff_t&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&);
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::outer_vertex<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1>, std::ptrdiff_t, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> > const&, std::ptrdiff_t&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&);
+#endif
template void igl::copyleft::cgal::outer_vertex<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, std::ptrdiff_t, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::ptrdiff_t&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&);
template void igl::copyleft::cgal::outer_vertex<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, std::ptrdiff_t, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, std::ptrdiff_t&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&);
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::outer_vertex<Eigen::Matrix<double, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, 3, 0, -1, 3>, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1>, std::ptrdiff_t, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> > const&, std::ptrdiff_t&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&);
+#endif
// Linux
template void igl::copyleft::cgal::outer_vertex<Eigen::Matrix<double, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, std::ptrdiff_t, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, std::ptrdiff_t&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&);
#ifdef WIN32
diff --git a/include/igl/copyleft/cgal/remesh_intersections.cpp b/include/igl/copyleft/cgal/remesh_intersections.cpp
index d5a73d9..e4d978a 100644
--- a/include/igl/copyleft/cgal/remesh_intersections.cpp
+++ b/include/igl/copyleft/cgal/remesh_intersections.cpp
@@ -551,9 +551,13 @@ template void igl::copyleft::cgal::remesh_intersections<Eigen::Matrix<double, -1
template void igl::copyleft::cgal::remesh_intersections<Eigen::Matrix<double, -1, -1, 1, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, CGAL::Epeck, Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 1, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::vector<CGAL::Triangle_3<CGAL::Epeck>, std::allocator<CGAL::Triangle_3<CGAL::Epeck> > > const&, std::map<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > >, std::less<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index const, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > > > > > const&, bool, bool, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
template void igl::copyleft::cgal::remesh_intersections<Eigen::Matrix<double, -1, -1, 1, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, CGAL::Epick, Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 1, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::vector<CGAL::Triangle_3<CGAL::Epick>, std::allocator<CGAL::Triangle_3<CGAL::Epick> > > const&, std::map<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > >, std::less<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index const, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > > > > > const&, bool, bool, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
template void igl::copyleft::cgal::remesh_intersections<Eigen::Matrix<double, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, CGAL::Epeck, Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::vector<CGAL::Triangle_3<CGAL::Epeck>, std::allocator<CGAL::Triangle_3<CGAL::Epeck> > > const&, std::map<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > >, std::less<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index const, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > > > > > const&, bool, bool, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::remesh_intersections<Eigen::Matrix<double, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, CGAL::Epeck, Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::vector<CGAL::Triangle_3<CGAL::Epeck>, std::allocator<CGAL::Triangle_3<CGAL::Epeck> > > const&, std::map<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > >, std::less<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index const, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > > > > > const&, bool, bool, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
+#endif
template void igl::copyleft::cgal::remesh_intersections<Eigen::Matrix<double, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, CGAL::Epick, Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::vector<CGAL::Triangle_3<CGAL::Epick>, std::allocator<CGAL::Triangle_3<CGAL::Epick> > > const&, std::map<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > >, std::less<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index const, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > > > > > const&, bool, bool, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::remesh_intersections<Eigen::Matrix<double, -1, 3, 0, -1, 3>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, CGAL::Epick, Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::vector<CGAL::Triangle_3<CGAL::Epick>, std::allocator<CGAL::Triangle_3<CGAL::Epick> > > const&, std::map<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > >, std::less<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index const, std::vector<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object>, std::allocator<std::pair<Eigen::Matrix<int, -1, -1, 0, -1, -1>::Index, CGAL::Object> > > > > > const&, bool, bool, Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
+#endif
#ifdef WIN32
template void igl::copyleft::cgal::remesh_intersections<Eigen::Matrix<CGAL::Epeck::FT,-1,3,0,-1,3>,Eigen::Matrix<int,-1,3,0,-1,3>,CGAL::Epick,Eigen::Matrix<CGAL::Epeck::FT,-1,3,0,-1,3>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT,-1,3,0,-1,3> >const &,Eigen::MatrixBase<Eigen::Matrix<int,-1,3,0,-1,3> > const &,std::vector<CGAL::Triangle_3<CGAL::Epick>,std::allocator<CGAL::Triangle_3<CGAL::Epick>> > const &,std::map<__int64,std::vector<struct std::pair<__int64,CGAL::Object>,std::allocator<struct std::pair<__int64,CGAL::Object> > >,struct std::less<__int64>,std::allocator<struct std::pair<__int64 const ,std::vector<struct std::pair<__int64,CGAL::Object>,std::allocator<struct std::pair<__int64,CGAL::Object> > > > > > const &,bool,bool,Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT,-1,3,0,-1,3> > &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> > &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> > &);
template void igl::copyleft::cgal::remesh_intersections<Eigen::Matrix<CGAL::Epeck::FT,-1,3,0,-1,3>,Eigen::Matrix<int,-1,3,0,-1,3>,CGAL::Epick,Eigen::Matrix<CGAL::Epeck::FT,-1,3,1,-1,3>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<CGAL::Epeck::FT,-1,3,0,-1,3> >const &,Eigen::MatrixBase<Eigen::Matrix<int,-1,3,0,-1,3> > const &,std::vector<CGAL::Triangle_3<CGAL::Epick>,std::allocator<CGAL::Triangle_3<CGAL::Epick>> > const &,std::map<__int64,std::vector<struct std::pair<__int64,CGAL::Object>,std::allocator<struct std::pair<__int64,CGAL::Object> > >,struct std::less<__int64>,std::allocator<struct std::pair<__int64 const ,std::vector<struct std::pair<__int64,CGAL::Object>,std::allocator<struct std::pair<__int64,CGAL::Object> > > > > > const &,bool,bool,Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT,-1,3,1,-1,3> > &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> > &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> > &);
diff --git a/include/igl/copyleft/cgal/remesh_self_intersections.cpp b/include/igl/copyleft/cgal/remesh_self_intersections.cpp
index 415544f..217b90c 100644
--- a/include/igl/copyleft/cgal/remesh_self_intersections.cpp
+++ b/include/igl/copyleft/cgal/remesh_self_intersections.cpp
@@ -156,7 +156,9 @@ template void igl::copyleft::cgal::remesh_self_intersections<Eigen::Matrix<doubl
template void igl::copyleft::cgal::remesh_self_intersections<Eigen::Matrix<double,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<CGAL::Epeck::FT,-1,3,1,-1,3>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,igl::copyleft::cgal::RemeshSelfIntersectionsParam const&,Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT,-1,3,1,-1,3> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&);
template void igl::copyleft::cgal::remesh_self_intersections<Eigen::Matrix<double,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<double,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,igl::copyleft::cgal::RemeshSelfIntersectionsParam const&,Eigen::PlainObjectBase<Eigen::Matrix<double,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&);
template void igl::copyleft::cgal::remesh_self_intersections<Eigen::Matrix<double,-1,3,0,-1,3>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,3,0,-1,3> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,igl::copyleft::cgal::RemeshSelfIntersectionsParam const&,Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&);
+#if PTRDIFF_MAX != INT_MAX
template void igl::copyleft::cgal::remesh_self_intersections<Eigen::Matrix<double,-1,3,0,-1,3>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1>,Eigen::Matrix<int,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,3,0,-1,3> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,igl::copyleft::cgal::RemeshSelfIntersectionsParam const&,Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<std::ptrdiff_t,-1,1,0,-1,1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&);
+#endif
template void igl::copyleft::cgal::remesh_self_intersections<Eigen::Matrix<double,-1,-1,1,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,1,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,igl::copyleft::cgal::RemeshSelfIntersectionsParam const&,Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&);
template void igl::copyleft::cgal::remesh_self_intersections<Eigen::Matrix<double,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,1,0,-1,1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,0,-1,-1> > const&,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const&,igl::copyleft::cgal::RemeshSelfIntersectionsParam const&,Eigen::PlainObjectBase<Eigen::Matrix<CGAL::Epeck::FT,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1> >&);
#endif
diff --git a/include/igl/copyleft/cgal/unique.cpp b/include/igl/copyleft/cgal/unique.cpp
index 9ebf98f..c3c1fa2 100644
--- a/include/igl/copyleft/cgal/unique.cpp
+++ b/include/igl/copyleft/cgal/unique.cpp
@@ -11,5 +11,5 @@
#ifdef IGL_STATIC_LIBRARY
#undef IGL_STATIC_LIBRARY
#include "../../unique.cpp"
-template void igl::unique<CGAL::Point_2<CGAL::Epeck> >(std::vector<CGAL::Point_2<CGAL::Epeck>, std::allocator<CGAL::Point_2<CGAL::Epeck> > > const&, std::vector<CGAL::Point_2<CGAL::Epeck>, std::allocator<CGAL::Point_2<CGAL::Epeck> > >&, std::vector<unsigned long, std::allocator<unsigned long> >&, std::vector<unsigned long, std::allocator<unsigned long> >&);
+template void igl::unique<CGAL::Point_2<CGAL::Epeck> >(std::vector<CGAL::Point_2<CGAL::Epeck>, std::allocator<CGAL::Point_2<CGAL::Epeck> > > const&, std::vector<CGAL::Point_2<CGAL::Epeck>, std::allocator<CGAL::Point_2<CGAL::Epeck> > >&, std::vector<size_t, std::allocator<size_t> >&, std::vector<size_t, std::allocator<size_t> >&);
#endif
diff --git a/include/igl/extract_non_manifold_edge_curves.cpp b/include/igl/extract_non_manifold_edge_curves.cpp
index 6cc4464..87dd952 100644
--- a/include/igl/extract_non_manifold_edge_curves.cpp
+++ b/include/igl/extract_non_manifold_edge_curves.cpp
@@ -126,5 +126,5 @@ IGL_INLINE void igl::extract_non_manifold_edge_curves(
#ifdef IGL_STATIC_LIBRARY
// Explicit template instantiation
// generated by autoexplicit.sh
-template void igl::extract_non_manifold_edge_curves<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1>> const &, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1>> const &, std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>> const &, std::vector<std::vector<unsigned long, std::allocator<unsigned long>>, std::allocator<std::vector<unsigned long, std::allocator<unsigned long>>>> &);
+template void igl::extract_non_manifold_edge_curves<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1>> const &, Eigen::MatrixBase<Eigen::Matrix<int, -1, 1, 0, -1, 1>> const &, std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>> const &, std::vector<std::vector<size_t, std::allocator<size_t>>, std::allocator<std::vector<size_t, std::allocator<size_t>>>> &);
#endif
diff --git a/include/igl/flip_edge.cpp b/include/igl/flip_edge.cpp
index bda85b9..9ecc0d1 100644
--- a/include/igl/flip_edge.cpp
+++ b/include/igl/flip_edge.cpp
@@ -159,7 +159,7 @@ IGL_INLINE void igl::flip_edge(
#ifdef IGL_STATIC_LIBRARY
// Explicit template instantiation
// generated by autoexplicit.sh
-template void igl::flip_edge<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 2, 0, -1, 2>, Eigen::Matrix<int, -1, 2, 0, -1, 2>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, unsigned long);
+template void igl::flip_edge<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 2, 0, -1, 2>, Eigen::Matrix<int, -1, 2, 0, -1, 2>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, const size_t);
template void igl::flip_edge<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, const size_t);
#ifdef WIN32
template void igl::flip_edge<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, unsigned __int64);
diff --git a/include/igl/knn.cpp b/include/igl/knn.cpp
index 9e0e4f8..321297b 100644
--- a/include/igl/knn.cpp
+++ b/include/igl/knn.cpp
@@ -138,8 +138,8 @@ namespace igl {
// Explicit template instantiation
// generated by autoexplicit.sh
-template void igl::knn<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, int, Eigen::Matrix<int, -1, 8, 0, -1, 8>, Eigen::Matrix<double, -1, 3, 0, -1, 3>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, unsigned long, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 8, 0, -1, 8> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&);
-template void igl::knn<Eigen::Matrix<double, -1, -1, 0, -1, -1>, int, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, unsigned long, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&);
+template void igl::knn<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, int, Eigen::Matrix<int, -1, 8, 0, -1, 8>, Eigen::Matrix<double, -1, 3, 0, -1, 3>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, size_t, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 8, 0, -1, 8> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&);
+template void igl::knn<Eigen::Matrix<double, -1, -1, 0, -1, -1>, int, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, size_t, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&);
#ifdef WIN32
template void igl::knn<Eigen::Matrix<double,-1,-1,0,-1,-1>,int,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<double,-1,-1,0,-1,-1>,Eigen::Matrix<double,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,0,-1,-1> > const &,unsigned __int64,std::vector<std::vector<int,std::allocator<int> >,std::allocator<std::vector<int,std::allocator<int> > > > const &,Eigen::MatrixBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > const &,Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,0,-1,-1> > const &,Eigen::MatrixBase<Eigen::Matrix<double,-1,1,0,-1,1> > const &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > &);
template void igl::knn<Eigen::Matrix<double,-1,-1,0,-1,-1>,Eigen::Matrix<double,-1,-1,0,-1,-1>,int,Eigen::Matrix<int,-1,8,0,-1,8>,Eigen::Matrix<double,-1,3,0,-1,3>,Eigen::Matrix<double,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1> >(Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,0,-1,-1> > const &,Eigen::MatrixBase<Eigen::Matrix<double,-1,-1,0,-1,-1> > const &,unsigned __int64,std::vector<std::vector<int,std::allocator<int> >,std::allocator<std::vector<int,std::allocator<int> > > > const &,Eigen::MatrixBase<Eigen::Matrix<int,-1,8,0,-1,8> > const &,Eigen::MatrixBase<Eigen::Matrix<double,-1,3,0,-1,3> > const &,Eigen::MatrixBase<Eigen::Matrix<double,-1,1,0,-1,1> > const &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1> > &);
diff --git a/include/igl/slice.cpp b/include/igl/slice.cpp
index 091588c..b823c75 100644
--- a/include/igl/slice.cpp
+++ b/include/igl/slice.cpp
@@ -217,7 +217,7 @@ template void igl::slice<unsigned int>(class std::vector<unsigned int,class std:
template void igl::slice<float>(class std::vector<float,class std::allocator<float> > const &,class std::vector<unsigned __int64,class std::allocator<unsigned __int64> > const &,class std::vector<float,class std::allocator<float> > &);
template void igl::slice<__int64>(class std::vector<__int64,class std::allocator<__int64> > const &,class std::vector<unsigned __int64,class std::allocator<unsigned __int64> > const &,class std::vector<__int64,class std::allocator<__int64> > &);
#endif
-template void igl::slice<unsigned int>(std::vector<unsigned int, std::allocator<unsigned int> > const&, std::vector<unsigned long, std::allocator<unsigned long> > const&, std::vector<unsigned int, std::allocator<unsigned int> >&);
+template void igl::slice<unsigned int>(std::vector<unsigned int, std::allocator<unsigned int> > const&, std::vector<size_t, std::allocator<size_t> > const&, std::vector<unsigned int, std::allocator<unsigned int> >&);
template void igl::slice<float>(std::vector<float, std::allocator<float> > const&, std::vector<size_t, std::allocator<size_t> > const&, std::vector<float, std::allocator<float> >&);
template void igl::slice<double>(std::vector<double, std::allocator<double> > const&, std::vector<size_t, std::allocator<size_t> > const&, std::vector<double, std::allocator<double> >&);
template void igl::slice<int>(std::vector<int, std::allocator<int> > const&, std::vector<size_t, std::allocator<size_t> > const&, std::vector<int, std::allocator<int> >&);
diff --git a/include/igl/sparse.cpp b/include/igl/sparse.cpp
index be6b561..8eed7f9 100644
--- a/include/igl/sparse.cpp
+++ b/include/igl/sparse.cpp
@@ -97,11 +97,11 @@ IGL_INLINE Eigen::SparseMatrix<typename DerivedD::Scalar > igl::sparse(
#ifdef IGL_STATIC_LIBRARY
// Explicit template instantiation
// generated by autoexplicit.sh
-template void igl::sparse<Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::Matrix<int, -1, 1, 0, -1, 1> const&, Eigen::Matrix<int, -1, 1, 0, -1, 1> const&, Eigen::Matrix<int, -1, 1, 0, -1, 1> const&, unsigned long, unsigned long, Eigen::SparseMatrix<int, 0, int>&);
+template void igl::sparse<Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, int>(Eigen::Matrix<int, -1, 1, 0, -1, 1> const&, Eigen::Matrix<int, -1, 1, 0, -1, 1> const&, Eigen::Matrix<int, -1, 1, 0, -1, 1> const&, size_t, size_t, Eigen::SparseMatrix<int, 0, int>&);
// generated by autoexplicit.sh
-template void igl::sparse<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true>, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >, int>(Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> const&, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> const&, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, unsigned long, unsigned long, Eigen::SparseMatrix<int, 0, int>&);
+template void igl::sparse<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true>, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >, int>(Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> const&, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> const&, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, size_t, size_t, Eigen::SparseMatrix<int, 0, int>&);
// generated by autoexplicit.sh
-template void igl::sparse<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true>, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<int, int>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Array<int, -1, 1, 0, -1, 1> const> const, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<int, int>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Array<int, -1, 1, 0, -1, 1> const> const, Eigen::CwiseUnaryOp<Eigen::internal::scalar_cast_op<bool, int>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_cmp_op<int, int, (Eigen::internal::ComparisonName)1>, Eigen::ArrayWrapper<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> > const, Eigen::ArrayWrapper<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> > const> const> const> const>, int>(Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> const&, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> const&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<int, int>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Array<int, -1, 1, 0, -1, 1> const> const, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<int, int>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Array<int, -1, 1, 0, -1, 1> const> const, Eigen::CwiseUnaryOp<Eigen::internal::scalar_cast_op<bool, int>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_cmp_op<int, int, (Eigen::internal::ComparisonName)1>, Eigen::ArrayWrapper<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> > const, Eigen::ArrayWrapper<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> > const> const> const> const> const&, unsigned long, unsigned long, Eigen::SparseMatrix<int, 0, int>&);
+template void igl::sparse<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true>, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<int, int>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Array<int, -1, 1, 0, -1, 1> const> const, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<int, int>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Array<int, -1, 1, 0, -1, 1> const> const, Eigen::CwiseUnaryOp<Eigen::internal::scalar_cast_op<bool, int>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_cmp_op<int, int, (Eigen::internal::ComparisonName)1>, Eigen::ArrayWrapper<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> > const, Eigen::ArrayWrapper<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> > const> const> const> const>, int>(Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> const&, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> const&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<int, int>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Array<int, -1, 1, 0, -1, 1> const> const, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<int, int>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<int>, Eigen::Array<int, -1, 1, 0, -1, 1> const> const, Eigen::CwiseUnaryOp<Eigen::internal::scalar_cast_op<bool, int>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_cmp_op<int, int, (Eigen::internal::ComparisonName)1>, Eigen::ArrayWrapper<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> > const, Eigen::ArrayWrapper<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1>, -1, 1, true> > const> const> const> const> const&, size_t, size_t, Eigen::SparseMatrix<int, 0, int>&);
// generated by autoexplicit.sh
#ifndef WIN32
//template void igl::sparse<Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<bool>, Eigen::Array<bool, -1, 3, 0, -1, 3> >, bool>(Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<bool>, Eigen::Array<bool, -1, 3, 0, -1, 3> > const&, unsigned long, unsigned long, Eigen::SparseMatrix<bool, 0, int>&);

View File

@ -1,3 +1,18 @@
# This triplet option enables building an actual binary library.
# Despite the name (which follows upstream's choice), it respects
# the triplet's library linkage for non-Windows targets.
# Missing symbols - i.e. explicit template instantiations -
# must be added to the implementation files (and upstreamed),
# cf. https://libigl.github.io/static-library/
if(NOT DEFINED LIBIGL_USE_STATIC_LIBRARY)
set(LIBIGL_USE_STATIC_LIBRARY OFF)
endif()
if(NOT LIBIGL_USE_STATIC_LIBRARY)
set(VCPKG_BUILD_TYPE release) # header-only
elseif(VCPKG_TARGET_IS_WINDOWS)
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO libigl/libigl
@ -6,67 +21,66 @@ vcpkg_from_github(
HEAD_REF master
PATCHES
dependencies.patch
imgui-impl.diff
install-extra-targets.patch
instantiations.diff # Fix size_t and ptrdiff_t issues in 32 bit builds (arm32, x86)
)
file(REMOVE
"${SOURCE_PATH}/cmake/find/FindGMP.cmake"
"${SOURCE_PATH}/cmake/find/FindMPFR.cmake"
"${SOURCE_PATH}/cmake/recipes/external/boost.cmake"
"${SOURCE_PATH}/cmake/recipes/external/catch2.cmake"
"${SOURCE_PATH}/cmake/recipes/external/cgal.cmake"
"${SOURCE_PATH}/cmake/recipes/external/eigen.cmake"
"${SOURCE_PATH}/cmake/recipes/external/embree.cmake"
"${SOURCE_PATH}/cmake/recipes/external/glad.cmake"
"${SOURCE_PATH}/cmake/recipes/external/glfw.cmake"
"${SOURCE_PATH}/cmake/recipes/external/gmp.cmake"
"${SOURCE_PATH}/cmake/recipes/external/gmp_mpfr.cmake"
"${SOURCE_PATH}/cmake/recipes/external/imgui.cmake"
"${SOURCE_PATH}/cmake/recipes/external/imguizmo.cmake"
"${SOURCE_PATH}/cmake/recipes/external/libigl_imgui_fonts.cmake"
"${SOURCE_PATH}/cmake/recipes/external/mpfr.cmake"
"${SOURCE_PATH}/cmake/recipes/external/stb.cmake"
"${SOURCE_PATH}/cmake/recipes/external/tinyxml2.cmake"
"${SOURCE_PATH}/cmake/recipes/external/spectra.cmake"
)
file(REMOVE_RECURSE "${SOURCE_PATH}/cmake/recipes")
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
cgal LIBIGL_COPYLEFT_CGAL
copyleft LIBIGL_COPYLEFT_CORE
embree LIBIGL_EMBREE
glfw LIBIGL_GLFW
imgui LIBIGL_IMGUI
opengl LIBIGL_OPENGL
xml LIBIGL_XML
predicates LIBIGL_PREDICATES
tetgen LIBIGL_COPYLEFT_TETGEN
triangle LIBIGL_RESTRICTED_TRIANGLE
)
set(VCPKG_BUILD_TYPE release) # header-only
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
DISABLE_PARALLEL_CONFIGURE
OPTIONS
${FEATURE_OPTIONS}
-DCMAKE_POLICY_DEFAULT_CMP0167=NEW # boost used by cgal
-DHUNTER_ENABLED=OFF
-DLIBIGL_BUILD_TESTS=OFF
-DLIBIGL_BUILD_TUTORIALS=OFF
-DLIBIGL_INSTALL=ON
-DLIBIGL_USE_STATIC_LIBRARY=${LIBIGL_USE_STATIC_LIBRARY}
# cf. cmake/recipes/external/cgal.cmake
-DCGAL_CMAKE_EXACT_NT_BACKEND=BOOST_BACKEND
-DCGAL_DISABLE_GMP=ON
# Permissive modules
-DLIBIGL_PREDICATES=OFF
-DLIBIGL_SPECTRA=OFF
# Copyleft modules
-DLIBIGL_COPYLEFT_COMISO=OFF
-DLIBIGL_COPYLEFT_TETGEN=OFF
# Restricted modules
-DLIBIGL_RESTRICTED_MATLAB=OFF
-DLIBIGL_RESTRICTED_MOSEK=OFF
-DLIBIGL_USE_STATIC_LIBRARY=OFF
-DHUNTER_ENABLED=OFF
-DLIBIGL_SPECTRA=OFF
${ADDITIONAL_OPTIONS}
-DLIBIGL_RESTRICTED_TRIANGLE=OFF
MAYBE_UNUSED_VARIABLES
CGAL_CMAKE_EXACT_NT_BACKEND
CGAL_DISABLE_GMP
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/igl)
vcpkg_copy_pdbs()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib")
if(NOT LIBIGL_COPYLEFT_CGAL)
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.MPL2")
if(LIBIGL_USE_STATIC_LIBRARY)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
else()
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.MPL2" "${SOURCE_PATH}/LICENSE.GPL" COMMENT "GPL for targets in \"igl_copyleft::\" namespace.")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib")
endif()
set(comment "")
if(LIBIGL_COPYLEFT_CORE)
set(comment "GPL-2.0 terms apply to include/igl/copyleft/marching_cubes_tables.h.")
endif()
vcpkg_install_copyright(COMMENT "${comment}" FILE_LIST "${SOURCE_PATH}/LICENSE.MPL2")

View File

@ -1,9 +1,11 @@
{
"name": "libigl",
"version": "2.6.0",
"port-version": 1,
"description": "libigl is a simple C++ geometry processing library. We have a wide functionality including construction of sparse discrete differential geometry operators and finite-elements matrices such as the cotangent Laplacian and diagonalized mass matrix, simple facet and edge-based topology data structures, mesh-viewing utilities for OpenGL and GLSL, and many core functions for matrix manipulation which make Eigen feel a lot more like MATLAB.",
"homepage": "https://github.com/libigl/libigl",
"license": null,
"license": "MPL-2.0",
"supports": "!uwp",
"dependencies": [
"eigen3",
"stb",
@ -19,18 +21,30 @@
"features": {
"cgal": {
"description": "Build with cgal",
"supports": "!(x86 & windows & !mingw)",
"dependencies": [
{
"name": "cgal",
"default-features": false
},
{
"name": "libigl",
"default-features": false,
"features": [
"copyleft"
]
}
]
},
"copyleft": {
"description": "Build copyleft core module",
"license": "MPL-2.0 AND GPL-2.0"
},
"embree": {
"description": "Build with embree",
"dependencies": [
{
"name": "embree3",
"name": "embree",
"default-features": false
}
]

View File

@ -989,6 +989,19 @@ vcpkg-ci-itk:x64-windows-static-md=pass
vcpkg-ci-itk:x64-windows-static=pass
vcpkg-ci-itk:x64-windows=pass
vcpkg-ci-itk:x86-windows=pass
vcpkg-ci-libigl:arm-neon-android=pass
vcpkg-ci-libigl:arm64-android=pass
vcpkg-ci-libigl:arm64-osx=pass
vcpkg-ci-libigl:arm64-windows-static-md=pass
vcpkg-ci-libigl:arm64-windows=pass
vcpkg-ci-libigl:x64-android=pass
vcpkg-ci-libigl:x64-linux=pass
vcpkg-ci-libigl:x64-osx=pass
vcpkg-ci-libigl:x64-windows-release=pass
vcpkg-ci-libigl:x64-windows-static-md=pass
vcpkg-ci-libigl:x64-windows-static=pass
vcpkg-ci-libigl:x64-windows=pass
vcpkg-ci-libigl:x86-windows=pass
vcpkg-ci-llvm:x64-linux=pass
vcpkg-ci-llvm:x64-osx=pass
vcpkg-ci-llvm:x64-windows-release=pass

View File

@ -131,6 +131,7 @@ libgpod:x64-linux=fail # Missing system libraries on linux to run/prepare autoco
libgpod:x64-osx=fail
libgxps:x64-windows-static-md=fail
libgxps:x64-windows-static=fail
libigl[opengl](android)=feature-fails
libirecovery:x64-windows-static-md=fail
liblo(uwp)=fail
libmodman:x64-windows-static=fail
@ -305,6 +306,7 @@ zyre:x64-windows-static-md=fail
# testing all features would be too slow:
aws-sdk-cpp[access-management,accessanalyzer,account,acm,acm-pca,alexaforbusiness,amp,amplify,amplifybackend,amplifyuibuilder,apigateway,apigatewaymanagementapi,apigatewayv2,appconfig,appconfigdata,appfabric,appflow,appintegrations,application-autoscaling,application-insights,applicationcostprofiler,appmesh,apprunner,appstream,appsync,arc-zonal-shift,athena,auditmanager,autoscaling,autoscaling-plans,awsmigrationhub,awstransfer,backup,backup-gateway,backupstorage,batch,billingconductor,braket,budgets,ce,chime,chime-sdk-identity,chime-sdk-media-pipelines,chime-sdk-meetings,chime-sdk-messaging,chime-sdk-voice,cleanrooms,cloud9,cloudcontrol,clouddirectory,cloudformation,cloudfront,cloudhsm,cloudhsmv2,cloudsearch,cloudsearchdomain,cloudtrail,cloudtrail-data,codeartifact,codebuild,codecatalyst,codecommit,codedeploy,codeguru-reviewer,codeguru-security,codeguruprofiler,codepipeline,codestar,codestar-connections,codestar-notifications,cognito-identity,cognito-idp,cognito-sync,comprehend,comprehendmedical,compute-optimizer,config,connect,connect-contact-lens,connectcampaigns,connectcases,connectparticipant,controltower,cur,customer-profiles,databrew,dataexchange,datapipeline,datasync,dax,detective,devicefarm,devops-guru,directconnect,discovery,dlm,dms,docdb,docdb-elastic,drs,ds,dynamodb,dynamodbstreams,ebs,ec2,ec2-instance-connect,ecr,ecr-public,ecs,eks,elastic-inference,elasticache,elasticbeanstalk,elasticfilesystem,elasticloadbalancing,elasticloadbalancingv2,elasticmapreduce,elastictranscoder,email,emr-containers,emr-serverless,entityresolution,es,eventbridge,events,evidently,finspace,finspace-data,firehose,fis,fms,forecast,forecastquery,frauddetector,fsx,gamelift,gamesparks,glacier,globalaccelerator,glue,grafana,greengrass,greengrassv2,groundstation,guardduty,health,healthlake,honeycode,iam,identity-management,identitystore,imagebuilder,importexport,inspector,inspector2,internetmonitor,iot,iot-data,iot-jobs-data,iot-roborunner,iot1click-devices,iot1click-projects,iotanalytics,iotdeviceadvisor,iotevents,iotevents-data,iotfleethub,iotfleetwise,iotsecuretunneling,iotsitewise,iotthingsgraph,iottwinmaker,iotwireless,ivs,ivs-realtime,ivschat,kafka,kafkaconnect,kendra,kendra-ranking,keyspaces,kinesis,kinesis-video-archived-media,kinesis-video-media,kinesis-video-signaling,kinesis-video-webrtc-storage,kinesisanalytics,kinesisanalyticsv2,kinesisvideo,kms,lakeformation,lambda,lex,lex-models,lexv2-models,lexv2-runtime,license-manager,license-manager-linux-subscriptions,license-manager-user-subscriptions,lightsail,location,logs,lookoutequipment,lookoutmetrics,lookoutvision,m2,machinelearning,macie,macie2,managedblockchain,managedblockchain-query,marketplace-catalog,marketplace-entitlement,marketplacecommerceanalytics,mediaconnect,mediaconvert,medialive,mediapackage,mediapackage-vod,mediapackagev2,mediastore,mediastore-data,mediatailor,medical-imaging,memorydb,meteringmarketplace,mgn,migration-hub-refactor-spaces,migrationhub-config,migrationhuborchestrator,migrationhubstrategy,mobile,monitoring,mq,mturk-requester,mwaa,neptune,neptunedata,network-firewall,networkmanager,nimble,oam,omics,opensearch,opensearchserverless,opsworks,opsworkscm,organizations,osis,outposts,panorama,payment-cryptography,payment-cryptography-data,pca-connector-ad,personalize,personalize-events,personalize-runtime,pi,pinpoint,pinpoint-email,pinpoint-sms-voice-v2,pipes,polly,pricing,privatenetworks,proton,qldb,qldb-session,queues,quicksight,ram,rbin,rds,rds-data,redshift,redshift-data,redshift-serverless,rekognition,resiliencehub,resource-explorer-2,resource-groups,resourcegroupstaggingapi,robomaker,rolesanywhere,route53,route53-recovery-cluster,route53-recovery-control-config,route53-recovery-readiness,route53domains,route53resolver,rum,s3,s3-crt,s3-encryption,s3control,s3outposts,sagemaker,sagemaker-a2i-runtime,sagemaker-edge,sagemaker-featurestore-runtime,sagemaker-geospatial,sagemaker-metrics,sagemaker-runtime,savingsplans,scheduler,schemas,sdb,secretsmanager,securityhub,securitylake,serverlessrepo,service-quotas,servicecatalog,servicecatalog-appregistry,servicediscovery,sesv2,shield,signer,simspaceweaver,sms,sms-voice,snow-device-management,snowball,sns,sqs,ssm,ssm-contacts,ssm-incidents,ssm-sap,sso,sso-admin,sso-oidc,states,storagegateway,sts,support,support-app,swf,synthetics,text-to-speech,textract,timestream-query,timestream-write,tnb,transcribe,transcribestreaming,transfer,translate,verifiedpermissions,voice-id,vpc-lattice,waf,waf-regional,wafv2,wellarchitected,wisdom,workdocs,worklink,workmail,workmailmessageflow,workspaces,workspaces-web,xray] = no-separate-feature-test
embree[backface-culling,compact-polys,filter-function,geometry-curve,geometry-grid,geometry-instance,geometry-point,geometry-quad,geometry-subdivision,geometry-triangle,geometry-user,ray-mask,ray-packets] = no-separate-feature-test
gdal[aws-ec2-windows,curl,expat,geos,gif,iconv,jpeg,lerc,libkml,libspatialite,libxml2,lzma,openjpeg,openssl,pcre2,png,qhull,sqlite3,webp,zstd] = no-separate-feature-test
google-cloud-cpp[accessapproval,accesscontextmanager,advisorynotifications,alloydb,apigateway,apigeeconnect,apikeys,appengine,artifactregistry,asset,assuredworkloads,automl,baremetalsolution,batch,beyondcorp,bigquery,bigtable,billing,binaryauthorization,certificatemanager,channel,cloudbuild,commerce,composer,confidentialcomputing,connectors,contactcenterinsights,container,containeranalysis,datacatalog,datafusion,datamigration,dataplex,dataproc,datastore,datastream,debugger,deploy,dialogflow-cx,dialogflow-es,discoveryengine,dlp,documentai,edgecontainer,eventarc,experimental-opentelemetry,experimental-storage-grpc,filestore,functions,gameservices,gkehub,gkemulticloud,grafeas,iam,iap,ids,iot,kms,language,logging,managedidentities,memcache,metastore,migrationcenter,monitoring,networkconnectivity,networkmanagement,networksecurity,notebooks,optimization,orgpolicy,osconfig,oslogin,policysimulator,policytroubleshooter,privateca,profiler,pubsub,rapidmigrationassessment,recommender,redis,resourcemanager,resourcesettings,retail,run,scheduler,secretmanager,securitycenter,servicecontrol,servicedirectory,servicemanagement,serviceusage,shell,spanner,speech,storage,storageinsights,storagetransfer,support,talent,tasks,texttospeech,tpu,trace,translate,video,videointelligence,vision,vmmigration,vmwareengine,vpcaccess,webrisk,websecurityscanner,workflows,workstations] = no-separate-feature-test
halide[target-aarch64,target-all,target-amdgpu,target-arm,target-d3d12compute,target-hexagon,target-metal,target-nvptx,target-opencl,target-opengl-compute,target-powerpc,target-riscv,target-webassembly,target-x86] = no-separate-feature-test
@ -506,8 +508,6 @@ ecal:x64-uwp = cascade
egl:x64-uwp = cascade
elements:arm64-uwp = cascade
elements:x64-uwp = cascade
embree3:x64-uwp = fail
embree3[tasking-tbb]:x64-uwp = cascade
etcd-cpp-apiv3:arm64-uwp = cascade
etcd-cpp-apiv3:x64-uwp = cascade
evpp:arm64-uwp = cascade
@ -1818,7 +1818,6 @@ dcmtk(android) = fail # try_run
dcmtk(uwp) = fail # Please set the C++ runtime location (required for running applications targeting Windows). See https://github.com/microsoft/vcpkg/issues/35112
dmlc[openmp](osx) = feature-fails # No openmp on osx
dv-processing[tools](osx) = feature-fails # Broke with compiler version. See https://github.com/microsoft/vcpkg/issues/39852
embree3[core,avx,avx2,avx512,default-features,sse2,sse42](osx) = combination-fails # CMake Error at CMakeLists.txt:447 (MESSAGE): Using Embree as static library is not supported with AppleClang >= 9.0 when multiple ISAs are selected. Please either build a shared library or enable only one ISA.
ffmpeg[all,all-gpl](x64 & android) = feature-fails
ffmpeg[nvcodec,ffplay,opengl](android) = feature-fails
fftw3[openmp](osx) = feature-fails # waits for https://github.com/microsoft/vcpkg/pull/30833

View File

@ -0,0 +1,17 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO libigl/libigl
REF v2.6.0
SHA512 7c6ae5b94020a01df5d6d0a358592293595d8d8bf04bf42e6acc09bcd6ed012071069373a71ed6f24ce878aa79447dd189b42bc8a3a70819ef05dccc60a2cf68
HEAD_REF master
)
vcpkg_cmake_configure(
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
OPTIONS
"-DSOURCE_PATH=${SOURCE_PATH}"
"-DFEATURES=${FEATURES}"
)
vcpkg_cmake_build()

View File

@ -0,0 +1,47 @@
cmake_minimum_required(VERSION 3.16)
project(libigl-test C CXX)
set(CMAKE_CXX_STANDARD 11)
add_definitions("-DTUTORIAL_SHARED_PATH=\"${SOURCE_PATH}/placeholder\"")
find_package(libigl CONFIG REQUIRED)
# Other than in the upstream build ("${SOURCE_PATH}/tutorial/CMakeLists.txt"),
# the imported targets use a different prefix, e.g.
# igl::glfw -> igl::igl_glfw
# igl_copyleft::cgal -> igl_copyleft::igl_copyleft_cgal
add_executable(101_FileIO "${SOURCE_PATH}/tutorial/101_FileIO/main.cpp")
target_link_libraries(101_FileIO PRIVATE igl::igl_core)
if("cgal" IN_LIST FEATURES)
add_executable(609_Boolean "${SOURCE_PATH}/tutorial/609_Boolean/main.cpp")
target_link_libraries(609_Boolean PRIVATE igl::igl_glfw igl_copyleft::igl_copyleft_cgal)
endif()
if("embree" IN_LIST FEATURES)
add_executable(706_FacetOrientation "${SOURCE_PATH}/tutorial/706_FacetOrientation/main.cpp")
target_link_libraries(706_FacetOrientation PRIVATE igl::igl_glfw igl::igl_embree)
endif()
if("glfw" IN_LIST FEATURES)
add_executable(102_DrawMesh "${SOURCE_PATH}/tutorial/102_DrawMesh/main.cpp")
target_link_libraries(102_DrawMesh PRIVATE igl::igl_glfw)
add_executable(111_MatCap "${SOURCE_PATH}/tutorial/111_MatCap/main.cpp" "${CMAKE_CURRENT_LIST_DIR}/stb_image_implementation.c")
target_link_libraries(111_MatCap PRIVATE igl::igl_glfw igl::igl_stb)
endif()
if("imgui" IN_LIST FEATURES)
add_executable(109_ImGuizmo "${SOURCE_PATH}/tutorial/109_ImGuizmo/main.cpp")
target_link_libraries(109_ImGuizmo PRIVATE igl::igl_imgui)
add_executable(113_Shadows "${SOURCE_PATH}/tutorial/113_Shadows/main.cpp" "${CMAKE_CURRENT_LIST_DIR}/stb_image_implementation.c")
target_link_libraries(113_Shadows PRIVATE igl::igl_imgui igl::igl_stb)
endif()
if("xml" IN_LIST FEATURES)
add_executable(601_Serialization "${SOURCE_PATH}/tutorial/601_Serialization/main.cpp")
target_link_libraries(601_Serialization PRIVATE igl::igl_xml)
endif()

View File

@ -0,0 +1,2 @@
#define STB_IMAGE_IMPLEMENTATION
#include <stb_image.h>

View File

@ -0,0 +1,100 @@
{
"name": "vcpkg-ci-libigl",
"version-string": "ci",
"description": "Port to force features of libigl within CI",
"homepage": "https://github.com/microsoft/vcpkg",
"license": "MIT",
"dependencies": [
{
"name": "libigl",
"default-features": false
},
{
"name": "vcpkg-cmake",
"host": true
}
],
"default-features": [
{
"name": "cgal",
"platform": "!android & !(x86 & windows)"
},
{
"name": "embree",
"platform": "linux | osx | (windows & !uwp & !arm)"
},
{
"name": "glfw",
"platform": "!android"
},
{
"name": "imgui",
"platform": "!android"
},
"xml"
],
"features": {
"cgal": {
"description": "libigl[cgal]",
"dependencies": [
{
"name": "libigl",
"default-features": false,
"features": [
"cgal",
"glfw"
]
}
]
},
"embree": {
"description": "libigl[embree]",
"dependencies": [
{
"name": "libigl",
"default-features": false,
"features": [
"embree",
"glfw"
]
}
]
},
"glfw": {
"description": "libigl[glfw] and stb",
"dependencies": [
{
"name": "libigl",
"default-features": false,
"features": [
"glfw"
]
}
]
},
"imgui": {
"description": "libigl[imgui] and stb",
"dependencies": [
{
"name": "libigl",
"default-features": false,
"features": [
"imgui"
]
}
]
},
"xml": {
"description": "libigl[xml]",
"dependencies": [
{
"name": "libigl",
"default-features": false,
"features": [
"xml"
]
}
]
}
}
}

View File

@ -2704,9 +2704,9 @@
"baseline": "0.3.0-beta.4",
"port-version": 0
},
"embree3": {
"baseline": "3.13.5",
"port-version": 6
"embree": {
"baseline": "4.4.0",
"port-version": 0
},
"enchantum": {
"baseline": "0.3.0",
@ -4990,7 +4990,7 @@
},
"libigl": {
"baseline": "2.6.0",
"port-version": 0
"port-version": 1
},
"libilbc": {
"baseline": "3.0.4",

9
versions/e-/embree.json Normal file
View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "b9551ed23e8d3b213337a4128c234e47cf11363e",
"version": "4.4.0",
"port-version": 0
}
]
}

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "a7399f1d2c70c963c6cc0a92e4ac592d3e4b1ba6",
"version": "2.6.0",
"port-version": 1
},
{
"git-tree": "3b47fec68bb327d7372d5a8d2c5418482fc60fdf",
"version": "2.6.0",