Page 1 of 1

gzdoom 3.7.x won't compile under the ppc64le arch

Posted: Sun Feb 03, 2019 10:56 am
by Guest
Greetings.

gdoom 3.7.x don't compile under ppc64(le) architecture; it seems that the cause is asmjit not supporting such arch.


[code]
# error "[asmjit] Couldn't determine the target's calling convention."

In file included from /home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/codeholder.h:13,
from /home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/codeemitter.h:13,
from /home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/assembler.h:12,
from /home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/assembler.cpp:11:
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:477:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature0(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:486:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature1(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:496:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature2(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:506:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature3(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:516:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature4(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:526:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature5(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:536:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature6(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:546:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature7(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:556:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature8(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:566:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature9(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:576:59: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignature10(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:587:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignatureT(uint32_t ccId = CallConv::kIdHost) noexcept {
^~~~~~~
/home/yamir/gzdoom-src-g3.7.2/gzdoom-g3.7.2/asmjit/asmjit/base/../base/../base/../base/../base/func.h:607:58: error: ‘kIdHost’ no es un miembro de ‘asmjit::CallConv’
ASMJIT_INLINE FuncSignatureX(uint32_t ccId = CallConv::kIdHost) noexcept {

[/code]

Thank you for reading :-)

Re: gzdoom 3.7.x won't compile under the ppc64le arch

Posted: Sun Feb 03, 2019 3:43 pm
by dpJudas
My answer to this one is the same as the other exotic platforms with similar errors:

I don't own the hardware or software to test this. I am also not interested in acquiring it. It requires active involvement from developers using those platforms to fix these issues.

For anyone interested in creating a PR, two things needs to be done:

1) Improve CMakeLists.txt to not build/include asmjit or the jit_*.cpp files on architectures that aren't compatible.
2) Add empty stubs or some #ifdefs that makes it not call the JIT compiler code (essentially the linker errors that appear when the jit files aren't included). There is already code for x86 redirecting execution to the VM, so relatively speaking not much code needs to be added.

Re: gzdoom 3.7.x won't compile under the ppc64le arch

Posted: Mon Feb 04, 2019 2:44 am
by _mental_
I cannot test this as well. Although, I will try to exclude JIT related code from all targets except Intel x64.

Re: gzdoom 3.7.x won't compile under the ppc64le arch

Posted: Mon Feb 04, 2019 4:27 am
by Rachael
_mental_ wrote:Although, I will try to exclude JIT related code from all targets except Intel x64.
This is probably the best way to handle it to be honest. Just do a blanket exclusion, since the system only supports one architecture anyway, and that's unlikely to change in the immediate future.

Re: gzdoom 3.7.x won't compile under the ppc64le arch

Posted: Mon Feb 04, 2019 8:21 am
by _mental_
Should be fixed in 8892cb6.

Re: gzdoom 3.7.x won't compile under the ppc64le arch

Posted: Mon Feb 04, 2019 12:43 pm
by draena
_mental_ wrote:Should be fixed in 8892cb6.
I was able to compile and test the engine in the ppc64le hardware with those changes and it works perfectly. Yeah, the issue has been fixed :-)

Thank you, everyone!