From patchwork Wed Mar 6 17:14:25 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Ceresoli X-Patchwork-Id: 225556 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from hemlock.osuosl.org (hemlock.osuosl.org [140.211.166.133]) by ozlabs.org (Postfix) with ESMTP id 26B272C038F for ; Thu, 7 Mar 2013 04:16:04 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id D1D0EA030D; Wed, 6 Mar 2013 17:16:03 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EqaXRtIdXE2Y; Wed, 6 Mar 2013 17:15:57 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id E48FEA031E; Wed, 6 Mar 2013 17:15:39 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 7618D8F7A4 for ; Wed, 6 Mar 2013 17:15:42 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id A06EC8CFD4 for ; Wed, 6 Mar 2013 17:15:34 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GthFHS39bPcH for ; Wed, 6 Mar 2013 17:15:29 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from m-14.th.seeweb.it (m-14.th.seeweb.it [217.64.195.243]) by whitealder.osuosl.org (Postfix) with ESMTPS id CF0F78D31C for ; Wed, 6 Mar 2013 17:15:27 +0000 (UTC) Received: from wallace.comelit.it (host138-62-static.18-80-b.business.telecomitalia.it [80.18.62.138]) (authenticated bits=0) by m-14.th.seeweb.it (8.14.3/8.14.3/Debian-9.4) with ESMTP id r26HFAd1014520; Wed, 6 Mar 2013 18:15:25 +0100 From: Luca Ceresoli To: buildroot@busybox.net Date: Wed, 6 Mar 2013 18:14:25 +0100 Message-Id: <1362590066-5448-5-git-send-email-luca@lucaceresoli.net> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1362590066-5448-1-git-send-email-luca@lucaceresoli.net> References: <1362590066-5448-1-git-send-email-luca@lucaceresoli.net> Cc: Luca Ceresoli Subject: [Buildroot] [PATCH 4/5] Enable ccache for cmake packages X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net CMake fails in detecting the compiler when ccache is used. Add a wrapper script to make it happy. Signed-off-by: Luca Ceresoli --- Makefile | 2 +- package/pkg-cmake.mk | 31 +++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1300725..f6d8494 100644 --- a/Makefile +++ b/Makefile @@ -387,7 +387,7 @@ $(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) % dirs: $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \ $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR) -$(BASE_TARGETS): dirs $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake +$(BASE_TARGETS): dirs $(CMAKE_PKG_DEPENDENCIES) $(BUILD_DIR)/buildroot-config/auto.conf: $(BUILDROOT_CONFIG) $(MAKE) $(EXTRAMAKEARGS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTCXX="$(HOSTCXX_NOCCACHE)" silentoldconfig diff --git a/package/pkg-cmake.mk b/package/pkg-cmake.mk index 626a0b0..0a44cfe 100644 --- a/package/pkg-cmake.mk +++ b/package/pkg-cmake.mk @@ -183,6 +183,26 @@ cmake-package = $(call inner-cmake-package,$(call pkgname),$(call UPPERCASE,$(ca host-cmake-package = $(call inner-cmake-package,host-$(call pkgname),$(call UPPERCASE,host-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host) ################################################################################ +# Generate wrappers for the compiler. +# If CMAKE_C_COMPILER were set to $(TARGET_CC), which may contanin a ccache +# prefix, CMake would fail to detect the compiler. Generate two simple wrappers +# that make it believe it is calling the compiler directly. +################################################################################ + +CMAKE_CC_WRAPPER = $(HOST_DIR)/usr/bin/cmake-cc-wrapper +CMAKE_CXX_WRAPPER = $(HOST_DIR)/usr/bin/cmake-cxx-wrapper + +$(CMAKE_CC_WRAPPER): + echo "#!/bin/sh" >$@ + echo "$(TARGET_CC)" '$$@' >>$@ + chmod a+x $@ + +$(CMAKE_CXX_WRAPPER): + echo "#!/bin/sh" >$@ + echo "$(TARGET_CXX)" '$$@' >>$@ + chmod a+x $@ + +################################################################################ # Generation of the CMake toolchain file ################################################################################ @@ -190,8 +210,8 @@ $(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 $(CMAKE_CC_WRAPPER))\n\ + set(CMAKE_CXX_COMPILER $(CMAKE_CXX_WRAPPER))\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\" FORCE)\n\ set(CMAKE_INSTALL_SO_NO_EXE 0)\n\ @@ -203,3 +223,10 @@ $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake: set(ENV{PKG_CONFIG_SYSROOT_DIR} \"$(STAGING_DIR)\")\n\ " > $@ +################################################################################ +# dependencies for the top-level Makefile +################################################################################ + +CMAKE_PKG_DEPENDENCIES = \ + $(CMAKE_CC_WRAPPER) $(CMAKE_CXX_WRAPPER) \ + $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake