1# SPDX-License-Identifier: GPL-2.0-only 2 3# Sample libpayload Makefile for ARCH_MOCK 4# ARCH_MOCK is not intended to be used with xcompile 5include ../../.config 6 7ifneq ($(CONFIG_LP_ARCH_MOCK),y) 8$(error This example supports ARCH_MOCK only.) 9endif 10 11CC := gcc 12AS := as 13OBJCOPY := objcopy 14LIBPAYLOAD_DIR := ../../install/libpayload 15CFLAGS := -fno-builtin -Wall -Werror -Os \ 16 -include $(LIBPAYLOAD_DIR)/include/kconfig.h \ 17 -include $(LIBPAYLOAD_DIR)/include/compiler.h \ 18 -I $(LIBPAYLOAD_DIR)/include \ 19 -I $(LIBPAYLOAD_DIR)/include/mock \ 20 -ffunction-sections \ 21 -fdata-sections -g3 22LDFLAGS := -Wl,--gc-sections 23TARGET := hello 24OBJS := $(TARGET).o 25OBJS-mock := $(TARGET)_mocks.o 26LIBPAYLOAD-local := libpayload.a 27mocks := console_write 28 29all: $(TARGET).elf 30 31$(TARGET).elf: $(OBJS) $(OBJS-mock) $(LIBPAYLOAD-local) 32 $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBPAYLOAD-local) \ 33 -Wl,--exclude-libs,ALL -lc $(OBJS-mock) 34 35%.o: %.c 36 $(CC) $(CFLAGS) -c -o $@ $< 37 38%.S.o: %.S 39 $(AS) --32 -o $@ $< 40 41# Copy libpayload and weaken all mocked symbols 42$(LIBPAYLOAD-local): $(LIBPAYLOAD_DIR)/lib/libpayload.a 43 $(OBJCOPY) $(foreach mock,$(mocks),--weaken-symbol=$(mock)) $< $@ 44 45clean: 46 rm -f $(TARGET).elf *.o $(LIBPAYLOAD-local) 47 48distclean: clean 49