Files
gk-sdk/build/base.mk
T

174 lines
6.2 KiB
Makefile
Executable File

ifeq ($(SDK_CFGFILE),)
export SDK_CFGFILE=cfg.mk
endif
include $(SDK_DIR)/$(SDK_CFGFILE)
export CHIPSET := $(CONFIG_XMEDIA_CHIP_TYPE)
export CHIPARCH := $(CONFIG_XMEDIA_CHIP_ARCH)
export TOOLCHAIN := $(CONFIG_XMEDIA_USR_ARM_TOOLCHAINS)
export KERNEL_TOOLCHAIN := $(CONFIG_XMEDIA_KERNEL_ARM_TOOLCHAINS)
export OSTYPE := linux
##### the build flags #####
ifeq ($(CONFIG_XMEDIA_CHIP_ARCH), xmorca)
SDK_USR_CFLAGS := -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 -Wall -fPIC -Os -fno-aggressive-loop-optimizations -ldl -ffunction-sections -fdata-sections -fstack-protector-strong -mthumb
SDK_LD_CFLAGS := -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 -fno-aggressive-loop-optimizations -Wl,-z,relro -Wl,-z,noexecstack -Wl,-z,now,-s -ldl -fPIC
else
$(error Unkown SoC!! Add $(CONFIG_XMEDIA_CHIP_TYPE) branch here for building!!)
endif
SDK_KER_CFLAGS := -D$(CHIPSET) -D$(CHIPARCH) -DRELEASE -D_USE_LLI_ -Wunused-but-set-variable -DUSER_BIT_32 -DKERNEL_BIT_32 -Wno-date-time -D_GNU_SOURCE --warn-stack-usage=500
ifeq ($(CONFIG_XMEDIA_SDK_MODE_LOG),y)
SDK_USR_CFLAGS += -DCONFIG_LOG_TRACE_SUPPORT=1
SDK_KER_CFLAGS += -DCONFIG_LOG_TRACE_SUPPORT=1
endif
SDK_USR_CFLAGS += -Wall -Werror -Wno-error=array-bounds
SDK_KER_CFLAGS += -Wall -Werror
ifeq ($(KERNELRELEASE),)
CC := $(TOOLCHAIN)-gcc
AR := $(TOOLCHAIN)-ar
NM := $(TOOLCHAIN)-nm
STRIP := $(TOOLCHAIN)-strip
else
CC := $(KERNEL_TOOLCHAIN)-gcc
AR := $(KERNEL_TOOLCHAIN)-ar
NM := $(KERNEL_TOOLCHAIN)-nm
STRIP := $(KERNEL_TOOLCHAIN)-strip
endif
ascii_to_lower = $(shell echo $(1) | tr '[:upper:]' '[:lower:]')
AT :=
BUILD_DIR := $(SDK_DIR)/build
SOURCE_DIR := $(SDK_DIR)/source
SAMPLE_DIR := $(SDK_DIR)/sample
OPEN_SOURCE_DIR := $(SDK_DIR)/open_source
SCRIPTS_DIR := $(SDK_DIR)/scripts
ROOTFS_DIR := $(SDK_DIR)/source/rootfs
INITRD_DIR := $(SDK_DIR)/source/initramdisk
BOOTLOADER_DIR := $(SDK_DIR)/source/bootloader
KERNEL_DIR := $(SDK_DIR)/source/kernel
ATF_DIR := $(SDK_DIR)/source/trusted-firmware
QS_MCU_DIR := $(SDK_DIR)/mcu
GMP_DIR := $(SDK_DIR)/source/gmp
COMPONENT_DIR := $(SDK_DIR)/source/component
OUT_DIR := $(SDK_DIR)/out/$(CHIPSET)
KERNEL_BUILDDIR := $(OUT_DIR)/$(CONFIG_XMEDIA_KERNEL_VERSION)
ATF_BUILDDIR := $(OUT_DIR)/trusted-firmware
QS_MCU_BUILDDIR := $(OUT_DIR)/qs_mcu
ROOTFS_BUILDDIR := $(OUT_DIR)/rootfs_builddir
INITRD_BUILDDIR := $(OUT_DIR)/initrd_builddir
SDK_STATIC_LIB_DIR := $(OUT_DIR)/lib/static
SDK_SHARE_LIB_DIR := $(OUT_DIR)/lib/share
SDK_KO_DIR := $(OUT_DIR)/ko
SDK_INCLUDE_DIR := $(OUT_DIR)/include
SDK_KO_BUILDER_DIR := $(OUT_DIR)/ko_builder
SDK_IMAGE_DIR := $(OUT_DIR)/image
TOOLS_DIR := $(SDK_DIR)/tools/linux/utils
TOOLS_BUILDDIR := $(OUT_DIR)/tools_builddir
KCONFIG_SRC_DIR := $(SDK_DIR)/tools/linux/kconfig
KCONFIG_CFG := version_config/main_config
BOOT_BUILDDIR := $(OUT_DIR)/boot_builddir
BOOTSTRAP_BUILDDIR := $(OUT_DIR)/bootstrap_builddir
XMEDIA_CONFIGS_DIR := $(SDK_DIR)/configs
XMEDIA_INSTALL_DIR := $(OUT_DIR)
XMEDIA_IMAGE_DIR := $(XMEDIA_INSTALL_DIR)/image
XMEDIA_SPI_IMAGE_DIR := $(XMEDIA_IMAGE_DIR)/spi_image
XMEDIA_NAND_IMAGE_DIR := $(XMEDIA_IMAGE_DIR)/nand_image
XMEDIA_EMMC_IMAGE_DIR := $(XMEDIA_IMAGE_DIR)/emmc_image
XMEDIA_SPI_EMMC_IMAGE_DIR := $(XMEDIA_IMAGE_DIR)/spi_emmc_image
XMEDIA_SPI_NAND_IMAGE_DIR := $(XMEDIA_IMAGE_DIR)/spi_nand_image
XMEDIA_MODULE_DIR := $(XMEDIA_INSTALL_DIR)/kmod
XMEDIA_ROOTFS_DIR := $(XMEDIA_INSTALL_DIR)/rootfs
XMEDIA_INITRD_DIR := $(XMEDIA_INSTALL_DIR)/initramdisk
XMEDIA_LIB_DIR := $(XMEDIA_INSTALL_DIR)/lib
XMEDIA_STATIC_LIB_DIR := $(XMEDIA_LIB_DIR)/static
XMEDIA_SHARED_LIB_DIR := $(XMEDIA_LIB_DIR)/share
XMEDIA_EXTERN_LIB_DIR := $(XMEDIA_LIB_DIR)/extern
XMEDIA_PREBUILTS_DIR := $(XMEDIA_CONFIGS_DIR)/$(CONFIG_XMEDIA_CHIP_TYPE)/prebuilts
KCONFIG_EXE := $(KCONFIG_SRC_DIR)/mconf
ifeq ($(CONFIG_XMEDIA_GMP_BUILDIN),y)
XMEDIA_DRV_BUILDTYPE := y
else
XMEDIA_DRV_BUILDTYPE := m
endif
MKBOOTARGS := $(TOOLS_DIR)/bin/mkbootargs
MKCRAMFS := $(TOOLS_DIR)/bin/mkfs.cramfs
MKEXT4FS := $(TOOLS_DIR)/bin/make_ext4fs
MKSQUASHFS := $(TOOLS_DIR)/bin/mksquashfs
MKJFFS2 := $(TOOLS_DIR)/bin/mkfs.jffs2
MKYAFFS := $(TOOLS_DIR)/bin/mkyaffs2image
MKUBIIMG := $(TOOLS_DIR)/bin/mkubiimg.sh
HWGZIP := $(TOOLS_DIR)/bin/hwgzip
ifeq ($(CONFIG_XMEDIA_QUICK_START),y)
SPI_PARTITIONS := $(XMEDIA_PREBUILTS_DIR)/spi_partitions_quickstart.xml
SPI_BOOTARGS := $(XMEDIA_PREBUILTS_DIR)/spi_bootargs_quickstart.txt
NAND_PARTITIONS := $(XMEDIA_PREBUILTS_DIR)/nand_partitions_quickstart.xml
NAND_BOOTARGS := $(XMEDIA_PREBUILTS_DIR)/nand_bootargs_quickstart.txt
else
ifeq ($(XMEDIA_DRV_BUILDTYPE),y)
NAND_PARTITIONS := $(XMEDIA_PREBUILTS_DIR)/nand_partitions_buildin.xml
EMMC_PARTITIONS := $(XMEDIA_PREBUILTS_DIR)/emmc_partitions_buildin.xml
SPI_PARTITIONS := $(XMEDIA_PREBUILTS_DIR)/spi_partitions_buildin.xml
NAND_BOOTARGS := $(XMEDIA_PREBUILTS_DIR)/nand_bootargs_buildin.txt
EMMC_BOOTARGS := $(XMEDIA_PREBUILTS_DIR)/emmc_bootargs_buildin.txt
SPI_BOOTARGS := $(XMEDIA_PREBUILTS_DIR)/spi_bootargs_buildin.txt
else
NAND_PARTITIONS := $(XMEDIA_PREBUILTS_DIR)/nand_partitions.xml
EMMC_PARTITIONS := $(XMEDIA_PREBUILTS_DIR)/emmc_partitions.xml
SPI_PARTITIONS := $(XMEDIA_PREBUILTS_DIR)/spi_partitions.xml
NAND_BOOTARGS := $(XMEDIA_PREBUILTS_DIR)/nand_bootargs.txt
EMMC_BOOTARGS := $(XMEDIA_PREBUILTS_DIR)/emmc_bootargs.txt
SPI_BOOTARGS := $(XMEDIA_PREBUILTS_DIR)/spi_bootargs.txt
endif
endif
ifeq ($(CONFIG_XMEDIA_KERNEL_SUPPORT_SMP),y)
OBJ_KERNEL_VERSION:=$(CONFIG_XMEDIA_KERNEL_VERSION)/multi
else
OBJ_KERNEL_VERSION:=$(CONFIG_XMEDIA_KERNEL_VERSION)/single
endif
OBJ_LOG_MODE:=$(CONFIG_XMEDIA_SDK_LOG_MODE)
ifeq ($(CONFIG_XMEDIA_GMP_BUILDIN),y)
OBJ_BUILD_TYPE=static
else
OBJ_BUILD_TYPE=dynamic
endif
SHELL=/bin/bash -o pipefail
# $(call mkdir,$1)
mkdir = if [ ! -d $(1) ]; then ( mkdir -p $(1); ) fi
build_target=$(1) $(addsuffix _build,$(1)) $(addsuffix .build,$(1))
clean_target=$(addsuffix _clean,$(1)) $(addsuffix .clean,$(1))
# $(call export_target,<taget1 target2>,<dir>)
define export_target
.PHONY: $(call build_target,$(1))
$(call build_target,$(1)):
@$(MAKE) -C $(2)
.PHONY: $(call clean_target,$(1))
$(call clean_target,$(1)):
@$(MAKE) -C $(2) clean
endef