#lite=1


COMMONOBJS=tstw stringutils wmnames
ifeq ($(OS),Windows_CE)
CDEFS+=-D_AA_WITH_WINMAIN
COMMONOBJS+=asciiapis
endif

MSVCINCDIRS=-I ../../include/msvc
COMMONINCDIRS=-I . -I ../../common

MSVCDEFS=-D_SECURE_SCL=0 -D_CRT_SECURE_NO_WARNINGS -D_HAS_ITERATOR_DEBUGGING=0



ifeq ($(OS),Windows_NT)
VC8:=$(subst \,/,$(PROGRAMFILES))/Microsoft Visual Studio 8/vc
#BOOST=c:/local/boost/boost_1_39_0
CC=$(VC8)/bin/cl.exe
CINCS=-I $(BOOST) -I "$(VC8)/include" -I "$(VC8)/PlatformSDK/Include" $(MSVCINCDIRS) $(COMMONINCDIRS)
CDEFS+=-D_NO_RAPI $(MSVCDEFS)
CDEFS+=-D_WIN32_WINNT=0x0500
CDEFS+=-D_BOOST_IPC
CDEFS+=-D_BOOST_LITE


CFLAGS=-EHsc -c -Zi
LD=$(VC8)/bin/link.exe
LDPATHS=-libpath:$(BOOST)/lib-x86 -libpath:"$(VC8)/lib" -libpath:"$(VC8)/PlatformSDK/Lib"
LDLIBS=user32.lib msvcrt.lib libcmt.lib gdi32.lib
LDFLAGS=-debug
#-nodefaultlib:msvcprt 
ifeq ($(lite),0)
LDFLAGS+=-nodefaultlib:libcmt
endif
CCOUTF=-Fo
LDOUTF=-out:
E=.exe
O=.obj

OUT=../build/x86
OBJ=../build/x86/o
else
ifeq ($(OS),Windows_CE)
VCE8:=$(subst \,/,$(PROGRAMFILES))/Microsoft Visual Studio 8/vc/ce
WM6:=$(subst \,/,$(PROGRAMFILES))/Windows Mobile 6 SDK/PocketPC
#BOOST=c:/local/boost/boost_1_39_0
CC=$(VCE8)/bin/x86_arm/cl.exe
CINCS=-I $(BOOST) -I "$(VCE8)/include" -I "$(WM6)/Include/Armv4i"  $(MSVCINCDIRS) $(COMMONINCDIRS)
CDEFS+=-D_NO_RAPI $(MSVCDEFS)

# wince specific defs
CDEFS+=-DARM -D_ARM_ -DARMV4 
CDEFS+=-DWINVER=0x0400 -DWIN32_PLATFORM_PSPC=400 -DUNDER_CE=420 -DUNICODE -D_UNICODE -D_WIN32_WCE=0x501
CDEFS+=-D_BOOST_LITE
CDEFS+=-D_WIN32_IPC

CFLAGS=-EHsc -c -Zi

LD=$(VCE8)/bin/x86_arm/link.exe
LDPATHS=-libpath:$(BOOST)/lib-arm -libpath:"$(VCE8)/lib/armv4i" -libpath:"$(WM6)/Lib/Armv4i"
# todo: remark somewhere that advapi32 is not part of wince - for boost
LDLIBS=coredll.lib corelibc.lib -nodefaultlib:advapi32 -nodefaultlib:libboost_date_time-vc80-mt-s-1_39
#  implicit : libcmt + libcpmt
LDFLAGS=-debug

#wince specific flags
LDFLAGS+=-subsystem:windowsce,3.00 -machine:thumb
CCOUTF=-Fo
LDOUTF=-out:
E=.exe
O=.obj

OUT=../build/arm
OBJ=../build/arm/o
else
CC=g++-mp-4.3
CINCS=-I /opt/local/include $(COMMONINCDIRS)
CDEFS+=-D_NO_RAPI
CDEFS+=-D_BOOST_IPC

CFLAGS=-ggdb -Wall -c
LDPATHS=-L/opt/local/lib
LDLIBS=-liconv -lboost_thread-xgcc40-mt -lstdc++.6 -lc -lgcc_s.1 /usr/lib/crt1.o
CCOUTF=-o 
LDOUTF=-o 
E=
O=.o

OUT=../build/osx
OBJ=../build/osx/o
endif
endif


all: $(OUT)/tstw$(E)


$(OUT)/tstw$(E): $(addsuffix $(O),$(addprefix $(OBJ)/,tstw $(COMMONOBJS)))

$(OBJ)/%$(O): ../../common/%.cpp
	mkdir -p $(OBJ)
	"$(CC)" "$<" $(CCOUTF)"$@" $(CDEFS) $(CFLAGS) $(CINCS)
$(OBJ)/%$(O): ./%.cpp
	mkdir -p $(OBJ)
	"$(CC)" "$<" $(CCOUTF)"$@" $(CDEFS) $(CFLAGS) $(CINCS)

$(OUT)/%$(E): $(OBJ)/%$(O)
	"$(LD)" $(LDPATHS) $(LDFLAGS) $(LDLIBS) $(LDOUTF)"$@" $^

ce:
	$(MAKE) OS=Windows_CE
clean:
	$(RM) -r $(OBJ) $(OUT)/tstw* $(OUT)/tstw*
cleance:
	$(MAKE) clean OS=Windows_CE
