I am getting the following compile error attempting to build zig on macOS;
error: undefined symbol: __Z18getPollyPluginInfov
I’m trying to build revision a8226cd536f50fd14c059812388b87bf99324d51 using 0.16.0-dev.2962+08416b44f. With AI assistance, I was able to come to the following workaround which I don’t understand but did work;
diff --git a/build.zig b/build.zig
index 5cb50620df..99a5ba5fcd 100644
--- a/build.zig
+++ b/build.zig
@@ -1439,6 +1439,8 @@ const llvm_libs = [_][]const u8{
"LLVMTargetParser",
"LLVMSupport",
"LLVMDemangle",
+ "Polly",
+ "PollyISL",
};
const llvm_libs_m68k = [_][]const u8{
"LLVMM68kDisassembler",
Here's the full compile error
install
└─ install zig
└─ compile exe zig ReleaseFast native 1 errors
error: undefined symbol: __Z18getPollyPluginInfov
note: referenced by /opt/homebrew/opt/llvm@21/lib/libclangCodeGen.a(BackendUtil.cpp.o):__ZN12_GLOBAL__N_118EmitAssemblyHelper23RunOptimizationPipelineEN5clang13BackendActionERNSt3__110unique_ptrIN4llvm17raw_pwrite_streamENS3_14default_deleteIS6_EEEERNS4_INS5_14ToolOutputFileENS7_ISB_EEEEPNS1_15BackendConsumerE
note: referenced by /opt/homebrew/opt/llvm@21/lib/libLLVMLTO.a(LTOBackend.cpp.o):__ZN4llvm3lto3optERKNS0_6ConfigEPNS_13TargetMachineEjRNS_6ModuleEbPNS_18ModuleSummaryIndexEPKS8_RKNSt3__16vectorIhNSC_9allocatorIhEEEE
error: 1 compilation errors
failed command: /Users/johndevries/.local/quickzilver/zig build-exe --stack 48234496 -cflags -std=c++17 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fno-exceptions -fno-rtti -fno-stack-protector -fvisibility-inlines-hidden -Wno-type-limits -Wno-missing-braces -Wno-comment -DLLVM_BUILD_STATIC -DCLANG_BUILD_STATIC -DNDEBUG=1 -- /Users/johndevries/repos/zig/src/zig_llvm.cpp /Users/johndevries/repos/zig/src/zig_llvm-ar.cpp /Users/johndevries/repos/zig/src/zig_clang_driver.cpp /Users/johndevries/repos/zig/src/zig_clang_cc1_main.cpp /Users/johndevries/repos/zig/src/zig_clang_cc1as_main.cpp -lclangFrontendTool -lclangCodeGen -lclangFrontend -lclangDriver -lclangSerialization -lclangSema -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangAnalysis -lclangASTMatchers -lclangAST -lclangParse -lclangAPINotes -lclangBasic -lclangEdit -lclangLex -lclangRewriteFrontend -lclangRewrite -lclangCrossTU -lclangIndex -lclangToolingCore -lclangExtractAPI -lclangSupport -lclangInstallAPI -llldMinGW -llldELF -llldCOFF -llldWasm -llldMachO -llldCommon -lLLVMWindowsManifest -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMTelemetry -lLLVMTextAPIBinaryReader -lLLVMCoverage -lLLVMLineEditor -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyAsmParser -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyUtils -lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMVEDisassembler -lLLVMVEAsmParser -lLLVMVECodeGen -lLLVMVEDesc -lLLVMVEInfo -lLLVMSystemZDisassembler -lLLVMSystemZAsmParser -lLLVMSystemZCodeGen -lLLVMSystemZDesc -lLLVMSystemZInfo -lLLVMSPIRVCodeGen -lLLVMSPIRVDesc -lLLVMSPIRVInfo -lLLVMSPIRVAnalysis -lLLVMSparcDisassembler -lLLVMSparcAsmParser -lLLVMSparcCodeGen -lLLVMSparcDesc -lLLVMSparcInfo -lLLVMRISCVTargetMCA -lLLVMRISCVDisassembler -lLLVMRISCVAsmParser -lLLVMRISCVCodeGen -lLLVMRISCVDesc -lLLVMRISCVInfo -lLLVMPowerPCDisassembler -lLLVMPowerPCAsmParser -lLLVMPowerPCCodeGen -lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMMSP430Disassembler -lLLVMMSP430AsmParser -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMipsDisassembler -lLLVMMipsAsmParser -lLLVMMipsCodeGen -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMLoongArchDisassembler -lLLVMLoongArchAsmParser -lLLVMLoongArchCodeGen -lLLVMLoongArchDesc -lLLVMLoongArchInfo -lLLVMLanaiDisassembler -lLLVMLanaiCodeGen -lLLVMLanaiAsmParser -lLLVMLanaiDesc -lLLVMLanaiInfo -lLLVMHexagonDisassembler -lLLVMHexagonCodeGen -lLLVMHexagonAsmParser -lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMBPFDisassembler -lLLVMBPFAsmParser -lLLVMBPFCodeGen -lLLVMBPFDesc -lLLVMBPFInfo -lLLVMAVRDisassembler -lLLVMAVRAsmParser -lLLVMAVRCodeGen -lLLVMAVRDesc -lLLVMAVRInfo -lLLVMARMDisassembler -lLLVMARMAsmParser -lLLVMARMCodeGen -lLLVMARMDesc -lLLVMARMUtils -lLLVMARMInfo -lLLVMAMDGPUTargetMCA -lLLVMAMDGPUDisassembler -lLLVMAMDGPUAsmParser -lLLVMAMDGPUCodeGen -lLLVMAMDGPUDesc -lLLVMAMDGPUUtils -lLLVMAMDGPUInfo -lLLVMAArch64Disassembler -lLLVMAArch64AsmParser -lLLVMAArch64CodeGen -lLLVMAArch64Desc -lLLVMAArch64Utils -lLLVMAArch64Info -lLLVMOrcDebugging -lLLVMOrcJIT -lLLVMWindowsDriver -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMDWP -lLLVMDWARFCFIChecker -lLLVMDebugInfoLogicalView -lLLVMOption -lLLVMObjCopy -lLLVMMCA -lLLVMMCDisassembler -lLLVMLTO -lLLVMFrontendOpenACC -lLLVMFrontendHLSL -lLLVMFrontendDriver -lLLVMExtensions -lLLVMPasses -lLLVMHipStdPar -lLLVMCoroutines -lLLVMCFGuard -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMSandboxIR -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendDirective -lLLVMFrontendAtomic -lLLVMFrontendOffloading -lLLVMObjectYAML -lLLVMDWARFLinkerParallel -lLLVMDWARFLinkerClassic -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMCGData -lLLVMIRPrinter -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoCodeView -lLLVMDebugInfoGSYM -lLLVMDebugInfoDWARF -lLLVMDebugInfoDWARFLowLevel -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMBitReader -lLLVMFuzzerCLI -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle -lz -lzstd -fno-sanitize-thread -OReleaseFast --dep aro --dep build_options -Mroot=/Users/johndevries/repos/zig/src/main.zig -Maro=/Users/johndevries/repos/zig/lib/compiler/aro/aro.zig -Mbuild_options=.zig-cache/c/5632ed82bdd15629ed9c12326844d169/options.zig -lc++ -lc --cache-dir .zig-cache --global-cache-dir /Users/johndevries/.cache/zig --name zig -L /opt/homebrew/opt/llvm@21/lib -I /opt/homebrew/opt/llvm@21/include --zig-lib-dir lib/ --listen=-
Build Summary: 296/299 steps succeeded (1 failed)
install transitive failure
└─ install zig transitive failure
└─ compile exe zig ReleaseFast native 1 errors
error: the following build command failed with exit code 1:
.zig-cache/o/e490fb2b425494eb2d72dc064bcb8d19/build /Users/johndevries/.local/quickzilver/zig lib /Users/johndevries/repos/zig .zig-cache /Users/johndevries/.cache/zig --seed 0x6252d8d8 -Z1cd4edc71208930a -p stage3 --search-prefix /opt/homebrew/opt/llvm@21/ -Dstatic-llvm -Doptimize=ReleaseFast --maxrss 100000000000
I get the gist of what’s going on here. There’s a reference to a symbol from LLVM Poly, but it’s not included in build.zig llvm_libs. However, I have no clue how to figure out whether this is an issue with my environment or upstream.