# Makefile for Windows version of Golly using wxWidgets.
# To compile the wxWidgets libraries on Windows:
# 
#    cd \wxWidgets\build\msw
#    nmake -f makefile.vc BUILD=release RUNTIME_LIBS=static UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=0
# 
# It's a good idea to edit \wxWidgets\build\msw\config.vc and set:
# 
#    BUILD = release
#    RUNTIME_LIBS = static
#    UNICODE = 1
#    DEBUG_INFO = 0
#    DEBUG_FLAG = 0
# 
# Then you don't have to specify those settings to nmake when you
# build wxWidgets or Golly.

#   All system-dependent changes belong in local-win.mk
!include local-win.mk

### Golly-related variables: ###
VERSION = 2.3
RELEASENAME = golly-$(VERSION)
SHAREDFILES = README LICENSE
SHAREDDIRS = Help Scripts Patterns Rules
SRCFILES = BUILD TODO CMakeLists.txt makefile-gtk makefile-mac makefile-win \
   golly.rc *.ico appicon.xpm Info.plist.in *.icns *.h *.cpp
SRCDIRS = bitmaps
BINFILES = Golly.exe bgolly.exe RuleTableToTree.exe

LIBDIRNAME = $(WX_DIR)\lib\vc_$(LIBTYPE_SUFFIX)$(CFG)
SETUPHDIR = $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)

### note that /wd4100 turns off annoying warnings about "unreferenced formal parameter"
### in wx 2.9 when debugging assertions are disabled
CXXFLAGS = /M$(__RUNTIME_LIBS_8)$(__DEBUGRUNTIME_3) /DWIN32 \
	$(__DEBUGINFO_0) /Fdgolly.pdb $(____DEBUGRUNTIME_2_p) \
	$(__OPTIMIZEFLAG_4) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \
	$(__DEBUG_DEFINE_p) $(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
	$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) /I$(WX_DIR)\include /I$(SETUPHDIR) \
	/W4 /wd4100 /I. $(__DLLFLAG_p) /D_WINDOWS /I$(WX_DIR)\samples /DNOPCH $(__RTTIFLAG_9) \
	$(__EXCEPTIONSFLAG_10) $(CPPFLAGS) \
	/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS \
	/EHsc /DVERSION=$(VERSION) /DZLIB /I$(WX_DIR)\src\zlib

OBJDIR = ObjWin
BASEH = bigint.h ghashbase.h hlifealgo.h jvnalgo.h lifealgo.h lifepoll.h \
   liferender.h liferules.h platform.h qlifealgo.h readpattern.h \
   ruletreealgo.h ruletable_algo.h util.h viewport.h writepattern.h \
   generationsalgo.h
BASEOBJ = $(OBJDIR)/bigint.obj $(OBJDIR)/lifealgo.obj $(OBJDIR)/hlifealgo.obj \
   $(OBJDIR)/hlifedraw.obj $(OBJDIR)/qlifealgo.obj $(OBJDIR)/qlifedraw.obj \
   $(OBJDIR)/jvnalgo.obj $(OBJDIR)/ruletreealgo.obj \
   $(OBJDIR)/ruletable_algo.obj $(OBJDIR)/ghashbase.obj \
   $(OBJDIR)/ghashdraw.obj $(OBJDIR)/readpattern.obj \
   $(OBJDIR)/writepattern.obj $(OBJDIR)/liferules.obj $(OBJDIR)/util.obj \
   $(OBJDIR)/liferender.obj $(OBJDIR)/viewport.obj $(OBJDIR)/lifepoll.obj \
   $(OBJDIR)/generationsalgo.obj
WXH = wxalgos.h wxedit.h wxgolly.h wxhelp.h wxinfo.h wxlayer.h wxmain.h \
   wxperl.h wxprefs.h wxpython.h wxrender.h wxrule.h wxscript.h wxselect.h wxstatus.h \
   wxtimeline.h wxundo.h wxutils.h wxview.h
WXOBJ = $(OBJDIR)/wxutils.obj $(OBJDIR)/wxprefs.obj $(OBJDIR)/wxalgos.obj \
   $(OBJDIR)/wxrule.obj $(OBJDIR)/wxinfo.obj $(OBJDIR)/wxhelp.obj \
   $(OBJDIR)/wxstatus.obj $(OBJDIR)/wxview.obj $(OBJDIR)/wxrender.obj \
   $(OBJDIR)/wxscript.obj $(OBJDIR)/wxperl.obj $(OBJDIR)/wxpython.obj \
   $(OBJDIR)/wxfile.obj $(OBJDIR)/wxedit.obj $(OBJDIR)/wxcontrol.obj \
   $(OBJDIR)/wxtimeline.obj $(OBJDIR)/wxundo.obj $(OBJDIR)/wxlayer.obj \
   $(OBJDIR)/wxmain.obj $(OBJDIR)/wxselect.obj $(OBJDIR)/wxgolly.obj

### Conditionally set variables: ###

PORTNAME = msw
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
WXDEBUGFLAG = d
!endif
!if "$(DEBUG_FLAG)" == "1"
WXDEBUGFLAG = d
!endif
!if "$(UNICODE)" == "1"
WXUNICODEFLAG = u
!endif
!if "$(WXUNIV)" == "1"
WXUNIVNAME = univ
!endif
!if "$(SHARED)" == "1"
WXDLLFLAG = dll
!endif
!if "$(SHARED)" == "0"
LIBTYPE_SUFFIX = lib
!endif
!if "$(SHARED)" == "1"
LIBTYPE_SUFFIX = dll
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_0 = /Zi
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_0 = 
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_0 = 
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_0 = /Zi
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_1 = /DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_1 = 
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_1 = 
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_1 = /DEBUG
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_2_p = /D_DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_2_p = 
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
____DEBUGRUNTIME_2_p = 
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
____DEBUGRUNTIME_2_p = /D_DEBUG
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_2_p_1 = /d _DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_2_p_1 = 
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
____DEBUGRUNTIME_2_p_1 = 
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
____DEBUGRUNTIME_2_p_1 = /d _DEBUG
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__DEBUGRUNTIME_3 = d
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__DEBUGRUNTIME_3 = 
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
__DEBUGRUNTIME_3 = 
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
__DEBUGRUNTIME_3 = d
!endif
!if "$(BUILD)" == "debug"
__OPTIMIZEFLAG_4 = /Od
!endif
!if "$(BUILD)" == "release"
__OPTIMIZEFLAG_4 = /O2
!endif
!if "$(USE_THREADS)" == "0"
__THREADSFLAG_7 = L
!endif
!if "$(USE_THREADS)" == "1"
__THREADSFLAG_7 = T
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_8 = D
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_8 = $(__THREADSFLAG_7)
!endif
!if "$(USE_RTTI)" == "0"
__RTTIFLAG_9 = 
!endif
!if "$(USE_RTTI)" == "1"
__RTTIFLAG_9 = /GR
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONSFLAG_10 = 
!endif
!if "$(USE_EXCEPTIONS)" == "1"
__EXCEPTIONSFLAG_10 = /EHsc
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0"
__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1"
__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0"
__NO_VC_CRTDBG_p_1 = /d __NO_VC_CRTDBG__
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1"
__NO_VC_CRTDBG_p_1 = /d __NO_VC_CRTDBG__
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p = /D__WXUNIVERSAL__
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p_1 = /d __WXUNIVERSAL__
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
__DEBUG_DEFINE_p = /D__WXDEBUG__
!endif
!if "$(DEBUG_FLAG)" == "1"
__DEBUG_DEFINE_p = /D__WXDEBUG__
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
__DEBUG_DEFINE_p_1 = /d __WXDEBUG__
!endif
!if "$(DEBUG_FLAG)" == "1"
__DEBUG_DEFINE_p_1 = /d __WXDEBUG__
!endif


### following is needed for wxMSW 2.9.x
!if "$(DEBUG_FLAG)" == "0"
__DEBUG_DEFINE_p = /DwxDEBUG_LEVEL=0
!endif
!if "$(DEBUG_FLAG)" == "0"
__DEBUG_DEFINE_p_1 = /d wxDEBUG_LEVEL=0
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__NDEBUG_DEFINE_p = /DNDEBUG
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
__NDEBUG_DEFINE_p = /DNDEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__NDEBUG_DEFINE_p_1 = /d NDEBUG
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
__NDEBUG_DEFINE_p_1 = /d NDEBUG
!endif


!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONS_DEFINE_p = /DwxNO_EXCEPTIONS
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONS_DEFINE_p_1 = /d wxNO_EXCEPTIONS
!endif
!if "$(USE_RTTI)" == "0"
__RTTI_DEFINE_p = /DwxNO_RTTI
!endif
!if "$(USE_RTTI)" == "0"
__RTTI_DEFINE_p_1 = /d wxNO_RTTI
!endif
!if "$(USE_THREADS)" == "0"
__THREAD_DEFINE_p = /DwxNO_THREADS
!endif
!if "$(USE_THREADS)" == "0"
__THREAD_DEFINE_p_1 = /d wxNO_THREADS
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p = /D_UNICODE
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p_1 = /d _UNICODE
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p = /DWXUSINGDLL
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p_1 = /d WXUSINGDLL
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_HTML_p = \
	wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html.lib
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_ADV_p = \
	wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_CORE_p = \
	wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_BASE_p = \
	wxbase$(WX_RELEASE)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_NET_p = \
	wxbase$(WX_RELEASE)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
!endif
!if "$(MONOLITHIC)" == "1"
__WXLIB_MONO_p = \
	wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MSLU)" == "1"
__UNICOWS_LIB_p = unicows.lib
!endif

__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib

### Targets: ###

all: $(OBJDIR) Golly.exe bgolly.exe RuleTableToTree.exe

$(BASEOBJ): $(BASEH)
$(WXOBJ): $(BASEH) $(WXH) *.xpm bitmaps/*.xpm

$(OBJDIR):
	mkdir $(OBJDIR)

clean: 
	-if exist $(OBJDIR)\*.obj del $(OBJDIR)\*.obj
	-if exist *.res del *.res
	-if exist Golly.exe del Golly.exe
	-if exist bgolly.exe del bgolly.exe
	-if exist RuleTableToTree.exe del RuleTableToTree.exe
	-if exist golly.pdb del golly.pdb

Golly.exe: $(BASEOBJ) $(WXOBJ) golly.res
	link /LARGEADDRESSAWARE /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_1) /pdb:"golly.pdb" \
	/LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:WINDOWS $(BASEOBJ) $(WXOBJ) golly.res \
	$(__WXLIB_HTML_p) $(__WXLIB_ADV_p) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_NET_p) \
	$(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib \
	wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib \
	$(__UNICOWS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib \
	winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib \
	rpcrt4.lib advapi32.lib wsock32.lib wininet.lib

### these libs no longer needed if wininet.lib is used??? oleacc.lib odbc32.lib

golly.res: golly.rc
	rc /fo$@  /d WIN32 $(____DEBUGRUNTIME_2_p_1) $(__NO_VC_CRTDBG_p_1)  /d __WXMSW__ $(__WXUNIV_DEFINE_p_1) \
	$(__DEBUG_DEFINE_p_1) $(__NDEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) \
	$(__UNICODE_DEFINE_p_1) /i $(WX_DIR)\include /i $(SETUPHDIR) /i . $(__DLLFLAG_p_1) /d _WINDOWS \
	/i $(WX_DIR)\samples /d NOPCH golly.rc

bgolly.exe: $(BASEOBJ) $(OBJDIR)/bgolly.obj
	link /LARGEADDRESSAWARE /NOLOGO /OUT:$@ $(LDFLAGS) /LIBPATH:$(LIBDIRNAME) \
	$(OBJDIR)/bgolly.obj $(BASEOBJ) wxzlib$(WXDEBUGFLAG).lib

RuleTableToTree.exe: $(BASEOBJ) $(OBJDIR)/RuleTableToTree.obj
	link /LARGEADDRESSAWARE /NOLOGO /OUT:$@ $(LDFLAGS) /LIBPATH:$(LIBDIRNAME) \
	$(OBJDIR)/RuleTableToTree.obj $(BASEOBJ) wxzlib$(WXDEBUGFLAG).lib

$(OBJDIR)/bgolly.obj: bgolly.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) bgolly.cpp

$(OBJDIR)/RuleTableToTree.obj: RuleTableToTree.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) RuleTableToTree.cpp

$(OBJDIR)/bigint.obj: bigint.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) bigint.cpp

$(OBJDIR)/lifealgo.obj: lifealgo.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) lifealgo.cpp

$(OBJDIR)/hlifealgo.obj: hlifealgo.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) hlifealgo.cpp

$(OBJDIR)/hlifedraw.obj: hlifedraw.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) hlifedraw.cpp

$(OBJDIR)/qlifealgo.obj: qlifealgo.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) qlifealgo.cpp

$(OBJDIR)/qlifedraw.obj: qlifedraw.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) qlifedraw.cpp

$(OBJDIR)/jvnalgo.obj: jvnalgo.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) jvnalgo.cpp

$(OBJDIR)/ruletable_algo.obj: ruletable_algo.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) ruletable_algo.cpp

$(OBJDIR)/ruletreealgo.obj: ruletreealgo.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) ruletreealgo.cpp

$(OBJDIR)/generationsalgo.obj: generationsalgo.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) generationsalgo.cpp

$(OBJDIR)/ghashbase.obj: ghashbase.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) ghashbase.cpp

$(OBJDIR)/ghashdraw.obj: ghashdraw.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) ghashdraw.cpp

$(OBJDIR)/liferules.obj: liferules.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) liferules.cpp

$(OBJDIR)/liferender.obj: liferender.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) liferender.cpp

$(OBJDIR)/readpattern.obj: readpattern.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) readpattern.cpp

$(OBJDIR)/writepattern.obj: writepattern.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) writepattern.cpp

$(OBJDIR)/util.obj: util.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) util.cpp

$(OBJDIR)/viewport.obj: viewport.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) viewport.cpp

$(OBJDIR)/lifepoll.obj: lifepoll.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) lifepoll.cpp

$(OBJDIR)/wxutils.obj: wxutils.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxutils.cpp

$(OBJDIR)/wxprefs.obj: wxprefs.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxprefs.cpp

$(OBJDIR)/wxalgos.obj: wxalgos.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxalgos.cpp

$(OBJDIR)/wxrule.obj: wxrule.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxrule.cpp

$(OBJDIR)/wxinfo.obj: wxinfo.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxinfo.cpp

$(OBJDIR)/wxhelp.obj: wxhelp.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxhelp.cpp

$(OBJDIR)/wxstatus.obj: wxstatus.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxstatus.cpp

$(OBJDIR)/wxview.obj: wxview.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxview.cpp

$(OBJDIR)/wxrender.obj: wxrender.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxrender.cpp

$(OBJDIR)/wxperl.obj: wxperl.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) $(PERL_INCLUDE) wxperl.cpp

$(OBJDIR)/wxpython.obj: wxpython.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) $(PYTHON_INCLUDE) wxpython.cpp

$(OBJDIR)/wxscript.obj: wxscript.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxscript.cpp

$(OBJDIR)/wxfile.obj: wxfile.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxfile.cpp

$(OBJDIR)/wxedit.obj: wxedit.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxedit.cpp

$(OBJDIR)/wxselect.obj: wxselect.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxselect.cpp

$(OBJDIR)/wxcontrol.obj: wxcontrol.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxcontrol.cpp

$(OBJDIR)/wxtimeline.obj: wxtimeline.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxtimeline.cpp

$(OBJDIR)/wxundo.obj: wxundo.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxundo.cpp

$(OBJDIR)/wxlayer.obj: wxlayer.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxlayer.cpp

$(OBJDIR)/wxmain.obj: wxmain.cpp
	$(CXX) /c /nologo /Fo$@ $(CXXFLAGS) wxmain.cpp

$(OBJDIR)/wxgolly.obj: wxgolly.cpp
	$(CXX) /c /TP /nologo /Fo$@ $(CXXFLAGS) wxgolly.cpp

srcdist:
	-rmdir /s /q $(RELEASENAME)-src
	mkdir $(RELEASENAME)-src
	mkdir $(RELEASENAME)-src\bitmaps
	mkdir $(RELEASENAME)-src\Help
	mkdir $(RELEASENAME)-src\Patterns
	mkdir $(RELEASENAME)-src\Scripts
	for %%F IN ($(SRCFILES) $(SHAREDFILES)) do xcopy %F $(RELEASENAME)-src
	for %%F IN ($(SRCDIRS) $(SHAREDDIRS)) do xcopy /S /I %F $(RELEASENAME)-src\%F
	ren $(RELEASENAME)-src\README README.txt
	ren $(RELEASENAME)-src\LICENSE LICENSE.txt
	ren $(RELEASENAME)-src\BUILD BUILD.txt
	ren $(RELEASENAME)-src\TODO TODO.txt
	echo Now zip $(RELEASENAME)-src into $(RELEASENAME)-src.zip

bindist: all
	-rmdir /s /q $(RELEASENAME)-win
	mkdir $(RELEASENAME)-win
	mkdir $(RELEASENAME)-win\Help
	mkdir $(RELEASENAME)-win\Patterns
	mkdir $(RELEASENAME)-win\Scripts
	for %%F IN ($(BINFILES) $(SHAREDFILES)) do xcopy %F $(RELEASENAME)-win
	for %%F IN ($(SHAREDDIRS)) do xcopy /S /I %F $(RELEASENAME)-win\%F
	ren $(RELEASENAME)-win\README README.txt
	ren $(RELEASENAME)-win\LICENSE LICENSE.txt
	echo Now zip $(RELEASENAME)-win into $(RELEASENAME)-win.zip
