Teeworlds: Build schlägt fehl, auf Nicht-x86 zu bauen (wegen immintrin.h)

Erstellt am 15. Dez. 2018  ·  5Kommentare  ·  Quelle: 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

Hilfreichster Kommentar

Kopiert von https://github.com/teeworlds/teeworlds/issues/1844#issuecomment -446756342:

Beachten Sie, dass dies immer noch für andere Architekturen als die von Intel (und AMD) kompiliert werden kann. Der fragliche Code ist ziemlich unportabel:

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

Ich schlage vor, es zu entfernen, bis eine tragbare Lösung gefunden wird. Teeworlds Code (insbesondere außerhalb von src/base/system.c) sollte sich nicht ohne Fallback auf solche Compiler- und Architektur-spezifischen Funktionen verlassen.

Zur Verdeutlichung: Neben Intel gibt es CPU-Architekturen, auf die wir uns nicht verlassen sollten. Wenn dies der Fall ist, sollten wir dies in src/base/system.c tun, aber die Kompilierung auf unbekannten Architekturen

Alle 5 Kommentare

Ich glaube, der Fix wurde nicht auf CMake portiert.
Auf 64bit können Sie einfach #include <immintrin.h> .
Wenn es nicht funktioniert, können Sie versuchen, das Kompilierungsflag -msse2 hinzuzufügen? Es sollte es afaik beheben.

1844

@Dune-jr Ich glaube nicht, dass -msse2 auf ppc64le oder s390x oder arm funktioniert, da es x86-spezifisch ist.

Richtig.
Da Sie 64-Bit verwenden, sollte es einfach ohne #include <immintrin.h> funktionieren

@Dune-jr gibt es auch 32-Bit-Arm ;)

Kopiert von https://github.com/teeworlds/teeworlds/issues/1844#issuecomment -446756342:

Beachten Sie, dass dies immer noch für andere Architekturen als die von Intel (und AMD) kompiliert werden kann. Der fragliche Code ist ziemlich unportabel:

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

Ich schlage vor, es zu entfernen, bis eine tragbare Lösung gefunden wird. Teeworlds Code (insbesondere außerhalb von src/base/system.c) sollte sich nicht ohne Fallback auf solche Compiler- und Architektur-spezifischen Funktionen verlassen.

Zur Verdeutlichung: Neben Intel gibt es CPU-Architekturen, auf die wir uns nicht verlassen sollten. Wenn dies der Fall ist, sollten wir dies in src/base/system.c tun, aber die Kompilierung auf unbekannten Architekturen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen