1# 2# Makefile for Broadcom BCM947XX boards 3# 4# Copyright (C) 2010, Broadcom Corporation. All Rights Reserved. 5# 6# Permission to use, copy, modify, and/or distribute this software for any 7# purpose with or without fee is hereby granted, provided that the above 8# copyright notice and this permission notice appear in all copies. 9# 10# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 13# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 15# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17# 18# $Id: Makefile,v 1.7 2009/03/12 03:00:51 Exp $ 19# 20 21 22# Link at 3 MB offset in RAM 23TEXT_START ?= 0x80300000 24 25LOADADDR := 0x80001000 26CROSS_COMPILE ?= mipsel-linux- 27 28OBJCOPY := $(CROSS_COMPILE)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S 29OBJCOPYSREC := $(CROSS_COMPILE)objcopy -O srec -R .reginfo -R .note -R .comment -R .mdebug -S 30 31vpath %.c $(SRCBASE)/shared 32vpath %.S $(SRCBASE)/shared 33vpath %.lds.in $(SRCBASE)/shared 34 35ASFLAGS += -D__ASSEMBLY__ -DLOADADDR=$(LOADADDR) -march=mips32 -Wa,-mips32 -Wa,--trap 36CFLAGS += -DLOADADDR=$(LOADADDR) -march=mips32 -Wa,-mips32 -Wa,--trap 37# The self-decompresor is standalone, get rid of the linux flags 38CFLAGS := $(subst -Dlinux,,$(CFLAGS)) 39CFLAGS += -Ulinux -D_MINOSL_ -ffreestanding 40ifdef CONFIG_MCOUNT 41CFLAGS := $(subst -pg,,$(CFLAGS)) 42endif 43CFLAGS += -ffunction-sections $(call check_gcc, -fvtable-gc, ) 44 45SYSTEM ?= $(LINUXDIR)/vmlinux 46OBJECTS := boot.o sisdram.o sbsdram.o aisdram.o load.o sflash.o \ 47 hndmips.o hndchipc.o \ 48 sbutils.o aiutils.o siutils.o hndpmu.o nicpci.o \ 49 min_osl.o bcmutils.o sromstubs.o nvramstubs.o bcmstdlib.o 50 51CFLAGS += -G 0 -mno-abicalls -fno-pic -pipe -msoft-float 52ASFLAGS += -G 0 -mno-abicalls -fno-pic -pipe 53 54ifdef CONFIG_SQUASHFS 55# Default to lzma 56COMPRESS ?= ../../../tools/lzma e 57CFLAGS += -DUSE_LZMA -D_LZMA_NO_SYSTEM_SIZE_T -DBCMLZMA -I$(SRCBASE)/tools/misc/lzma_src/C 58 59else 60# Default to bzip2 61COMPRESS ?= bzip2 -c 62 63ifneq ($(findstring gzip,$(COMPRESS)),) 64CFLAGS += -DUSE_GZIP 65else 66ifneq ($(findstring bzip2,$(COMPRESS)),) 67CFLAGS += -DUSE_BZIP2 68else 69COMPRESS := cat 70endif 71endif 72endif 73 74CFLAGS += -I$(SRCBASE)/include -DBCMDRIVER 75ASFLAGS += -I$(SRCBASE)/include 76 77all: zImage vmlinuz 78 79ifeq ($(CONFIG_SQUASHFS), y) 80all: vmlinuz-lzma 81endif 82 83# Don't build dependencies, this may die if $(CC) isn't gcc 84dep: 85 86zImage: vmlinux 87 $(OBJCOPY) $< $@ 88 89# Link the loader and the kernel binary together 90vmlinux: vmlinux.lds $(OBJECTS) piggy.o 91 $(LD) -static --gc-sections -no-warn-mismatch -T vmlinux.lds -o $@ $(OBJECTS) piggy.o 92 93vmlinux.lds: hndrte.lds.in Makefile 94 @sed -e s/TEXT_START/$(TEXT_START)/ \ 95 -e s/TARGET_ARCH/mips/ < $< > $@ 96 97# Create a linkable version of the (possibly compressed) kernel binary 98piggy.o: piggz piggy.lds 99 $(LD) -no-warn-mismatch -T piggy.lds -r -o $@ -b binary piggz -b elf32-tradlittlemips 100 101piggy.lds: 102 @echo "SECTIONS { .data : { input_len = .; LONG(input_data_end - input_data) input_data = .; *(.data) input_data_end = .; }}" > $@ 103 104# Always create a gzipped version named vmlinuz for compatibility 105vmlinuz: piggy 106 gzip -c9 $< > $@ 107 108piggz: piggy 109ifdef CONFIG_SQUASHFS 110 $(COMPRESS) $< $@ 111else 112 $(COMPRESS) $< > $@ 113endif 114 115ifdef CONFIG_SQUASHFS 116# Create an lzma version named vmlinuz-lzma 117vmlinuz-lzma: piggy 118 ../../../tools/lzma e $< $@ 119endif 120 121piggy: $(SYSTEM) 122 $(OBJCOPY) $< $@ 123 124mrproper: clean 125 126clean: 127 rm -f vmlinux vmlinuz zImage piggz piggy *.lds *.o 128ifeq ($(CONFIG_SQUASHFS), y) 129 rm -f vmlinuz-lzma 130endif 131