• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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