Building commercial plugin against Rack 2.2.1 source

Just out of curiosity, are any devs with commercial modules that use the Rack DRM able to build them against the Rack 2.2.1 source (not the SDKs)?

Just want to make sure it’s not just me, before sending this off to VCV…

g++ -DSM_PRO -std=c++11 -Wsuggest-override  -fPIC -I../../include -I../../dep/include -MMD -MP -g -O3 -funsafe-math-optimizations -fno-omit-frame-pointer -Wall -Wextra -Wno-unused-parameter -DARCH_X64 -march=nehalem -DARCH_WIN -D_USE_MATH_DEFINES -municode  -c -o build/src/ShapeMaster/Channel.cpp.o src/ShapeMaster/Channel.cpp
In file included from ../../dep/include/simde/x86/sse3.h:30,
                 from ../../dep/include/simde/x86/ssse3.h:30,
                 from ../../dep/include/simde/x86/sse4.1.h:31,
                 from ../../dep/include/simde/x86/sse4.2.h:31,
                 from ../../include/simd/common.hpp:4,
                 from ../../include/simd/Vector.hpp:3,
                 from ../../include/simd/functions.hpp:2,
                 from ../../include/dsp/common.hpp:4,
                 from ../../include/rack.hpp:110,
                 from src/ShapeMaster/../MindMeldModular.hpp:10,
                 from src/ShapeMaster/Channel.hpp:11,
                 from src/ShapeMaster/Channel.cpp:9:
../../dep/include/simde/x86/sse2.h:3653:30: error: redefinition of '__m128i simde_mm_loadu_epi64(const void*)'
 3653 |   #define _mm_loadu_epi64(a) simde_mm_loadu_epi64(a)
      |                              ^~~~~~~~~~~~~~~~~~~~
../../dep/include/simde/x86/sse2.h:3633:1: note: 'simde__m128i simde_mm_loadu_epi64(const void*)' previously defined here
 3633 | simde_mm_loadu_epi64(void const * mem_addr) {
      | ^~~~~~~~~~~~~~~~~~~~
../../dep/include/simde/x86/sse2.h:3628:30: error: redefinition of '__m128i simde_mm_loadu_epi32(const void*)'
 3628 |   #define _mm_loadu_epi32(a) simde_mm_loadu_epi32(a)
      |                              ^~~~~~~~~~~~~~~~~~~~
../../dep/include/simde/x86/sse2.h:3608:1: note: 'simde__m128i simde_mm_loadu_epi32(const void*)' previously defined here
 3608 | simde_mm_loadu_epi32(void const * mem_addr) {
      | ^~~~~~~~~~~~~~~~~~~~
../../dep/include/simde/x86/sse2.h:3603:30: error: redefinition of '__m128i simde_mm_loadu_epi16(const void*)'
 3603 |   #define _mm_loadu_epi16(a) simde_mm_loadu_epi16(a)
      |                              ^~~~~~~~~~~~~~~~~~~~
../../dep/include/simde/x86/sse2.h:3583:1: note: 'simde__m128i simde_mm_loadu_epi16(const void*)' previously defined here
 3583 | simde_mm_loadu_epi16(void const * mem_addr) {
      | ^~~~~~~~~~~~~~~~~~~~
../../dep/include/simde/x86/sse2.h:3578:29: error: redefinition of '__m128i simde_mm_loadu_epi8(const void*)'
 3578 |   #define _mm_loadu_epi8(a) simde_mm_loadu_epi8(a)
      |                             ^~~~~~~~~~~~~~~~~~~
../../dep/include/simde/x86/sse2.h:3558:1: note: 'simde__m128i simde_mm_loadu_epi8(const void*)' previously defined here
 3558 | simde_mm_loadu_epi8(void const * mem_addr) {
      | ^~~~~~~~~~~~~~~~~~~
make: *** [../../ build/src/ShapeMaster/Channel.cpp.o] Error 1

I haven’t tried the thing you ask but this error looks a lot like this one we ran into with surge xt

Which was caused by a fragile ordering between immintrin and rack.hpp

I fixed it by including immintrin before rack but you could also fix it by not including immintrin

Your problem may be different so this could be a false lead and as you know the correct path is to ask support (and I shared my perhaps same perhaps different problem with support)

1 Like

Thanks Paul. I think it’s a different problem, since I’m not including any intrinsics explicitely, and I’m doing like Andrew mentions in that issue you referenced (including rack.hpp and letting it handle all that). But there does seem to be a certain similarity with your issue, so thanks for chiming in.

I will send my issue to support, I was just surprised that no one else had the problem, so I was wondering if I was doing something incorrect, but it seems not.

1 Like