[LLVMdev] Why are the tablegen files excluded from source lists/

Kuba Ober kuba at mareimbrium.org
Mon Mar 10 09:21:19 PDT 2014


Takumi,

Thank you for all the pointers, they have been quite helpful.

So, in a nutshell, it seems that both conditional checks below
can be removed:

* llvm/cmake/modules/LLVMProcessSources.cmake:45
* clang/CMakeLists.txt:295

I’ve checked it with "Unix Makefile” and “Ninja” generators, as both
are supported by Qt Creator.

  ***

> You may try to change "if(MSVC_IDE OR XCODE)" to "if(TRUE)" locally ;)

> * llvm/cmake/modules/LLVMProcessSources.cmake:45

I know about that one. As I’ve said, I’ve changed it and there
are seemingly no ill effects. I simply wonder if the conditional
should be permanently removed or set to TRUE, as it seems counterproductive.

> * llvm/CMakeLists.txt:255 LLVM_LIT_ARGS

This disables the progress bar for XCODE and MSVC. Probably neither
of those IDEs have the code to understand progress output, so it may
as well remain disabled. I see no reason to change it at the moment.

> * clang/CMakeLists.txt:295
>  It adds clang's public headers to each clang library.
>  Note that it would also require to tweak LLVMProcessSources.cmake.

This is interesting. You refer here to add_clang_library.
On the surface it seems to duplicate what’s already
present in llvm_process_sources, but it only seems so. It calls
llvm_add_library, and that calls llvm_process_sources
if no OBJLIBS argument is given. Alas, it must be that OBJLIBS are
given, and llvm_process_sources is not called since the .td and .h
files are not added unless the conditional check is removed here.

Cheers, Kuba Ober

On Mar 10, 2014, at 9:55 AM, NAKAMURA Takumi <geek4civic at gmail.com> wrote:

> Kuba,
> 
> I think reasonable. I don't check changes on codeblocks, though.
> 
> Before we would tweak them to be generic to several IDEs, could you
> try my suggestions locally?
> You may try to change "if(MSVC_IDE OR XCODE)" to "if(TRUE)" locally ;)
> 
> * llvm/CMakeLists.txt:255 LLVM_LIT_ARGS
>  It affects "check-*" to run test scripts.
>    -s displays colorful progression. This assumes terminal window.
>    --no-progress-bar displays simple progression by text.
>    Without -s (-v), each test status will be put in console.
>  You may examine how to work to set LLVM_LIT_ARGS to arbitrary value.
> 
> * llvm/cmake/modules/LLVMProcessSources.cmake:45
>  It controls whether to add header files to project files.
>  To confirm this, please see LLVMSupport in your project viewer.
> 
> * llvm/include/llvm/CMakeLists.txt
>  It creates a dummy target, llvm_headers_do_not_build, to the project.
> 
> * clang/CMakeLists.txt:295
>  It adds clang's public headers to each clang library.
>  Note that it would also require to tweak LLVMProcessSources.cmake.
> 
> We don't intend to reject Code::Blocks. Simply just no one (in
> developers) didn't use one, AFAIK.
> Please be patient.
> 
> ...Takumi
> 
> 2014-03-09 7:52 GMT+09:00 Kuba Ober <kuba at mareimbrium.org>:
>> My problem is that the .td and .h files are not shown as sources
>> in the codeblocks (.cbp) output generated by cmake. I'm consuming
>> the .cbp file with Qt Creator - it's seems to be an otherwise
>> excellent tool for llvm development.
>> 
>> It seems that the culprit is llvm_process_sources
>> function in cmake/modules/LLVMProcessSources.cmake.
>> 
>> The addition of .td sources and header files is wrapped
>> in the following conditional:
>> 
>> if( MSVC_IDE OR XCODE )
>> 
>> Is this necessary at all? At least for codeblocks output,
>> removal of this conditional has no ill effects and adds the
>> .td and .h files to the sources list.
>> 
>> At the very least, this should be expanded to include codeblocks,
>> but I don't know what magical macro is set when producing the .cbp
>> file.
>> 
>> Are there any cmake outputs where the addition of those extra
>> sources would be an error?
>> 
>> Cheers, Kuba Ober
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev





More information about the llvm-dev mailing list