#
# Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
# Copyright (c) 2002-2004 Atheros Communications, Inc.
# All rights reserved.
#
# $Id: Makefile,v 1.17 2004/10/28 02:55:47 sam Exp $
#

#
# Makefile for building the Atheros/MADWIFI HAL from source code on Linux.
#

#
OS=	linux
#
ifdef TARGET
ALL=	${TARGET}
else
ALL=	i386-elf \
	x86_64-elf \
	arm-elf \
	mipsisa32-be-elf mips3-elf mips2-elf mips1-elf \
	powerpc-eabi \
	sh4-elf
endif
#

all:	${ALL}

release:
	for i in ${ALL}; do \
		${MAKE} $$i-release; \
	done

clean:
	for i in ${ALL}; do \
		${MAKE} $$i-clean; \
	done

#
# XXX someone with some gmake foo should be able to do this right...
#
i386-elf: i386-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=i386-elf
i386-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=i386-elf release
i386-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=i386-elf clean

x86_64-elf: x86_64-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=x86_64-elf
x86_64-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=x86_64-elf release
x86_64-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=x86_64-elf clean

arm-elf: armv4-be-elf armv4-le-elf arm9-le-thumb-elf xscale-elf
arm-elf-release: armv4-be-elf-release armv4-le-elf-release \
	arm9-le-thumb-elf-release xscale-elf-release
arm-elf-clean: armv4-be-elf-clean armv4-le-elf-clean \
	arm9-le-thumb-elf-clean xscale-elf-clean

armv4-be-elf: armv4-be-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=armv4-be-elf
armv4-be-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=armv4-be-elf release
armv4-be-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=armv4-be-elf clean
armv4-le-elf: armv4-le-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=armv4-le-elf
armv4-le-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=armv4-le-elf release
armv4-le-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=armv4-le-elf clean
arm9-le-thumb-elf: arm9-le-thumb-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=arm9-le-thumb-elf
arm9-le-thumb-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=arm9-le-thumb-elf release
arm9-le-thumb-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=arm9-le-thumb-elf clean

xscale-elf: xscale-be-elf xscale-le-elf
xscale-elf-release: xscale-be-elf-release xscale-le-elf-release
xscale-elf-clean: xscale-be-elf-clean xscale-le-elf-clean

xscale-be-elf: xscale-be-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=xscale-be-elf
xscale-be-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=xscale-be-elf release
xscale-be-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=xscale-be-elf clean
xscale-le-elf: xscale-le-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=xscale-le-elf
xscale-le-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=xscale-le-elf release
xscale-le-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=xscale-le-elf clean

mipsisa32-be-elf: mips3-be-elf
mipsisa32-be-elf-release: mips3-be-elf-release
mipsisa32-be-elf-clean: mips3-be-elf-clean

mips3-elf: mips3-be-elf mips3-le-elf
mips3-elf-release: mips3-be-elf-release mips3-le-elf-release
mips3-elf-clean: mips3-be-elf-clean mips3-le-elf-clean

# NB: the .inc file naming is historical and needs changing
mips3-be-elf: mipsisa32-be-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mipsisa32-be-elf
mips3-be-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mipsisa32-be-elf release
mips3-be-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mipsisa32-be-elf clean

mips3-le-elf: mipsisa32-le-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mipsisa32-le-elf
mips3-le-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mipsisa32-le-elf release
mips3-le-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mipsisa32-le-elf clean

# NB: the .inc file naming is historical and needs changing
mips2-elf: mips2-be-elf mips2-le-elf
mips2-elf-release: mips2-be-elf-release mips2-le-elf-release
mips2-elf-clean: mips2-be-elf-clean mips2-le-elf-clean

mips2-be-elf: mips-be-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips-be-elf
mips2-be-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips-be-elf release
mips2-be-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips-be-elf clean

mips2-le-elf: mips-le-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips-le-elf
mips2-le-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips-le-elf release
mips2-le-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips-le-elf clean

mips1-elf: mips1-be-elf mips1-le-elf
mips1-elf-release: mips1-be-elf-release mips1-le-elf-release
mips1-elf-clean: mips1-be-elf-clean mips1-le-elf-clean

mips1-be-elf: mips1-be-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips1-be-elf
mips1-be-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips1-be-elf release
mips1-be-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips1-be-elf clean

mips1-le-elf: mips1-le-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips1-le-elf
mips1-le-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips1-le-elf release
mips1-le-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=mips1-le-elf clean

powerpc-eabi: powerpc-be-eabi powerpc-le-eabi
powerpc-eabi-release: powerpc-be-eabi-release powerpc-le-eabi-release
powerpc-eabi-clean: powerpc-be-eabi-clean powerpc-le-eabi-clean

powerpc-be-eabi: powerpc-be-eabi.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=powerpc-be-eabi
powerpc-be-eabi-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=powerpc-be-eabi release
powerpc-be-eabi-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=powerpc-be-eabi clean
powerpc-le-eabi: powerpc-le-eabi.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=powerpc-le-eabi
powerpc-le-eabi-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=powerpc-le-eabi release
powerpc-le-eabi-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=powerpc-le-eabi clean

sh4-elf: sh4-le-elf
sh4-elf-release: sh4-le-elf-release
sh4-elf-clean: sh4-le-elf-clean

sh4-le-elf: sh4-le-elf.inc
	${MAKE} -f Makefile.inc OS=${OS} TARGET=sh4-le-elf
sh4-le-elf-release:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=sh4-le-elf release
sh4-le-elf-clean:
	${MAKE} -f Makefile.inc OS=${OS} TARGET=sh4-le-elf clean

#
# Release-related support.
#
FILES=	COPYRIGHT README \
	ah.h ah_desc.h ah_devid.h version.h \
	freebsd/ah_osdep.c freebsd/ah_osdep.h freebsd/ah_if.m \
		freebsd/*.hal.o.uu freebsd/*.opt_ah.h \
	linux/ah_osdep.c linux/ah_osdep.h \
		linux/*.hal.o.uu linux/*.opt_ah.h \
	${NULL}
hal_release:
	DATE=`date +'%Y%m%d'`; TAG="ATH_HAL_$${DATE}"; DIR="ath_hal-$${DATE}"; \
	cvs tag -F $${TAG} ${FILES}; \
	rm -rf $${DIR}; mkdir $${DIR}; \
	cvs export -d $${DIR} -r $${TAG} hal; \
	tar zcf $${DIR}.tgz --exclude=CVS $${DIR}; \
	rm -rf $${DIR};

# tag the source code according to the current version
src_tag:
	TAG=`awk '/ATH_HAL_VERSION/ \
		{ gsub("\\"","",$$3); \
		  gsub("[.]", "_", $$3); print "v" $$3; }' version.h`; \
		cvs tag ${TAGOPTS} $${TAG}; \
	cvs tag -d $${TAG} */*.uu */opt_ah.h
# create a tarball of the source for the current tagged version
src_release:
	TAG=`awk '/ATH_HAL_VERSION/ \
		{ gsub("\\"","",$$3); \
		  gsub("[.]", "_", $$3); print "v" $$3; }' version.h`; \
	DIR=`awk '/ATH_HAL_VERSION/ \
		{ gsub("\\"","",$$3); print "hal-" $$3; }' version.h`; \
	rm -rf $${DIR}; mkdir $${DIR}; \
	cvs export -d $${DIR} -r $${TAG} hal; \
	tar zcf $${DIR}.tgz --exclude=CVS $${DIR}; \
	rm -rf $${DIR};
