###############################################################################
# ツールの環境変数
###############################################################################
CC=@CC@
CXX=@CXX@
INSTALL=@INSTALL@
RUBY=@RUBY@


###############################################################################
# ライブラリの環境変数
###############################################################################
LIBCURSES=@LIBCURSES@

LIBRUBY=@LIBRUBY@
INCRUBY=@INCRUBY@

LIBONIG=@LIBONIG@
INCONIG=@INCONIG@

COMPILED_LIBONIG=@COMPILED_LIBONIG@
COMPILED_INCONIG=@COMPILED_INCONIG@

LIBMIGEMO=@LIBMIGEMO@

LIBEXTRA=@LIBEXTRA@

LIBWKF=wkf-1.3.9/libwkf.a
INCWKF=-I wkf-1.3.9
WKF_CONFIGURE=@WKF_CONFIGURE@

################################################################################
# 環境変数
################################################################################
TARGETS=@TARGETS@
CFLAGS=@CFLAGS@ @EXTRACFLAGS@ @INCRUBY@ $(INCWKF) $(INCONIG) $(COMPILED_INCONIG) @DEBUG@

###############################################################################
# インストールするディレクトリ位置
###############################################################################
prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
sysconfdir=@sysconfdir@
datadir=@datadir@

###############################################################################
# オブジェクトの環境変数
###############################################################################
OBJ=bin/main.o bin/command.o bin/cmdline.o bin/shell.o bin/cmdline_completion.o bin/cmdline_alias.o bin/cmdline_view.o bin/cmdline_history.o bin/cmdline_macro.o bin/dirwnd.o bin/dirwnd_attribute.o bin/dirwnd_sort.o bin/dirwnd_view.o bin/dirwnd_tab.o bin/menu.o bin/file.o bin/help.o bin/isearch.o bin/extra.o bin/minato_hash.o bin/minato_vector.o bin/minato_list.o bin/minato_string.o bin/minato_curses.o bin/minato_extra.o bin/minato_debug.o bin/variable.o bin/isearch_super.o

###############################################################################
# all
###############################################################################
all: $(TARGETS)
	rm -f install

###############################################################################
# 実行ファイル
###############################################################################
mfiler2: $(COMPILED_LIBONIG) $(LIBWKF) $(OBJ) config.h
	$(CXX) -o mfiler2 $(CFLAGS) $(OBJ) $(LIBEXTRA) $(LIBCURSES) $(LIBMIGEMO) $(LIBRUBY) $(LIBWKF) $(LIBONIG) $(COMPILED_LIBONIG)

mattr: mattr.cpp
	$(CXX) -o mattr mattr.cpp $(CFLAGS) $(LIBEXTRA) $(LIBCURSES)

mhitanykey: mhitanykey.c
	$(CC) -o mhitanykey mhitanykey.c $(CFLAGS) $(LIBEXTRA) $(LIBCURSES)

mkeycode: mkeycode.cpp
	$(CXX) -o mkeycode mkeycode.cpp  $(CFLAGS) $(LIBEXTRA) $(LIBCURSES)

mattrcyg: mattrcyg.cpp
	$(CXX) -o mattrcyg mattrcyg.cpp $(CFLAGS) $(LIBEXTRA) $(LIBCURSES) $(LIBRUBY)

###############################################################################
# ライブラリ
###############################################################################
bin/minato_hash.o: minato_hash.c
	$(CC) -c minato_hash.c $(CFLAGS) 
	mv minato_hash.o bin/

bin/minato_vector.o: minato_vector.c
	$(CC) -c minato_vector.c $(CFLAGS)  
	mv minato_vector.o bin/

bin/minato_list.o: minato_list.c
	$(CC) -c minato_list.c $(CFLAGS)  
	mv minato_list.o bin/

bin/minato_string.o: minato_string.c
	$(CC) -c minato_string.c $(CFLAGS)  
	mv minato_string.o bin/

bin/minato_curses.o: minato_curses.c
	$(CC) -c minato_curses.c $(CFLAGS) 
	mv minato_curses.o bin/

bin/minato_extra.o: minato_extra.c
	$(CC) -c minato_extra.c $(CFLAGS)  
	mv minato_extra.o bin/

bin/minato_debug.o: minato_debug.c
	$(CC) -c minato_debug.c $(CFLAGS)  
	mv minato_debug.o bin/

$(COMPILED_LIBONIG):
	cd onig-4.6.1 && ./configure && make

$(LIBWKF):
	cd wkf-1.3.9 && $(WKF_CONFIGURE) && make

###############################################################################
# オブジェクトファイル
###############################################################################
bin/main.o: main.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c main.cpp $(CFLAGS)  -DSYSCONFDIR=\"$(sysconfdir)\"
	mv main.o bin/

bin/command.o: command.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c command.cpp $(CFLAGS) 
	mv command.o bin/
      
bin/dirwnd.o: dirwnd.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c dirwnd.cpp $(CFLAGS)   
	mv dirwnd.o bin/
      
bin/dirwnd_attribute.o: dirwnd.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c dirwnd_attribute.cpp $(CFLAGS)    
	mv dirwnd_attribute.o bin/
      
bin/dirwnd_sort.o: dirwnd_sort.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c dirwnd_sort.cpp $(CFLAGS)    
	mv dirwnd_sort.o bin/
      
bin/dirwnd_view.o: dirwnd_view.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c dirwnd_view.cpp $(CFLAGS)    
	mv dirwnd_view.o bin/
      
bin/dirwnd_tab.o: dirwnd_tab.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c dirwnd_tab.cpp $(CFLAGS)    
	mv dirwnd_tab.o bin/
      
bin/cmdline.o: cmdline.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c cmdline.cpp $(CFLAGS)    
	mv cmdline.o bin/
      
bin/shell.o: shell.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c shell.cpp $(CFLAGS)    
	mv shell.o bin/
      
bin/cmdline_view.o: cmdline_view.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c cmdline_view.cpp $(CFLAGS)    
	mv cmdline_view.o bin/
      
bin/cmdline_alias.o: cmdline_alias.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c cmdline_alias.cpp $(CFLAGS)    
	mv cmdline_alias.o bin/
      
bin/cmdline_history.o: cmdline_history.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c cmdline_history.cpp $(CFLAGS)    
	mv cmdline_history.o bin/
      
bin/cmdline_macro.o: cmdline_macro.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c cmdline_macro.cpp $(CFLAGS)    
	mv cmdline_macro.o bin/
      
bin/cmdline_completion.o: cmdline_completion.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c cmdline_completion.cpp $(CFLAGS)    
	mv cmdline_completion.o bin/
      
bin/menu.o: menu.cpp common.h menu.h dirwnd.h config.h
	$(CXX) -c menu.cpp $(CFLAGS)    
	mv menu.o bin/
      
bin/file.o: file.cpp common.h dirwnd.h menu.h config.h
	$(CXX) -c file.cpp $(CFLAGS)    
	mv file.o bin/

bin/help.o: help.cpp common.h config.h
	$(CXX) -c help.cpp $(CFLAGS)    
	mv help.o bin/

bin/isearch.o: isearch.cpp common.h config.h
	$(CXX) -c isearch.cpp $(CFLAGS)     -DDATADIR=\"$(datadir)\"
	mv isearch.o bin/

bin/isearch_super.o: isearch_super.cpp common.h config.h
	$(CXX) -c isearch_super.cpp $(CFLAGS)     -DDATADIR=\"$(datadir)\"
	mv isearch_super.o bin/

bin/extra.o: extra.cpp common.h config.h
	$(CXX) -c extra.cpp $(CFLAGS)    
	mv extra.o bin/

bin/variable.o: variable.cpp common.h config.h
	$(CXX) -c variable.cpp $(CFLAGS)    
	mv variable.o bin/

###############################################################################
# クリーン
###############################################################################
clean:
	rm -f $(OBJ) mfiler2 mattr mkeycode mhitanykey mattrcyg mfiler2.exe mattr.exe mkeycode.exe mhitanykey.exe mattrcyg.exe

###############################################################################
# ディストクリーン
###############################################################################
distclean:
	rm -f $(OBJ) mfiler2 mattr mkeycode mhitanykey mattrcyg mfiler2.exe mattr.exe mkeycode.exe mhitanykey.exe mattrcyg.exe
	rm -f Makefile config.cache config.h config.log config.status


###############################################################################
# インストール
###############################################################################
install: $(STRIP)
	mkdir -p $(bindir)
	mkdir -p $(sysconfdir)
	mkdir -p $(datadir)/mfiler/cp932
	mkdir -p $(datadir)/mfiler/euc-jp
	mkdir -p $(datadir)/mfiler/utf-8
	$(INSTALL) -s -m 755 mfiler2 $(bindir)
	$(INSTALL) -s -m 755 mattr $(bindir)
	$(INSTALL) -m 755 mdnd $(bindir)
	-if test `uname -s | sed -e 's/\(.*\)-\(.*\)/\1/'` = "CYGWIN_NT"; then $(INSTALL) -m 755 mattrcyg $(bindir); fi
	$(INSTALL) -s -m 755 mkeycode $(bindir)
	$(INSTALL) -s -m 755 mhitanykey $(bindir)
	$(INSTALL) -m 644 etc/.mfiler "$(sysconfdir)"
	$(INSTALL) -m 644 etc/*.rb "$(sysconfdir)"
	$(INSTALL) -m 644 migemo-dic/cp932/han2zen.dat "$(datadir)/mfiler/cp932"
	$(INSTALL) -m 644 migemo-dic/cp932/hira2kata.dat "$(datadir)/mfiler/cp932"
	$(INSTALL) -m 644 migemo-dic/cp932/migemo-dict "$(datadir)/mfiler/cp932"
	$(INSTALL) -m 644 migemo-dic/cp932/roma2hira.dat "$(datadir)/mfiler/cp932"
	$(INSTALL) -m 644 migemo-dic/euc-jp/han2zen.dat "$(datadir)/mfiler/euc-jp"
	$(INSTALL) -m 644 migemo-dic/euc-jp/hira2kata.dat "$(datadir)/mfiler/euc-jp"
	$(INSTALL) -m 644 migemo-dic/euc-jp/migemo-dict "$(datadir)/mfiler/euc-jp"
	$(INSTALL) -m 644 migemo-dic/euc-jp/roma2hira.dat "$(datadir)/mfiler/euc-jp"
	$(INSTALL) -m 644 migemo-dic/utf-8/han2zen.dat "$(datadir)/mfiler/utf-8"
	$(INSTALL) -m 644 migemo-dic/utf-8/hira2kata.dat "$(datadir)/mfiler/utf-8"
	$(INSTALL) -m 644 migemo-dic/utf-8/migemo-dict "$(datadir)/mfiler/utf-8"
	$(INSTALL) -m 644 migemo-dic/utf-8/roma2hira.dat "$(datadir)/mfiler/utf-8"

