openwrt-6.x/target/linux/realtek/image/rt-loader/Makefile
Sven Eckelmann 6e094232db realtek: Cleanup tab vs spaces for indentation
Sources files should used for the proper indentation:

* use tabs instead of 8 spaces
* spaces should never directly before a tab
* no whitespace characters at the end of a line

These rules were partially not followed in various source files.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20895
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-23 22:26:10 +01:00

124 lines
3.8 KiB
Makefile

# rt-loader make file
# (c) 2025 Markus Stockhausen
#
# This is the make file for the rt-loader (aka runtime or realtek loader). It tries to
# avoid copying files around where possible. Therefore it is controlled by the following
# input parameters
#
# KERNEL_IMG_IN: The filename of an LZMA compressed kernel. If given the loader
# and the kernel will be concatenated (piggy back loading).
# FLASH_ADDR: The kernel address in the ROM. If given, the loeader will be
# created standalone and search a LZMA compressed uImage on the
# target device starting from this address.
# KERNEL_IMG_OUT: The filename of the kernel image with the rt-loader prepended.
# If not given it will be created as image.bin into the BUILD_DIR.
# BUILD_DIR: The temporary build dir. If not given it will be set to "build".
#
# To add it into the OpenWrt toolchain just create the following new build commands
#
# define Build/rt-compress
# $(STAGING_DIR_HOST)/bin/xz --format=lzma -9 --stdout "$@" > "$@.new"
# mv "$@.new" "$@"
# endef
#
# define Build/rt-loader-piggy-back
# $(MAKE) all clean -C rt-loader CROSS_COMPILE="$(TARGET_CROSS)" \
# KERNEL_IMG_IN="$@" KERNEL_IMG_OUT="$@.new" BUILD_DIR="$@.build"
# mv "$@.new" "$@"
# endef
#
# define Build/rt-loader-standalone
# $(MAKE) all clean -C rt-loader CROSS_COMPILE="$(TARGET_CROSS)" \
# FLASH_ADDR=$(FLASH_ADDR) KERNEL_IMG_OUT="$@.new" BUILD_DIR="$@.build"
# mv "$@.new" "$@"
# endef
#
# Finally use them in new kernel build recipes. E.g. as all-in-one self extracting uImage.
#
# define Device/uimage-rt-loader
# KERNEL/rt-loader := kernel-bin | append-dtb | rt-compress | rt-loader-piggy-back
# KERNEL := $$(KERNEL/rt-loader) | uImage none
# KERNEL_INITRAMFS := $$(KERNEL/rt-loader) | uImage none
# endef
#
# Or as direct startable standlone version plus a kernel uImage
#
# define Device/rt-loader-uimage
# FLASH_ADDR := 0xb4000000
# KERNEL/rt-loader := rt-loader-standalone
# KERNEL := kernel-bin | append-dtb | rt-compress | uImage lzma
# endef
FLASH_ADDR_NONE := 0x0
FLASH_ADDR ?= $(FLASH_ADDR_NONE)
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
OBJCOPY := $(CROSS_COMPILE)objcopy
OBJDUMP := $(CROSS_COMPILE)objdump
CFLAGS = -fpic -mabicalls -O2 -fno-builtin-printf -Iinclude
CFLAGS += -DFLASH_ADDR=$(FLASH_ADDR)
ASFLAGS = -fpic -msoft-float -Iinclude
LDFLAGS = -static -nostdlib -T linker/linker.ld --no-warn-mismatch
O_FORMAT = $(shell $(OBJDUMP) -i | head -2 | grep elf32)
SOURCES = src/startup.S src/main.c src/board.c src/memory.c src/unlzma.c
BUILD_DIR ?= build
IMAGE_OBJ := $(BUILD_DIR)/image.o
IMAGE_ELF := $(BUILD_DIR)/image.elf
KERNEL_IMG_NONE := $(BUILD_DIR)/empty_kernel.bin
KERNEL_IMG_IN ?= $(KERNEL_IMG_NONE)
KERNEL_IMG_OUT ?= $(BUILD_DIR)/image.bin
OBJECTS_C = $(filter %.c,$(SOURCES))
OBJECTS_S = $(filter %.S,$(SOURCES))
OBJECTS := $(OBJECTS_S:.S=.o) $(OBJECTS_C:.c=.o)
OBJECTS := $(patsubst %.o, $(BUILD_DIR)/%.o, $(OBJECTS)) $(IMAGE_OBJ)
ifneq ($(MAKECMDGOALS),clean)
ifeq ($(KERNEL_IMG_IN)$(FLASH_ADDR),$(KERNEL_IMG_NONE)$(FLASH_ADDR_NONE))
$(error Set either KERNEL_IMG_IN or FLASH_ADDR)
else ifneq ($(FLASH_ADDR),$(FLASH_ADDR_NONE))
$(info Create standalone rt-loader, loading uimage from address $(FLASH_ADDR))
else
$(info Create piggy backed rt-loader, loading appended kernel binary "$(KERNEL_IMG_IN)")
endif
endif
all: $(KERNEL_IMG_OUT)
install:
$(BUILD_DIR)/%.o : %.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c -o $@ $<
$(BUILD_DIR)/%.o : %.S
@mkdir -p $(dir $@)
$(CC) $(ASFLAGS) -c -o $@ $<
$(IMAGE_OBJ): $(KERNEL_IMG_IN)
$(OBJCOPY) -I binary -O $(O_FORMAT) --rename-section .data=.kernel $< $@
$(IMAGE_ELF): $(OBJECTS)
$(LD) $(LDFLAGS) -o $@ $(OBJECTS)
$(KERNEL_IMG_OUT): $(IMAGE_ELF)
$(OBJCOPY) -O binary $< $@
$(KERNEL_IMG_IN):
@mkdir -p $(dir $@)
@echo "DUMMY-KERNEL-IMAGE" > $@
clean:
rm -rf $(BUILD_DIR)/