[llvm-dev] How to link against all available targets - problems with NVPTX?

Siddharth Bhat via llvm-dev llvm-dev at lists.llvm.org
Mon Mar 19 03:55:37 PDT 2018


As the question asks, I'm having some trouble using initializeAllTargets().

I have a CMakeLists that uses:

llvm_map_components_to_libnames(LLVM_LIBS ...
    AllTargetsAsmParsers
    AllTargetsAsmPrinters
    AllTargetsDescs
    AllTargetsInfos
    ...)

However, even with these,  when I try to compile my program, I get linker
errors:

CMakeFiles/sxhc.dir/src/main.cpp.o: In function
`llvm::InitializeAllTargets()':
/home/bollu/.local/include/llvm/Config/Targets.def:27: undefined reference
to `LLVMInitializeNVPTXTarget'
CMakeFiles/sxhc.dir/src/main.cpp.o: In function
`llvm::InitializeAllAsmPrinters()':
/home/bollu/.local/include/llvm/Config/AsmPrinters.def:28: undefined
reference to `LLVMInitializeNVPTXAsmPrinter'
collect2: error: ld returned 1 exit status
CMakeFiles/sxhc.dir/build.make:285: recipe for target 'sxhc' failed
make[2]: *** [sxhc] Error 1
CMakeFiles/Makefile2:131: recipe for target 'CMakeFiles/sxhc.dir/all' failed
make[1]: *** [CMakeFiles/sxhc.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2


That is, NVPTX is not initialized as a target properly. I'm somewhat
puzzled by this, because I would have assumed that the  NVPTXAsmPrinter
would have been linked by  AllTargetsAsmPrinters.


The hack I have right now is to manually add NVPTXCodeGen to the list of
llvm_map_components_to_libnames.

Clearly, I'm doing something wrong, could someone point me to what I might
be screwing up? In short, *what is the correct way to setup targets*? Is
what I'm asking for (automatically link against all targets picked up by
initializeAllTargets() an anti-pattern? if so, why?)


Thanks,
~Siddharth
-- 
Sending this from my phone, please excuse any typos!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180319/8209ab64/attachment.html>


More information about the llvm-dev mailing list