#---------------------------------------------------------------------
#     Copyright (C) GFD Dennou Club, 2005. All rights reserved.
#---------------------------------------------------------------------
#= Export source codes from cvsroot, and compress them.
#
# * Yasuhiro MORIKAWA, Masaki ISHIWATARI
#   * 2005/10/10 (Yasuhiro MORIKAWA) Updated
#   * 2005/06/30 (Yasuhiro MORIKAWA) "Current_CVS_Tag.mk" is included
#   * 2005/06/23 (Yasuhiro MORIKAWA) Japanese commends are added
#   * 2005/06/12 (Yasuhiro MORIKAWA) Create
#
######################################################################
#
#== Settings
#
# [JAPANESE] 各種設定項目

INCLUDEFILE = Current_CVS_Tag.mk
include $(INCLUDEFILE)   # Include file              (optional)
                         # [JA] インクルードファイル (任意)

# cvsroot                     (necessary)
# [JA] cvsroot のディレクトリ (必須)
CVS_ROOT = /GFD_Dennou_Club/ftp/arch/dcmodel/cvsroot

# Commands for "make doc"                                (optional)
# [JA] export より後にソースコード内で実行するコマンド群 (任意)
MAKEDOC  = cd $(CURTAG) ; RUBYLIB=/GFD_Dennou_Club/ftp/arch/dcmodel/lib/ruby/1.8 make doc


# Project name in cvs       (necessary)
# [JA] cvs のプロジェクト名 (必須)
PROJECT  = $(YOUR_PROJECT_NAME)

# Tag name in cvs            (necessary)
# [JA] export する「タグ」名 (必須)
CURTAG   = $(YOUR_CURRENT_TAG)


# Latest symbolic link                    (necessary)
# [JA] 最新版につけるシンボリックリンク名 (必須)
CURNAME  = $(PROJECT)_current

# Suffix of archive       (necessary)
# [JA] アーカイブの拡張子 (必須)
TGZ      = tgz

# "tgzlist-html.rb" command that create archive list HTML           (optional)
# [JA] HTML のアーカイブリストを作成する "tgzlist-html.rb" へのパス (任意)
TGZLIST  = /GFD_Dennou_Club/ftp/arch/dcmodel/bin/tgzlist-html.rb

RUBY     = ruby1.8    		 	 # Path to Ruby        (optional)
                                         # [JA] Ruby へのパス  (任意)
CVS      = cvs         		 	 # cvs command         (necessary)
                                         # [JA] cvs へのパス   (必須)
GATE     = /usr/local/bin/gate-user-show # Path to "gate-user-show"       (optional)
                                         # [JA] "gate-user-show" へのパス (任意)

# End Settings  [JA] 設定項目ここまで
######################################################################
#== SIGEN file
#
SIGENDIR = $(CURTAG).SIGEN         
SIGENTGZ = $(CURTAG).$(TGZ).SIGEN

######################################################################
#== Get Japanese name from gate-toroku-system
#
GATEJPNAME=`$(GATE) $(USER) | grep kname | cut -d":" -f 2`

######################################################################
#== Generate archive list by "tgzlist-html.rb"
#
TGZLIST_CMD = $(RUBY) $(TGZLIST) \
		-o index --exclude $(CURNAME).$(TGZ),$(CURNAME)

######################################################################
#== Rules
#
all: export

help:
	@echo ""
	@echo "  make [export] :"
	@echo "             Export $(PROJECT) source from cvsroot. "
	@echo "             Expand source in" $(PROJECT) "."
	@echo "             Generate documentations from them."
	@echo "             Compress them into" $(PROJECT)/$(CURNAME).$(TGZ) "."
	@echo "             Create SIGEN file" $(SIGENDIR) $(SIGENTGZ) 
	@echo "             Update Archive List. "
	@echo ""
	@echo "  make tgzlist :"
	@echo "             Only Update Archive List. "
	@echo ""

clean:
	rm -f *~

clean.all: clean

export: varcheck tagcheck expand makedoc mktgz sigen tgzlist

varcheck:
	@if [ "$(PROJECT)" = "" ]; then \
	    echo -e "\n   Specify \"PROJECT\" in Makefile.export \n" ;\
	    exit 1 ;\
	fi
	@if [ "$(CURTAG)" = "" ]; then \
	    echo -e "\n   Specify \"CURTAG\" in Makefile.export \n" ;\
	    exit 1 ;\
	fi
	@if [ "$(CVS)" = "" ]; then \
	    echo -e "\n   Specify \"CVS\" in Makefile.export \n" ;\
	    exit 1 ;\
	fi
	@if [ "$(CURNAME)" = "" ]; then \
	    echo -e "\n   Specify \"CURNAME\" in Makefile.export \n" ;\
	    exit 1 ;\
	fi
	@if [ "$(TGZ)" = "" ]; then \
	    echo -e "\n   Specify \"TGZ\" in Makefile.export \n" ;\
	    exit 1 ;\
	fi
	@if [ "$(CVS_ROOT)" = "" ]; then \
	    echo -e "\n   Specify \"CVS_ROOT\" in Makefile.export \n" ;\
	    exit 1 ;\
	fi


tagcheck:
	@if [ -d $(CURTAG) ]; then \
	    echo -e \
		"\n  " $(CURTAG) "is already exported .\n" \
		"  Please change \"CURTAG\" in \"Makefile.export\" to latest tag.\n" \
		"  And do \"make export\" again.\n" ;\
	    exit 1 ;\
	fi

expand:
	$(CVS) -d $(CVS_ROOT) export -r $(CURTAG) \
	       -d $(CURTAG)   $(PROJECT) \
	|| \
	eval  " rm $(CURTAG)/CVS/*  ; \
		rmdir $(CURTAG)/CVS ; \
		rmdir $(CURTAG)     ; exit 1 "

makedoc:
	if [ "$(MAKEDOC)" != "" ]; then \
	    $(MAKEDOC) ;\
	fi

mktgz:
	tar cvfz $(CURTAG).$(TGZ) $(CURTAG)
	rm -f $(CURNAME) $(CURNAME).$(TGZ)
	ln -s $(CURTAG)        $(CURNAME)
	ln -s $(CURTAG).$(TGZ) $(CURNAME).$(TGZ)

sigen: sigendir sigentgz

sigendir:
	if [ "$(GATE)" != "" ]; then \
	    echo "Subject:	" $(CURTAG) "Source code directory" > $(SIGENDIR) ;\
	    echo "Maintainer:	" $(GATEJPNAME) >> $(SIGENDIR) ;\
	    echo "Description:	 This file is auto-generated form \"make export -f Makefile.export\"" >> $(SIGENDIR) ;\
	    echo "Note:		" >> $(SIGENDIR) ;\
	    echo "Update:		`date +%Y/%m/%d`" >> $(SIGENDIR) ;\
	fi

sigentgz:
	if [ "$(GATE)" != "" ]; then \
	    echo "Subject:	" $(CURTAG) "tar.gz Package" > $(SIGENTGZ) ;\
	    echo "Maintainer:	" $(GATEJPNAME) >> $(SIGENTGZ) ;\
	    echo "Description:	 This file is auto-generated form \"make export -f Makefile.export\"" >> $(SIGENTGZ) ;\
	    echo "Note:		" >> $(SIGENTGZ) ;\
	    echo "Update:		`date +%Y/%m/%d`" >> $(SIGENTGZ) ;\
	fi

tgzlist:
	if [ "$(TGZLIST_CMD)" != "" ] && [ "$(RUBY)" != "" ]; then \
	    $(TGZLIST_CMD) ;\
	fi
