<div dir="ltr"><div class="gmail_quote"><div dir="ltr">Hi all,<div><br></div><div><b>TL;DR:</b> I have a target <font face="monospace">TMS9900CodeGen </font>but cmake is looking for <font face="monospace">LLVMTMS9900 </font>or <font face="monospace">LLVMTMS9900CodeGen </font>which I don't have, and cmake dies. But the <font face="monospace">MSP430 </font>target doesn't have that either, and cmake is happy with it. What am I missing?<br><div><br></div><div><b>The premise:</b></div><div><br></div><div>I may be making a huge mistake, but I'm trying to develop an LLVM backend. I'm writing up some notes while I do so, and I hope to update the documentation. However, I ran into a bit of a problem running cmake. Note that I built the trunk release just fine, right now I'm modifying it.</div><div><br></div><div><b>The setup:</b></div><div><br></div><div>My target is called <font face="monospace">TMS9900</font> because I'm a masochist, and I'm just trying to make a bare do-nothing skeleton to start with. I have this:</div><div><br></div><div><font face="monospace">lib/Target/TMS9900</font></div><div><font face="monospace">  - CMakeLists.txt</font></div><div><font face="monospace">  - LLVMBuild.txt</font></div><div><font face="monospace">  - TMS9900TargetMachine.cpp</font></div><div><font face="monospace">  - TMS9900TargetMachine.h</font></div><div><font face="monospace">  - TMS9900.td</font></div><div><br></div><div><font face="monospace">TMS9900TargetMachine </font>is the barest class I could make. It derives from <font face="monospace">LLVMTargetMachine</font>, and passes everything through (although it defines the <font face="monospace">DataLayout</font>).</div><div><br></div><div><font face="monospace">CMakeLists.txt</font> is also pretty small:</div><div><br></div><div><div><font face="monospace">set(LLVM_TARGET_DEFINITIONS TMS9900.td)</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">add_llvm_library(TMS9900CodeGen</font></div><div><font face="monospace">  TMS9900TargetMachine.cpp</font></div><div><font face="monospace">  )</font></div></div><div><br></div><div><font face="monospace">LLVMBuild.txt</font> is as minimal as I could guess at:</div><div><br></div><div><div><font face="monospace">[common]</font></div><div><font face="monospace">subdirectories =</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">[component_0]</font></div><div><font face="monospace">type = TargetGroup</font></div><div><font face="monospace">name = TMS9900</font></div><div><font face="monospace">parent = Target</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">[component_1]</font></div><div><font face="monospace">type = Library</font></div><div><font face="monospace">name = TMS9900CodeGen</font></div><div><font face="monospace">parent = TMS9900</font></div><div><font face="monospace">required_libraries = Analysis AsmPrinter CodeGen Core MC Scalar SelectionDAG Support Target TransformUtils</font></div><div><font face="monospace">add_to_library_groups = TMS9900</font></div></div><div><br></div><div>And finally, <font face="monospace">TMS9900.td</font> contains:</div><div><br></div><div><div><font face="monospace">include "llvm/Target/Target.td"</font></div></div><div><div><font face="monospace">def TMS9900 : Target { }</font></div></div><div><br></div><div>I also updated <font face="monospace">lib/Target/LLVMBuild.txt</font>'s <font face="monospace">[common] subdirectories</font> to include <font face="monospace">TMS9900</font>.</div><div><br></div><div><b>The punchline:</b></div><div><br></div><div>Now, I tried to run cmake:</div><div><br></div><div><font face="monospace">$ cd build</font></div><div><font face="monospace">$ cmake -G "Unix Makefiles" -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=TMS9900 ../llvm</font></div><div><font face="monospace">... stuff ...</font></div><div><div><font face="monospace">CMake Error at cmake/modules/LLVM-Config.cmake:178 (message):</font></div><div><font face="monospace">  Target TMS9900 is not in the set of libraries.</font></div><div><font face="monospace">Call Stack (most recent call first):</font></div><div><font face="monospace">  cmake/modules/AddLLVM.cmake:525 (llvm_map_components_to_libnames)</font></div><div><font face="monospace">  cmake/modules/AddLLVM.cmake:574 (llvm_add_library)</font></div><div><font face="monospace">  tools/lto/CMakeLists.txt:19 (add_llvm_library)</font></div></div><div><br></div><div>(Line numbers may be off slightly, since I added some message() lines). So I tracked this error down to where <font face="monospace">LLVM-Config.cmake</font> is looking for targets whose name, given <font face="monospace">{target}</font>, is either <font face="monospace">LLVM{target}</font> or <font face="monospace">LLVM{target}CodeGen</font>.</div><div><br></div><div>Of course, I have no such targets.</div><div><br></div><div>The weird thing is that I looked at the <font face="monospace">MSP430 </font>directory, and it does not have <font face="monospace">LLVMMSP430 </font>or <font face="monospace">LLVMMSP430CodeGen</font>, either. It just has <font face="monospace">MSP430CodeGen </font>yet somehow that target works just fine.</div><div><br></div><div><i>What am I missing?</i></div><div><br></div><div>Thanks!</div><div><br></div><div>--Rob</div><div><br></div></div></div></div></div>