On Wed, 2006-11-01 at 11:30 +0000, Thorsten Glaser wrote:
> Lothar Gesslein dixit:
> 
> >I just know enough happy users and am one myself. It is used for whole
> >projects and distributions. It is nothing new or hightech, i'd rate it
> >quite mature and well-known. I think it "just works (TM)".
> 
> This is probably the experience of most people, but once you have spent
> hours trying to look for bugs in code which turned out to be bugs in gcc…
> 
> >If it does not work as expected, it just fails to build.
> 
> This sentence is easily proven wrong. (Hint: Try rtorrent with
> -fomit-frame-pointer for once. Or joe-editor, although that one
> broke for only search'n'replace for me, and even that only for
> a few files.)

Theese bugs are caused by gcc, not ccache. Ccache doesn't mind what the
compiler produces, it just caches it and reuses it when you rebuild the
exact same thing with the exact same compiler.
I don't say it can't produce errors, i just say it's so safe and errors
are so rare, that not using it for everydays compile, just because of
the theoretical error it could produce, is not reasonable.
If it comes to debugging, yeah, clearly, disable it.

I've attached the changes that were necessary for building the packet
selection i use for my router at the moment. I'm about to do a "all
available packets" build and fix everything needed for that. May take
some time, though 0o

As i'm not that sure what the consequences of prefixing KERNEL_CROSS
with ccache are, i've disable this again. (This disables ccache for the
kernel compile, too.)

If no one votes against it, i'll check this in when my account is done.
It defaults to no and states that it's not working for most packages, so
it should be fine.

-- 
Lothar Gesslein <[EMAIL PROTECTED]>
Index: target/image/brcm/lzma-loader/Makefile
===================================================================
--- target/image/brcm/lzma-loader/Makefile	(revision 1035)
+++ target/image/brcm/lzma-loader/Makefile	(working copy)
@@ -17,7 +17,7 @@
 	touch $@
 
 $(PKG_BUILD_DIR)/loader.gz: $(PKG_BUILD_DIR)/.prepared
-	$(MAKE) -C $(PKG_BUILD_DIR) CC=$(TARGET_CC) \
+	$(MAKE) -C $(PKG_BUILD_DIR) CC="$(TARGET_CC)" \
 		LD=$(TARGET_CROSS)ld CROSS_COMPILE=$(TARGET_CROSS)
 
 $(BUILD_DIR)/loader.gz: $(PKG_BUILD_DIR)/loader.gz
Index: package/iptables/Makefile
===================================================================
--- package/iptables/Makefile	(revision 1035)
+++ package/iptables/Makefile	(working copy)
@@ -66,7 +66,7 @@
 	chmod a+x $(WRKBUILD)/extensions/.*-test*
 	$(MAKE) -C $(WRKBUILD) \
 		$(TARGET_CONFIGURE_OPTS) \
-		CC=$(TARGET_CC) COPT_FLAGS="$(TARGET_CFLAGS)" \
+		CC="$(TARGET_CC)" COPT_FLAGS="$(TARGET_CFLAGS)" \
 		KERNEL_DIR=$(LINUX_DIR) PREFIX=/usr \
 		DESTDIR="$(WRKINST)" \
 		all install install-devel
@@ -107,7 +107,7 @@
 $(STAGING_DIR)/usr/lib/libipq.a: $(WRKBUILD)/.built
 	$(MAKE) -C $(WRKBUILD) \
 		$(TARGET_CONFIGURE_OPTS) \
-		CC=$(TARGET_CC) COPT_FLAGS="$(TARGET_CFLAGS)" \
+		CC="$(TARGET_CC)" COPT_FLAGS="$(TARGET_CFLAGS)" \
 		KERNEL_DIR=$(LINUX_DIR) PREFIX=/usr \
 		DESTDIR="$(STAGING_DIR)" \
 		install install-devel
Index: package/busybox/Makefile
===================================================================
--- package/busybox/Makefile	(revision 1035)
+++ package/busybox/Makefile	(working copy)
@@ -21,16 +21,16 @@
 
 $(WRKBUILD)/.configured:
 	$(SCRIPT_DIR)/gen_busybox_config.pl $(TOPDIR)/.config > $(WRKBUILD)/.config
-	yes '' | $(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" -C $(WRKBUILD) oldconfig
+	yes '' | $(MAKE) CC="$(TARGET_CC)" CROSS="$(TARGET_CROSS)" -C $(WRKBUILD) oldconfig
 	touch $@
 
 $(WRKBUILD)/.built:
-	$(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" PREFIX="$(IDIR_BUSYBOX)" \
+	$(MAKE) CC="$(TARGET_CC)" CROSS="$(TARGET_CROSS)" PREFIX="$(IDIR_BUSYBOX)" \
 		EXTRA_CFLAGS="$(TARGET_CFLAGS)" ARCH="$(ARCH)" -C $(WRKBUILD)
 	touch $@
 
 $(IPKG_BUSYBOX):
-	$(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" PREFIX="$(IDIR_BUSYBOX)" \
+	$(MAKE) CC="$(TARGET_CC)" CROSS="$(TARGET_CROSS)" PREFIX="$(IDIR_BUSYBOX)" \
 		EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(WRKBUILD) install
 	$(INSTALL_DIR) $(IDIR_BUSYBOX)/etc/init.d/
 	$(INSTALL_BIN) ./files/syslog.init \
Index: package/ppp/Makefile
===================================================================
--- package/ppp/Makefile	(revision 1035)
+++ package/ppp/Makefile	(working copy)
@@ -73,7 +73,7 @@
 	rm -rf $(WRKINST)
 	mkdir -p $(WRKINST)/usr
 	$(MAKE) -C $(WRKBUILD) \
-		CC=$(TARGET_CC) \
+		CC="$(TARGET_CC)" \
 		COPTS="$(TARGET_CFLAGS)" \
 		HAVE_INET6="1" \
 		$(ENABLE_FILTER) \
Index: package/Config.in
===================================================================
--- package/Config.in	(revision 1035)
+++ package/Config.in	(working copy)
@@ -369,6 +369,18 @@
 
 source "package/mypackage/Config.in"
 
+config FWRT_USE_CCACHE
+	bool "Use ccache to speed up re-compilation (NOT WORKING FOR MOST PACKAGES)"
+	default n
+	help
+	  ccache is a compiler cache. It speeds up re-compilation of C/C++ code
+	  by caching previous compiles and detecting when the same compile is
+	  being done again.
+	  Requires ccache on your build machine.
+	  The default cache dir "$HOME/.ccache" is used unless otherwise
+	  specified in the CCACHE_DIR environment variable.
+	  You'll need ccache on the host system!
+
 source "package/Config.in.runtime"
 
 endmenu
Index: package/ntpclient/Makefile
===================================================================
--- package/ntpclient/Makefile	(revision 1035)
+++ package/ntpclient/Makefile	(working copy)
@@ -25,7 +25,7 @@
 
 $(WRKBUILD)/.built:
 	$(MAKE) -C $(WRKBUILD) \
-		CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS)"
+		CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)"
 	touch $@
 
 $(IPKG_NTPCLIENT):
Index: package/dnsmasq/Makefile
===================================================================
--- package/dnsmasq/Makefile	(revision 1035)
+++ package/dnsmasq/Makefile	(working copy)
@@ -24,7 +24,7 @@
 
 $(WRKBUILD)/.built:
 	$(MAKE) -C $(WRKBUILD) \
-		CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS)" \
+		CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \
 		BINDIR=/usr/sbin MANDIR=/usr/man
 	touch $@
 
Index: package/dropbear/Makefile
===================================================================
--- package/dropbear/Makefile	(revision 1035)
+++ package/dropbear/Makefile	(working copy)
@@ -65,11 +65,11 @@
 
 $(WRKBUILD)/.built:
 	$(MAKE) -C $(WRKBUILD) \
-		LD=$(TARGET_CC) \
+		LD="$(TARGET_CC)" \
 		PROGRAMS="dropbear dbclient dropbearkey scp" \
 		MULTI=1 SCPPROGRESS=1
 	$(MAKE) -C $(WRKBUILD) \
-		LD=$(TARGET_CC) \
+		LD="$(TARGET_CC)" \
 		PROGRAMS="dropbearconvert"
 	touch $@
 
Index: package/vim/Makefile
===================================================================
--- package/vim/Makefile	(revision 1035)
+++ package/vim/Makefile	(working copy)
@@ -54,7 +54,7 @@
 
 $(WRKBUILD)/.built: $(WRKBUILD)/.configured
 	$(MAKE) -C $(WRKBUILD) \
-		CC=$(TARGET_CC)
+		CC="$(TARGET_CC)"
 	touch $@
 
 $(IPKG_VIM): 
Index: mk/vars.mk
===================================================================
--- mk/vars.mk	(revision 1035)
+++ mk/vars.mk	(working copy)
@@ -38,6 +38,12 @@
 KERNEL_CROSS:=		$(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-
 TARGET_CROSS:=		$(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-
 TARGET_CC:=		$(TARGET_CROSS)gcc
+TARGET_CXX:=		$(TARGET_CROSS)g++
+ifneq ($(FWRT_USE_CCACHE),)
+#KERNEL_CROSS:=		ccache $(KERNEL_CROSS)
+TARGET_CC:=		ccache $(TARGET_CROSS)gcc
+TARGET_CXX:=		ccache $(TARGET_CROSS)g++
+endif
 STRIP:=			$(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-strip
 PATCH=			$(SCRIPT_DIR)/patch-kernel.sh
 SED:=			$(STAGING_DIR)/bin/sed -i -e
@@ -49,9 +55,9 @@
 			AS=$(TARGET_CROSS)as \
 			LD=$(TARGET_CROSS)ld \
 			NM=$(TARGET_CROSS)nm \
-			CC=$(TARGET_CROSS)gcc \
-			GCC=$(TARGET_CROSS)gcc \
-			CXX=$(TARGET_CROSS)g++ \
+			CC="$(TARGET_CC)" \
+			GCC="$(TARGET_CC)" \
+			CXX="$(TARGET_CXX)" \
 			RANLIB=$(TARGET_CROSS)ranlib
 
 # invoke ipkg-build with some default options

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
freewrt-developers mailing list
[email protected]
https://www.freewrt.org/lists/listinfo/freewrt-developers

Reply via email to