#
# Copyright (c) 2000 Blue Mug, Inc.  All Rights Reserved.
#

cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
             > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)

ifeq ($(TARGET),suzaku)
	ifeq (, $(PROFILE))
		.PROFILE := microblaze
	else
		.PROFILE := $(PROFILE)
	endif
	ifeq ($(.PROFILE),microblaze)
		CROSS_COMPILE ?= mb-
	else
		ifeq ($(.PROFILE),powerpc)
			CROSS_COMPILE ?= powerpc-linux-
		endif
	endif
else
	ifeq ($(TARGET), armadilloj)
		CROSS_COMPILE ?= arm-elf-
	else
		CROSS_COMPILE ?= arm-linux-
		CROSSPREFIX := /usr/local/arm-linux
		LIBC := $(CROSSPREFIX)/lib/libc.a
	endif
endif

ifeq ($(TARGET),suzaku)
CFLAG_OPTIMIZE = -O2
endif

ifeq ($(CFLAG_OPTIMIZE), )
CFLAG_OPTIMIZE = -Os
endif

CC := $(CROSS_COMPILE)gcc
CFLAGS := -Wall $(CFLAG_OPTIMIZE) -fomit-frame-pointer \
	-DHERMIT_VERSION='"$(HERMIT_VERSION)"' \
	-nostdlib -I../../../include

ARCHFLAGS :=
ifeq ($(findstring arm,$(CROSS_COMPILE)),arm)
ifeq ($(TARGET), armadillo9)
ifeq ($(.PROFILE),eabi-debug)
ARCHFLAGS += -march=armv4 -mtune=arm9tdmi -gdwarf-2
else
ARCHFLAGS += -march=armv4 -mtune=arm9tdmi
endif
endif

ifeq ($(TARGET), armadillo2x0)
ARCHFLAGS += -march=armv4 -mtune=arm9tdmi
endif

ifeq ($(TARGET), armadillo5x0)
MARCH := $(call cc-option, -march=armv6, -march=armv5t)
MTUNE := $(firstword \
		$(call cc-option, -mtune=arm1136jf-s) \
		$(call cc-option, -mtune=arm1136jfs) \
		$(call cc-option, -mtune=strongarm) \
		)
ARCHFLAGS += $(MARCH) $(MTUNE)
endif

ifeq ($(ARCHFLAGS), )
ifeq ($(.PROFILE),eabi-debug)
ARCHFLAGS += -march=armv4 -mtune=arm7tdmi -gdwarf-2
else
ARCHFLAGS += -march=armv4 -mtune=arm7tdmi
endif
endif
endif

ifeq ($(TARGET),suzaku)
ifeq ($(.PROFILE),microblaze)
ARCHFLAGS += -mxl-barrel-shift -mno-xl-soft-div -mno-xl-soft-mul \
	-mxl-pattern-compare
endif
ifeq ($(.PROFILE),powerpc)
ARCHFLAGS += -m32 -mmultiple -mstring -Wa,-m405
endif
endif

CFLAGS += $(ARCHFLAGS)

SRCS := assert.c command.c crc.c download.c help.c jump.c \
	peek.c poke.c print.c quit.c \
	mem.c scan.c str.c upload.c version.c \
	md5.c

OBJS := $(SRCS:.c=.o)
DEPS := $(SRCS:.c=.d)

.PHONY: all
all: libtarget.a

libtarget.a: $(OBJS)
	$(CROSS_COMPILE)ar cr $@ $(OBJS) 
	$(CROSS_COMPILE)ranlib $@

# housecleaning
.PHONY: clean
clean:
	rm -f libtarget.a $(OBJS)
.PHONY: scrub
scrub: clean
	rm -f $(DEPS)
