Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions ports/embree3/001-downgrade-find-package-tbb-2020.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
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")
9 changes: 9 additions & 0 deletions ports/embree3/fix-bezier-curve.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
--- a/kernels/subdiv/bezier_curve.h
+++ b/kernels/subdiv/bezier_curve.h
@@ -135,7 +135,7 @@ namespace embree

friend embree_ostream operator<<(embree_ostream cout, const QuadraticBezierCurve& a) {
- return cout << "QuadraticBezierCurve ( (" << a.u.lower << ", " << a.u.upper << "), " << a.v0 << ", " << a.v1 << ", " << a.v2 << ")";
+ return cout << "QuadraticBezierCurve (" << a.v0 << ", " << a.v1 << ", " << a.v2 << ")";
}
};
13 changes: 13 additions & 0 deletions ports/embree3/no-runtime-install.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
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")
130 changes: 130 additions & 0 deletions ports/embree3/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@

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
)

# Fix QuadraticBezierCurve operator<< to remove non-existent u member
file(READ "${SOURCE_PATH}/kernels/subdiv/bezier_curve.h" BEZIER_CURVE_CONTENT)
string(REPLACE "return cout << \"QuadraticBezierCurve ( (\" << a.u.lower << \", \" << a.u.upper << \"), \" << a.v0 << \", \" << a.v1 << \", \" << a.v2 << \")\";" "return cout << \"QuadraticBezierCurve (\" << a.v0 << \", \" << a.v1 << \", \" << a.v2 << \")\";" BEZIER_CURVE_CONTENT "${BEZIER_CURVE_CONTENT}")
file(WRITE "${SOURCE_PATH}/kernels/subdiv/bezier_curve.h" "${BEZIER_CURVE_CONTENT}")

# Fix PointMi operator<< to remove non-existent v0 member
file(READ "${SOURCE_PATH}/kernels/geometry/pointi.h" POINTI_CONTENT)
string(REPLACE "return cout << \"Line\" << M << \"i {\" << line.v0 << \", \" << line.geomID() << \", \" << line.primID() << \"}\";" "return cout << \"Line\" << M << \"i {\" << line.geomID() << \", \" << line.primID() << \"}\";" POINTI_CONTENT "${POINTI_CONTENT}")
file(WRITE "${SOURCE_PATH}/kernels/geometry/pointi.h" "${POINTI_CONTENT}")

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
)
elif(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
-DEMBREE_ISA_NEON:BOOL=ON
-DEMBREE_ISA_AVX2:BOOL=OFF
)
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")
4 changes: 4 additions & 0 deletions ports/embree3/usage
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
The package embree3 provides CMake targets:

find_package(embree 3 CONFIG REQUIRED)
target_link_libraries(main PRIVATE embree)
79 changes: 79 additions & 0 deletions ports/embree3/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"name": "embree3",
"version": "3.13.5",
"port-version": 4,
"description": "High Performance Ray Tracing Kernels.",
"homepage": "https://github.com/embree/embree",
"license": "Apache-2.0",
"supports": "!arm | (arm64 & osx)",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
],
"default-features": [
"filter-function",
"geometry-curve",
"geometry-grid",
"geometry-instance",
"geometry-point",
"geometry-quad",
"geometry-subdivision",
"geometry-triangle",
"geometry-user",
"ray-packets",
"tasking-tbb"
],
"features": {
"backface-culling": {
"description": "Enables backface culling."
},
"compact-polys": {
"description": "Enables double indexed poly layout."
},
"filter-function": {
"description": "Enables filter functions."
},
"geometry-curve": {
"description": "Enables support for curve geometries."
},
"geometry-grid": {
"description": "Enables support for grid geometries."
},
"geometry-instance": {
"description": "Enables support for instances."
},
"geometry-point": {
"description": "Enables support for point geometries."
},
"geometry-quad": {
"description": "Enables support for quad geometries."
},
"geometry-subdivision": {
"description": "Enables support for subdiv geometries."
},
"geometry-triangle": {
"description": "Enables support for triangle geometries."
},
"geometry-user": {
"description": "Enables support for user geometries."
},
"ray-mask": {
"description": "Enables ray mask support."
},
"ray-packets": {
"description": "Enabled support for ray packets."
},
"tasking-tbb": {
"description": "Use oneTBB as task system.",
"dependencies": [
"tbb"
]
}
}
}
4 changes: 4 additions & 0 deletions versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -2776,6 +2776,10 @@
"baseline": "4.4.0",
"port-version": 0
},
"embree3": {
"baseline": "3.13.5",
"port-version": 4
},
"enchantum": {
"baseline": "0.3.0",
"port-version": 0
Expand Down
2 changes: 1 addition & 1 deletion versions/e-/embree3.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"port-version": 5
},
{
"git-tree": "67707a39d2505eb22c7b9449a61e2d2d9d858d99",
"git-tree": "011c8fa86f4bd469604cd63dc6675c3bc83ef2c8",
"version": "3.13.5",
"port-version": 4
},
Expand Down