[PATCH] cmake.mk, rules.mk: fix host builds using CMake and ccache

Ansuel Smith ansuelsmth at gmail.com
Sat Nov 28 09:13:32 EST 2020


On Fri, Nov 27, 2020 at 03:47:45PM -0800, Rosen Penev wrote:
> On Fri, Nov 27, 2020 at 2:04 PM Petr Štetiar <ynezz at true.cz> wrote:
> >
> > Commit f98878e4c17d ("cmake.mk: set C/CXX compiler for host builds as
> > well") has introduced regression as it didn't taken usage of ccache into
> > the account so fix it by handling ccache use cases as well.
> >
> > In order to get this working we need to export HOSTCXX_NOCACHE in
> > rules.mk as well.
> That's annoying. I didn't know ccache was used with host packages.
> >

Can confirm that this fix the bug.
Tested-by: Ansuel Smith <ansuelsmth at gmail.com>

> > Fixes: f98878e4c17d ("cmake.mk: set C/CXX compiler for host builds as well")
> > Reported-by: Ansuel Smith <ansuelsmth at gmail.com>
> Acked-by: Rosen Penev <rosenp at gmail.com>
> > Signed-off-by: Petr Štetiar <ynezz at true.cz>
> > ---
> >  include/cmake.mk | 18 ++++++++++++++++--
> >  rules.mk         |  1 +
> >  2 files changed, 17 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/cmake.mk b/include/cmake.mk
> > index 2cc10301aa4e..0a20530a16fe 100644
> > --- a/include/cmake.mk
> > +++ b/include/cmake.mk
> > @@ -23,12 +23,22 @@ ifeq ($(CONFIG_CCACHE),)
> >   CMAKE_CXX_COMPILER:=$(call cmake_tool,$(TARGET_CXX))
> >   CMAKE_C_COMPILER_ARG1:=
> >   CMAKE_CXX_COMPILER_ARG1:=
> > +
> > + CMAKE_HOST_C_COMPILER:=$(HOSTCC)
> > + CMAKE_HOST_CXX_COMPILER:=$(HOSTCXX)
> > + CMAKE_HOST_C_COMPILER_ARG1:=
> > + CMAKE_HOST_CXX_COMPILER_ARG1:=
> >  else
> >    CCACHE:=$(STAGING_DIR_HOST)/bin/ccache
> >    CMAKE_C_COMPILER:=$(CCACHE)
> >    CMAKE_C_COMPILER_ARG1:=$(TARGET_CC_NOCACHE)
> >    CMAKE_CXX_COMPILER:=$(CCACHE)
> >    CMAKE_CXX_COMPILER_ARG1:=$(TARGET_CXX_NOCACHE)
> > +
> > +  CMAKE_HOST_C_COMPILER:=$(CCACHE)
> > +  CMAKE_HOST_C_COMPILER_ARG1:=$(HOSTCC_NOCACHE)
> > +  CMAKE_HOST_CXX_COMPILER:=$(CCACHE)
> > +  CMAKE_HOST_CXX_COMPILER_ARG1:=$(HOSTCXX_NOCACHE)
> >  endif
> >  CMAKE_AR:=$(call cmake_tool,$(TARGET_AR))
> >  CMAKE_NM:=$(call cmake_tool,$(TARGET_NM))
> > @@ -97,8 +107,12 @@ define Host/Configure/Default
> >                 LDFLAGS="$(HOST_LDFLAGS)" \
> >                 cmake \
> >                         -DCMAKE_BUILD_TYPE=Release \
> > -                       -DCMAKE_C_COMPILER="$(HOSTCC)" \
> > -                       -DCMAKE_CXX_COMPILER="$(HOSTCXX)" \
> > +                       -DCMAKE_C_COMPILER="$(CMAKE_HOST_C_COMPILER)" \
> > +                       -DCMAKE_C_COMPILER_ARG1="$(CMAKE_HOST_C_COMPILER_ARG1)" \
> > +                       -DCMAKE_CXX_COMPILER="$(CMAKE_HOST_CXX_COMPILER)" \
> > +                       -DCMAKE_CXX_COMPILER_ARG1="$(CMAKE_HOST_CXX_COMPILER_ARG1)" \
> > +                       -DCMAKE_ASM_COMPILER="$(CMAKE_HOST_C_COMPILER)" \
> > +                       -DCMAKE_ASM_COMPILER_ARG1="$(CMAKE_HOST_C_COMPILER_ARG1)" \
> >                         -DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" \
> >                         -DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG" \
> >                         -DCMAKE_EXE_LINKER_FLAGS:STRING="$(HOST_LDFLAGS)" \
> > diff --git a/rules.mk b/rules.mk
> > index adb103d81f2f..34222a3a7199 100644
> > --- a/rules.mk
> > +++ b/rules.mk
> > @@ -292,6 +292,7 @@ HOSTCXX_NOCACHE:=$(HOSTCXX)
> >  export TARGET_CC_NOCACHE
> >  export TARGET_CXX_NOCACHE
> >  export HOSTCC_NOCACHE
> > +export HOSTCXX_NOCACHE
> >
> >  ifneq ($(CONFIG_CCACHE),)
> >    TARGET_CC:= ccache_cc



More information about the openwrt-devel mailing list