# This file is part of "Ported tools for HDL".
# This software is distributed under the terms of the zlib License.
# Copyright (c) 2010 molelord
# All rights reserved.

# 猫科研究所パック a004 (gcc-4.4.1-tdm) にてビルドすることを前提としたmakefile
#                        gcc-3.4.5-20060117-3であってもビルドが可能
# 猫科研究所パックについては http://up-cat.net を参照。
#
# 手順
# 1. make download
# 2. unzip-～-bin.zipに含まれるunzip.exeとunzip32.dllをパスの通ったディレクトリ
#    に展開しておく(Xilinx ISEにはunzipが含まれているので、ISEがインストール
#    済みならば不要)
# 3. make
#
# もし、すでにunzip.exeが使える状態になっているならば、
#    make download all
# として終わるまでほうっておくのが一番楽ができる。
#
# 最終的にopenocd-0.3.1/src/openocd_d2xx.exeができるので、
#   openocd-0.3.1/src/openocd_d2xx.exe
#   CDM_2.06_00_WHQL_Certified/i386/ftd2xx.dll
# の2つを <openocdをインストールしたディレクトリ>\binに手作業でコピー
# すればよい。

OPENOCD_VER=0.3.1
OPENOCD_SRC=openocd-$(OPENOCD_VER)
OPENOCD_SRC_Z=$(OPENOCD_SRC).tar.bz2

D2XX_DRV_NAME="CDM 2.06.00 WHQL Certified"
D2XX_DRV_URL:=$(shell echo $(D2XX_DRV_NAME) | sed -e s/" "/%20/g)
D2XX_DRV_BIN:=$(shell echo $(D2XX_DRV_NAME) | sed -e s/" "/_/g)
D2XX_DRV_BIN_Z=$(D2XX_DRV_BIN).zip

UNZIP_BIN_Z=unzip-5.51-1-bin.zip

MIRROR=http://jaist.dl.sourceforge.net/project
#MIRROR=http://ncu.dl.sourceforge.net/project

#CPU_TYPEは
# http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/i386-and-x86_002d64-Options.html
# を見て自分のPCに適合するものを使うと、性能がよくなるかも
CPU_TYPE=i686
#CPU_TYPE=core2

all : $(OPENOCD_SRC)/src/openocd_d2xx.exe

clean :
	-rm -rf $(OPENOCD_SRC) $(D2XX_DRV_BIN) *.log

$(OPENOCD_SRC)/src/openocd_d2xx.exe : $(OPENOCD_SRC)/src/openocd.exe
	cp $< $@

$(OPENOCD_SRC)/src/openocd.exe : $(OPENOCD_SRC)/Makefile
	cd $(OPENOCD_SRC) && $(MAKE) 2>&1 | tee ../make.log

$(OPENOCD_SRC)/Makefile : $(OPENOCD_SRC)/_dir $(D2XX_DRV_BIN)/_dir
	cd $(OPENOCD_SRC) && PATH=$(PWD)/$(D2XX_DRV_BIN)/i386:$(PATH) ./configure --disable-werror --disable-shared --enable-ft2232_ftd2xx --with-ftd2xx-win32-zipdir=../$(D2XX_DRV_BIN) CFLAGS="-march=$(CPU_TYPE)"


# _dirは、ディレクトリが展開済みであることを示す
$(OPENOCD_SRC)/_dir : $(OPENOCD_SRC_Z)
	tar xf $<
	touch $@

$(D2XX_DRV_BIN)/_dir : $(D2XX_DRV_BIN_Z)
	unzip $<
	mv $(D2XX_DRV_NAME) $(D2XX_DRV_BIN)
	touch $@


$(OPENOCD_SRC_Z) :
	wget $(MIRROR)/openocd/openocd/$(OPENOCD_VER)/$@

$(D2XX_DRV_BIN_Z) :
	wget http://www.ftdichip.com/Drivers/CDM/$(D2XX_DRV_URL).zip -O $@

# UNZIP_BIN_Zはunzipが無いと展開できない。ダウンロードだけは自動で行う
$(UNZIP_BIN_Z) :
	wget $(MIRROR)/gnuwin32/unzip/5.51-1/$@


download : $(OPENOCD_SRC_Z) \
	$(D2XX_DRV_BIN_Z) \
	$(UNZIP_BIN_Z)


superclean : clean
	rm -f $(OPENOCD_SRC_Z)
	$(D2XX_DRV_BIN_Z) \
	$(UNZIP_BIN_Z)
