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
signature.asc
Description: This is a digitally signed message part
_______________________________________________ freewrt-developers mailing list [email protected] https://www.freewrt.org/lists/listinfo/freewrt-developers
