RenderKit / embree

Embree ray tracing kernels repository.
Apache License 2.0
2.32k stars 383 forks source link

Build failure on x32 ABI #477

Open abatyiev opened 4 months ago

abatyiev commented 4 months ago

The x32 ABI is an ABI for x86_64 instruction set, where all pointers are 32bit. https://en.wikipedia.org/wiki/X32_ABI It is supported on Gentoo and Debian.

However, we I try to build embree on Gentoo, I'm getting following error:

In file included from /var/tmp/portage/media-libs/embree-3.13.4/work/embree-3.13.4/common/sys/alloc.cpp:5:
/var/tmp/portage/media-libs/embree-3.13.4/work/embree-3.13.4/common/sys/intrinsics.h:284:24: error: redefinition of ‘size_t embree::bsf(size_t)’
  284 |   __forceinline size_t bsf(size_t v) {
      |                        ^~~
/var/tmp/portage/media-libs/embree-3.13.4/work/embree-3.13.4/common/sys/intrinsics.h:268:26: note: ‘unsigned int embree::bsf(unsigned int)’ previously defined here
  268 |   __forceinline unsigned bsf(unsigned v)
      |                          ^~~
/var/tmp/portage/media-libs/embree-3.13.4/work/embree-3.13.4/common/sys/intrinsics.h:314:24: error: redefinition of ‘size_t embree::bscf(size_t&)’
  314 |   __forceinline size_t bscf(size_t& v)
      |                        ^~~~
/var/tmp/portage/media-libs/embree-3.13.4/work/embree-3.13.4/common/sys/intrinsics.h:306:30: note: ‘unsigned int embree::bscf(unsigned int&)’ previously defined here
  306 |   __forceinline unsigned int bscf(unsigned int& v)
      |                              ^~~~
/var/tmp/portage/media-libs/embree-3.13.4/work/embree-3.13.4/common/sys/intrinsics.h:343:24: error: redefinition of ‘size_t embree::bsr(size_t)’
  343 |   __forceinline size_t bsr(size_t v) {
      |                        ^~~
/var/tmp/portage/media-libs/embree-3.13.4/work/embree-3.13.4/common/sys/intrinsics.h:332:26: note: ‘unsigned int embree::bsr(unsigned int)’ previously defined here
  332 |   __forceinline unsigned bsr(unsigned v) {
      |

Here is the patch to fix the build: embree.patch