blob: 94efef93e9b9f3bf53dd23da5774f2fc150275a0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit cmake flag-o-matic linux-info toolchain-funcs
DESCRIPTION="Collection of high-performance ray tracing kernels"
HOMEPAGE="https://github.com/embree/embree"
SRC_URI="https://github.com/embree/embree/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="3"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
X86_CPU_FLAGS=( sse2:sse2 sse4_2:sse4_2 avx:avx avx2:avx2 avx512dq:avx512dq )
CPU_FLAGS=( cpu_flags_arm_neon ${X86_CPU_FLAGS[@]/#/cpu_flags_x86_} )
IUSE="+compact-polys ispc +raymask ssp +tbb tutorial static-libs ${CPU_FLAGS[@]%:*}"
# Let's be explicit here even though we could simplify it.
REQUIRED_USE="amd64? ( cpu_flags_x86_sse2 ) x86? ( cpu_flags_x86_sse2 )"
RESTRICT="mirror"
BDEPEND="
virtual/pkgconfig
"
RDEPEND="
>=media-libs/glfw-3.2.1
virtual/opengl
ispc? ( dev-lang/ispc )
tbb? ( dev-cpp/tbb:= )
tutorial? (
>=media-libs/libpng-1.6.34:0=
>=media-libs/openimageio-1.8.7:0=
virtual/jpeg:0
)
"
DEPEND="${RDEPEND}"
DOCS=( CHANGELOG.md README.md readme.pdf )
pkg_setup() {
CONFIG_CHECK="~TRANSPARENT_HUGEPAGE"
WARNING_TRANSPARENT_HUGEPAGE="Not enabling Transparent Hugepages (CONFIG_TRANSPARENT_HUGEPAGE) will impact rendering performance."
linux-info_pkg_setup
}
src_prepare() {
cmake_src_prepare
# disable RPM package building
sed -e 's|CPACK_RPM_PACKAGE_RELEASE 1|CPACK_RPM_PACKAGE_RELEASE 0|' \
-i CMakeLists.txt || die
}
src_configure() {
# NOTE: You can make embree accept custom CXXFLAGS by turning off
# EMBREE_IGNORE_CMAKE_CXX_FLAGS. However, the linking will fail if you use
# any "march" compile flags. This is because embree builds modules for the
# different supported ISAs and picks the correct one at runtime.
# "march" will pull in cpu instructions that shouldn't be in specific modules
# and it fails to link properly.
# https://github.com/embree/embree/issues/115
filter-flags -march=*
local mycmakeargs=(
# Currently Intel only host their test files on their internal network.
# So it seems like users can't easily get a hold of these and do
# regression testing on their own.
-DBUILD_TESTING:BOOL=OFF
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON
# default
-DEMBREE_BACKFACE_CULLING=OFF
-DEMBREE_COMPACT_POLYS=$(usex compact-polys)
# default
-DEMBREE_FILTER_FUNCTION=ON
# default
-DEMBREE_GEOMETRY_CURVE=ON
# default
-DEMBREE_GEOMETRY_GRID=ON
# default
-DEMBREE_GEOMETRY_INSTANCE=ON
# default
-DEMBREE_GEOMETRY_POINT=ON
# default
-DEMBREE_GEOMETRY_QUAD=ON
# default
-DEMBREE_GEOMETRY_SUBDIVISION=ON
# default
-DEMBREE_GEOMETRY_TRIANGLE=ON
# default
-DEMBREE_GEOMETRY_USER=ON
# default
-DEMBREE_IGNORE_CMAKE_CXX_FLAGS=OFF
# default
-DEMBREE_IGNORE_INVALID_RAYS=OFF
# Set to NONE so we can manually switch on ISAs below
-DEMBREE_MAX_ISA:STRING="NONE"
-DEMBREE_ISA_AVX=$(usex cpu_flags_x86_avx)
-DEMBREE_ISA_AVX2=$(usex cpu_flags_x86_avx2)
-DEMBREE_ISA_AVX512=$(usex cpu_flags_x86_avx512dq)
-DEMBREE_ISA_NEON=$(usex cpu_flags_arm_neon)
-DEMBREE_ISA_SSE2=$(usex cpu_flags_x86_sse2)
-DEMBREE_ISA_SSE42=$(usex cpu_flags_x86_sse4_2)
-DEMBREE_ISPC_SUPPORT=$(usex ispc)
-DEMBREE_RAY_MASK=$(usex raymask)
# default
-DEMBREE_RAY_PACKETS=ON
-DEMBREE_STACK_PROTECTOR=$(usex ssp)
-DEMBREE_STATIC_LIB=$(usex static-libs)
-DEMBREE_STAT_COUNTERS=OFF
-DEMBREE_TASKING_SYSTEM:STRING=$(usex tbb "TBB" "INTERNAL")
-DEMBREE_TUTORIALS=$(usex tutorial))
# Disable asserts
append-cppflags -DNDEBUG
if use tutorial; then
mycmakeargs+=(
-DEMBREE_ISPC_ADDRESSING:STRING="64"
-DEMBREE_TUTORIALS_LIBJPEG=ON
-DEMBREE_TUTORIALS_LIBPNG=ON
-DEMBREE_TUTORIALS_OPENIMAGEIO=ON
)
fi
cmake_src_configure
}
|