1# ***************************************************************************** 2# * Copyright (c) 2004, 2008 IBM Corporation 3# * All rights reserved. 4# * This program and the accompanying materials 5# * are made available under the terms of the BSD License 6# * which accompanies this distribution, and is available at 7# * http://www.opensource.org/licenses/bsd-license.php 8# * 9# * Contributors: 10# * IBM Corporation - initial implementation 11# ****************************************************************************/ 12 13# Before including this Makefile, you should specify the following variables 14# in your Makefile: 15# - RTASCMNDIR : Points to the common RTAS directory 16# - RTASBRDDIR : Points to the board specific RTAS directory 17# - TOOLSDIR : Points to the common tools directory 18# - OBJS : A list with all object files that should be linked into rtas.bin 19# - BOARD_SRCS : A list with all board specific source code files 20# (needed for "make depend") 21 22 23LDFLAGS = -nostdlib 24CPPFLAGS += -I$(RTASBRDDIR) -I$(RTASCMNDIR) \ 25 -I$(INCLCMNDIR) -I$(INCLBRDDIR) \ 26 -I$(LIBCMNDIR)/libc/include \ 27 -I$(INCLCMNDIR)/$(CPUARCH) 28ASFLAGS = -Wa,-mregnames $(FLAG) 29CFLAGS += -g -nostdinc -ffreestanding -Wall -Wextra -O2 -msoft-float \ 30 -mno-altivec -mabi=no-altivec $(FLAG) 31 32# Common RTAS files: 33RTAS_SRC_ASM = reloc.S rtas_common.S rtas_entry.S rtas_term.S \ 34 rtas_cpu.S rtas_flash_asm.S rtas_mem.S rtas_ras.S 35RTAS_SRC_C = rtas_call.c rtas_flash_c.c rtas_h8.c \ 36 rtas_nvramlog.c rtas_sensor.c rtas_init.c \ 37 rtas_flash_cfi.c 38RTAS_SRCS = $(RTAS_SRC_ASM) $(RTAS_SRC_C) 39RTAS_OBJ_ASM = $(RTAS_SRC_ASM:%.S=%.o) 40RTAS_OBJ_C = $(RTAS_SRC_C:%.c=%.o) 41 42# Common build rules: 43$(RTAS_OBJ_C): 44 $(CC) $(CPPFLAGS) $(CFLAGS) -c $(@:%.o=$(RTASCMNDIR)/%.c) -o $@ 45 46$(RTAS_OBJ_ASM): 47 $(CC) $(CPPFLAGS) $(ASFLAGS) -c $(@:%.o=$(RTASCMNDIR)/%.S) -o $@ 48 49$(TOOLSDIR)/gen_reloc_table: $(TOOLSDIR)/gen_reloc_table.c 50 $(MAKE) -C $(TOOLSDIR) gen_reloc_table 51 52 53# Rules for building rtas.bin: 54rtas.bin: rtas 55 $(OBJCOPY) -O binary $< $@ 56 57rtas: $(RTASCMNDIR)/rtas.lds $(OBJS) reloc_table.o $(LIBCMNDIR)/libc.a 58 $(LD) $(LDFLAGS) -o $@ -T $(RTASCMNDIR)/rtas.lds $(OBJS) \ 59 reloc_table.o $(LIBCMNDIR)/libc.a 60 61reloc_table.o: $(TOOLSDIR)/gen_reloc_table $(OBJS) $(LIBCMNDIR)/libc.a 62 $(TOOLSDIR)/create_reloc_table.sh --ld "$(ONLY_LD)" --ldflags "$(LDFLAGS)" \ 63 --lds "$(RTASCMNDIR)/rtas.lds" --objcopy "$(OBJCOPY)" $(OBJS) $(LIBCMNDIR)/libc.a 64 65 66$(LIBCMNDIR)/libc.a: 67 $(MAKE) -C $(LIBCMNDIR) libc 68 69 70# Rules for cleaning up: 71clean_rtas: 72 rm -f $(OBJS) reloc_table.o rtas rtas.bin 73 rm -f $(RTASCMNDIR)/*~ $(RTASCMNDIR)/*.o 74 75distclean_rtas: clean_rtas 76 rm -f Makefile.dep 77 78 79# Rules for creating the dependency file: 80depend: 81 rm -f Makefile.dep 82 $(MAKE) Makefile.dep 83 84Makefile.dep: Makefile $(RTASCMNDIR)/Makefile.inc 85 $(CC) -MM $(CPPFLAGS) $(CFLAGS) $(RTAS_SRCS:%=$(RTASCMNDIR)/%) > Makefile.dep 86 $(CC) -MM $(CPPFLAGS) $(CFLAGS) $(BOARD_SRCS) >> Makefile.dep 87 88# Include dependency file if available: 89-include Makefile.dep 90