Company Logo

NAVIGATIONROM MAKEFILE

CM Home
CM Resources
Getting Started
Config. Spec.
CM Procedures
Scripts
Triggers
CM Plan
ClearCase Best Practices
Merging
ClearCase FAQ

##########################################################
# Copyright (C) 2000 Highley Recommended, Inc.           #
# Distributed under GNU Copy Left Terms and Conditions.  #
#                                                        #
# MAKEFILE NAME: Makefile                                #
#                                                        #
##########################################################

##########################################################
# MODIFICATION HISTORY                                   #
#                                                        #
# Date		   Person		Description      #
# ----------	------------  -------------------------- #
# 05/17/2000	D. Highley	Original Release         #
#                                                        #
##########################################################

############################
# Define local make macros #
############################
TOP        = ../../../../..
SRC        = ../../../../src
TARGET     = ../../..
PRODUCT    = xyz_prod
VENDOR     = vendor
SHELL	   = $(TOP)/$(VENDOR)/tools/bin/sh.exe
RM   	   = $(TOP)/$(VENDOR)/tools/bin/rm
CP         = $(TOP)/$(VENDOR)/tools/bin/cp
ECHO       = $(TOP)/$(VENDOR)/tools/bin/echo
TEST       = $(TOP)/$(VENDOR)/tools/bin/test

CPU	   = PPCEC603

GCC_EXEC_PREFIX = $(TOP)/$(VENDOR)/tornado/host/x86-win32/lib/gcc-lib/
CC         = GCC_EXEC_PREFIX=3D$(GCC_EXEC_PREFIX) \
             $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/ccppc

DEBUG	   =
CFLAGS_LOC =
CFLAGS	   = -B$(TOP)/$(VENDOR)/tornado/host/x86-win32/lib/gcc-lib/ \
    	     -c -mstrict-align -ansi -nostdinc -O2 -fvolatile \
	     -fno-builtin -fno-for-scope $(INCLUDES) -DCPU=$(CPU) \
	     $(DEBUG) $(CFLAGS_LOC)

INCLUDES   = -I. \
	     -I$(SRC)/inc \
	     -I$(TARGET)/config/boot \
	     -I$(TARGET)/config/all \
	     -I$(TARGET)/h \
	     -I$(TARGET)/h/tffs \
	     -I$(TARGET)/comps/src \
	     -I$(TARGET)/src/drv

PROG       = applicationrom

VPATH      = $(TARGET)/config/boot/ $(TARGET)/config/all/

##################################
# Define source and object files #
##################################
SRCS       = \
	     bootconfig.c \
	     version.c \
	     syslib.c \
	     ppc8260sio.c \
	     motfccend.c \
	     i2c.c \
	     miilib.c \
	     ledcontrol.c \
	     eeprom_mgmt.c \
	     changeboot.c \
	     rts_chk_sum.c \
	     systffs.c \
	     wavtffs.c \
	     i28f016.c \
	     cfiscs.c \
	     rtc_stubs.c

OBJS       = $(SRCS:.c=3D.o)

# Some makes have there own idea of what to do so delete suffix rules.
# Create the ones we need to build with.
.SUFFIXES:
.SUFFIXES: .o .s .c .cpp

# Option -msoft-float is used almost everywhere, but not quite so we
# did not add it to the CFLAGS macro.
.c.o:
	$(CC) $(CFLAGS) -Wall -msoft-float $<

.cpp.o:
	$(CC) $(CFLAGS) -Wall -O $<

#####################
# Local Build Rules #
#####################
ROM_TEXT_ADRS = fff00100 # ROM entry address
ROM_SIZE      = 00100000 # number of bytes of ROM space
ROM_WARM_ADRS = 0ff00100 # ROM wa$(RM) entry address

RAM_LOW_ADRS  = 00100000 # RAM text/data address
RAM_HIGH_ADRS = 00300000 # RAM text/data address

CONVERT       = $(TOP)/application/tools/bin/convert

all: version.tmp $(PROG).bin

$(PROG).bin: $(PROG).hex
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(CONVERT) -s $? -a $@ -l fff00000

ELFHEX        = $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/elfhex

$(PROG).hex: $(PROG) $(PROG).bdx
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(ELFHEX) -a 0xfff00100 $(PROG).tmp >$@

$(PROG).bdx: $(PROG)
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(CONVERT) -w $? -b $@ -c $(PROG).ab -t ppc

LD            = $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/ldppc
LDFLAGS_LOC   =
LDFLAGS       = -X -N \
	        -L$(TARGET)/config/boot/zlib \
	        -L$(TARGET)/lib
ROM_ENTRY     = _romInit
LIBS          = -lppcec603gnuvx
ROMSIZE       = $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/romsize -PPC

$(PROG): rominit.o bootinit.o version.o ledcontrol.o $(PROG).Z.o
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(LD) $(LDFLAGS) -Map $@.map -e $(ROM_ENTRY) -Ttext $(ROM_SIZE) \
	    -o $@ rominit.o bootinit.o version.o ledcontrol.o $(LIBS) \
	    $(PROG).Z.o
	$(ROMSIZE) -b $(ROM_SIZE) $@
	# Make a copy of file since elfhex disturbs derived object file
	# causing unecessary rebuilds, believe file is opened with
	# write permission and clearmake assumes file has changed.
	$(CP) $@ $@.tmp

bootinit.o: $(TARGET)/config/boot/bootinit.c
	$(CC) $(CFLAGS) -Wall -msoft-float -o $@ $?

$(PROG).Z.o: $(PROG).Z.s
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(CC) $(CFLAGS) -P -x assembler-with-cpp -o $@ $?

BINTOASM      = $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/bintoasm

$(PROG).Z.s: $(PROG).Z
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(BINTOASM) $? >$@

DEFLATE       = $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/deflate

$(PROG).Z: $(PROG)o.bin
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(DEFLATE) <$? >$@

ELFTOBIN      = $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/elftobin

$(PROG)o.bin: $(PROG).o
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(ELFTOBIN) <$? >$@

USR_ENTRY     = usrInit
RAM_HIGH_ADRS = 00300000 # RAM text/data address

ZLIB          = $(TARGET)/config/boot/zlib/libzlib.a

$(PROG).o: $(OBJS) $(ZLIB)
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(LD) $(LDFLAGS) -e $(USR_ENTRY) -Ttext $(RAM_HIGH_ADRS) \
	    -o $@ $(OBJS) -lzlib $(LIBS)

$(ZLIB):
	$(TEST) -d $(@D) || $(ECHO) "DIRECTORY $(@D) DOES NOT EXIST"
	cd $(@D) && "$(MAKE)"

rominit.o: rominit.s
	$(CC) $(CFLAGS) -P -x assembler-with-cpp -Wa,-W -o $@ $?

# Version Identification Target, must prevent winkins.
.NO_WINK_IN: version.c version.o
SET_VERSION   = $(TOP)/$(PRODUCT)/tools/scripts/set_version

version.o: version.c

version.tmp:
	$(SET_VERSION)

# Debug build target
ram: $(ZLIB) version.tmp
	"$(MAKE)" \
	    DEBUG=-g \
	    CFLAGS_LOC="-DRAM_BASED -DDEBUG_PRINT=printErr" \
	    ROM_TEXT_ADRS=01000100 \
	    ROM_WARM_ADRS=01000100 \
	    RAM_HIGH_ADRS=00c00000 \
	     RAM_LOW_ADRS=00100000 \
	    $(PROG)_ram $(PROG)_ram.bdx

$(PROG)_ram: rominit.o bootinit_ram.o $(OBJS)
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(LD) $(LDFLAGS) -e $(ROM_ENTRY) -Ttext $(RAM_HIGH_ADRS) \
	    -Map $@.map -o $@ $? -lzlib $(LIBS)
	$(ROMSIZE) -b $(ROM_SIZE) $@

$(PROG)_ram.bdx: $(PROG)_ram
	$(CONVERT) -w $? -b $@ -c $(PROG)_ram.ab -t ppc

bootinit_ram.o: $(TARGET)/config/boot/bootinit.c
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(CC) $(CFLAGS) -DUNCOMPRESS -Wall -msoft-float -o $@ $?

clean:
	$(RM) -f $(OBJS) version.c
	$(RM) -f $(PROG) $(PROG).o $(PROG).hex $(PROG).bdx $(PROG).ab
	$(RM) -f $(PROG).bin $(PROG)o.bin $(PROG).tmp
	$(RM) -f rominit.o bootinit.o bootinit_ram.o
	$(RM) -f $(PROG).map $(PROG).z $(PROG).z.o $(PROG).z.s
	$(RM) -f $(PROG)_ram.map $(PROG)_ram.o
	$(RM) -f $(PROG)_ram $(PROG)_ram.bdx $(PROG)_ram.ab
	$(RM) -f $(PROG).abx $(PROG)_ram.abx
	$(RM) -f .make.state .cmake.state makefile.bak

clobber: clean
	$(RM) -f $(PROG).bin $(PROG)_ram