1*d4abc757SPeter Tyser# 2*d4abc757SPeter Tyser# (C) Copyright 2007 Semihalf 3*d4abc757SPeter Tyser# 4*d4abc757SPeter Tyser# See file CREDITS for list of people who contributed to this 5*d4abc757SPeter Tyser# project. 6*d4abc757SPeter Tyser# 7*d4abc757SPeter Tyser# This program is free software; you can redistribute it and/or 8*d4abc757SPeter Tyser# modify it under the terms of the GNU General Public License as 9*d4abc757SPeter Tyser# published by the Free Software Foundatio; either version 2 of 10*d4abc757SPeter Tyser# the License, or (at your option) any later version. 11*d4abc757SPeter Tyser# 12*d4abc757SPeter Tyser# This program is distributed in the hope that it will be useful, 13*d4abc757SPeter Tyser# but WITHOUT ANY WARRANTY; without even the implied warranty of 14*d4abc757SPeter Tyser# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*d4abc757SPeter Tyser# GNU General Public License for more details. 16*d4abc757SPeter Tyser# 17*d4abc757SPeter Tyser# You should have received a copy of the GNU General Public License 18*d4abc757SPeter Tyser# along with this program; if not, write to the Free Software 19*d4abc757SPeter Tyser# Foundation, Inc., 59 Temple Place, Suite 330, Boston, 20*d4abc757SPeter Tyser# MA 02111-1307 USA 21*d4abc757SPeter Tyser# 22*d4abc757SPeter Tyser 23*d4abc757SPeter Tyserifeq ($(ARCH),ppc) 24*d4abc757SPeter TyserLOAD_ADDR = 0x40000 25*d4abc757SPeter Tyserendif 26*d4abc757SPeter Tyserifeq ($(ARCH),arm) 27*d4abc757SPeter TyserLOAD_ADDR = 0x1000000 28*d4abc757SPeter Tyserendif 29*d4abc757SPeter Tyser 30*d4abc757SPeter Tyserinclude $(TOPDIR)/config.mk 31*d4abc757SPeter Tyser 32*d4abc757SPeter Tyser# Resulting ELF and binary exectuables will be named demo and demo.bin 33*d4abc757SPeter TyserOUTPUT-$(CONFIG_API) = $(obj)demo 34*d4abc757SPeter TyserOUTPUT = $(OUTPUT-y) 35*d4abc757SPeter Tyser 36*d4abc757SPeter Tyser# Source files located in the examples/api directory 37*d4abc757SPeter TyserSOBJ_FILES-$(CONFIG_API) += crt0.o 38*d4abc757SPeter TyserCOBJ_FILES-$(CONFIG_API) += demo.o 39*d4abc757SPeter TyserCOBJ_FILES-$(CONFIG_API) += glue.o 40*d4abc757SPeter TyserCOBJ_FILES-$(CONFIG_API) += libgenwrap.o 41*d4abc757SPeter Tyser 42*d4abc757SPeter Tyser# Source files which exist outside the examples/api directory 43*d4abc757SPeter TyserEXT_COBJ_FILES-$(CONFIG_API) += lib_generic/crc32.o 44*d4abc757SPeter TyserEXT_COBJ_FILES-$(CONFIG_API) += lib_generic/ctype.o 45*d4abc757SPeter TyserEXT_COBJ_FILES-$(CONFIG_API) += lib_generic/string.o 46*d4abc757SPeter TyserEXT_COBJ_FILES-$(CONFIG_API) += lib_generic/vsprintf.o 47*d4abc757SPeter Tyserifeq ($(ARCH),ppc) 48*d4abc757SPeter TyserEXT_SOBJ_FILES-$(CONFIG_API) += lib_ppc/ppcstring.o 49*d4abc757SPeter Tyserendif 50*d4abc757SPeter Tyser 51*d4abc757SPeter Tyser# Create a list of source files so their dependencies can be auto-generated 52*d4abc757SPeter TyserSRCS += $(addprefix $(SRCTREE)/,$(EXT_COBJ_FILES-y:.o=.c)) 53*d4abc757SPeter TyserSRCS += $(addprefix $(SRCTREE)/,$(EXT_SOBJ_FILES-y:.o=.S)) 54*d4abc757SPeter TyserSRCS += $(addprefix $(SRCTREE)/examples/api/,$(COBJ_FILES-y:.o=.c)) 55*d4abc757SPeter TyserSRCS += $(addprefix $(SRCTREE)/examples/api/,$(SOBJ_FILES-y:.o=.S)) 56*d4abc757SPeter Tyser 57*d4abc757SPeter Tyser# Create a list of object files to be compiled 58*d4abc757SPeter TyserOBJS += $(addprefix $(obj),$(SOBJ_FILES-y)) 59*d4abc757SPeter TyserOBJS += $(addprefix $(obj),$(COBJ_FILES-y)) 60*d4abc757SPeter TyserOBJS += $(addprefix $(obj),$(notdir $(EXT_COBJ_FILES-y))) 61*d4abc757SPeter TyserOBJS += $(addprefix $(obj),$(notdir $(EXT_SOBJ_FILES-y))) 62*d4abc757SPeter Tyser 63*d4abc757SPeter Tysergcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`) 64*d4abc757SPeter Tyser 65*d4abc757SPeter TyserCPPFLAGS += -I.. 66*d4abc757SPeter Tyser 67*d4abc757SPeter Tyserall: $(obj).depend $(OUTPUT) 68*d4abc757SPeter Tyser 69*d4abc757SPeter Tyser######################################################################### 70*d4abc757SPeter Tyser 71*d4abc757SPeter Tyser$(OUTPUT): $(OBJS) 72*d4abc757SPeter Tyser $(LD) -Ttext $(LOAD_ADDR) -o $@ $^ -L$(gcclibdir) -lgcc 73*d4abc757SPeter Tyser $(OBJCOPY) -O binary $@ $(OUTPUT).bin 2>/dev/null 74*d4abc757SPeter Tyser 75*d4abc757SPeter Tyser# Rule to build generic library C files 76*d4abc757SPeter Tyser$(obj)%.o: $(SRCTREE)/lib_generic/%.c 77*d4abc757SPeter Tyser $(CC) -g $(CFLAGS) -c -o $@ $< 78*d4abc757SPeter Tyser 79*d4abc757SPeter Tyser# Rule to build architecture-specific library assembly files 80*d4abc757SPeter Tyser$(obj)%.o: $(SRCTREE)/lib_$(ARCH)/%.S 81*d4abc757SPeter Tyser $(CC) -g $(CFLAGS) -c -o $@ $< 82*d4abc757SPeter Tyser 83*d4abc757SPeter Tyser######################################################################### 84*d4abc757SPeter Tyser 85*d4abc757SPeter Tyser# defines $(obj).depend target 86*d4abc757SPeter Tyserinclude $(SRCTREE)/rules.mk 87*d4abc757SPeter Tyser 88*d4abc757SPeter Tysersinclude $(obj).depend 89*d4abc757SPeter Tyser 90*d4abc757SPeter Tyser######################################################################### 91