Message ID | 20201127220429.22458-1-ynezz@true.cz |
---|---|
State | Accepted |
Delegated to: | Petr Štetiar |
Headers | show |
Series | cmake.mk,rules.mk: fix host builds using CMake and ccache | expand |
On Fri, Nov 27, 2020 at 2:04 PM Petr Štetiar <ynezz@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. > > Fixes: f98878e4c17d ("cmake.mk: set C/CXX compiler for host builds as well") > Reported-by: Ansuel Smith <ansuelsmth@gmail.com> Acked-by: Rosen Penev <rosenp@gmail.com> > Signed-off-by: Petr Štetiar <ynezz@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
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@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@gmail.com> > > Fixes: f98878e4c17d ("cmake.mk: set C/CXX compiler for host builds as well") > > Reported-by: Ansuel Smith <ansuelsmth@gmail.com> > Acked-by: Rosen Penev <rosenp@gmail.com> > > Signed-off-by: Petr Štetiar <ynezz@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
Ansuel Smith <ansuelsmth@gmail.com> [2020-11-28 15:13:32]:
Hi,
> Can confirm that this fix the bug.
sorry for the breakage and thank you for testing.
Cheers,
Petr
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
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. Fixes: f98878e4c17d ("cmake.mk: set C/CXX compiler for host builds as well") Reported-by: Ansuel Smith <ansuelsmth@gmail.com> Signed-off-by: Petr Štetiar <ynezz@true.cz> --- include/cmake.mk | 18 ++++++++++++++++-- rules.mk | 1 + 2 files changed, 17 insertions(+), 2 deletions(-)