Conditionally adding sources to the build

Hi,

I’m trying to conditionally add source files to the lldb build based on a cmake configure time variable. I get the following type of errors for all sources not included in the build:

CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message):
  Found unknown source file
  /homes/dmitrym/buildspace/llvm-tot/llvm/tools/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp

  Please update
  /homes/dmitrym/buildspace/llvm-tot/llvm/tools/lldb/source/Plugins/Process/FreeBSD/CMakeLists.txt

Is there a way to work around/fix it or do I need to separate the files at the directory level?

Thanks.
Dmitry.

Unfortunately you will need to separate them at the directory levels.

The way we have done this with Linux native register contexts was to notionally leave the files in the build, but completely #ifdef out their contents (see NativeRegisterConextLinux_arm.cpp).
It’s not very nice, but I think it’s better than having six subfolders, each with a single cpp file. If you’ll need to group more than one file this way, then maybe a subfolder would make more sense though.

pl

Thanks for the suggestions.
I’m working on native support for FreeBSD lldb-server, and wanted to have an option to build it both ways until it’s stable enough to replace current implementation. I’ll have it in a separate directory.

I am glad to see freebsd is making progress on this front. If you need any help with understanding how lldb-server works, feel free to shoot me a question.

pl

I have a slightly unrelated question: is there an easy way to cross-build, say, an ARM lldb, and run native tests on an ARM board same as what check-lldb does? The lldb test page only talks about running remote tests. No info on cross testing.

Thanks!

Hi,

I am not aware of anyone ever trying that. In theory it should work if you copy the build and source folders to the other machine and run dotest.py with the right arguments there, but I guess that is not what you meant by “easy”. The thing that I would try in this situation is to set it up so that the build actually runs on the target device, but then use some distcc tricks to offload the compilation to a more powerful machine. I am not sure how easy would that be to setup though…

pl