John Criswell
2015-Jun-19 00:07 UTC
[LLVMdev] Long-Term Support for LLVM Projects Extension to Build System?
On 6/18/15 6:49 PM, Eric Christopher wrote:> Hi John, > > Long term we don't want to keep the burden of two build systems in > tree. CMake is turning out to be the build system we want because of > its multi-platform support, etc and as soon as the CMake system can do > everything we can do with the autoconf/makefile build I plan on > turning down the support for that and removing the code.Thanks, but I wasn't asking about autoconf vs. cmake. I'm wanting to know whether the ability to "plug into" the LLVM build system by external projects will be maintained. For example, SAFECode doesn't have its own build system; it uses LLVM's, and it does so without being a "patch" to the LLVM source tree. You can put the SAFECode source code anywhere you like, use LLVM-style Makefiles in its source code, and build it. All of the PROJ_SRC_ROOT, PROJ_OBJ_ROOT magic in the autoconf build system is what permits that feature to work. Do you intend to keep this functionality when you replace autoconf with cmake, or will all projects that want to use the LLVM build system need to place their source code in the LLVM source tree? To put it another way, do you intend to deprecate the PROJ_SRC_ROOT/PROJ_OBJ_ROOT stuff? While I've enjoyed the PROJ_* magic, I can see why you'd want to get rid of it. I just want to ensure that you are not planning on replacing it. Regards, John Criswell> Thanks! > > -eric > > On Thu, Jun 18, 2015 at 4:47 PM John Criswell <jtcriswel at gmail.com > <mailto:jtcriswel at gmail.com>> wrote: > > Dear All, > > Will the LLVM project system (the extension to the build system that > allows sub-projects to reuse the LLVM Makefiles) be maintained long > term, or is the slow push to CMake intending to deprecate this > functionality? > > We used this feature a lot for research projects at UIUC, but if the > current maintainers of the build system are planning on > deprecating it, > I'll have my students avoid using it. > > Regards, > > John Criswell > > -- > John Criswell > Assistant Professor > Department of Computer Science, University of Rochester > http://www.cs.rochester.edu/u/criswell > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> > http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-- John Criswell Assistant Professor Department of Computer Science, University of Rochester http://www.cs.rochester.edu/u/criswell -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150618/eba7474e/attachment.html>
Eric Christopher
2015-Jun-19 00:14 UTC
[LLVMdev] Long-Term Support for LLVM Projects Extension to Build System?
On Thu, Jun 18, 2015 at 5:07 PM John Criswell <jtcriswel at gmail.com> wrote:> On 6/18/15 6:49 PM, Eric Christopher wrote: > > Hi John, > > Long term we don't want to keep the burden of two build systems in tree. > CMake is turning out to be the build system we want because of its > multi-platform support, etc and as soon as the CMake system can do > everything we can do with the autoconf/makefile build I plan on turning > down the support for that and removing the code. > > > Thanks, but I wasn't asking about autoconf vs. cmake. > >Well, you are, but only sorta.> I'm wanting to know whether the ability to "plug into" the LLVM build > system by external projects will be maintained. For example, SAFECode > doesn't have its own build system; it uses LLVM's, and it does so without > being a "patch" to the LLVM source tree. You can put the SAFECode source > code anywhere you like, use LLVM-style Makefiles in its source code, and > build it. All of the PROJ_SRC_ROOT, PROJ_OBJ_ROOT magic in the autoconf > build system is what permits that feature to work. > > Do you intend to keep this functionality when you replace autoconf with > cmake, or will all projects that want to use the LLVM build system need to > place their source code in the LLVM source tree? To put it another way, do > you intend to deprecate the PROJ_SRC_ROOT/PROJ_OBJ_ROOT stuff? > > While I've enjoyed the PROJ_* magic, I can see why you'd want to get rid > of it. I just want to ensure that you are not planning on replacing it. > >Right. So this is a "autoconf/makefile build system vs cmake build system" question as the Makefiles would, theoretically, all go away at the end. I don't think anyone has plans of replacing this functionality (Chris?), but migrating out of tree projects to hook in via modifying the cmake build locally shouldn't be too bad. -eric> Regards, > > John Criswell > > > Thanks! > > -eric > > On Thu, Jun 18, 2015 at 4:47 PM John Criswell <jtcriswel at gmail.com> > wrote: > >> Dear All, >> >> Will the LLVM project system (the extension to the build system that >> allows sub-projects to reuse the LLVM Makefiles) be maintained long >> term, or is the slow push to CMake intending to deprecate this >> functionality? >> >> We used this feature a lot for research projects at UIUC, but if the >> current maintainers of the build system are planning on deprecating it, >> I'll have my students avoid using it. >> >> Regards, >> >> John Criswell >> >> -- >> John Criswell >> Assistant Professor >> Department of Computer Science, University of Rochester >> http://www.cs.rochester.edu/u/criswell >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> > > > -- > John Criswell > Assistant Professor > Department of Computer Science, University of Rochesterhttp://www.cs.rochester.edu/u/criswell > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150619/11316baa/attachment.html>
Hal Finkel
2015-Jun-19 00:46 UTC
[LLVMdev] Long-Term Support for LLVM Projects Extension to Build System?
----- Original Message -----> From: "Eric Christopher" <echristo at gmail.com> > To: "John Criswell" <jtcriswel at gmail.com>, LLVMdev at cs.uiuc.edu, "Chris Bieneman" <beanz at apple.com> > Sent: Thursday, June 18, 2015 7:14:06 PM > Subject: Re: [LLVMdev] Long-Term Support for LLVM Projects Extension to Build System? > > > On Thu, Jun 18, 2015 at 5:07 PM John Criswell < jtcriswel at gmail.com > > wrote: > > > On 6/18/15 6:49 PM, Eric Christopher wrote: > > > > Hi John, > > > Long term we don't want to keep the burden of two build systems in > tree. CMake is turning out to be the build system we want because of > its multi-platform support, etc and as soon as the CMake system can > do everything we can do with the autoconf/makefile build I plan on > turning down the support for that and removing the code. > > Thanks, but I wasn't asking about autoconf vs. cmake. > > > > > Well, you are, but only sorta. > > > > I'm wanting to know whether the ability to "plug into" the LLVM build > system by external projects will be maintained. For example, > SAFECode doesn't have its own build system; it uses LLVM's, and it > does so without being a "patch" to the LLVM source tree. You can put > the SAFECode source code anywhere you like, use LLVM-style Makefiles > in its source code, and build it. All of the PROJ_SRC_ROOT, > PROJ_OBJ_ROOT magic in the autoconf build system is what permits > that feature to work. > > Do you intend to keep this functionality when you replace autoconf > with cmake, or will all projects that want to use the LLVM build > system need to place their source code in the LLVM source tree? To > put it another way, do you intend to deprecate the > PROJ_SRC_ROOT/PROJ_OBJ_ROOT stuff? > > While I've enjoyed the PROJ_* magic, I can see why you'd want to get > rid of it. I just want to ensure that you are not planning on > replacing it. > > > Right. So this is a "autoconf/makefile build system vs cmake build > system" question as the Makefiles would, theoretically, all go away > at the end. I don't think anyone has plans of replacing this > functionality (Chris?), but migrating out of tree projects to hook > in via modifying the cmake build locally shouldn't be too bad. >This is also related to the metapoint that the cmake build system doesn't glob for source files (or anything else), unlike the makefile build system. This is understandable given the constraints, but we might want to restore some of that functionality for the purpose of supporting out-of-tree projects. What I mean specifically, is that, for example, we could have a normally-empty directory tools/extensions, and tools/CMakeLists.txt could glob for directories in tools/extensions and call add_llvm_tool_subdirectory on all of them. It is true that you'd need to re-run cmake whenever you added something there (we could have a README in that directory to remind people of that), but that seems like a much smaller price than having to maintain a patched version of the upstream sources. -Hal> > -eric > > > > > > Regards, > > John Criswell > > > > > > > Thanks! > > > -eric > > > > On Thu, Jun 18, 2015 at 4:47 PM John Criswell < jtcriswel at gmail.com > > wrote: > > > Dear All, > > Will the LLVM project system (the extension to the build system that > allows sub-projects to reuse the LLVM Makefiles) be maintained long > term, or is the slow push to CMake intending to deprecate this > functionality? > > We used this feature a lot for research projects at UIUC, but if the > current maintainers of the build system are planning on deprecating > it, > I'll have my students avoid using it. > > Regards, > > John Criswell > > -- > John Criswell > Assistant Professor > Department of Computer Science, University of Rochester > http://www.cs.rochester.edu/u/criswell > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > -- > John Criswell > Assistant Professor > Department of Computer Science, University of Rochester > http://www.cs.rochester.edu/u/criswell > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-- Hal Finkel Assistant Computational Scientist Leadership Computing Facility Argonne National Laboratory
Chandler Carruth
2015-Jun-19 02:03 UTC
[LLVMdev] Long-Term Support for LLVM Projects Extension to Build System?
On Thu, Jun 18, 2015 at 5:10 PM John Criswell <jtcriswel at gmail.com> wrote:> I'm wanting to know whether the ability to "plug into" the LLVM build > system by external projects will be maintained. For example, SAFECode > doesn't have its own build system; it uses LLVM's, and it does so without > being a "patch" to the LLVM source tree. You can put the SAFECode source > code anywhere you like, use LLVM-style Makefiles in its source code, and > build it. All of the PROJ_SRC_ROOT, PROJ_OBJ_ROOT magic in the autoconf > build system is what permits that feature to work. >> Do you intend to keep this functionality when you replace autoconf with > cmake, or will all projects that want to use the LLVM build system need to > place their source code in the LLVM source tree? >There is actually some support for this already in the CMake build. see projects/CMakeLists.txt and add_llvm_external_project which specifically allows projects to live outside of LLVM's source tree. But this is for known sub-projects, not for arbitrary ones. I understand that your use case is slightly different in that respect. The use of LLVM's makefiles for completely unrelated projects being built outside of the LLVM source tree I think is likely to "go away" but that is because the functionality it provides is largely provided directly by CMake already. The CMake modules that LLVM ships with which provide the missing functionality are easily reused in an independent CMake build by setting up the CMake module path to include LLVM's cmake directory... But I don't really recommend it as it seems more trouble than it is worth compared to just using the functionality that ships with CMake. If you're using LLVM's makefiles to build code *against the LLVM libraries* but out of tree and not as part of an LLVM build, I don't know how this works and don't really know what to suggest. I'm just not familiar with that pattern. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150619/fea023a2/attachment.html>