Company Logo

NAVIGATIONAPLICATION 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.           #
# Distrubuted under GNU Copy Left Terms and Conditions.  #
#                                                        #
# MAKEFILE NAME: Application 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
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=$(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 -Wall $(INCLUDES) \
	     -DCPU=$(CPU)  $(DEBUG) -DPRJ_BUILD \
	     -DREMOVE_THIS_FLASH_ADDRESSING_HACK_DNF

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

PROG      := application

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

##################################
# Define source and object files #
##################################
# Subsystems:
# To add a new subsystem make and entry below, add macro to
# SUBSYSTEMS macro and then add a new target near end of makefile.
SUB1	   := $(SRC)/sub1/sub1.o
SUB2	   := $(SRC)/sub2/sub2.o
SUB3	   := $(SRC)/sub3/sub3.o
SUB4	   := $(SRC)/sub4/sub4.o

SUBSYSTEMS := \
	     $(SUB1) \
	     $(SUB2) \
	     $(SUB3) \

SRCS       := \
	     ppc8260sio.c \
	     motfccend.c  \
	     i2c.c        \
	     usrlib.c     \
	     miilib.c     \
	     usrappinit.c \
	     systffs.c    \
	     wavtffs.c    \
	     i28f016.c    \
	     cfiscs.c     \
	     rtc_stubs.c

OBJS       := \
             datasegpad.o  \
             sysalib.o     \
	     syslib.o      \
	     $(SRCS:.c=.o) \
	     $(SUBSYSTEMS) \
	     usrconfig.o   \
	     version.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

# Implicit rules
.c.o:
	$(CC) $(CFLAGS) -msoft-float $<

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

#####################
# Local Build Rules #
#####################
LD           := $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/ldppc
LDFLAGS_LOC   =
LDFLAGS      := -X -N -e _sysInit -Ttext $(LDFLAGS_LOC)
SYS_ENTRY    := 00300000
LD_LOW_FLAGS := 00100000
VXSIZE       := $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/vxsize PPC -v
CONVERT       = $(TOP)/$(PRODUCT)/tools/bin/convert

$(PROG).st: version.tmp $(PROG).o symtbl.o ctdt.o
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(LD) $(LDFLAGS) $(LD_LOW_FLAGS) -Map $@.map -o $@ $?
	$(CONVERT) -w $@ -b $(PROG).bdx -c $(PROG).ab -t ppc
	$(VXSIZE) $(SYS_ENTRY) $(LD_LOW_FLAGS) $@

MKSYMTBL   := PATH=$(TOP)/$(VENDOR)/tornado/host/x86-win32/bin \
            $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/makesymtbl PPC

# Explicit and derived targets
symtbl.o: symtbl.c
	$(CC) $(CFLAGS) -fdollars-in-identifiers -msoft-float $?

symtbl.c: $(PROG).o
	$(MKSYMTBL) $? > symtbl.c

ctdt.o: ctdt.c
	$(CC) $(CFLAGS) -traditional -msoft-float $?

NM         := $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/nmppc
MUNCH      := $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/wtxtcl \
	      $(TOP)/$(VENDOR)/tornado/host/src/hutils/munch.tcl \
	      -asm ppc

ctdt.c: $(PROG).o
	$(NM) $? | $(MUNCH) >$@

LD_PARTIAL := $(TOP)/$(VENDOR)/tornado/host/x86-win32/bin/ldppc -X -r
LIBS       := -lppcec603gnuvx

$(PROG).o: $(OBJS)
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Target $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	$(LD_PARTIAL) -o $@ -L$(TARGET)/lib $? $(LIBS)

# Targets not in SRCS list because they needed to be included in
# the LINK_LIST in a specific order.
datasegpad.o: ../datasegpad.c
	$(CC) $(CFLAGS) -msoft-float -o $@ ../datasegpad.c

sysalib.o: ../sysalib.s
	$(CC) $(CFLAGS) -P -x assembler-with-cpp -o $@ $?

syslib.o: ../syslib.c
	$(CC) $(CFLAGS) -msoft-float -o $@ $?

usrconfig.o: ../usrconfig.c
	$(CC) $(CFLAGS) -DSTANDALONE -msoft-float $?

# Version Identification Target, must prevent winkins.
.NO_WINK_IN: version.c version.o

version.o: version.c

SET_VERSION = $(TOP)/$(PRODUCT)/tools/scripts/set_version
version.tmp:
	$(SET_VERSION)

# Targets to insure SUBSYSTEMS relocatable object files are up to date.
# To add a new subsystem create a target below.  Go to top of makefile
# create a new macro for subsystem relocatable object file and add
# new macro to SUBSYSTEMS macro.
$(SUB1):
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Sub System $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	@$(TEST) -d $(@D) || $(ECHO) "DIRECTORY $(@D) DOES NOT EXIST"
	cd $(@D) && "$(MAKE)"

$(SUB2):
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Sub System $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	@$(TEST) -d $(@D) || $(ECHO) "DIRECTORY $(@D) DOES NOT EXIST"
	cd $(@D) && "$(MAKE)"

$(SUB3):
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Sub System $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	@$(TEST) -d $(@D) || $(ECHO) "DIRECTORY $(@D) DOES NOT EXIST"
	cd $(@D) && "$(MAKE)"

$(SUB4):
	@$(ECHO) " _______________________________________________________"
	@$(ECHO) "|"
	@$(ECHO) "| Building Sub System $@"
	@$(ECHO) "|"
	@$(ECHO) "|_______________________________________________________"
	@$(TEST) -d $(@D) || $(ECHO) "DIRECTORY $(@D) DOES NOT EXIST"
	cd $(@D) && "$(MAKE)"

clean: rmversion.c
	$(RM) -f $(OBJS)
	$(RM) -f $(PROG).st.map $(PROG).o
	$(RM) -f ctdt.c ctdt.o
	$(RM) -f symtbl.c symtbl.o
	$(RM) -f $(PROG).bdx $(PROG).abx $(PROG).ab
	$(RM) -f .make.state .cmake.state makefile.bak

clobber: clean
	$(RM) -f $(PROG).st