All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philip Balister <philip@balister.org>
To: Ross Burton <ross.burton@intel.com>
Cc: openembedded-devel@lists.openembedded.org,
	openembedded-core@lists.openembedded.org
Subject: Re: [PATCH] cmake: respect ${S} and ${B}
Date: Thu, 05 Dec 2013 17:18:45 -0500	[thread overview]
Message-ID: <52A0FBC5.6090009@balister.org> (raw)
In-Reply-To: <1386203938-13338-2-git-send-email-ross.burton@intel.com>

On 12/04/2013 07:38 PM, Ross Burton wrote:
> Instead of the class-specific variables OECMAKE_BUILDPATH and
> OECMAKE_SOURCEPATH, just use ${B} and ${S}.
> 
> If these two paths are different, delete any existing ${B} before running a
> build so that previous builds don't taint the current build.
> 
> Note that OECMAKE_SOURCEPATH and OECMAKE_BUILDPATH are not respected at all, so
> recipes that manually set these in the past will need to be updated to either
> use something along the lines of separatebuilddir.inc or set B themselves.

I'm carrying EXTRA_OEMAKE = "-C $(OECMAKE_BUILDPATH)" in recipes. It
looks like this removes the need for this also? My cmake invocation is
rusty :)

Philip

> 
> Signed-off-by: Ross Burton <ross.burton@intel.com>
> ---
>  meta/classes/cmake.bbclass |   31 +++++++------------------------
>  1 file changed, 7 insertions(+), 24 deletions(-)
> 
> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
> index 30c1792..4d1489a 100644
> --- a/meta/classes/cmake.bbclass
> +++ b/meta/classes/cmake.bbclass
> @@ -6,15 +6,6 @@ CCACHE = ""
>  # We want the staging and installing functions from autotools
>  inherit autotools
>  
> -# Use in-tree builds by default but allow this to be changed
> -# since some packages do not support them (e.g. llvm 2.5).
> -OECMAKE_SOURCEPATH ?= "."
> -
> -# If declaring this, make sure you also set EXTRA_OEMAKE to
> -# "-C ${OECMAKE_BUILDPATH}". So it will run the right makefiles.
> -OECMAKE_BUILDPATH ?= ""
> -B="${S}"
> -
>  # C/C++ Compiler (without cpu arch/tune arguments)
>  OECMAKE_C_COMPILER ?= "`echo ${CC} | sed 's/^\([^ ]*\).*/\1/'`"
>  OECMAKE_CXX_COMPILER ?= "`echo ${CXX} | sed 's/^\([^ ]*\).*/\1/'`"
> @@ -73,10 +64,10 @@ EOF
>  addtask generate_toolchain_file after do_patch before do_configure
>  
>  cmake_do_configure() {
> -	if [ ${OECMAKE_BUILDPATH} ]
> -	then
> -		mkdir -p ${OECMAKE_BUILDPATH}
> -		cd ${OECMAKE_BUILDPATH}
> +	if [ "${S}" != "${B}" ]; then
> +		rm -rf ${B}
> +		mkdir -p ${B}
> +		cd ${B}
>  	fi
>  
>  	# Just like autotools cmake can use a site file to cache result that need generated binaries to run
> @@ -88,7 +79,7 @@ cmake_do_configure() {
>  
>  	cmake \
>  	  ${OECMAKE_SITEFILE} \
> -	  ${OECMAKE_SOURCEPATH} \
> +	  ${S} \
>  	  -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \
>  	  -DCMAKE_INSTALL_SO_NO_EXE=0 \
>  	  -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
> @@ -98,20 +89,12 @@ cmake_do_configure() {
>  }
>  
>  cmake_do_compile()  {
> -	if [ ${OECMAKE_BUILDPATH} ]
> -	then
> -		cd ${OECMAKE_BUILDPATH}
> -	fi
> -
> +	cd ${B}
>  	base_do_compile
>  }
>  
>  cmake_do_install() {
> -	if [ ${OECMAKE_BUILDPATH} ];
> -	then
> -		cd ${OECMAKE_BUILDPATH}
> -	fi
> -
> +	cd ${B}
>  	autotools_do_install
>  }
>  
> 


WARNING: multiple messages have this Message-ID (diff)
From: Philip Balister <philip@balister.org>
To: Ross Burton <ross.burton@intel.com>
Cc: openembedded-devel@lists.openembedded.org,
	openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCH] cmake: respect ${S} and ${B}
Date: Thu, 05 Dec 2013 17:18:45 -0500	[thread overview]
Message-ID: <52A0FBC5.6090009@balister.org> (raw)
In-Reply-To: <1386203938-13338-2-git-send-email-ross.burton@intel.com>

On 12/04/2013 07:38 PM, Ross Burton wrote:
> Instead of the class-specific variables OECMAKE_BUILDPATH and
> OECMAKE_SOURCEPATH, just use ${B} and ${S}.
> 
> If these two paths are different, delete any existing ${B} before running a
> build so that previous builds don't taint the current build.
> 
> Note that OECMAKE_SOURCEPATH and OECMAKE_BUILDPATH are not respected at all, so
> recipes that manually set these in the past will need to be updated to either
> use something along the lines of separatebuilddir.inc or set B themselves.

I'm carrying EXTRA_OEMAKE = "-C $(OECMAKE_BUILDPATH)" in recipes. It
looks like this removes the need for this also? My cmake invocation is
rusty :)

Philip

> 
> Signed-off-by: Ross Burton <ross.burton@intel.com>
> ---
>  meta/classes/cmake.bbclass |   31 +++++++------------------------
>  1 file changed, 7 insertions(+), 24 deletions(-)
> 
> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
> index 30c1792..4d1489a 100644
> --- a/meta/classes/cmake.bbclass
> +++ b/meta/classes/cmake.bbclass
> @@ -6,15 +6,6 @@ CCACHE = ""
>  # We want the staging and installing functions from autotools
>  inherit autotools
>  
> -# Use in-tree builds by default but allow this to be changed
> -# since some packages do not support them (e.g. llvm 2.5).
> -OECMAKE_SOURCEPATH ?= "."
> -
> -# If declaring this, make sure you also set EXTRA_OEMAKE to
> -# "-C ${OECMAKE_BUILDPATH}". So it will run the right makefiles.
> -OECMAKE_BUILDPATH ?= ""
> -B="${S}"
> -
>  # C/C++ Compiler (without cpu arch/tune arguments)
>  OECMAKE_C_COMPILER ?= "`echo ${CC} | sed 's/^\([^ ]*\).*/\1/'`"
>  OECMAKE_CXX_COMPILER ?= "`echo ${CXX} | sed 's/^\([^ ]*\).*/\1/'`"
> @@ -73,10 +64,10 @@ EOF
>  addtask generate_toolchain_file after do_patch before do_configure
>  
>  cmake_do_configure() {
> -	if [ ${OECMAKE_BUILDPATH} ]
> -	then
> -		mkdir -p ${OECMAKE_BUILDPATH}
> -		cd ${OECMAKE_BUILDPATH}
> +	if [ "${S}" != "${B}" ]; then
> +		rm -rf ${B}
> +		mkdir -p ${B}
> +		cd ${B}
>  	fi
>  
>  	# Just like autotools cmake can use a site file to cache result that need generated binaries to run
> @@ -88,7 +79,7 @@ cmake_do_configure() {
>  
>  	cmake \
>  	  ${OECMAKE_SITEFILE} \
> -	  ${OECMAKE_SOURCEPATH} \
> +	  ${S} \
>  	  -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \
>  	  -DCMAKE_INSTALL_SO_NO_EXE=0 \
>  	  -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
> @@ -98,20 +89,12 @@ cmake_do_configure() {
>  }
>  
>  cmake_do_compile()  {
> -	if [ ${OECMAKE_BUILDPATH} ]
> -	then
> -		cd ${OECMAKE_BUILDPATH}
> -	fi
> -
> +	cd ${B}
>  	base_do_compile
>  }
>  
>  cmake_do_install() {
> -	if [ ${OECMAKE_BUILDPATH} ];
> -	then
> -		cd ${OECMAKE_BUILDPATH}
> -	fi
> -
> +	cd ${B}
>  	autotools_do_install
>  }
>  
> 


  reply	other threads:[~2013-12-05 22:18 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-05  0:38 [RFC][PATCH] cmake: respect ${S} and ${B} Ross Burton
2013-12-05  0:38 ` [PATCH] " Ross Burton
2013-12-05 22:18   ` Philip Balister [this message]
2013-12-05 22:18     ` [OE-core] " Philip Balister
2013-12-05 22:23     ` Richard Purdie
2013-12-05 22:23       ` [OE-core] " Richard Purdie
2013-12-05  0:55 ` [RFC][PATCH] " Martin Jansa
2013-12-05  0:55   ` [OE-core] " Martin Jansa
2013-12-05  9:47   ` Stefan Herbrechtsmeier
2013-12-05 10:03     ` Burton, Ross
2013-12-05  9:43 ` Koen Kooi
2013-12-05 10:10 ` Richard Purdie
2013-12-05 10:10   ` [OE-core] " Richard Purdie
2013-12-05 11:34   ` Martin Jansa
2013-12-05 11:34     ` [OE-core] " Martin Jansa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52A0FBC5.6090009@balister.org \
    --to=philip@balister.org \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=openembedded-devel@lists.openembedded.org \
    --cc=ross.burton@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.