libplacebo linking issue with glslang
OS: Slackware64-current
vulkan-sdk: 1.1.114.0
glslang: 7.12.3345
When trying to build libplacebo
without shaderc
by either not having it installed or using -Dshaderc=disabled
it will result in a build failure during linking.
Note that this is using the glslang git master and that using a stable version is not going to work because other parts of the vulkan-sdk follow the glslang git master. Please see this issue for reference.
https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/1082
[35/35] Linking target src/libplacebo.so.18.
/usr/bin/ld: /usr/bin/../lib64/gcc/x86_64-slackware-linux/9.1.0/../../../../lib64/libSPIRV.a(SpvTools.cpp.o): in function `glslang::SpirvToolsDisassemble(std::ostream&, std::vector<unsi
gned int, std::allocator<unsigned int> > const&)':
SpvTools.cpp:(.text+0x1c5): undefined reference to `spvContextCreate'
/usr/bin/ld: SpvTools.cpp:(.text+0x1f3): undefined reference to `spvBinaryToText'
/usr/bin/ld: SpvTools.cpp:(.text+0x201): undefined reference to `spvDiagnosticPrint'
/usr/bin/ld: SpvTools.cpp:(.text+0x249): undefined reference to `spvDiagnosticDestroy'
/usr/bin/ld: SpvTools.cpp:(.text+0x251): undefined reference to `spvContextDestroy'
/usr/bin/ld: /usr/bin/../lib64/gcc/x86_64-slackware-linux/9.1.0/../../../../lib64/libSPIRV.a(SpvTools.cpp.o): in function `glslang::SpirvToolsValidate(glslang::TIntermediate const&, std
::vector<unsigned int, std::allocator<unsigned int> >&, spv::SpvBuildLogger*, bool)':
SpvTools.cpp:(.text+0x289): undefined reference to `spvContextCreate'
/usr/bin/ld: SpvTools.cpp:(.text+0x2b3): undefined reference to `spvValidatorOptionsCreate'
/usr/bin/ld: SpvTools.cpp:(.text+0x2c5): undefined reference to `spvValidatorOptionsSetRelaxBlockLayout'
/usr/bin/ld: SpvTools.cpp:(.text+0x2d0): undefined reference to `spvValidatorOptionsSetBeforeHlslLegalization'
/usr/bin/ld: SpvTools.cpp:(.text+0x2e5): undefined reference to `spvValidateWithOptions'
/usr/bin/ld: SpvTools.cpp:(.text+0x502): undefined reference to `spvValidatorOptionsDestroy'
/usr/bin/ld: SpvTools.cpp:(.text+0x50c): undefined reference to `spvDiagnosticDestroy'
/usr/bin/ld: SpvTools.cpp:(.text+0x514): undefined reference to `spvContextDestroy'
/usr/bin/ld: /usr/bin/../lib64/gcc/x86_64-slackware-linux/9.1.0/../../../../lib64/libSPIRV.a(SpvTools.cpp.o): in function `glslang::SpirvToolsLegalize(glslang::TIntermediate const&, std
::vector<unsigned int, std::allocator<unsigned int> >&, spv::SpvBuildLogger*, glslang::SpvOptions const*)':
SpvTools.cpp:(.text+0x61d): undefined reference to `spvtools::Optimizer::Optimizer(spv_target_env)'
/usr/bin/ld: SpvTools.cpp:(.text+0x642): undefined reference to `spvtools::Optimizer::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, cha
r const*)>)'
/usr/bin/ld: SpvTools.cpp:(.text+0x669): undefined reference to `spvtools::CreatePropagateLineInfoPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x676): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x67e): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x686): undefined reference to `spvtools::CreateDeadBranchElimPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x693): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x69b): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x6a3): undefined reference to `spvtools::CreateMergeReturnPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x6b0): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x6b8): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x6c0): undefined reference to `spvtools::CreateInlineExhaustivePass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x6cd): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x6d5): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x6dd): undefined reference to `spvtools::CreateEliminateDeadFunctionsPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x6ea): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x6f2): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x6ff): undefined reference to `spvtools::CreateScalarReplacementPass(unsigned int)'
/usr/bin/ld: SpvTools.cpp:(.text+0x70c): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x714): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x71c): undefined reference to `spvtools::CreateLocalAccessChainConvertPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x729): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x731): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x739): undefined reference to `spvtools::CreateLocalSingleBlockLoadStoreElimPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x746): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x74e): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x756): undefined reference to `spvtools::CreateLocalSingleStoreElimPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x763): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x76b): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x773): undefined reference to `spvtools::CreateSimplificationPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x780): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x788): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x790): undefined reference to `spvtools::CreateAggressiveDCEPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x79d): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x7a5): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x7ad): undefined reference to `spvtools::CreateVectorDCEPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x7ba): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x7c2): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x7ca): undefined reference to `spvtools::CreateDeadInsertElimPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x7d7): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x7df): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x7e7): undefined reference to `spvtools::CreateAggressiveDCEPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x7f4): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x7fc): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x804): undefined reference to `spvtools::CreateDeadBranchElimPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x811): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x819): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x821): undefined reference to `spvtools::CreateBlockMergePass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x82e): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x836): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x83e): undefined reference to `spvtools::CreateLocalMultiStoreElimPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x84b): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x853): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x85b): undefined reference to `spvtools::CreateIfConversionPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x868): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x870): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x878): undefined reference to `spvtools::CreateSimplificationPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x885): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x88d): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x895): undefinesamu: subcommand failed
d reference to `spvtools::CreateAggressiveDCEPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x8a2): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x8aa): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x8b2): undefined reference to `spvtools::CreateVectorDCEPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x8bf): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x8c7): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x8cf): undefined reference to `spvtools::CreateDeadInsertElimPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x8dc): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x8e4): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x8f3): undefined reference to `spvtools::CreateRedundancyEliminationPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x900): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x908): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x910): undefined reference to `spvtools::CreateAggressiveDCEPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x91d): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x925): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x92d): undefined reference to `spvtools::CreateCFGCleanupPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x93a): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x942): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x950): undefined reference to `spvtools::CreateRedundantLineInfoElimPass()'
/usr/bin/ld: SpvTools.cpp:(.text+0x95d): undefined reference to `spvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)'
/usr/bin/ld: SpvTools.cpp:(.text+0x965): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0x96a): undefined reference to `spvOptimizerOptionsCreate'
/usr/bin/ld: SpvTools.cpp:(.text+0x977): undefined reference to `spvOptimizerOptionsSetRunValidator'
/usr/bin/ld: SpvTools.cpp:(.text+0x995): undefined reference to `spvtools::Optimizer::Run(unsigned int const*, unsigned long, std::vector<unsigned int, std::allocator<unsigned int> >*, spv_optimizer_options_t*) const'
/usr/bin/ld: SpvTools.cpp:(.text+0x99d): undefined reference to `spvOptimizerOptionsDestroy'
/usr/bin/ld: SpvTools.cpp:(.text+0x9a7): undefined reference to `spvtools::Optimizer::~Optimizer()'
/usr/bin/ld: SpvTools.cpp:(.text+0xa3b): undefined reference to `spvtools::Optimizer::PassToken::~PassToken()'
/usr/bin/ld: SpvTools.cpp:(.text+0xa45): undefined reference to `spvtools::Optimizer::~Optimizer()'
/usr/bin/ld: SpvTools.cpp:(.text+0xa5a): undefined reference to `spvtools::Optimizer::~Optimizer()'
/usr/bin/ld: SpvTools.cpp:(.text+0xa93): undefined reference to `spvOptimizerOptionsDestroy'
clang-8: error: linker command failed with exit code 1 (use -v to see invocation)
Full build log: libplacebo.log