<div dir="ltr">1 or 2, not 3.  Let's just do 1 if it's bothering people.  llvm-tblgen is not big, and it is named in a way that won't conflict, unlike "not" or "count".</div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Mon, Sep 9, 2013 at 1:45 PM, Hans Wennborg <span dir="ltr"><<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+llvm-commits again<br>
<br>
There seems to be three ways we could solve this<br>
<br>
1. Just include llvm-tblgen in the install<br>
  It is after all required for users of llvm's option parsing library.<br>
<br>
2. Provide a cmake option to include it in the install.<br>
  Having more flags is annoying, but this allows us to keep it out of<br>
the default install, which is desirable because it's an llvm internal<br>
tool.<br>
<br>
3. Split out the option parsing table emission into llvm-opts-tblgen,<br>
and install that.<br>
  This avoids installing the internal llvm-tblgen tool, but adds the<br>
complexity of yet another tablegen.<br>
<br>
I'd be interested to hear if Reid and Chandler has any opinions here.<br>
<br>
 - Hans<br>
<br>
<br>
On Mon, Sep 2, 2013 at 6:39 AM, Johannes Obermayr<br>
<<a href="mailto:johannesobermayr@gmx.de">johannesobermayr@gmx.de</a>> wrote:<br>
> To explain a bit how packaging works on Linux (here RPM based distros)<br>
><br>
><br>
><br>
> %build<br>
><br>
> cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \<br>
><br>
> -DCMAKE_INSTALL_PREFIX=%_prefix \<br>
><br>
> %ifarch x86_64<br>
><br>
> -DLLVM_LIBDIR_SUFFIX=64 \ # Doesn't work in upstream svn/git because it<br>
> seems LLVM devs don't want to support it:<br>
> <a href="http://llvm.org/bugs/show_bug.cgi?id=12230" target="_blank">http://llvm.org/bugs/show_bug.cgi?id=12230</a><br>
><br>
> %endif<br>
><br>
> -DLLVM_TARGETS_TO_BUILD="CppBackend;NVPTX;R600;X86;XCore" \<br>
><br>
> -DBUILD_SHARED_LIBS=ON \<br>
><br>
> -DLLVM_ENABLE_TIMESTAMPS=OFF \<br>
><br>
> -DLLVM_ENABLE_FFI=ON \<br>
><br>
> -DLLVM_USE_OPROFILE=ON \<br>
><br>
> -DLLVM_BUILD_TESTS=OFF \<br>
><br>
> -DLLVM_INCLUDE_TESTS=OFF \<br>
><br>
> -DLLVM_BUILD_EXAMPLES=OFF \<br>
><br>
> -DLLVM_INCLUDE_EXAMPLES=OFF \<br>
><br>
> -DLLVM_BUILD_TOOLS=ON \<br>
><br>
> -DLLVM_INCLUDE_TOOLS=ON \<br>
><br>
> ..<br>
><br>
> make %{?jobs:-j%jobs}<br>
><br>
><br>
><br>
><br>
><br>
> %install<br>
><br>
> make install DESTDIR=$RPM_BUILD_ROOT<br>
><br>
> rm -rf $RPM_BUILD_ROOT%_libdir/BugpointPasses.*<br>
><br>
><br>
><br>
><br>
><br>
> # Now distribute contents to the packages:<br>
><br>
> %files # llvm package<br>
><br>
> %defattr(-,root,root)<br>
><br>
> %_bindir/llc<br>
><br>
> %_bindir/lli<br>
><br>
> %_bindir/llvm* # package all llvm* executables in llvm package<br>
><br>
> %exclude %_bindir/llvm-tablegen # but not llvm-tablegen<br>
><br>
> %_bindir/macho-dump<br>
><br>
> %_bindir/opt<br>
><br>
><br>
><br>
> %files -n libLLVM # libLLVM package<br>
><br>
> %defattr(-,root,root)<br>
><br>
> %_libdir/lib*.so<br>
><br>
><br>
><br>
> %files devel # llvm-devel package<br>
><br>
> %defattr(-,root,root)<br>
><br>
> %_bindir/llvm-tablegen # instead package llvm-tablegen in llvm-devel package<br>
><br>
> %_includedir/llvm<br>
><br>
> %_includedir/llvm-c<br>
><br>
> %_datadir/llvm<br>
><br>
><br>
><br>
><br>
><br>
> Now some examples how dependencies work:<br>
><br>
> 1. Mesa with LLVM support requires some .so and also installs libLLVM<br>
> package (joe user)<br>
><br>
> 2. llvm requires some .so and also installs libLLVM package (case?)<br>
><br>
> 3. llvm-devel requires llvm and libLLVM for linking. So it also installs<br>
> both. (devs choice)<br>
><br>
><br>
><br>
> This way you can reduce overhead depending on your use case.<br>
><br>
><br>
><br>
><br>
><br>
> As said putting it in a conditional if(CMAKE_SYSTEM_NAME MATCHES "Linux")<br>
> could solve it:<br>
><br>
> <a href="http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130826/186277.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130826/186277.html</a><br>
><br>
><br>
><br>
><br>
><br>
> Johannes<br>
><br>
><br>
><br>
> Am Montag, 2. September 2013, 14:16:06 schrieben Sie:<br>
<div class="HOEnZb"><div class="h5">><br>
>> I don't really have any strong preference here.<br>
><br>
>><br>
><br>
>> Johannes: how is the llvm-devel package built? Would it solve the<br>
><br>
>> problem if we had a flag for that build that made llvm-tblgen be<br>
><br>
>> included?<br>
><br>
>><br>
><br>
>> - Hans<br>
><br>
>><br>
><br>
>> On Fri, Aug 30, 2013 at 9:09 PM, Jordan Rose <<a href="mailto:jordan_rose@apple.com">jordan_rose@apple.com</a>><br>
>> wrote:<br>
><br>
>> > It makes sense to include llvm-tblgen in llvm-devel, just not the main<br>
>> > llvm package. What do you think?<br>
><br>
>> ><br>
><br>
>> > On Aug 30, 2013, at 12:08 , Johannes Obermayr <<a href="mailto:johannesobermayr@gmx.de">johannesobermayr@gmx.de</a>><br>
>> > wrote:<br>
><br>
>> ><br>
><br>
>> >> This is not possible because on OBS I first compile a llvm git master<br>
>> >> package and then a llvm-clang git master package which depends on llvm<br>
>> >> libLLVM and llvm-devel packages on build time.<br>
><br>
>> >><br>
><br>
>> >> So %_bindir/llvm-tablegen must be installed and included in llvm or<br>
>> >> llvm-devel package to get clang compiled.<br>
><br>
>> >><br>
><br>
>> >> But who cares about packaging on Linux distributions?<br>
><br>
>> >><br>
><br>
>> >> Am Freitag, 30. August 2013, 11:47:40 schrieb Reid Kleckner:<br>
><br>
>> >>> Please find a way to do this that doesn't install llvm-tblgen by<br>
>> >>> default.<br>
><br>
>> >>> We don't actually want to distribute it to end users.<br>
><br>
>> >>><br>
><br>
>> >>> I believe we have some solution for supporting out-of-source builds<br>
>> >>> using<br>
><br>
>> >>> llvm-config, but Hans or Jordan Rose (I think he uses CMake+XCode out<br>
>> >>> of<br>
><br>
>> >>> source?) might know more.<br>
><br>
>> >>><br>
><br>
>> >>><br>
><br>
>> >>> On Fri, Aug 30, 2013 at 11:14 AM, Johannes Obermayr<br>
>> >>> <<a href="mailto:johannesobermayr@gmx.de">johannesobermayr@gmx.de</a><br>
><br>
>> >>>> wrote:<br>
><br>
>> >>><br>
><br>
>> >>>> This reverts commit b7f81d372a884453f821a3764028771c4896c3be.<br>
><br>
>> >>>> SVN: r189130<br>
><br>
>> >>>><br>
><br>
>> >>>> Fixes (out-of-tree build):<br>
><br>
>> >>>> Scanning dependencies of target ClangCC1AsOptions<br>
><br>
>> >>>> make[2]: *** No rule to make target `/usr/bin/llvm-tblgen', needed by<br>
><br>
>> >>>> `include/clang/Driver/Options.inc.tmp'. Stop.<br>
><br>
>> >>>> ---<br>
><br>
>> >>>> cmake/modules/TableGen.cmake | 2 ++<br>
><br>
>> >>>> 1 file changed, 2 insertions(+)<br>
><br>
>> >>>><br>
><br>
>> >>>> diff --git a/cmake/modules/TableGen.cmake<br>
>> >>>> b/cmake/modules/TableGen.cmake<br>
><br>
>> >>>> index d315a42..bf75ce2 100644<br>
><br>
>> >>>> --- a/cmake/modules/TableGen.cmake<br>
><br>
>> >>>> +++ b/cmake/modules/TableGen.cmake<br>
><br>
>> >>>> @@ -136,4 +136,6 @@ macro(add_tablegen target project)<br>
><br>
>> >>>> if( LLVM_ENABLE_THREADS AND HAVE_LIBPTHREAD AND NOT BEOS )<br>
><br>
>> >>>> target_link_libraries(${target} pthread)<br>
><br>
>> >>>> endif()<br>
><br>
>> >>>> +<br>
><br>
>> >>>> + install(TARGETS ${target} RUNTIME DESTINATION bin)<br>
><br>
>> >>>> endmacro()<br>
><br>
>> >>>> --<br>
><br>
>> >>>> 1.8.1.4<br>
</div></div></blockquote></div><br></div>