On Mon, 10 Oct 2022 10:09:32 +0900
Mamoru TASAKA <mtas...@fedoraproject.org> wrote:

> Luya Tshimbalanga wrote on 2022/10/10 2:46:
> > Hello team,
> > 
> > openshadinglanguage 1.12.6.2 only successfully built on x86_64 architecture 
> > but failed on others due to the following errors:
> > 
> > In file included from 
> > /builddir/build/BUILD/OpenShadingLanguage-1.12.6.2/src/liboslexec/oslexec_pvt.h:42,
> >                   from 
> > /builddir/build/BUILD/OpenShadingLanguage-1.12.6.2/src/liboslexec/oslexec.cpp:12:
> > /builddir/build/BUILD/OpenShadingLanguage-1.12.6.2/src/include/OSL/mask.h:7:10:
> >  fatal error: immintrin.h: No such file or directory
> >      7 | #include <immintrin.h>
> >        |          ^~~~~~~~~~~~~
> > compilation terminated.
> > 
> > 
> > That "immintrin.h" is provided by both gcc and clang according to "dnf -C 
> > repoquery --whatprovides */immintrin.h". Could someone investigate the 
> > cause and provide a patch?
> > 
> > See https://koji.fedoraproject.org/koji/taskinfo?taskID=92833862
> > 
> > Thanks in advance
> > 
> 
> Well, gcc immintrin.h is 
> "/usr/lib/gcc/x86_64-redhat-linux/12/include/immintrin.h" (note that 
> "x86_64-" path).
> 
> And clang immintrin.h "/usr/lib64/clang/15.0.0/include/immintrin.h" says:
> ------------------------------------------
> #if !defined(__i386__) && !defined(__x86_64__)
> #error "This header is only meant to be used on x86 and x64 architecture"
> #endif
> ------------------------------------------
> 
> AFAIK immintrin.h is available only on x86 / x86_64.
> 
> Then as far as I looked at src/include/OSL/mask.h, it looks like actually 
> this supports non-x86 architectures
> (as I see #elif defined(__GNUC__) || defined(__clang__) or so),
> so just try to guard the inclusion like
> 
> #if defined(__i386__) || defined(__x86_64__)
> #include <immintrin.h>
> #endif
> 
> and see how it goes. Maybe some additional modification is needed, but for 
> now I expect that
> most things may go well.

if I see right, then the reason for the inclusion of "immintrin.h" is to
provide popcount and coutr_zero implementations when built with C++
standard below C++20, see
https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/blob/main/src/include/OSL/mask.h#L18
or when not using GCC or clang where the functions are "builtin". So
the inclusion is made from a wrong place. I am going to submit a PR to
upstream.


                Dan
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to