<div dir="ltr">Thanks, that was it! Well-spotted!<div><br></div><div>--Rob</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, Oct 15, 2017 at 6:17 PM Justin Bogner <<a href="mailto:mail@justinbogner.com">mail@justinbogner.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Robert Baruch via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> writes:<br>
> Hi all,<br>
><br>
> *TL;DR:* I have a target TMS9900CodeGen but cmake is looking for LLVMTMS9900<br>
> or LLVMTMS9900CodeGen which I don't have, and cmake dies. But the MSP430 target<br>
> doesn't have that either, and cmake is happy with it. What am I missing?<br>
><br>
> *The premise:*<br>
><br>
> I may be making a huge mistake, but I'm trying to develop an LLVM backend.<br>
> I'm writing up some notes while I do so, and I hope to update the<br>
> documentation. However, I ran into a bit of a problem running cmake. Note<br>
> that I built the trunk release just fine, right now I'm modifying it.<br>
><br>
> *The setup:*<br>
><br>
> My target is called TMS9900 because I'm a masochist, and I'm just trying to<br>
> make a bare do-nothing skeleton to start with. I have this:<br>
><br>
> lib/Target/TMS9900<br>
>   - CMakeLists.txt<br>
>   - LLVMBuild.txt<br>
>   - TMS9900TargetMachine.cpp<br>
>   - TMS9900TargetMachine.h<br>
>   - TMS9900.td<br>
><br>
> TMS9900TargetMachine is the barest class I could make. It derives from<br>
> LLVMTargetMachine, and passes everything through (although it defines the<br>
> DataLayout).<br>
><br>
> CMakeLists.txt is also pretty small:<br>
><br>
> set(LLVM_TARGET_DEFINITIONS TMS9900.td)<br>
><br>
> add_llvm_library(TMS9900CodeGen<br>
>   TMS9900TargetMachine.cpp<br>
>   )<br>
<br>
This should be add_llvm_target, rather than add_llvm_library. This does<br>
some extra work, including calling the target LLVMXYZ rather than just<br>
XYZ.<br>
<br>
> LLVMBuild.txt is as minimal as I could guess at:<br>
><br>
> [common]<br>
> subdirectories =<br>
><br>
> [component_0]<br>
> type = TargetGroup<br>
> name = TMS9900<br>
> parent = Target<br>
><br>
> [component_1]<br>
> type = Library<br>
> name = TMS9900CodeGen<br>
> parent = TMS9900<br>
> required_libraries = Analysis AsmPrinter CodeGen Core MC Scalar<br>
> SelectionDAG Support Target TransformUtils<br>
> add_to_library_groups = TMS9900<br>
><br>
> And finally, TMS9900.td contains:<br>
><br>
> include "llvm/Target/Target.td"<br>
> def TMS9900 : Target { }<br>
><br>
> I also updated lib/Target/LLVMBuild.txt's [common] subdirectories to<br>
> include TMS9900.<br>
><br>
> *The punchline:*<br>
><br>
> Now, I tried to run cmake:<br>
><br>
> $ cd build<br>
> $ cmake -G "Unix Makefiles" -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=TMS9900<br>
> ../llvm<br>
> ... stuff ...<br>
> CMake Error at cmake/modules/LLVM-Config.cmake:178 (message):<br>
>   Target TMS9900 is not in the set of libraries.<br>
> Call Stack (most recent call first):<br>
>   cmake/modules/AddLLVM.cmake:525 (llvm_map_components_to_libnames)<br>
>   cmake/modules/AddLLVM.cmake:574 (llvm_add_library)<br>
>   tools/lto/CMakeLists.txt:19 (add_llvm_library)<br>
><br>
> (Line numbers may be off slightly, since I added some message() lines). So<br>
> I tracked this error down to where LLVM-Config.cmake is looking for targets<br>
> whose name, given {target}, is either LLVM{target} or LLVM{target}CodeGen.<br>
><br>
> Of course, I have no such targets.<br>
><br>
> The weird thing is that I looked at the MSP430 directory, and it does not<br>
> have LLVMMSP430 or LLVMMSP430CodeGen, either. It just has MSP430CodeGen yet<br>
> somehow that target works just fine.<br>
><br>
> *What am I missing?*<br>
><br>
> Thanks!<br>
><br>
> --Rob<br>
> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>