[Buildroot] Make C and CXX compiler cache in toolchainfile.cmake.in

Luca Ceresoli luca at lucaceresoli.net
Mon Apr 2 07:12:49 UTC 2018


Hi,

On 30/03/2018 21:57, Arnout Vandecappelle wrote:
> 
> 
> On 25-03-18 12:36, Michael Dick wrote:
>> Hello,
>>
>> I am using buildroot to create my custom gcc toolchain and sysroot for a
>> raspberry pi.
>>
>>  
>>
>> Therefore, I call cmake with a script to configure my project. After that, I
>> import the project into qtcreator.
>>
>> The problem is, that C and CXX compiler variables are not cached into cmake
>> cache, so when importing the project, qtcreator calling cmake is not aware oft
>> he configured compiler.
>>
>>  
>>
>> My suggestion ist o use this patch. Is there any reason why the compilers are
>> not cached?
> 
>  Sounds to me like a good idea.
> 
>  Let's add Yann, Samuel and Luca in Cc as CMake experts :-P For their
> convenience, here is the patch inline:
> 
>> --- /tmp/toolchainfile.cmake.in.orig    2018-03-25 12:32:03.353000419 +0200
>> +++ /tmp/toolchainfile.cmake.in 2018-03-25 12:32:52.647000419 +0200
>> @@ -58,8 +58,8 @@
>>  set(ENV{PKG_CONFIG_SYSROOT_DIR} "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@")
>>  
>>  # This toolchain file can be used both inside and outside Buildroot.
>> -set(CMAKE_C_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CC@@")
>> -set(CMAKE_CXX_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CXX@@")
>> +set(CMAKE_C_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CC@@" CACHE STRING "C Compiler")
>> +set(CMAKE_CXX_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CXX@@" CACHE STRING "CXX Compiler")

Although my cmake wisdom is definitely overrated here, I *do* have a
kind of clue of what this means! :-)

I think this change makes sense, and this is confirmed by the fact that
CMake does it as well by default. I tested with a minimal project:

$ cat CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
project(hello)
add_executable(hello hello.c utils.c)
$ cmake .
[...]
$ grep COMPILER CMakeCache.txt
CMAKE_CXX_COMPILER:FILEPATH=/usr/lib/ccache/c++
CMAKE_C_COMPILER:FILEPATH=/usr/lib/ccache/cc
[...]
$

>>  if(@@TOOLCHAIN_HAS_FORTRAN@@)
>>    set(CMAKE_Fortran_FLAGS_DEBUG "" CACHE STRING "Debug Fortran FLAGS")
>>    set(CMAKE_Fortran_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release Fortran FLAGS")
> 
> 
>  Michael, could you resubmit as a proper patch with commit log and
> Signed-off-by? See [1].

And keep me Cc:.

Bye,
-- 
Luca



More information about the buildroot mailing list