3ad3d8a1d8
1) Allow selection of binutils/gcc/gdb/kernel headers to build, although some of the older tool patches probably need updating. 2) Rework gdb build so that remote debugging now works with gdbserver. 3) Misc. other package updates.3) Misc. other package updates.3) Misc. other package updates.
149 lines
5.1 KiB
Makefile
149 lines
5.1 KiB
Makefile
#############################################################
|
|
#
|
|
# build ccache to make recompiles faster on the build system
|
|
#
|
|
#############################################################
|
|
CCACHE_SITE:=http://ccache.samba.org/ftp/ccache
|
|
CCACHE_SOURCE:=ccache-2.3.tar.gz
|
|
CCACHE_DIR1:=$(TOOL_BUILD_DIR)/ccache-2.3
|
|
CCACHE_DIR2:=$(BUILD_DIR)/ccache-2.3
|
|
CCACHE_CAT:=zcat
|
|
CCACHE_BINARY:=ccache
|
|
CCACHE_TARGET_BINARY:=usr/bin/ccache
|
|
|
|
$(DL_DIR)/$(CCACHE_SOURCE):
|
|
$(WGET) -P $(DL_DIR) $(CCACHE_SITE)/$(CCACHE_SOURCE)
|
|
|
|
$(CCACHE_DIR1)/.unpacked: $(DL_DIR)/$(CCACHE_SOURCE)
|
|
$(CCACHE_CAT) $(DL_DIR)/$(CCACHE_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf -
|
|
touch $(CCACHE_DIR1)/.unpacked
|
|
|
|
$(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)/bin-ccache\",g" \
|
|
$(CCACHE_DIR1)/execute.c
|
|
# WARNING - this will break if the toolchain build dir is deleted.
|
|
$(SED) "s,getenv(\"CCACHE_DIR\"),\"$(CCACHE_DIR1)/cache\",g" \
|
|
$(CCACHE_DIR1)/ccache.c
|
|
mkdir -p $(CCACHE_DIR1)/cache
|
|
touch $(CCACHE_DIR1)/.patched
|
|
|
|
$(CCACHE_DIR1)/.configured: $(CCACHE_DIR1)/.patched
|
|
mkdir -p $(CCACHE_DIR1)
|
|
(cd $(CCACHE_DIR1); rm -rf config.cache; \
|
|
CC=$(HOSTCC) \
|
|
$(CCACHE_DIR1)/configure \
|
|
--target=$(GNU_HOST_NAME) \
|
|
--host=$(GNU_HOST_NAME) \
|
|
--build=$(GNU_HOST_NAME) \
|
|
--prefix=/usr \
|
|
);
|
|
touch $(CCACHE_DIR1)/.configured
|
|
|
|
$(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)/bin-ccache;
|
|
(cd $(STAGING_DIR)/bin-ccache; \
|
|
ln -fs $(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc $(OPTIMIZE_FOR_CPU)-linux-gcc; \
|
|
ln -fs $(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc $(OPTIMIZE_FOR_CPU)-linux-cc; \
|
|
ln -fs $(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc $(OPTIMIZE_FOR_CPU)-linux-uclibc-cc);
|
|
[ -f $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc ] && \
|
|
mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc $(STAGING_DIR)/bin-ccache/
|
|
(cd $(STAGING_DIR)/bin; \
|
|
ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-cc; \
|
|
ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-gcc; \
|
|
ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-uclibc-cc; \
|
|
ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-uclibc-gcc);
|
|
ifeq ($(INSTALL_LIBSTDCPP),true)
|
|
[ -f $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-c++ ] && \
|
|
mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-c++ $(STAGING_DIR)/bin-ccache/
|
|
[ -f $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-g++ ] && \
|
|
mv $(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-g++ $(STAGING_DIR)/bin-ccache/
|
|
(cd $(STAGING_DIR)/bin; \
|
|
ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-c++; \
|
|
ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-g++;\
|
|
ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-uclibc-c++; \
|
|
ln -fs ../usr/bin/ccache $(OPTIMIZE_FOR_CPU)-linux-uclibc-g++);
|
|
endif
|
|
|
|
ccache: gcc $(STAGING_DIR)/$(CCACHE_TARGET_BINARY)
|
|
|
|
ccache-clean:
|
|
$(MAKE) -C $(CCACHE_DIR1) uninstall
|
|
-$(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) -xvf -
|
|
touch $(CCACHE_DIR2)/.unpacked
|
|
|
|
$(CCACHE_DIR2)/.patched: $(CCACHE_DIR2)/.unpacked
|
|
touch $(CCACHE_DIR2)/.patched
|
|
|
|
$(CCACHE_DIR2)/.configured: $(CCACHE_DIR2)/.patched
|
|
mkdir -p $(CCACHE_DIR2)
|
|
(cd $(CCACHE_DIR2); rm -rf config.cache; \
|
|
$(TARGET_CONFIGURE_OPTS) \
|
|
$(CCACHE_DIR2)/configure \
|
|
--target=$(GNU_TARGET_NAME) \
|
|
--host=$(GNU_TARGET_NAME) \
|
|
--build=$(GNU_HOST_NAME) \
|
|
--prefix=/usr \
|
|
--exec-prefix=/usr \
|
|
--bindir=/usr/bin \
|
|
--sbindir=/usr/sbin \
|
|
--libexecdir=/usr/lib \
|
|
--sysconfdir=/etc \
|
|
--datadir=/usr/share \
|
|
--localstatedir=/var \
|
|
--mandir=/usr/man \
|
|
--infodir=/usr/info \
|
|
$(DISABLE_NLS) \
|
|
);
|
|
touch $(CCACHE_DIR2)/.configured
|
|
|
|
$(CCACHE_DIR2)/$(CCACHE_BINARY): $(CCACHE_DIR2)/.configured
|
|
$(MAKE) -C $(CCACHE_DIR2)
|
|
|
|
$(TARGET_DIR)/$(CCACHE_TARGET_BINARY): $(CCACHE_DIR2)/$(CCACHE_BINARY)
|
|
$(MAKE) DESTDIR=$(TARGET_DIR) -C $(CCACHE_DIR2) install
|
|
rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
|
|
$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
|
|
# 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:
|
|
$(MAKE) DESTDIR=$(TARGET_DIR) -C $(CCACHE_DIR2) uninstall
|
|
-$(MAKE) -C $(CCACHE_DIR2) clean
|
|
|
|
ccache_target-dirclean:
|
|
rm -rf $(CCACHE_DIR2)
|
|
|