You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
4.3 KiB

################################################################################
#
# crosstool-ng
#
################################################################################
CROSSTOOL_NG_VERSION = git
CROSSTOOL_NG_DIR = crosstool-ng.$(CROSSTOOL_NG_VERSION)
CROSSTOOL_NG_SOURCE = crosstool-ng.$(CROSSTOOL_NG_VERSION)
CROSSTOOL_NG_SITE = https://github.com/crosstool-ng
CROSSTOOL_NG_DEPENDENCIES = kernel-tarball kernel-headers
CROSSTOOL_NG_CHECKOUT = tags/crosstool-ng-1.25.0
CROSSTOOL_NG_CONFIG = $(PKG_FILES_DIR)/crosstool-ng-$(BOXTYPE).config
CROSSTOOL_NG_BUILD_CONFIG = $(PKG_BUILD_DIR)/.config
CROSSTOOL_NG_UNSET = \
CONFIG_SITE \
CPATH \
CPLUS_INCLUDE_PATH \
C_INCLUDE_PATH \
INCLUDE \
LD_LIBRARY_PATH \
LIBRARY_PATH \
PKG_CONFIG_PATH
CROSSTOOL_NG_EXPORT = \
BS_LOCAL_TARBALLS_DIR=$(DL_DIR) \
BS_PREFIX_DIR=$(CROSS_DIR) \
BS_LINUX_CUSTOM_LOCATION=$(BUILD_DIR)/$(KERNEL_DIR)
# begin coolstream
ifeq ($(BOXTYPE),coolstream)
CROSSTOOL_NG_CHECKOUT = 1dbb06f2
CROSSTOOL_NG_CONFIG = $(PKG_FILES_DIR)/crosstool-ng-$(BOXTYPE)-$(BOXSERIES).config
CROSSTOOL_NG_EXPORT += \
LD_LIBRARY_PATH= \
BS_KERNEL_VERSION=$(KERNEL_VERSION) \
BS_KERNEL_LOCATION=$(KERNEL_TARBALL) \
BS_KERNEL_HEADERS=$(KERNEL_HEADERS_DIR) \
# crosstool-ng for cst hd1 uses external gcc-linaro 4.9-2017.01
ifeq ($(BOXSERIES),$(filter $(BOXSERIES),hd1))
GCC_LINARO_VERSION = 4.9-2017.01
GCC_LINARO_SOURCE = gcc-linaro-$(GCC_LINARO_VERSION).tar.xz
GCC_LINARO_SITE = https://releases.linaro.org/components/toolchain/gcc-linaro/$(GCC_LINARO_VERSION)
define CROSSTOOL_NG_DOWNLOAD_LINARO_4_9
$(GET_ARCHIVE) $(DL_DIR) $(GCC_LINARO_SITE)/$(GCC_LINARO_SOURCE)
endef
CROSSTOOL_NG_POST_DOWNLOAD_HOOKS += CROSSTOOL_NG_DOWNLOAD_LINARO_4_9
endif
# crosstool-ng for cst hd2 uses uclibc-ng 1.0.24
ifeq ($(BOXSERIES),$(filter $(BOXSERIES),hd2))
UCLIBC_NG_VERSION = 1.0.24
CROSSTOOL_NG_EXPORT += \
BS_LIBC_UCLIBC_CONFIG_FILE=$(PKG_FILES_DIR)/uclibc-ng-$(UCLIBC_NG_VERSION).config
define CROSSTOOL_NG_INSTALL_PATCHES
$(INSTALL_COPY) $(PKG_PATCHES_DIR)/gcc/* $(PKG_BUILD_DIR)/patches/gcc/linaro-6.3-2017.02
endef
CROSSTOOL_NG_POST_PATCH_HOOKS += CROSSTOOL_NG_INSTALL_PATCHES
endif
define CROSSTOOL_NG_CLEANUP_COOLSTREAM
test -e $(CROSS_DIR)/$(TARGET)/lib && \
mv $(CROSS_DIR)/$(TARGET)/lib $(CROSS_DIR)/$(TARGET)/lib.x
endef
CROSSTOOL_NG_CLEANUP_HOOKS += CROSSTOOL_NG_CLEANUP_COOLSTREAM
endif
# end coolstream
define CROSSTOOL_NG_CLEANUP_COMMON
test -e $(CROSS_DIR)/$(TARGET)/lib || \
ln -sf sys-root/lib $(CROSS_DIR)/$(TARGET)/
rm -f $(CROSS_DIR)/$(TARGET)/sys-root/lib/libstdc++.so.6.0.*-gdb.py
endef
CROSSTOOL_NG_CLEANUP_HOOKS += CROSSTOOL_NG_CLEANUP_COMMON
define CROSSTOOL_NG_INSTALL_CONFIG
$(INSTALL_DATA) $(CROSSTOOL_NG_CONFIG) $(CROSSTOOL_NG_BUILD_CONFIG)
$(SED) "s|^CT_PARALLEL_JOBS=.*|CT_PARALLEL_JOBS=$(PARALLEL_JOBS)|" $(CROSSTOOL_NG_BUILD_CONFIG)
endef
CROSSTOOL_NG_POST_PATCH_HOOKS += CROSSTOOL_NG_INSTALL_CONFIG
define CROSSTOOL_NG_DISTRIBUTE_CONFIG
$(INSTALL_DATA) $(CROSSTOOL_NG_BUILD_CONFIG) $(CROSSTOOL_NG_CONFIG)
$(SED) "s|^CT_PARALLEL_JOBS=.*|CT_PARALLEL_JOBS=0|" $(CROSSTOOL_NG_CONFIG)
@$(call MESSAGE,"Commit your changes in $(CROSSTOOL_NG_CONFIG)")
endef
# -----------------------------------------------------------------------------
crosstool-ng.do_prepare: | $(DEPS_DIR) $(BUILD_DIR)
$(call PREPARE)
$(CHDIR)/$($(PKG)_DIR); \
unset $($(PKG)_UNSET); \
export $($(PKG)_EXPORT); \
test -f ./configure || ./bootstrap; \
./configure --enable-local; \
MAKELEVEL=0 make
$(call TOUCH)
crosstool-ng.do_compile: crosstool-ng.do_prepare
$(CHDIR)/$($(PKG)_DIR); \
unset $($(PKG)_UNSET); \
export $($(PKG)_EXPORT); \
./ct-ng oldconfig; \
./ct-ng build
$(call TOUCH)
# -----------------------------------------------------------------------------
# upgradeconfig doesn't work for coolstream; crosstool-ng 1dbb06f2 is too old
crosstool-ng.menuconfig \
crosstool-ng.upgradeconfig: crosstool-ng.do_prepare
$(CHDIR)/$($(PKG)_DIR); \
unset $($(PKG)_UNSET); \
export $($(PKG)_EXPORT); \
./ct-ng $(subst crosstool-ng.,,$(@))
$(CROSSTOOL_NG_DISTRIBUTE_CONFIG)
# -----------------------------------------------------------------------------
ifeq ($(wildcard $(CROSS_DIR)/build.log.bz2),)
crosstool-ng: crosstool-ng.do_compile
$(foreach hook,$($(PKG)_CLEANUP_HOOKS),$(call $(hook))$(sep))
else
crosstool-ng:
endif