name = ppxwin	# AvP[V
# nmake pꍇA$.$@A$&*ɏ

UseDebug = 0	# 1 Ȃ debug w
!ifndef UseBCC
UseBCC = 1	# 1 Ȃ BCC32 , 0 Ȃ CL
!endif
!ifndef X64
X64 = 0		# 1 Ȃ x64(UNICODE)
!else
X64 = 1
!endif
!ifndef ARM
ARM = 0		# 1 Ȃ Arm/Arm64(UNICODE)
!endif
!ifndef UseUnicode
UseUnicode = 0	# 1 Ȃ UNICODE
!endif
!ifndef VCTOOLKIT
VCTOOLKIT = 0	# VC TOOL KIT gȂLɁAVS2008Ȃ疳
!endif
UseIlink = 0	# 1 Ȃ ilink32(BCC 5.5ȍ~) gp

!ifdef RELEASE
CTAIL = R
UseDebug = 0
Copt = /DRELEASE
!endif

!if $(X64)
UseBCC	= 0
UseUnicode	= 0
TAIL	= $(TAIL)64
!else
TAIL	=
SSEOPT = /arch:SSE2
!endif

!if $(ARM)
UseBCC	= 0
UseUnicode	= 0
TAIL	= $(TAIL)A
!endif

!if $(UseUnicode)
  UnicodeCopt	= -DUNICODE
!endif

#=============================================================== Borland pݒ
!if $(UseBCC)
.autodepend
!if $(UseDebug)
  Copt	= -R -v -vG -DDEBUG	# ǉ C RpCIvV
  DebugLopt	= -v
  DebugLib	= CG32.LIB		# ǉCu
!endif
!if $(UseTASM)
 C0D	= TINYC0D
 C0DOBJ	= TINYC0D.OBJ
!else
 C0D	= $(C0DLL)
!endif
#-------------------------------------- RpCʎw
cc	= @BCC32 -4 -c -C -d -H -Hc -w -O -O1 -RT- -x- -DWINVER=0x400 $(bc56opt) $(Copt) $(UnicodeCopt)
#-------------------------------------- Jʎw
!if $(UseIlink)
 bc56opt = -Oc -q -a4
 linkopt = @ilink32 -c -m -P -V4.0 -Gn -q $(DebugLopt)
!else
 linkopt = @tlink32 -c -m -P -V4.0 $(DebugLopt)
!endif
  C0CON	= C0X32
  C0GUI	= C0W32
  C0DLL	= C0D32X
#-------------------------------------- J(GUI)
linkexe	= $(linkopt) -Tpe -aa
#-------------------------------------- J(CONSOLE)
linkcon	= $(linkopt) -Tpe -ap
#-------------------------------------- J(DLL)
linkdll	= $(linkopt) -Tpd -aa

#-------------------------------------- C|[g
implib  = @implib
#-------------------------------------- \[XRpC
rc	= @Brc32 -r
#-------------------------------------- Öق̎w
.c.obj:
  $(cc) -o$@ $<

.cpp.obj:
  $(cc) -o$@ $<

.rc.res:
  $(rc) -fo$@ $<
#============================================================= Microsoft pݒ
!else

!if $(UseDebug)
Copt	= /Od /Zi /GS #/analyze
DebugLopt	= /DEBUG
!else # UseDebug
!ifdef RELEASE
Copt	= /Gz /O2 /Os /Oy /DRELEASE
!else # RELEASE
Copt	= /Gz /O2 /Os /Oy
!endif # RELEASE
!endif # UseDebug

!if $(X64)
X64Copt	= /wd4244 /wd4267
# TCYႢx(ł邾̎wgȂ)
closeall =
!if $(VCTOOLKIT)
LINK64	= /MACHINE:AMD64
LIB64	= bufferoverflowu.lib
RC64	= /d_WIN64 /dLEGACYICON
!else # !VCTOOLKIT
!if !$(ARM)
LINK64	= /MACHINE:AMD64 /LARGEADDRESSAWARE
!else # ARM
LINK64	= /MACHINE:ARM64 /LARGEADDRESSAWARE
Copt	= /O2 /Os /Oy /DRELEASE
X64Copt	= /wd4244 /wd4267
!endif # ARM
RC64	= /d_WIN64
!endif # VCTOOLKIT
!else # !$(X64)
!if $(VCTOOLKIT)
RC64	= /dLEGACYICON
!endif # VCTOOLKIT
!if $(ARM)
LINK64	= /MACHINE:ARM /LARGEADDRESSAWARE
!endif # ARM
!endif # X64

#-------------------------------------- RpC
cc	= @"cl" /GF /nologo /c /DWINVER=0x400 $(Copt) $(UnicodeCopt) $(WineCopt) $(X64Copt) /W3 /wd4068 /wd4996
# 4068:s #pragma	4996:Â֐gp	/Wp64:64bitڐA`FbN

#-------------------------------------- Jʎw
linkopt = @"link" /NOLOGO /INCREMENTAL:NO
C0DLL	= Kernel32.Lib AdvAPI32.Lib Ole32.Lib Imm32.Lib Gdi32.Lib\
	  Shell32.Lib User32.Lib comctl32.lib Comdlg32.lib $(LIB64)
C0GUI	= $(C0DLL)
C0CON	= $(C0DLL)
#-------------------------------------- J(GUI)
linkexe	= $(linkopt) /SUBSYSTEM:WINDOWS
#-------------------------------------- J(CONSOLE)
linkcon	= $(linkopt) /SUBSYSTEM:CONSOLE
#-------------------------------------- J(DLL)
linkdll	= $(linkopt) /DLL
#-------------------------------------- \[XRpC
rc	= @%COMSPEC% /C RC /dSDKRC

#-------------------------------------- Öق̎w
.c.obj:
  $(cc) /Fo$@ $<

.cpp.obj:
  $(cc) /Fo$@ $<

.rc.res:
  $(rc) $<
!endif

#------------------------------------------------------------------------------
allFiles:	makefile	CODE$(TAIL)$(CTAIL).OBJ	$(name)$(TAIL).dll

#------------------------------------------------------ coděn؊p
CODE$(TAIL)$(CTAIL).OBJ:
  -@del *.obj 2> nul
  -@del *.res 2> nul
  -@if exist %CSM% del %CSM%\*.CSM
  @copy nul CODE$(TAIL)$(CTAIL).OBJ > nul

#------------------------------------------------------------------------------
$(name)$(TAIL).dll:	$(name).obj
!if $(UseBCC)
  $(linkdll) $(C0DLL) $&,$<,$*,$(DebugLib) NOEH32 IMPORT32 CW32,ppxmdl
!else
  $(linkdll) $(C0DLL) $(name).obj /OUT:$&.dll /DEF:ppxmdl.def
!endif
