CROSS_COMPILE := aarch64-linux-gnu- build_dir := $(CURDIR)/build-aarch64 output_dir := $(HOME) rootfs := $(HOME)/rootfs-zynqmp.cpio dtb := $(build_dir)/arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revC.dtb rootfsbase := $(shell basename $(rootfs)) config_file := $(build_dir)/.config makejobs := $(shell grep '^processor' /proc/cpuinfo | sort -u | wc -l) makethreads := $(shell dc -e "$(makejobs) 1 + p") tftproot := /var/lib/tftpboot make_options := -f Makefile \ -j$(makethreads) -l$(makejobs) \ ARCH=arm64 \ CROSS_COMPILE=$(CROSS_COMPILE) \ KBUILD_OUTPUT=$(build_dir) .PHONY: help help: @echo "**** Common Makefile ****" @echo "make config - configure for aarch64" @echo "make build - build the kernel with initramfs" .PHONY: have-rootfs have-rootfs: @if [ ! -f $(rootfs) ] ; then \ echo "ERROR: no rootfs at $(rootfs)" ; \ echo "This is needed to boot the system." ; \ echo "ABORTING." ; \ exit 1 ; \ else \ echo "Rootfs available at $(rootfs)" ; \ fi .PHONY: have-crosscompiler have-crosscompiler: @echo -n "Check that $(CROSS_COMPILE)gcc is available..." @which $(CROSS_COMPILE)gcc > /dev/null ; \ if [ ! $$? -eq 0 ] ; then \ echo "ERROR: cross-compiler $(CROSS_COMPILE)gcc not in PATH=$$PATH!" ; \ echo "ABORTING." ; \ exit 1 ; \ else \ echo "OK" ;\ fi # Config options needed to bring up rootfs on distros config-distro: config-base $(CURDIR)/scripts/config --file $(config_file) \ --set-str CMDLINE "root=/dev/sda1 rw rootwait" \ --enable PARTITION_ADVANCED \ --enable LDM_PARTITION \ --enable MSDOS_PARTITION \ --enable DEVTMPFS \ --enable CGROUPS \ --enable CGROUP_FREEZER \ --enable CGROUP_DEVICE \ --enable CPUSETS \ --enable PROC_PID_CPUSET \ --enable CGROUP_CPUACCT \ --enable RESOURCE_COUNTERS \ --enable CGROUP_MEM_RES_CTLR \ --enable CGROUP_MEM_RES_CTLR_DISABLED \ --enable CGROUP_MEM_RES_CTLR_SWAP \ --enable CGROUP_SCHED \ --enable FAIR_GROUP_SCHED \ --enable BLK_CGROUP \ --enable NAMESPACES \ --enable SCHED_AUTOGROUP \ --enable FHANDLE \ --enable SWAP \ --enable AUTOFS4_FS \ --enable BSD_PROCESS_ACCT \ --enable BSD_PROCESS_ACCT_V3 \ --enable TASKSTATS \ --enable TASK_DELAY_ACCT \ --enable TASK_XACCT \ --enable TASK_IO_ACCOUNTING \ --enable BUILD_BIN2C \ --enable IKCONFIG \ --enable IKCONFIG_PROC \ --enable PAGE_COUNTER \ --enable MEMCG \ --enable MEMCG_SWAP \ --enable MEMCG_SWAP_ENABLED \ --enable MEMCG_KMEM \ --enable CGROUP_PERF \ --enable CGROUP_WRITEBACK \ --enable USER_NS \ --enable BLK_DEV_BSG \ --enable BLK_DEV_BSGLIB \ --enable BLK_DEV_INTEGRITY \ --enable NET_INGRESS \ --enable IP_ADVANCED_ROUTER \ --set-str UEVENT_HELPER_PATH "" \ --enable WANT_DEV_COREDUMP \ --enable DEV_COREDUMP \ --enable CHR_DEV_SG \ --enable KEYS \ --enable ENCRYPTED_KEYS \ --enable SECURITY \ --enable SECURITYFS \ --enable SECURITY_NETWORK \ --enable SECURITY_NETWORK_XFRM \ --enable SECURITY_PATH \ --enable INTEGRITY \ --enable CRYPTO_USER_API \ --enable CRYPTO_USER_API_HASH \ --enable CRYPTO_USER_API_SKCIPHER \ --enable CRYPTO_USER_API_AEAD \ --enable ARM_CRYPTO \ --enable CRYPTO_SHA1_ARM \ --enable CRYPTO_SHA256_ARM \ --enable CRYPTO_SHA512_ARM \ --enable CRYPTO_AES_ARM \ --enable BINARY_PRINTF \ --enable MD \ --enable BLK_DEV_DM_BUILTIN \ --enable BLK_DEV_DM \ --enable DM_CRYPT \ --enable DM_UEVENT config-base: FORCE @mkdir -p $(build_dir) $(MAKE) $(make_options) defconfig config-initramfs: have-rootfs config-base @cp $(rootfs) $(build_dir)/$(rootfsbase) # Configure in the initramfs $(CURDIR)/scripts/config --file $(config_file) \ --enable BLK_DEV_INITRD \ --set-str INITRAMFS_SOURCE $(rootfsbase) \ --enable RD_GZIP \ --enable INITRAMFS_COMPRESSION_GZIP config-earlydebug: config-base $(CURDIR)/scripts/config --file $(config_file) \ --enable DEBUG_KERNEL \ --enable DEBUG_LL \ --enable EARLY_PRINTK \ --set-str CMDLINE "earlyprintk" config-zcu100-features: config-base $(CURDIR)/scripts/config --file $(config_file) \ --enable GPIO_ZYNQ \ --enable USB \ --enable USB_DWC3 \ --enable USB_DWC3_HOST \ --enable USB_DWC3_OF_SIMPLE \ --enable INPUT \ --enable INPUT_KEYBOARD \ --enable KEYBOARD_GPIO \ --enable NEW_LEDS \ --enable LEDS_CLASS \ --enable LEDS_GPIO \ --enable LEDS_TRIGGERS \ --enable LEDS_TRIGGER_HEARTBEAT \ --enable I2C \ --enable I2C_CADENCE \ --enable I2C_MUX_PCA954x \ --enable SPI \ --enable SPI_MASTER \ --enable SPI_CADENCE \ --enable MFD_TPS65086 \ --enable HWMON \ --enable SENSORS_INA2XX \ --enable IIO \ --enable INA2XX_ADC \ --enable NET \ --enable NETDEVICES \ --enable NET_CORE \ --enable MAC80211 \ --enable WLAN \ --enable WLAN_VENDOR_TI \ --enable WL18XX \ --enable BT \ --enable BT_HCIUART \ --enable BT_HCIUART_LL config-secure96-features: config-base $(CURDIR)/scripts/config --file $(config_file) \ --enable DAUGHTERBOARDS \ --enable 96BOARDS_MEZZANINES \ --enable 96BOARDS_LS_CONNECTOR \ --enable 96BOARDS_SECURE96 \ --disable CRYPTO_MANAGER_DISABLE_TESTS config: config-base config-zcu100-features config-secure96-features config-initramfs yes "" | make $(make_options) oldconfig $(CURDIR)/scripts/config --file $(config_file) \ --enable INPUT_KEYBOARD \ --enable KEYBOARD_GPIO menuconfig: FORCE if [ ! -d $(build_dir) ] ; then \ echo "no build dir" ; \ exit 1 ; \ fi $(MAKE) $(make_options) menuconfig $(MAKE) $(make_options) savedefconfig saveconfig: FORCE yes "" | make $(make_options) oldconfig $(MAKE) $(make_options) savedefconfig cp $(build_dir)/defconfig arch/arm64/configs/defconfig build-dtbs: FORCE $(MAKE) $(make_options) dtbs CONFIG_DEBUG_SECTION_MISMATCH=y @echo "Copy DTB $(dtb) to $(output_dir)" @cp -f $(dtb) $(output_dir) # If we have a TFTP boot directory if [ -w $(tftproot) ] ; then \ cp -f $(dtb) $(tftproot) ; \ fi build-zimage: have-crosscompiler FORCE $(MAKE) $(make_options) Image CONFIG_DEBUG_SECTION_MISMATCH=y build: have-crosscompiler build-dtbs build-zimage FORCE @echo "Copy vmlinux to $(output_dir)/vmlinux" @cp -f $(build_dir)/vmlinux $(output_dir)/vmlinux @echo "Copy Image to $(output_dir)/Image" @cp -f $(build_dir)/arch/arm64/boot/Image $(output_dir)/Image clean: $(MAKE) -f Makefile clean rm -rf $(build_dir) FORCE: