Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Luca Ceresoli <luca@lucaceresoli.net>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 4/5] Enable ccache for cmake packages
Date: Wed, 20 Mar 2013 18:15:18 +0100	[thread overview]
Message-ID: <5149EEA6.1010702@lucaceresoli.net> (raw)
In-Reply-To: <CAHXCMMKpKo_jagngfJFDHPKfiMeUb3+zx5wZ++tg81OjwQ_8iA@mail.gmail.com>

Samuel Martin wrote:
 > Hi Lucas,
 >
 > 2013/3/6 Luca Ceresoli <luca@lucaceresoli.net>:
 >> CMake fails in detecting the compiler when ccache is used. Add a wrapper
 >> script to make it happy.
 >
 > It is possible to do this without any wrapper, setting
 > CMAKE_C_COMPILER and CMAKE_CXX_COMPILER to the ccache binary path, and
 > CMAKE_C_COMPILER_ARG1 and CMAKE_CXX_COMPILER_ARG1 to the actual
 > C-compiler, respectively to the C++-compiler.

Do you meansomething like this?

  $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake:
         @mkdir -p $(@D)
         @echo -en "\
         set(CMAKE_SYSTEM_NAME Linux)\n\
-       set(CMAKE_C_COMPILER $(TARGET_CC_NOCCACHE))\n\
-       set(CMAKE_CXX_COMPILER $(TARGET_CXX_NOCCACHE))\n\
+       set(CMAKE_C_COMPILER $(CCACHE))\n\
+       set(CMAKE_CXX_COMPILER $(CCACHE))\n\
+       set(CMAKE_C_COMPILER_ARG1 $(TARGET_CC_NOCCACHE))\n\
+       set(CMAKE_CXX_COMPILER_ARG1 $(TARGET_CXX_NOCCACHE))\n\
         set(CMAKE_C_FLAGS \"\$${CMAKE_C_FLAGS} $(TARGET_CFLAGS)\" CACHE 
STRING \"Buildroot CFLAGS\" FORCE)\n\
         set(CMAKE_CXX_FLAGS \"\$${CMAKE_CXX_FLAGS} $(TARGET_CXXFLAGS)\" 
CACHE STRING \"Buildroot CXXFLAGS\" F
         set(CMAKE_INSTALL_SO_NO_EXE 0)\n\
         set(CMAKE_PROGRAM_PATH \"$(HOST_DIR)/usr/bin\")\n\

This is undocumented in the official CMake manual, yet OpenWRT uses it,
so it looks like a serious thing. And it actually works, except it breaks
rpi-userland:


$ LANG= make V=1 rpi-userland{-dirclean,}
...
 >>> rpi-userland 5e9a740a88a889dfc8a18bb1b00c17e5dd9d0108 Configuring
(cd 
/home/murray/devel/buildroot/output/build/rpi-userland-5e9a740a88a889dfc8a18bb1b00c17e5dd9d0108/ 
&& rm -f CMakeCache.txt && 
/home/murray/devel/buildroot/output/host/usr/bin/cmake 
/home/murray/devel/buildroot/output/build/rpi-userland-5e9a740a88a889dfc8a18bb1b00c17e5dd9d0108/ 
-DCMAKE_TOOLCHAIN_FILE="/home/murray/devel/buildroot/output/host/usr/share/buildroot/toolchainfile.cmake" 
-DCMAKE_INSTALL_PREFIX="/usr" -DVMCS_INSTALL_PREFIX=/usr )
Re-run cmake no build system arguments
-- The C compiler identification is GNU 4.7.3
-- The CXX compiler identification is GNU 4.7.3
...
 >>> rpi-userland 5e9a740a88a889dfc8a18bb1b00c17e5dd9d0108 Building
PATH="/home/murray/devel/buildroot/output/host/bin:/home/murray/devel/buildroot/output/host/usr/bin:/home/murray/devel/buildroot/output/host/usr/sbin/:/home/murray/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" 
PERLLIB="/home/murray/devel/buildroot/output/host/usr/lib/perl" 
/usr/bin/make -j8  -C 
/home/murray/devel/buildroot/output/build/rpi-userland-5e9a740a88a889dfc8a18bb1b00c17e5dd9d0108/
...
[  8%] [  8%] /home/murray/devel/buildroot/output/host/usr/bin/cmake -E 
cmake_progress_report 
/home/murray/devel/buildroot/output/build/rpi-userland-5e9a740a88a889dfc8a18bb1b00c17e5dd9d0108/CMakeFiles
/home/murray/devel/buildroot/output/host/usr/bin/ccache: invalid option 
-- 'D'
Usage:
     ccache [options]
     ccache compiler [compiler options]
     compiler [compiler options]          (via symbolic link)

Options:
     -c, --cleanup         delete old files and recalculate size counters
                           (normally not needed as this is done 
automatically)
     -C, --clear           clear the cache completely
     -F, --max-files=N     set maximum number of files in cache to N 
(use 0 for
                           no limit)
     -M, --max-size=SIZE   set maximum size of cache to SIZE (use 0 for no
                           limit; available suffixes: G, M and K; default
                           suffix: G)
     -s, --show-stats      show statistics summary
     -z, --zero-stats      zero statistics counters

     -h, --help            print this help text
     -V, --version         print version and copyright information

See also <http://ccache.samba.org>.
make[3]: *** 
[interface/khronos/CMakeFiles/khrn_client.dir/common/khrn_int_hash_asm.s.o] 
Error 1
...


I don't know if rpi-userland is doing something wrong or the _ARG1
implementation is unreliable. I'll investigate on that, but if you
have any clues they would be helpful. I am no CMake guru.

Luca

  parent reply	other threads:[~2013-03-20 17:15 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-06 17:14 [Buildroot] [PATCH 0/5] CMake packages improvements Luca Ceresoli
2013-03-06 17:14 ` [Buildroot] [PATCH 1/5] cmake: convert spaces to tabs in make rules Luca Ceresoli
2013-03-06 17:53   ` Thomas Petazzoni
2013-03-10 20:27   ` Peter Korsgaard
2013-03-06 17:14 ` [Buildroot] [PATCH 2/5] cmake: remove target package macro (not really implemented) Luca Ceresoli
2013-03-06 17:56   ` Thomas Petazzoni
2013-03-07 16:57     ` [Buildroot] [PATCH v2 2/5] cmake: remove target package macro Luca Ceresoli
2013-03-10 20:28       ` Peter Korsgaard
2013-03-06 17:14 ` [Buildroot] [PATCH 3/5] cmake: bump to 2.8.10.2 Luca Ceresoli
2013-03-10 20:28   ` Peter Korsgaard
2013-03-06 17:14 ` [Buildroot] [PATCH 4/5] Enable ccache for cmake packages Luca Ceresoli
2013-03-06 18:59   ` Thomas Petazzoni
2013-03-12 21:40     ` Arnout Vandecappelle
2013-03-06 19:02   ` Samuel Martin
2013-03-06 19:52     ` Peter Korsgaard
2013-03-10 20:29     ` Peter Korsgaard
2013-03-12  7:38       ` Luca Ceresoli
2013-03-20 17:15     ` Luca Ceresoli [this message]
2013-03-21 22:29       ` Luca Ceresoli
2013-03-22  8:33         ` Samuel Martin
2013-03-22  9:40           ` Luca Ceresoli
2013-03-22 10:08             ` Samuel Martin
2013-03-22 22:41               ` Luca Ceresoli
2013-03-22 22:55                 ` [Buildroot] [PATCH v2] " Luca Ceresoli
2013-03-23  0:03                   ` Samuel Martin
2013-03-23 15:29                     ` Thomas Petazzoni
2013-03-23 17:32                       ` Samuel Martin
2013-03-28 22:21                         ` Luca Ceresoli
2013-03-29 13:08                           ` Samuel Martin
2013-03-06 17:14 ` [Buildroot] [PATCH 5/5] CMake packages: remove .cmake files from target directory Luca Ceresoli
2013-03-10 20:30   ` Peter Korsgaard

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=5149EEA6.1010702@lucaceresoli.net \
    --to=luca@lucaceresoli.net \
    --cc=buildroot@busybox.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox