xiaobai added a comment. I think this is in a pretty good state. I built LLDB.framework with xcodebuild and compared it. There are still some discrepancies but this brings us a step closer to a final working solution.
================ 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) ---------------- xiaobai wrote: > 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. Decided to keep `INCLUDE_IN_FRAMEWORK` as removing it would introduce more boilerplate and wrapping that works around the problem instead of fixing it. https://reviews.llvm.org/D48060 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits