# /****************************************************************************/
# /* Copyright 2000 Compaq Computer Corporation.                              */
# /*                                           .                              */
# /* Copying or modifying this code for any purpose is permitted,             */
# /* provided that this copyright notice is preserved in its entirety         */
# /* in all copies or modifications.  COMPAQ COMPUTER CORPORATION             */
# /* MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, AS TO THE USEFULNESS          */
# /* OR CORRECTNESS OF THIS CODE OR ITS FITNESS FOR ANY PARTICULAR            */
# /* PURPOSE.                                                                 */
# /****************************************************************************/

#
# Compaq Personal Server Monitor Makefile
# David Panariti -- port to NetBSD
# Jamey Hicks -- PCI configuration setup

VERSION_MAJOR = 2
VERSION_MINOR = 9
VERSION_MICRO = 3

include config.mk

all: bootldr bootldr-c0e0 bootldr-c002

AWK = awk

DEFS = -DCONFIG_INTEL_FLASH=1 -I$(LINUX_DIR) -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DVERSION_MICRO=$(VERSION_MICRO)

ASMFLAGS = -x assembler-with-cpp -c $(DEFS)
CFLAGS = $(CDEFS) $(DEFS) -O -fPIC
CLIBS = -L/skiff/local/lib/gcc-lib/arm-linux/2.95.2 -lgcc -lc -lz
OSDEFS =   

# include Makefile.$(OSTYPE)

CROSS_COMPILE = arm-linux-
ASM = gcc
CC = gcc
LD = ld
STRIP = strip
NM = nm
OBJCOPY = objcopy
OBJCOPYFLAGS = -R .comment -R .stabs -R .stabstr

CDEFS = -DBOOTLDR -DDATE=\"`date +%y-%m-%d_%H:%M`\" $(OSDEFS)

GZIPFLAGS = -DDYN_ALLOC -DHAVE_STRING_H

HDRS=bootconfig.h bootldr.h btflash.h btpci.h sa1100.h cyclone_boot.h heap.h pcireg.h regs-21285.h bsdsum.h modem.h

# BOOTO = boot.o
ifeq ($(CONFIG_ARCH), bitsy)
  BOOTO = boot-sa1100.o mmu-strongarm.o
endif
ifeq ($(CONFIG_ARCH), skiff)
  BOOTO = boot.o mmu-strongarm.o 
endif
OTHEROBJS = bootldr.o \
	btflash.o \
	heap.o \
	xmodem.o \
        bsdsum.o \
        modem.o

ifeq ($(CONFIG_ARCH), skiff)
  LDFLAGS = -Ttext=0x41000000 -Tdata=0x4100d000 -Bstatic 
  DEFS += -DCONFIG_SKIFF=1 -DCONFIG_AMD_FLASH=1
  CONFIG_PCI = y
endif
ifeq ($(CONFIG_ARCH), bitsy)
  LDFLAGS_C002 = -Ttext=0xc0022000 -Tdata=0xc002f000 -Bstatic 
  LDFLAGS_C0E0 = -Ttext=0xc0e00000 -Tdata=0xc0e0d000 -Bstatic 
  LDFLAGS = -Ttext=0x0 -Tdata=0xd000 -Bstatic 
  DEFS += -DCONFIG_BITSY=1 -DCONFIG_INTEL_FLASH=1
endif

ifeq ($(CONFIG_PCI), y)
  DEFS += -DCONFIG_PCI=1
  OTHEROBJS += btpci.o
endif
ifeq ($(CONFIG_BZIP), yes)
  CLIBS += -lbzip
endif
ifeq ($(CONFIG_GZIP), 1)
  CFLAGS += -DCONFIG_GZIP
  CLIBS += -lz
endif


OBJS = $(BOOTO) $(OTHEROBJS)


#
# patch the a.out header with a branch around itself.
# needs to be done for the first download of a new
# a.out bootldr.
# The a.out bootldr will patch the header iff it detects an ARM
# ZMAGIC magic number.
#

bootldr: $(HDRS) $(OBJS) zerosum
	$(CROSS_COMPILE)$(LD) -v $(LDFLAGS) -o bootldr-elf $(BOOTO) $(OTHEROBJS) $(CLIBS)
	$(CROSS_COMPILE)$(NM) -v -l bootldr-elf > bootldr.nm
	$(CROSS_COMPILE)$(OBJCOPY) -O binary -S bootldr-elf bootldr $(OBJCOPYFLAGS)
	./zerosum

bootldr-c0e0: $(HDRS) $(OBJS)
	$(CROSS_COMPILE)$(LD) -v $(LDFLAGS_C0E0) -o bootldr-c0e0-elf $(BOOTO) $(OTHEROBJS) $(CLIBS)
	$(CROSS_COMPILE)$(NM) -v -l bootldr-c0e0-elf > bootldr-c0e0.nm
	$(CROSS_COMPILE)$(OBJCOPY) -O binary -S bootldr-c0e0-elf bootldr-c0e0 $(OBJCOPYFLAGS)

bootldr-c002: $(HDRS) $(OBJS)
	$(CROSS_COMPILE)$(LD) -v $(LDFLAGS_C002) -o bootldr-c002-elf $(BOOTO) $(OTHEROBJS) $(CLIBS)
	$(CROSS_COMPILE)$(NM) -v -l bootldr-c002-elf > bootldr-c002.nm
	$(CROSS_COMPILE)$(OBJCOPY) -O binary -S bootldr-c002-elf bootldr-c002 $(OBJCOPYFLAGS)

bootldr.hex: bootldr
	hexdump -v -e '"0x%x\n"' bootldr > bootldr.hex

boot.o: boot.s $(HDRS)
	$(CROSS_COMPILE)$(ASM) $(ASMFLAGS) boot.s

boot-sa1100.o: boot-sa1100.s $(HDRS)
	$(CROSS_COMPILE)$(ASM) $(ASMFLAGS) boot-sa1100.s

btpci.o: btpci.c $(HDRS)
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -c btpci.c

btusb.o: btusb.c $(HDRS) btusb.h
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -c btusb.c

btflash.o: btflash.c $(HDRS)
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -c btflash.c

heap.o: heap.c $(HDRS)
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -c heap.c

xmodem.o: xmodem.c $(HDRS)
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -c xmodem.c

modem.o: modem.c $(HDRS)
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -c modem.c

bsdsum.o: bsdsum.c $(HDRS)
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -c bsdsum.c

bootldr.o: bootldr.c $(HDRS)
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -I$(LINUX_DIR) -c bootldr.c

mmu-strongarm.o: mmu-strongarm.c $(HDRS)
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -c mmu-strongarm.c

zerosum: zerosum.c
	$(CC) -o zerosum zerosum.c

clean:
	rm -f $(OBJS) bootldr-elf bootldr bootldr.nm \
		bootldr-c002 bootldr-c002-elf bootldr-c002.nm \
		bootldr-c0e0 bootldr-c0e0-elf bootldr-c0e0.nm \
                zerosum

