1# 2# (C) Copyright 2007 Semihalf 3# 4# SPDX-License-Identifier: GPL-2.0+ 5# 6 7ifdef FTRACE 8CFLAGS += -finstrument-functions -DFTRACE 9endif 10 11ifeq ($(ARCH),powerpc) 12LOAD_ADDR = 0x40000 13endif 14ifeq ($(ARCH),arm) 15LOAD_ADDR = 0x1000000 16endif 17 18# Resulting ELF and binary exectuables will be named demo and demo.bin 19extra-y = demo 20 21# Source files located in the examples/api directory 22SOBJ_FILES-y += crt0.o 23COBJ_FILES-y += demo.o 24COBJ_FILES-y += glue.o 25COBJ_FILES-y += libgenwrap.o 26 27# Source files which exist outside the examples/api directory 28EXT_COBJ_FILES-y += lib/crc32.o 29EXT_COBJ_FILES-y += lib/ctype.o 30EXT_COBJ_FILES-y += lib/div64.o 31EXT_COBJ_FILES-y += lib/string.o 32EXT_COBJ_FILES-y += lib/time.o 33EXT_COBJ_FILES-y += lib/vsprintf.o 34EXT_SOBJ_FILES-$(CONFIG_PPC) += arch/powerpc/lib/ppcstring.o 35 36# Create a list of source files so their dependencies can be auto-generated 37SRCS += $(addprefix $(SRCTREE)/,$(EXT_COBJ_FILES-y:.o=.c)) 38SRCS += $(addprefix $(SRCTREE)/,$(EXT_SOBJ_FILES-y:.o=.S)) 39SRCS += $(addprefix $(SRCTREE)/examples/api/,$(COBJ_FILES-y:.o=.c)) 40SRCS += $(addprefix $(SRCTREE)/examples/api/,$(SOBJ_FILES-y:.o=.S)) 41 42# Create a list of object files to be compiled 43OBJS += $(addprefix $(obj)/,$(SOBJ_FILES-y)) 44OBJS += $(addprefix $(obj)/,$(COBJ_FILES-y)) 45OBJS += $(addprefix $(obj)/,$(notdir $(EXT_COBJ_FILES-y))) 46OBJS += $(addprefix $(obj)/,$(notdir $(EXT_SOBJ_FILES-y))) 47 48######################################################################### 49 50$(obj)/demo: $(OBJS) 51 $(LD) --gc-sections -Ttext $(LOAD_ADDR) -o $@ $^ $(PLATFORM_LIBS) 52 53$(obj)/demo.bin: $(obj)/demo 54 $(OBJCOPY) -O binary $< $@ 2>/dev/null 55 56# Rule to build generic library C files 57$(addprefix $(obj)/,$(notdir $(EXT_COBJ_FILES-y))): $(obj)/%.o: $(SRCTREE)/lib/%.c 58 $(CC) -g $(CFLAGS) -c -o $@ $< 59 60# Rule to build architecture-specific library assembly files 61$(addprefix $(obj)/,$(notdir $(EXT_SOBJ_FILES-y))): $(obj)/%.o: $(SRCTREE)/arch/$(ARCH)/lib/%.S 62 $(CC) -g $(CFLAGS) -c -o $@ $< 63