$secondaryArchSuffix is an empty value on most architectures, it’s used on x86_gcc2 (where its value is x86 …or _x86, I’m not sure) to tell the compiling process to use the modern gcc version of something instead of the x86_gcc2 one (or to produce an _x86 package)
When you make a recipe that works on x86 (which normally means it doesn’t work in x86_gcc2) usually all libraries want this suffix, but when it comes to build pre-requires it gets more confusing, like, gcc wants it but clang doesn’t need it. For pre-requires if I’m unsure I do a text search in my haikuports tree to see how it’s used in other recipes.
$secondaryArchSuffix is for a hybrid system on which cross(?)-compiling for x86_gcc2(32-bit, for compatibility with BeOS?) and x86 (32-bit GCC4?) is enabled, to distinguish what a binary/library is for.
The “h” stands for hybrid yes, essential, 32bit primary architecture is “x88_gcc2” meaning it will use the gcc2 compiler, for secondary architecture we use “x86” and use gcc13, for this in recipes we use:
ARCHITECTURES=”all” (meaning this can also be build for primary architecture (gcc2))
ARCHITECTURES=”all !x86_gcc2” (meaning this can be build for 64bit, riscv64 … but not for gcc2)
SECONDARY_ARCHITECTURES=”x86” (meaning this can be build for secondary architecture with gcc13 (on 32bit))
If you want to check something out in Terminal for gcc13 you can switch compiler with “setarch x86” also. (type “exit” to get back to gcc2).
EDIT: if you use secondary architecture on 32bit then you need to add the $secondaryArchSuffix to the right places.