Re: [MacPorts] #33259: cmake portgroup: out of source build option, possibly by default
#33259: cmake portgroup: out of source build option, possibly by default ---------------------------+-------------------------------- Reporter: ryandesign@… | Owner: macports-tickets@… Type: enhancement | Status: new Priority: Normal | Milestone: Component: ports | Version: Resolution: | Keywords: Port: | ---------------------------+-------------------------------- Comment (by mojca@…): Replying to [comment:11 rjvbertin@…]:
The point with that is: how are you going handle all different build systems?
I'm not yet sure about all cases. It's not a big problem for `./configure`. Setting the `configure.dir` and `build.dir` (as well as making one) should be the same. Of course one then needs to call `../<name>/configure` instead of just `./configure`. On the other hand `autotools` would probably have to be run in the same folder as the sources. Of course that wouldn't cover all the cases and even cases with `configure` might fail for many packages simply because they are not properly written and don't support out-of-source builds properly. But leaving maintainers the option to opt in could be useful in some cases.
CMake has a portgroup exactly because it doesn't work the same as the legacy `configure` approach, ditto for qmake and the Python group. So even if base could support OOT builds for the systems it supports, the cmake (etc) portgroup files will still need to redefine the appropriate values.
Yes, sure. But we could have a conditional setting. If `Portfile` opts out of default behaviour, the PortGroup should not redefine the values for an out-of-source build.
You wanted a patch? Copying one inline:
{{{ diff --git a/trunk/dports/_resources/port1.0/group/cmake-1.0.tcl b/trunk/dports/_resources/port1.0/group/cmake-1.0.tcl --- a/trunk/dports/_resources/port1.0/group/cmake-1.0.tcl (revision 133751) +++ b/trunk/dports/_resources/port1.0/group/cmake-1.0.tcl (working copy) @@ -134,3 +134,13 @@ if {[string first "--enable-debug" ${configure.args}] > -1} { configure.args-delete --enable-debug } + +# setup all ports using cmake to build in a separate directory from the source; +# this setting must be the full directory path +post-extract { file mkdir ${workpath}/build } + +# standard post-arg, where to find the primary CMakeLists.txt file. +default configure.post_args {../${worksrcdir}} +default configure.dir {${workpath}/build} +default build.dir {${workpath}/build} + }}}
It would probably help if we had some (very) basic configurability to opt out. -- Ticket URL: <https://trac.macports.org/ticket/33259#comment:12> MacPorts <https://www.macports.org/> Ports system for OS X
participants (1)
-
MacPorts