PKGNAME=libps2dev
VERSION=0.9
RELEASE=1

prefix=
srcprefix=/usr/src/RPM

ifdef __debug
#
#If you want to test, please put a following 
#defintion into ~/.rpmmacros .
#%_topdir /tmp/RPM
#
prefix=/tmp
srcprefix=/tmp/RPM
endif

INCDIR       = ${prefix}/usr/include
LIBDIR       = ${prefix}/usr/lib
LDSCRIPTDIR  = ${prefix}/usr/lib/ldscrpts
DOCDIR       = ${prefix}/usr/doc/PlayStation2/${PKGNAME}

INSTALL=install

TARGET_LIB   = libps2dev.a

LIB_DIRS     = dma libvu0 ps2gs ps2mem ps2vpu vpufile
SAMPLE_DIRS  = sample
DIRS         = ${LIB_DIRS} ${SAMPLE_DIRS}

PWD = $(shell pwd)
INST_OBJSDIR = $(PWD)/inst_objs
INST_DOCSDIR = $(PWD)/inst_docs
INST_HEADSDIR= $(PWD)/inst_incs

ifdef __debug
CDEBUGFLAGS  = -g -DDEBUG
else
CDEBUGFLAGS  = -O2 -g -DDEBUG
endif

SUBDIR_MAKEOPT=__in_source_tree=1 \
		HEADSDIR=${INST_HEADSDIR} \
		DOCSDIR=${INST_DOCSDIR} \
		OBJSDIR=${INST_OBJSDIR} \

all: all_lib all_sample

install: install_lib install_sample

clean: clean_lib clean_sample
	rm -fr ${INST_OBJSDIR}
	rm -fr ${INST_DOCSDIR}
	rm -fr ${INST_HEADSDIR}

#
# SAPMLE
#

all_sample: all_lib depend_sample
	for i in ${SAMPLE_DIRS}; do \
		(cd $$i; $(MAKE) \
			SUBDIR_MAKEOPT='$(SUBDIR_MAKEOPT) \
				"SUBDIR_MAKEOPT=$(SUBDIR_MAKEOPT)"' \
			CDEBUGFLAGS='$(CDEBUGFLAGS)') \
	done;

install_sample: clean_sample
	test -d ${DOCDIR} || mkdir -p ${DOCDIR}
	tar cf - --exclude CVS --exclude .cvsignore \
		${SAMPLE_DIRS}  \
	 | ( cd ${DOCDIR} && tar xvfp - )
	

depend_sample: all_lib
	for i in ${SAMPLE_DIRS}; do \
		(cd $$i ;  \
		$(MAKE)  \
			SUBDIR_MAKEOPT='$(SUBDIR_MAKEOPT) \
				"SUBDIR_MAKEOPT=$(SUBDIR_MAKEOPT)"' \
			CDEBUGFLAGS='$(CDEBUGFLAGS)' \
			depend )  ;\
	done;
	

clean_sample:
	for i in ${SAMPLE_DIRS}; do \
		(cd $$i ;  \
		$(MAKE)  \
			SUBDIR_MAKEOPT='$(SUBDIR_MAKEOPT) \
				"SUBDIR_MAKEOPT=$(SUBDIR_MAKEOPT)"' \
			CDEBUGFLAGS='$(CDEBUGFLAGS)' \
			clean )  ;\
	done;


#
# LIB
#

all_lib:  depend_lib
	for i in ${LIB_DIRS}; do \
		(cd $$i ;  \
		$(MAKE)  \
			SUBDIR_MAKEOPT='$(SUBDIR_MAKEOPT) \
				"SUBDIR_MAKEOPT=$(SUBDIR_MAKEOPT)"' \
			CDEBUGFLAGS='$(CDEBUGFLAGS)' \
			install)  ;\
	done;
	( cd ${INST_OBJSDIR} || exit 1; \
	find . -type f -name '*.o' -print | while read f ; do  \
		ar r ${TARGET_LIB} $$f ; \
	done;  \
	ranlib ${TARGET_LIB} ; )


install_lib: all_lib
	#
	# install archive
	#
	test -d ${LIBDIR} || mkdir -p ${LIBDIR}
	${INSTALL} -m 644  ${INST_OBJSDIR}/${TARGET_LIB} \
			${LIBDIR}/${TARGET_LIB}
	#
	# install docs
	#
	test -d ${DOCDIR} || mkdir -p ${DOCDIR}
	( cd  ${INST_DOCSDIR} || exit 1; \
	  find . -type f -print  | while read f ; do \
		${INSTALL} -m 644  $$f ${DOCDIR}/$$f ; \
	  done; )
	#
	# install includes
	#
	test -d ${INCDIR} || mkdir -p ${INCDIR}
	( cd  ${INST_HEADSDIR} || exit 1; \
	  find . -type f -print  | while read f ; do \
		${INSTALL} -m 644  $$f ${INCDIR}/$$f ; \
	  done; )
	#
	# install ldscript
	#
	test -d $(LDSCRIPTDIR) || mkdir -p $(LDSCRIPTDIR)
	( cd  ${INST_OBJSDIR}/ldscripts || exit 1; \
	  find . -type f -print  | while read f ; do \
		${INSTALL} -m 644  $$f ${LDSCRIPTDIR}/$$f ; \
	  done; )
	


depend_lib:
	for i in ${LIB_DIRS}; do \
		(cd $$i ;  \
		$(MAKE)  \
			SUBDIR_MAKEOPT='$(SUBDIR_MAKEOPT) \
				"SUBDIR_MAKEOPT=$(SUBDIR_MAKEOPT)"' \
			CDEBUGFLAGS='$(CDEBUGFLAGS)' \
			depend )  ;\
	done;
	

clean_lib:
	for i in ${LIB_DIRS}; do \
		(cd $$i ;  \
		$(MAKE)  \
			SUBDIR_MAKEOPT='$(SUBDIR_MAKEOPT) \
				"SUBDIR_MAKEOPT=$(SUBDIR_MAKEOPT)"' \
			CDEBUGFLAGS='$(CDEBUGFLAGS)' \
			clean )  ;\
	done;

#
# RPM
#

rpm: source_clean source_install
	rpm -ba ${srcprefix}/SPECS/${PKGNAME}.spec

source_install: clean
	tar zcvf $(srcprefix)/SOURCES/$(PKGNAME)-$(VERSION).tar.gz \
		--exclude CVS --exclude .cvsignore  .  
	sed -e 's/##VERSION##/$(VERSION)/g' \
	    -e 's/##RELEASE##/$(RELEASE)/g' $(PKGNAME).spec.in > \
				$(srcprefix)/SPECS/$(PKGNAME).spec

source_clean:
	rm -rf $(srcprefix)/SOURCES/$(PKGNAME)-$(VERSION).tar.gz
	rm -f $(srcprefix)/SPECS/$(PKGNAME).spec


