libmetal is compiled with absolute references for things like variables and function calls. PC relative and PIE application builds do not use absolute references, so when libmetal code is linked into such a binary, you end up with a mixture of relative and absolute references. This isnt going to work ...
There probably needs to be three different builds of libmetal for absolute, PC relative and PIE builds.