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.
 
 
 
 
 
 

164 lines
5.4 KiB

# makefile to setup and initialize the final buildsystem
BOOTSTRAP = targetprefix $(D) $(BUILD_TMP) $(CROSS_DIR) $(STAGING_DIR) $(IMAGE_DIR) $(UPDATE_DIR) $(HOSTPREFIX)/bin includes-and-libs modules host-preqs
BOOTSTRAP += $(TARGETLIB)/libc.so.6
ifeq ($(BOXSERIES), hd2)
BOOTSTRAP += static blobs
endif
PLAT_INCS = $(TARGETLIB)/firmware
PLAT_LIBS = $(TARGETLIB) $(STATICLIB)
bootstrap: $(BOOTSTRAP)
@echo -e "$(TERM_YELLOW)Bootstrapped for $(shell echo $(BOXMODEL) | sed 's/.*/\u&/')$(TERM_NORMAL)"
skeleton: | $(TARGETPREFIX)
cp --remove-destination -a $(SKEL_ROOT)/* $(TARGETPREFIX)/
if [ -d $(SKEL_ROOT)-$(BOXFAMILY)/ ]; then \
cp -a $(SKEL_ROOT)-$(BOXFAMILY)/* $(TARGETPREFIX)/; \
fi
if [ -d $(STATIC_DIR)/ ]; then \
cp -a $(STATIC_DIR)/* $(TARGETPREFIX)/; \
fi
targetprefix:
mkdir -p $(TARGETPREFIX)
mkdir -p $(TARGETPREFIX)/bin
mkdir -p $(TARGETINCLUDE)
mkdir -p $(PKG_CONFIG_PATH)
make skeleton
$(TARGETPREFIX):
@echo "**********************************************************************"
@echo "TARGETPREFIX does not exist. You probably need to run 'make bootstrap'"
@echo "**********************************************************************"
@echo ""
@false
$(D) \
$(BUILD_TMP) \
$(CROSS_DIR) \
$(STAGING_DIR) \
$(IMAGE_DIR) \
$(UPDATE_DIR) \
$(HOSTPREFIX):
mkdir -p $@
$(HOSTPREFIX)/bin: $(HOSTPREFIX)
mkdir -p $@
$(STATICLIB):
mkdir -p $@
$(TARGETLIB)/firmware: | $(TARGETPREFIX)
mkdir -p $@
cp -a $(SOURCE_DIR)/$(NI_DRIVERS-BIN)/$(DRIVERS_DIR)/firmware/* $@/
$(TARGETLIB): | $(TARGETPREFIX)
mkdir -p $@
cp -a $(SOURCE_DIR)/$(NI_DRIVERS-BIN)/$(DRIVERS_DIR)/libs/* $@
$(TARGETLIB)/modules: | $(TARGETPREFIX)
mkdir -p $@
cp -a $(SOURCE_DIR)/$(NI_DRIVERS-BIN)/$(DRIVERS_DIR)/drivers/$(KVERSION_FULL) $@/
$(TARGETLIB)/libc.so.6: | $(TARGETPREFIX)
if test -e $(CROSS_DIR)/$(TARGET)/sys-root/lib; then \
cp -a $(CROSS_DIR)/$(TARGET)/sys-root/lib/*so* $(TARGETLIB); \
else \
cp -a $(CROSS_DIR)/$(TARGET)/lib/*so* $(TARGETLIB); \
fi
$(TARGETPREFIX)/var/update: | $(TARGETPREFIX)
mkdir -p $@
cp -a $(SOURCE_DIR)/$(NI_DRIVERS-BIN)/$(DRIVERS_DIR)/uldr.bin $@/
ifeq ($(BOXMODEL), kronos_v2)
cp -a $(SOURCE_DIR)/$(NI_DRIVERS-BIN)/$(DRIVERS_DIR)/u-boot.bin.link $@/u-boot.bin
else
cp -a $(SOURCE_DIR)/$(NI_DRIVERS-BIN)/$(DRIVERS_DIR)/u-boot.bin $@/
endif
includes-and-libs: $(PLAT_INCS) $(PLAT_LIBS)
modules: $(TARGETLIB)/modules
blobs: $(TARGETPREFIX)/var/update
# helper target to create ccache links (make sure to have ccache installed in /usr/bin ;)
ccache: find-ccache $(CCACHE) $(HOSTPREFIX)/bin
@ln -sf $(CCACHE) $(HOSTPREFIX)/bin/cc
@ln -sf $(CCACHE) $(HOSTPREFIX)/bin/gcc
@ln -sf $(CCACHE) $(HOSTPREFIX)/bin/g++
@ln -sf $(CCACHE) $(HOSTPREFIX)/bin/$(TARGET)-gcc
@ln -sf $(CCACHE) $(HOSTPREFIX)/bin/$(TARGET)-g++
# build all needed host-binaries
host-preqs: pkg-config mkfs.jffs2 sumtool mkimage zic ccache
pkg-config-preqs:
@PATH=$(subst $(HOSTPREFIX)/bin:,,$(PATH)); \
if ! pkg-config --exists glib-2.0; then \
echo "pkg-config and glib2-devel packages are needed for building cross-pkg-config."; false; \
fi
pkg-config: $(HOSTPREFIX)/bin/pkg-config
$(HOSTPREFIX)/bin/pkg-config: $(ARCHIVE)/pkg-config-$(PKGCONF_VER).tar.gz | $(HOSTPREFIX)/bin pkg-config-preqs
$(UNTAR)/pkg-config-$(PKGCONF_VER).tar.gz
set -e; cd $(BUILD_TMP)/pkg-config-$(PKGCONF_VER); \
./configure --with-pc_path=$(PKG_CONFIG_PATH); \
$(MAKE); \
cp -a pkg-config $(HOSTPREFIX)/bin; \
ln -sf pkg-config $(HOSTPREFIX)/bin/arm-cx2450x-linux-gnueabi-pkg-config
ln -sf pkg-config $(HOSTPREFIX)/bin/arm-cortex-linux-uclibcgnueabi-pkg-config
$(REMOVE)/pkg-config-$(PKGCONF_VER)
mkfs.jffs2: $(HOSTPREFIX)/bin/mkfs.jffs2
sumtool: $(HOSTPREFIX)/bin/sumtool
$(HOSTPREFIX)/bin/mkfs.jffs2 \
$(HOSTPREFIX)/bin/sumtool: | $(HOSTPREFIX)/bin
git clone git://git.infradead.org/mtd-utils.git $(BUILD_TMP)/mtd-utils && \
pushd $(BUILD_TMP)/mtd-utils && \
./autogen.sh -fi && \
./configure \
ZLIB_CFLAGS=" " \
ZLIB_LIBS="-lz" \
UUID_CFLAGS=" " \
UUID_LIBS="-luuid" \
--enable-silent-rules \
--without-ubifs \
--disable-tests && \
$(MAKE) WITHOUT_XATTR=1
install -D -m 0755 $(BUILD_TMP)/mtd-utils/sumtool $(HOSTPREFIX)/bin/
install -D -m 0755 $(BUILD_TMP)/mtd-utils/mkfs.jffs2 $(HOSTPREFIX)/bin/
$(REMOVE)/mtd-utils
mkimage: $(HOSTPREFIX)/bin/mkimage
$(HOSTPREFIX)/bin/mkimage: $(ARCHIVE)/u-boot-$(U_BOOT_VER).tar.bz2 | $(HOSTPREFIX)/bin
$(UNTAR)/u-boot-$(U_BOOT_VER).tar.bz2
pushd $(BUILD_TMP)/u-boot-$(U_BOOT_VER) && \
$(PATCH)/u-boot-fix-build-error-under-gcc6.patch && \
$(PATCH)/u-boot-support-gcc5.patch && \
$(PATCH)/u-boot-rsa-Fix-build-with-OpenSSL-1.1.x.patch && \
$(MAKE) defconfig && \
$(MAKE) silentoldconfig && \
$(MAKE) tools-only
install -D -m 0755 $(BUILD_TMP)/u-boot-$(U_BOOT_VER)/tools/mkimage $(HOSTPREFIX)/bin/
$(REMOVE)/u-boot-$(U_BOOT_VER)
zic: $(HOSTPREFIX)/bin/zic
$(HOSTPREFIX)/bin/zic: $(ARCHIVE)/tzdata$(TZDATA_VER).tar.gz $(ARCHIVE)/tzcode$(TZCODE_VER).tar.gz | $(HOSTPREFIX)/bin
mkdir $(BUILD_TMP)/tzcode && \
tar -C $(BUILD_TMP)/tzcode -xf $(ARCHIVE)/tzcode$(TZCODE_VER).tar.gz
tar -C $(BUILD_TMP)/tzcode -xf $(ARCHIVE)/tzdata$(TZDATA_VER).tar.gz
pushd $(BUILD_TMP)/tzcode && \
$(MAKE) zic
install -D -m 0755 $(BUILD_TMP)/tzcode/zic $(HOSTPREFIX)/bin/
$(REMOVE)/tzcode
# hack to make sure they are always copied
PHONY += $(TARGETLIB)/firmware
PHONY += $(TARGETLIB)
PHONY += $(TARGETLIB)/modules
PHONY += $(TARGETPREFIX)/var/update
PHONY += ccache includes-and-libs modules targetprefix bootstrap blobs