3fdf0bffb8
We have been passing -q to ./configure when using 'make -s' for packages using Makefile.autotools.in for some time. Do the same for packages using autotools, but not using the Makefile.autotools.in infrastructure, taking care to not do it for packages with hand written configure scripts. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
200 lines
6.6 KiB
Makefile
200 lines
6.6 KiB
Makefile
#############################################################
|
|
#
|
|
# build ccache to make recompiles faster on the build system
|
|
#
|
|
#############################################################
|
|
CCACHE_VER:=2.4
|
|
CCACHE_SITE:=http://samba.org/ftp/ccache
|
|
CCACHE_SOURCE:=ccache-$(CCACHE_VER).tar.gz
|
|
CCACHE_DIR1:=$(TOOLCHAIN_DIR)/ccache-$(CCACHE_VER)
|
|
CCACHE_DIR2:=$(BUILD_DIR)/ccache-$(CCACHE_VER)
|
|
CCACHE_CAT:=$(ZCAT)
|
|
CCACHE_BINARY:=ccache
|
|
CCACHE_TARGET_BINARY:=usr/bin/ccache
|
|
|
|
$(DL_DIR)/$(CCACHE_SOURCE):
|
|
$(call DOWNLOAD,$(CCACHE_SITE),$(CCACHE_SOURCE))
|
|
|
|
$(CCACHE_DIR1)/.unpacked: $(DL_DIR)/$(CCACHE_SOURCE)
|
|
$(CCACHE_CAT) $(DL_DIR)/$(CCACHE_SOURCE) | tar -C $(TOOLCHAIN_DIR) $(TAR_OPTIONS) -
|
|
touch $@
|
|
|
|
$(CCACHE_DIR1)/.patched: $(CCACHE_DIR1)/.unpacked
|
|
# WARNING - this will break if the toolchain is moved.
|
|
# Should probably patch things to use a relative path.
|
|
$(SED) "s,getenv(\"CCACHE_PATH\"),\"$(STAGING_DIR)/usr/bin-ccache\",g" \
|
|
$(CCACHE_DIR1)/execute.c
|
|
# WARNING - this will break if the toolchain build dir is deleted
|
|
# when using the default cache dir location.
|
|
$(SED) "s,getenv(\"CCACHE_DIR\"),\"$(BR2_CCACHE_DIR)\",g" \
|
|
$(CCACHE_DIR1)/ccache.c
|
|
mkdir -p $(CCACHE_DIR1)/cache
|
|
$(CONFIG_UPDATE) $(@D)
|
|
touch $@
|
|
|
|
$(CCACHE_DIR1)/.configured: $(CCACHE_DIR1)/.patched
|
|
mkdir -p $(CCACHE_DIR1)
|
|
(cd $(CCACHE_DIR1); rm -rf config.cache; \
|
|
CC="$(HOSTCC)" \
|
|
$(CCACHE_DIR1)/configure $(QUIET) \
|
|
--target=$(GNU_HOST_NAME) \
|
|
--host=$(GNU_HOST_NAME) \
|
|
--build=$(GNU_HOST_NAME) \
|
|
--prefix=/usr \
|
|
$(QUIET) \
|
|
)
|
|
touch $@
|
|
|
|
$(CCACHE_DIR1)/$(CCACHE_BINARY): $(CCACHE_DIR1)/.configured
|
|
$(MAKE) CC="$(HOSTCC)" -C $(CCACHE_DIR1)
|
|
|
|
$(STAGING_DIR)/$(CCACHE_TARGET_BINARY): $(CCACHE_DIR1)/$(CCACHE_BINARY)
|
|
mkdir -p $(STAGING_DIR)/usr/bin
|
|
cp $(CCACHE_DIR1)/ccache $(STAGING_DIR)/usr/bin
|
|
# Keep the actual toolchain binaries in a directory at the same level.
|
|
# Otherwise, relative paths for include dirs break.
|
|
mkdir -p $(STAGING_DIR)/usr/bin-ccache
|
|
(cd $(STAGING_DIR)/usr/bin-ccache; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-gcc $(GNU_TARGET_NAME)-gcc; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-gcc $(GNU_TARGET_NAME)-cc; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-gcc $(REAL_GNU_TARGET_NAME)-cc; \
|
|
)
|
|
[ -f $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc ] && \
|
|
mv $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc \
|
|
$(STAGING_DIR)/usr/bin-ccache/
|
|
(cd $(STAGING_DIR)/usr/bin; \
|
|
ln -fs ccache $(GNU_TARGET_NAME)-cc; \
|
|
ln -fs ccache $(GNU_TARGET_NAME)-gcc; \
|
|
ln -fs ccache $(REAL_GNU_TARGET_NAME)-cc; \
|
|
ln -fs ccache $(REAL_GNU_TARGET_NAME)-gcc; \
|
|
)
|
|
ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
|
|
[ -f $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-c++ ] && \
|
|
mv $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-c++ \
|
|
$(STAGING_DIR)/usr/bin-ccache/
|
|
[ -f $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-g++ ] && \
|
|
mv $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-g++ \
|
|
$(STAGING_DIR)/usr/bin-ccache/
|
|
(cd $(STAGING_DIR)/usr/bin; \
|
|
ln -fs ccache $(GNU_TARGET_NAME)-c++; \
|
|
ln -fs ccache $(GNU_TARGET_NAME)-g++;\
|
|
ln -fs ccache $(REAL_GNU_TARGET_NAME)-c++; \
|
|
ln -fs ccache $(REAL_GNU_TARGET_NAME)-g++; \
|
|
)
|
|
(cd $(STAGING_DIR)/usr/bin-ccache; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-c++ $(GNU_TARGET_NAME)-c++; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-g++ $(GNU_TARGET_NAME)-g++; \
|
|
)
|
|
endif
|
|
|
|
ccache: gcc $(STAGING_DIR)/$(CCACHE_TARGET_BINARY)
|
|
|
|
ccache-clean:
|
|
rm -rf $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-cc
|
|
rm -rf $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-gcc
|
|
rm -rf $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-cc
|
|
rm -rf $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc
|
|
if [ -f $(STAGING_DIR)/usr/bin-ccache/$(REAL_GNU_TARGET_NAME)-gcc ]; then \
|
|
mv $(STAGING_DIR)/usr/bin-ccache/$(REAL_GNU_TARGET_NAME)-gcc \
|
|
$(STAGING_DIR)/usr/bin/; \
|
|
(cd $(STAGING_DIR)/usr/bin; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-gcc \
|
|
$(REAL_GNU_TARGET_NAME)-cc; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-gcc \
|
|
$(GNU_TARGET_NAME)-cc; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-gcc \
|
|
$(GNU_TARGET_NAME)-gcc; \
|
|
); \
|
|
fi
|
|
if [ -f $(STAGING_DIR)/usr/bin-ccache/$(REAL_GNU_TARGET_NAME)-c++ ]; then \
|
|
rm -f $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-c++; \
|
|
mv $(STAGING_DIR)/usr/bin-ccache/$(REAL_GNU_TARGET_NAME)-c++ \
|
|
$(STAGING_DIR)/usr/bin/; \
|
|
fi
|
|
if [ -f $(STAGING_DIR)/usr/bin-ccache/$(REAL_GNU_TARGET_NAME)-g++ ]; then \
|
|
rm -f $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-g++; \
|
|
mv $(STAGING_DIR)/usr/bin-ccache/$(REAL_GNU_TARGET_NAME)-g++ \
|
|
$(STAGING_DIR)/usr/bin/; \
|
|
fi
|
|
rm -rf $(STAGING_DIR)/usr/bin-ccache/*
|
|
(cd $(STAGING_DIR)/usr/bin; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-g++ $(GNU_TARGET_NAME)-c++; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-g++ $(GNU_TARGET_NAME)-g++; \
|
|
ln -fs $(REAL_GNU_TARGET_NAME)-g++ $(REAL_GNU_TARGET_NAME)-c++; \
|
|
)
|
|
-$(MAKE) -C $(CCACHE_DIR1) clean
|
|
|
|
ccache-dirclean:
|
|
rm -rf $(CCACHE_DIR1)
|
|
|
|
|
|
|
|
|
|
#############################################################
|
|
#
|
|
# build ccache for use on the target system
|
|
#
|
|
#############################################################
|
|
|
|
$(CCACHE_DIR2)/.unpacked: $(DL_DIR)/$(CCACHE_SOURCE)
|
|
$(CCACHE_CAT) $(DL_DIR)/$(CCACHE_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
|
|
touch $@
|
|
|
|
$(CCACHE_DIR2)/.patched: $(CCACHE_DIR2)/.unpacked
|
|
touch $@
|
|
|
|
$(CCACHE_DIR2)/.configured: $(CCACHE_DIR2)/.patched
|
|
mkdir -p $(CCACHE_DIR2)
|
|
(cd $(CCACHE_DIR2); rm -rf config.cache; \
|
|
$(TARGET_CONFIGURE_OPTS) \
|
|
$(CCACHE_DIR2)/configure $(QUIET) \
|
|
--target=$(GNU_TARGET_NAME) \
|
|
--host=$(GNU_TARGET_NAME) \
|
|
--build=$(GNU_HOST_NAME) \
|
|
--prefix=/usr \
|
|
--sysconfdir=/etc \
|
|
$(DISABLE_NLS) \
|
|
$(QUIET) \
|
|
)
|
|
touch $@
|
|
|
|
$(CCACHE_DIR2)/$(CCACHE_BINARY): $(CCACHE_DIR2)/.configured
|
|
$(MAKE) -C $(CCACHE_DIR2) CFLAGS="$(TARGET_CFLAGS)"
|
|
|
|
$(TARGET_DIR)/$(CCACHE_TARGET_BINARY): $(CCACHE_DIR2)/$(CCACHE_BINARY)
|
|
$(MAKE) DESTDIR=$(TARGET_DIR) -C $(CCACHE_DIR2) install
|
|
ifneq ($(BR2_HAVE_MANPAGES),y)
|
|
rm -rf $(TARGET_DIR)/usr/man
|
|
endif
|
|
# put a bunch of symlinks into /bin, since that is earlier
|
|
# in the default PATH than /usr/bin where gcc lives
|
|
(cd $(TARGET_DIR)/bin; \
|
|
ln -fs /usr/bin/ccache cc; \
|
|
ln -fs /usr/bin/ccache gcc; \
|
|
ln -fs /usr/bin/ccache c++; \
|
|
ln -fs /usr/bin/ccache g++; \
|
|
)
|
|
|
|
ccache_target: uclibc $(TARGET_DIR)/$(CCACHE_TARGET_BINARY)
|
|
|
|
ccache_target-sources: $(DL_DIR)/$(CCACHE_SOURCE)
|
|
|
|
ccache_target-clean:
|
|
rm -f $(TARGET_DIR)/$(CCACHE_TARGET_BINARY) \
|
|
$(addprefix $(TARGET_DIR)/bin/,cc gcc c++ g++)
|
|
-$(MAKE) -C $(CCACHE_DIR2) clean
|
|
|
|
ccache_target-dirclean:
|
|
rm -rf $(CCACHE_DIR2)
|
|
#############################################################
|
|
#
|
|
# Toplevel Makefile options
|
|
#
|
|
#############################################################
|
|
ifeq ($(BR2_CCACHE),y)
|
|
TARGETS+=ccache
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_CCACHE_TARGET),y)
|
|
TARGETS+=ccache_target
|
|
endif
|