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

Rosen Penev rosenp at gmail.com
Fri Nov 27 18:47:45 EST 2020


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.
>
> 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