name = TAALT	# AvP[V
# -DX64 : 64bit	-DUseUnicode : UNICODE

UseDebug = 0	# 1 Ȃ debug w
!ifndef UseBCC
UseBCC = 1	# 1 Ȃ BCC32 , 0 Ȃ CL
!endif
UseTASM = 1	# 1 Ȃ TASMgp
UseIlink = 0	# 1 Ȃ ilink32(BCC 5.5ȍ~) gp
!ifndef ARM
ARM = 0		# 1 Ȃ Arm/Arm64(UNICODE)
!endif
#=======================================
!ifndef X64
X64 = 0
!else
X64 = 1		# 1 Ȃ x64(UNICODE)
!endif

!if $(X64)
UseBCC	= 0
UseTASM = 0
UseUnicode	= 1
TAIL	= 64
!endif

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

!ifndef UseUnicode
UseUnicode = 0	# 1 Ȃ UNICODE 
!else
  UnicodeCopt	= -DUNICODE
!endif

!ifdef RELEASE
UseDebug = 0
DebugCopt = /DRELEASE
!endif
#=============================================================== Borland pݒ
!if $(UseBCC)
.autodepend
!if $(UseDebug)
  DebugCopt	= -R -v -DDEBUG	# ǉ C RpCIvV
  DebugLopt	= -v
!endif
#-------------------------------------- RpCʎw
cc	= @BCC32 -4 -c -C -d -H -Hc -w -O -O1 -RT- -x- -DWINVER=0x400 $(bc56opt) $(DebugCopt) $(UnicodeCopt) $(ExCopt)
#-------------------------------------- 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
!if $(UseTASM)
  C0DLL	= TINYC0D
  C0DOBJ= TINYC0D.OBJ
!else
  C0DLL	= C0D32X
!endif
#-------------------------------------- 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 $(ExCopt) -r $(DebugRopt)
#-------------------------------------- Öق̎w
.C.OBJ:
  $(cc) -o$@ $<

.CPP.OBJ:
  $(cc) -o$@ $<

.RC.RES:
  $(rc) -fo$@ $<

!if $(UseTASM)
.ASM.OBJ:
  @tasm32 /mx /w2 $&
!endif
#============================================================= Microsoft pݒ
!else
!if $(UseDebug)
Copt	= /Gz /Od /Zi /GS #/analyze
DebugLopt	= /DEBUG /PDB:$(name)$(spi).pdb
!else # UseDebug
!ifdef RELEASE
Copt	= /Gz /O2 /Os /Oy /DRELEASE
!else # RELEASE
Copt	= /Gz /O2 /Os /Oy
!endif # RELEASE
!endif # UseDebug

!if $(X64) # x64, ARM64
X64Copt	= /wd4244 /wd4267
# TCYႢx(ł邾̎wgȂ)
!if !$(ARM) # x64
LINK64	= /MACHINE:AMD64 /LARGEADDRESSAWARE
RCOPT	= /d_WIN64
!else # ARM64
LINK64	= /MACHINE:ARM64 /LARGEADDRESSAWARE
Copt	= /O2 /Os /Oy /DRELEASE
X64Copt	= /wd4244 /wd4267
RCOPT	= /d_WIN64 /d_ARM64_ /d_M_ARM64
!endif # ARM64
!else # !$(X64), x86, ARM32
!if $(ARM) # ARM32
LINK64	= /MACHINE:ARM /LARGEADDRESSAWARE
RCOPT	= /d_M_ARM
!endif # ARM32
!endif # X64

!if $(UseDebug)
  DebugCopt	= /Od /Zi /DDEBUG
  DebugLopt	= /DEBUG
  DebugRopt	= /dDEBUG
!else
  DebugCopt	= /O2 /Os /Oy
!endif
#-------------------------------------- RpC
cc	= @"cl" /GF /nologo /c /DWINVER=0x400 $(Copt) $(DebugCopt) $(UnicodeCopt) $(X64Copt) /W3 /wd4068 /wd4996 $(ExCopt)
# 4068:s #pragma	4996:Â֐gp	/Wp64:64bitڐA`FbN

#-------------------------------------- Jʎw
linkopt = @"link" /NOLOGO /INCREMENTAL:NO /MAP /OPT:REF /OPT:ICF /NXCOMPAT /DYNAMICBASE $(DebugLopt) $(LINK64)
C0DLL	= Kernel32.Lib AdvAPI32.Lib Ole32.Lib Imm32.Lib Gdi32.Lib\
	  Shell32.Lib User32.Lib comctl32.lib Comdlg32.lib
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 $(RCOPT) $(UnicodeCopt) $(ExCopt)

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

.CPP.OBJ:
  $(cc) /Fo$@ $<

.RC.RES:
  $(rc) $<
!endif

#------------------------------------------------------------------------------
allFiles: MAKEFILE CODE$(TAIL).OBJ $(name)$(TAIL).EXE $(name)$(TAIL).DLL

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

#---------------------------------------------------------------------
dllobj	= $(name)DLL.OBJ
$(name)$(TAIL).DLL:	$(dllobj) $(name)DLL.RES $(C0DOBJ)
  -@WINCLOSE $(name)
!if $(UseBCC)
  $(linkdll) $(C0DLL) $(dllobj),$<,$(name)DLL$(TAIL),NOEH32 IMPORT32 CW32,,$(name)DLL.RES
  $(implib) $& $.
!else
  $(linkdll) $(C0DLL) $(dllobj) /OUT:$. /MAP:$(name)DLL$(TAIL).map $(name)DLL.RES
!endif

TINYC0D.OBJ:	TINYC0D.ASM
  tasm32 /mx /w2 $&

#---------------------------------------------------------------------
exeobj	= $(name).OBJ
$(name)$(TAIL).EXE: $(exeobj) $(name).RES $(name)$(TAIL).DLL
  -@WINCLOSE $(name)
!if $(UseBCC)
  $(linkexe) $(C0GUI) $(exeobj),$<,$*,NOEH32 IMPORT32 CW32 $(name)$(TAIL),,$(name)
!else
  $(linkexe) $(C0GUI) $(exeobj) $(name)$(TAIL).lib /OUT:$. $(name).RES
!endif
