Teeworlds: A compilação falha ao compilar em não-x86 (devido ao immintrin.h)

Criado em 15 dez. 2018  ·  5Comentários  ·  Fonte: teeworlds/teeworlds

../src/engine/client/client.cpp:5:10: fatal error: immintrin.h: No such file or directory
 #include <immintrin.h> //_mm_pause
          ^~~~~~~~~~~~~
bug build system

Comentários muito úteis

Copiado de https://github.com/teeworlds/teeworlds/issues/1844#issuecomment -446756342:

Observe que isso ainda falhará ao compilar para arquiteturas diferentes das da Intel (e AMD). O código em questão não é portável:

https://github.com/teeworlds/teeworlds/blob/dff453d377e56a1389ca4313767b4f05f61b7985/src/engine/client/client.cpp#L5

https://github.com/teeworlds/teeworlds/blob/dff453d377e56a1389ca4313767b4f05f61b7985/src/engine/client/client.cpp#L1779

Eu sugiro removê-lo até que uma solução portátil seja encontrada. O código Teeworlds (especialmente fora de src / base / system.c) não deve depender de tais funções específicas do compilador e da arquitetura sem fallback.

Para elaborar: existem arquiteturas de CPU além da Intel, e não devemos depender de uma específica. Se o fizermos, devemos fazê-lo em src / base / system.c, mas não fazer a compilação falhar em arquiteturas desconhecidas.

Todos 5 comentários

A correção não foi portada para CMake, eu acredito.
Em 64 bits, você pode simplesmente comentar #include <immintrin.h> .
Se não funcionar, você pode tentar adicionar o sinalizador de compilação -msse2 ? Deve consertar isso afaik.

1844

@ Dune-jr Eu não acho que -msse2 funcionará em ppc64le ou s390x ou arm, porque é específico para x86.

Certo.
Como você está em 64 bits, ele simplesmente deve funcionar sem #include <immintrin.h>

@ Dune-jr também há braço de 32 bits;)

Copiado de https://github.com/teeworlds/teeworlds/issues/1844#issuecomment -446756342:

Observe que isso ainda falhará ao compilar para arquiteturas diferentes das da Intel (e AMD). O código em questão não é portável:

https://github.com/teeworlds/teeworlds/blob/dff453d377e56a1389ca4313767b4f05f61b7985/src/engine/client/client.cpp#L5

https://github.com/teeworlds/teeworlds/blob/dff453d377e56a1389ca4313767b4f05f61b7985/src/engine/client/client.cpp#L1779

Eu sugiro removê-lo até que uma solução portátil seja encontrada. O código Teeworlds (especialmente fora de src / base / system.c) não deve depender de tais funções específicas do compilador e da arquitetura sem fallback.

Para elaborar: existem arquiteturas de CPU além da Intel, e não devemos depender de uma específica. Se o fizermos, devemos fazê-lo em src / base / system.c, mas não fazer a compilação falhar em arquiteturas desconhecidas.

Esta página foi útil?
0 / 5 - 0 avaliações