Thanks with this
patch as instructed, spring-dedicated (only)
compileswhich was my objective indeed. Updated the PKGBUILD in the OP with the CMAKE
flags needed. Specifically,
CXX/C FLAG was necessary or the linker failed.
Now I can test it out. If there's interest in providing official ARM builds for spring-dedicated I'd like to help.
Seems (hard float) armv6 (rpi v1) armv7 (rpi v2, odroid c1/xu) and armv8 x64 (rpi v3, odroid c2) are most common.
For completion's sake, an engine-headless/legacy build fails with this log:
Code: Select all
[ 90%] Building CXX object rts/builds/headless/CMakeFiles/engine-headless.dir/__/__/System/Platform/Clipboard.cpp.o
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp: In function 'void MatrixMatrixMultiplySSE(const CMatrix44f&, const CMatrix44f&, CMatrix44f*)':
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:315:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m1c1 = _mm_loadu_ps(&m1.md[0][0]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:316:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m1c2 = _mm_loadu_ps(&m1.md[1][0]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:317:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m1c3 = _mm_loadu_ps(&m1.md[2][0]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:318:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m1c4 = _mm_loadu_ps(&m1.md[3][0]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:325:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i0 = _mm_load1_ps(&m2.m[0]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:326:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i1 = _mm_load1_ps(&m2.m[1]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:327:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i2 = _mm_load1_ps(&m2.m[2]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:329:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i4 = _mm_load1_ps(&m2.m[4]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:330:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i5 = _mm_load1_ps(&m2.m[5]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:331:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i6 = _mm_load1_ps(&m2.m[6]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:333:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i8 = _mm_load1_ps(&m2.m[8]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:334:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i9 = _mm_load1_ps(&m2.m[9]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:335:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i10 = _mm_load1_ps(&m2.m[10]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:336:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i11 = _mm_load1_ps(&m2.m[11]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:337:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i12 = _mm_load1_ps(&m2.m[12]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:338:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i13 = _mm_load1_ps(&m2.m[13]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:339:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i14 = _mm_load1_ps(&m2.m[14]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:340:8: error: '__m128' does not name a type; did you mean '__y1l'?
const __m128 m2i15 = _mm_load1_ps(&m2.m[15]);
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:342:2: error: '__m128' was not declared in this scope
__m128 moutc1, moutc2, moutc3, moutc4;
^~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:342:2: note: suggested alternative: '__y1l'
__m128 moutc1, moutc2, moutc3, moutc4;
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:343:2: error: 'moutc1' was not declared in this scope
moutc1 = _mm_mul_ps(m1c1, m2i0);
^~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:343:2: note: suggested alternative: 'mout'
moutc1 = _mm_mul_ps(m1c1, m2i0);
^~~~~~
mout
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:343:41: error: 'm1c1' was not declared in this scope
moutc1 = _mm_mul_ps(m1c1, m2i0);
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:343:41: note: suggested alternative: 'm1'
moutc1 = _mm_mul_ps(m1c1, m2i0);
^~~~
m1
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:343:47: error: 'm2i0' was not declared in this scope
moutc1 = _mm_mul_ps(m1c1, m2i0);
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:343:47: note: suggested alternative: 'm2'
moutc1 = _mm_mul_ps(m1c1, m2i0);
^~~~
m2
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:343:30: error: '_mm_mul_ps' was not declared in this scope
moutc1 = _mm_mul_ps(m1c1, m2i0);
^~~~~~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:343:30: note: suggested alternative: '__muldc3'
moutc1 = _mm_mul_ps(m1c1, m2i0);
^~~~~~~~~~
__muldc3
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:344:2: error: 'moutc2' was not declared in this scope
moutc2 = _mm_mul_ps(m1c1, m2i4);
^~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:344:2: note: suggested alternative: 'mout'
moutc2 = _mm_mul_ps(m1c1, m2i4);
^~~~~~
mout
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:344:47: error: 'm2i4' was not declared in this scope
moutc2 = _mm_mul_ps(m1c1, m2i4);
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:344:47: note: suggested alternative: 'm2'
moutc2 = _mm_mul_ps(m1c1, m2i4);
^~~~
m2
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:345:2: error: 'moutc3' was not declared in this scope
moutc3 = _mm_mul_ps(m1c1, m2i8);
^~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:345:2: note: suggested alternative: 'mout'
moutc3 = _mm_mul_ps(m1c1, m2i8);
^~~~~~
mout
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:345:47: error: 'm2i8' was not declared in this scope
moutc3 = _mm_mul_ps(m1c1, m2i8);
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:345:47: note: suggested alternative: 'm2'
moutc3 = _mm_mul_ps(m1c1, m2i8);
^~~~
m2
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:346:2: error: 'moutc4' was not declared in this scope
moutc4 = _mm_mul_ps(m1c1, m2i12);
^~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:346:2: note: suggested alternative: 'mout'
moutc4 = _mm_mul_ps(m1c1, m2i12);
^~~~~~
mout
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:346:47: error: 'm2i12' was not declared in this scope
moutc4 = _mm_mul_ps(m1c1, m2i12);
^~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:348:41: error: 'm1c2' was not declared in this scope
moutc1 = _mm_add_ps(moutc1, _mm_mul_ps(m1c2, m2i1));
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:348:41: note: suggested alternative: 'm1'
moutc1 = _mm_add_ps(moutc1, _mm_mul_ps(m1c2, m2i1));
^~~~
m1
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:348:47: error: 'm2i1' was not declared in this scope
moutc1 = _mm_add_ps(moutc1, _mm_mul_ps(m1c2, m2i1));
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:348:47: note: suggested alternative: 'm1'
moutc1 = _mm_add_ps(moutc1, _mm_mul_ps(m1c2, m2i1));
^~~~
m1
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:348:11: error: '_mm_add_ps' was not declared in this scope
moutc1 = _mm_add_ps(moutc1, _mm_mul_ps(m1c2, m2i1));
^~~~~~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:349:47: error: 'm2i5' was not declared in this scope
moutc2 = _mm_add_ps(moutc2, _mm_mul_ps(m1c2, m2i5));
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:349:47: note: suggested alternative: 'm2'
moutc2 = _mm_add_ps(moutc2, _mm_mul_ps(m1c2, m2i5));
^~~~
m2
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:350:47: error: 'm2i9' was not declared in this scope
moutc3 = _mm_add_ps(moutc3, _mm_mul_ps(m1c2, m2i9));
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:350:47: note: suggested alternative: 'm2'
moutc3 = _mm_add_ps(moutc3, _mm_mul_ps(m1c2, m2i9));
^~~~
m2
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:351:47: error: 'm2i13' was not declared in this scope
moutc4 = _mm_add_ps(moutc4, _mm_mul_ps(m1c2, m2i13));
^~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:353:41: error: 'm1c3' was not declared in this scope
moutc1 = _mm_add_ps(moutc1, _mm_mul_ps(m1c3, m2i2));
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:353:41: note: suggested alternative: 'm1'
moutc1 = _mm_add_ps(moutc1, _mm_mul_ps(m1c3, m2i2));
^~~~
m1
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:353:47: error: 'm2i2' was not declared in this scope
moutc1 = _mm_add_ps(moutc1, _mm_mul_ps(m1c3, m2i2));
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:353:47: note: suggested alternative: 'm2'
moutc1 = _mm_add_ps(moutc1, _mm_mul_ps(m1c3, m2i2));
^~~~
m2
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:354:47: error: 'm2i6' was not declared in this scope
moutc2 = _mm_add_ps(moutc2, _mm_mul_ps(m1c3, m2i6));
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:354:47: note: suggested alternative: 'm2'
moutc2 = _mm_add_ps(moutc2, _mm_mul_ps(m1c3, m2i6));
^~~~
m2
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:355:47: error: 'm2i10' was not declared in this scope
moutc3 = _mm_add_ps(moutc3, _mm_mul_ps(m1c3, m2i10));
^~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:356:47: error: 'm2i14' was not declared in this scope
moutc4 = _mm_add_ps(moutc4, _mm_mul_ps(m1c3, m2i14));
^~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:360:41: error: 'm1c4' was not declared in this scope
moutc3 = _mm_add_ps(moutc3, _mm_mul_ps(m1c4, m2i11));
^~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:360:41: note: suggested alternative: 'm1'
moutc3 = _mm_add_ps(moutc3, _mm_mul_ps(m1c4, m2i11));
^~~~
m1
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:360:47: error: 'm2i11' was not declared in this scope
moutc3 = _mm_add_ps(moutc3, _mm_mul_ps(m1c4, m2i11));
^~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:361:47: error: 'm2i15' was not declared in this scope
moutc4 = _mm_add_ps(moutc4, _mm_mul_ps(m1c4, m2i15));
^~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:363:2: error: '_mm_storeu_ps' was not declared in this scope
_mm_storeu_ps(&mout->md[0][0], moutc1);
^~~~~~~~~~~~~
[ 90%] Building CXX object rts/builds/headless/CMakeFiles/engine-headless.dir/__/__/System/Platform/errorhandler.cpp.o
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp: In member function 'float4 CMatrix44f::operator*(float4) const':
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:402:2: error: '__m128' was not declared in this scope
__m128 out;
^~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:402:2: note: suggested alternative: '__y1l'
__m128 out;
^~~~~~
__y1l
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:403:2: error: 'out' was not declared in this scope
out = _mm_mul_ps(_mm_loadu_ps(&md[0][0]), _mm_set1_ps(v.x)) ; // or _mm_load1_ps(&v.x)
^~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:403:2: note: suggested alternative: 'putw'
out = _mm_mul_ps(_mm_loadu_ps(&md[0][0]), _mm_set1_ps(v.x)) ; // or _mm_load1_ps(&v.x)
^~~
putw
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:403:35: error: '_mm_loadu_ps' was not declared in this scope
out = _mm_mul_ps(_mm_loadu_ps(&md[0][0]), _mm_set1_ps(v.x)) ; // or _mm_load1_ps(&v.x)
^~~~~~~~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:403:60: error: '_mm_set1_ps' was not declared in this scope
out = _mm_mul_ps(_mm_loadu_ps(&md[0][0]), _mm_set1_ps(v.x)) ; // or _mm_load1_ps(&v.x)
^~~~~~~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:403:24: error: '_mm_mul_ps' was not declared in this scope
out = _mm_mul_ps(_mm_loadu_ps(&md[0][0]), _mm_set1_ps(v.x)) ; // or _mm_load1_ps(&v.x)
^~~~~~~~~~
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:403:24: note: suggested alternative: '__muldc3'
out = _mm_mul_ps(_mm_loadu_ps(&md[0][0]), _mm_set1_ps(v.x)) ; // or _mm_load1_ps(&v.x)
^~~~~~~~~~
__muldc3
/home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp:404:8: error: '_mm_add_ps' was not declared in this scope
out = _mm_add_ps(out, _mm_mul_ps(_mm_loadu_ps(&md[1][0]), _mm_set1_ps(v.y))); // or _mm_load1_ps(&v.y)
^~~~~~~~~~
[ 90%] Building CXX object rts/builds/headless/CMakeFiles/engine-headless.dir/__/__/System/Platform/Misc.cpp.o
distcc[15326] ERROR: compile /home/alarm/.cache/pacaur/spring/src/spring/rts/System/Matrix44f.cpp on localhost failed
make[2]: *** [rts/builds/headless/CMakeFiles/engine-headless.dir/build.make:7071: rts/builds/headless/CMakeFiles/engine-headless.dir/__/__/System/Matrix44f.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:2767: rts/builds/headless/CMakeFiles/engine-headless.dir/all] Error 2
make: *** [Makefile:141: all] Error 2