xiaobai added inline comments.
================ Comment at: CMakeLists.txt:140 +# lldb-suite is a dummy target that encompasses all the necessary tools and +# libraries for building a fully-functioning lldb. +add_custom_target(lldb-suite) ---------------- labath wrote: > fully-functioning lldb **library**. > > (this is just to emphasize that it does not include the driver executable > with the same name) Thanks for pointing that out. ================ Comment at: CMakeLists.txt:154 +endif() +add_dependencies(lldb lldb-suite) + ---------------- labath wrote: > I would move this line to the CMakeLilsts.txt which defines the lldb driver > target. That makes sense to me. ================ Comment at: CMakeLists.txt:180-186 + # When building LLDB.framework, finish_swig depends on the framework + # directory already being generated. liblldb and lldb-argdumper are built + # as a part of the framework. + add_dependencies(finish_swig lldb-framework) + else() + # We depend on liblldb and lldb-argdumper being built before we can do this step. + add_dependencies(finish_swig liblldb lldb-argdumper) ---------------- labath wrote: > Could we replace this by a single `finish_swig -> lldb-suite` dependency ? I didn't think about it at the time but that makes the most sense ================ Comment at: cmake/modules/LLDBFramework.cmake:45 + + add_dependencies(lldb-framework liblldb lldb-argdumper lldb-server lldb-framework-headers) + add_dependencies(finish_swig lldb-framework) ---------------- labath wrote: > xiaobai wrote: > > labath wrote: > > > xiaobai wrote: > > > > labath wrote: > > > > > Maybe lldb-argdumper and lldb-server dependencies should be handled > > > > > as a part of INCLUDE_IN_FRAMEWORK argument to add_lldb_executable? Or > > > > > do you have other plans for that? > > > > One of the goals I had in centralizing the framework generation code > > > > would be to centralize and make explicit which tools went into the > > > > framework. The idea I had was to get rid of the INCLUDE_IN_FRAMEWORK > > > > argument to add_lldb_executable. Since add_lldb_executable builds the > > > > binary differently when building for the framework (modifying the > > > > rpath, changing the output destination and symlinking it to your build > > > > tree's bin dir), it should be sufficient just to check for > > > > LLDB_BUILD_FRAMEWORK. > > > > > > > > What do you think of this? > > > Both of the approaches sound reasonable to me. If you want to go this > > > way, then I'm fine with that. > > I've begun refactoring to remove `INCLUDE_IN_FRAMEWORK` but I've started > > thinking about some possibly negative repercussions. I'm wondering what you > > think of this: > > > > `add_lldb_tool` (which invokes `add_lldb_executable`) can be used to add > > lldb executables that won't be included in the framework AFAICT (e.g. > > lldb-mi). What I was going to do was remove `INCLUDE_IN_FRAMEWORK` option > > so that every tool will get put into the framework and symlinked to > > `$BUILD_DIR/bin` when you run cmake with `LLDB_BUILD_FRAMEWORK=1`. This > > will mean that lldb-mi will be put in the framework if you do something > > like `make lldb-mi` after configuring with `LLDB_BUILD_FRAMEWORK=1`. > > > > In that case, do you think it makes sense to keep `INCLUDE_IN_FRAMEWORK` as > > an option and use that to build part of the dependency tree for the > > lldb-framework target? Or do you think this is an unlikely enough example > > that it shouldn't matter? > I think this is an important issue. We shouldn't have our install artifacts > depend on what other targets the user happened to build. And it's not just > the user typing "make lldb-mi" thats the problem. He can just decide to type > "make" to build all targets, and then he'll end up with the same issue. > > I think it still may be possible to have framework management centralized if > you would make the list of targets that go into the framework explicit here. > Something like: > ``` > foreach(target in ${TOOLS_THAT_GO_INTO_THE_FRAMEWORK}) > do_whatever_add_lldb_tool_would_have_done() > endforeach() > ``` > But, as I said, I think that keeping this part of the logic inside > add_lldb_tool is fine too. If you decide to keep INCLUDE_IN_FRAMEWORK arg, > then I think it is natural for the dependency management to be done there > too. (Basically, I want to avoid the knowledge of what tools go into the > framework to be defined in more than one place). I'm going to attempt to make centralization work just because I would like to avoid knowledge of what goes into the framework scattered. Thanks for the help. https://reviews.llvm.org/D48060 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits