# MYPerl.class の Makefile(nmake.exe 用) # 実行例:nmake -f myperl.mak # Java のディレクトリ JAVA_DIR="C:\Program Files\Java\jdk1.6.0_14" JAVA_INC_DIR=$(JAVA_DIR)\include JAVA_INC_DIR2=$(JAVA_INC_DIR)\win32 # Perl のディレクトリ PERL_DIR=c:\perl PERL_LIB_DIR=$(PERL_DIR)\lib\CORE PERL_INC_DIR=$(PERL_LIB_DIR) # コマンド MT=mt JAVAC=$(JAVA_DIR)\bin\javac JAVAH=$(JAVA_DIR)\bin\javah PERL=$(PERL_DIR)\bin\perl # Perl 関連Cコンパイラオプション PERL_CC_OPTS= -nologo -GF -W3 -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX #PERL_CC_OPTS には perl -MExtUtils::Embed -e ccopts の実行結果を使う # Cコンパイラオプション CFLAG=/nologo /DWIN32 $(PERL_CC_OPTS) /I $(JAVA_INC_DIR) /I $(JAVA_INC_DIR2) /I $(PERL_INC_DIR) # ライブラリ LIBS=$(PERL_LIB_DIR)\perl510.lib .SUFFIXES: .class .java .c .h .obj .exe all: MYPerl.class myperl.dll clean: cleanup cleanup: del *.exe *.obj *.class *.dll *.lib *.exp *.pdb *.ilk *.log *.manifest *.bak sample: Sample.class Sample2.class perlxsi.c: $(PERL) -MExtUtils::Embed -e xsinit -- -o $@ # perlxsi.c は perl から生成。 .c.obj: $(CC) /c /Fo$@ $< $(CFLAG) .java.class: $(JAVAC) $< .class.h: $(JAVAH) -jni $* # メモ:$* はターゲットから拡張子を除いた文字列 MYPerl.h: MYPerl.class myperl.obj: MYPerl.h myperl.dll: myperl.obj perlxsi.obj $(CC) /LD /Fo$@ myperl.obj perlxsi.obj /link $(LIBS)