vpath .cpp . ../itsutils/common


ifeq ($(OS),Windows_NT)
all: eimgfs.exe decodestack.exe

# BOOST=c:/local/boost/boost_1_44
CFLAGS=-Zi -nologo -c -wd4668 -wd4710 -wd4711 -wd4820 -wd4571 -DNOMINMAX -Wall -Od -EHsc
openssl=z:/cvsprj/secphone/trunk/thirdparty/src/openssl
CINCS=-I ../itsutils/common -I $(BOOST) -I ../perlutils/CompressUtils -I $(openssl)/inc32
eimgfs.exe: cpp_editimgfs.obj stringutils.obj
	cl -Zi -nologo $^ -Fe"$@"  $(openssl)/lib-x86/libeay32.lib
decodestack.exe: decodestack.obj stringutils.obj
	cl -Zi -nologo $^ -Fe"$@"  -libpath:$(BOOST)/lib-x86

# 4710 : not inlined
# 4711 : selected for inlining
# 4820 : padding
# 4571 : catch semantics changed
# 4668 : #if instead of #ifdef
%.obj: %.cpp
	cl $(CFLAGS) $(CINCS) $^ -Fo"$@"

%.obj: ../itsutils/common/%.cpp
	cl $(CFLAGS) $(CINCS) $^ -Fo"$@"

else

BUILD32=1
#boost=~/gitprj/repos/boost-trunk
#boostlib=~/gitprj/repos/boost-trunk/lib-osx
BOOST=/opt/local/include
boostlib=/opt/local/lib
LDFLAGS=-g
CFLAGS=-g -std=c++0x -Wall -O0
CINCS=-I ../itsutils/common -I $(BOOST) -I ../perlutils/CompressUtils
CDEFS=-D_NO_RAPI
#-D_NO_MMAP
# -mforce-drap                Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack
# -mincoming-stack-boundary=  Assume incoming stack aligned to this power of 2
# -mpreferred-stack-boundary= Attempt to keep stack aligned to this power of 2
# -mstackrealign              Realign stack in prologue

CXX=g++-mp-4.5

all: eimgfs decodestack

eimgfs32: cpp_editimgfs.o32 stringutils.o32 dllloader.o32
	$(CXX) $^ $(LDFLAGS) -m32 -o $@ -L$(boostlib) -liconv -lcrypto
eimgfs: cpp_editimgfs.o stringutils.o
	$(CXX) $^ $(LDFLAGS) -o $@ -L$(boostlib) -liconv -lcrypto
decodestack: decodestack.o stringutils.o debug.o
	$(CXX) $^ $(LDFLAGS) -o $@ -L$(boostlib) -liconv -lboost_regex-mt -lz


%.o32: %.cpp
	$(CXX) -c $(CFLAGS) -m32 $(CDEFS) $(CINCS) $^ -o $@
%.o32: ../perlutils/CompressUtils/%.cpp
	$(CXX) -c $(CFLAGS) -m32 $(CDEFS) $(CINCS) $^ -o $@
%.o32: ../itsutils/common/%.cpp
	$(CXX) -c $(CFLAGS) -m32 $(CDEFS) $(CINCS) $^ -o $@


%.o: %.cpp
	$(CXX) -c $(CFLAGS) -D_NO_COMPRESS $(CDEFS) $(CINCS) -I ../ida $^ -o $@
%.o: ../perlutils/CompressUtils/%.cpp
	$(CXX) -c $(CFLAGS) -D_NO_COMPRESS $(CDEFS) $(CINCS) $^ -o $@
%.o: ../itsutils/common/%.cpp
	$(CXX) -c $(CFLAGS) -D_NO_COMPRESS $(CDEFS) $(CINCS) $^ -o $@

endif

clean:
	$(if $(wildcard *.dSYM),$(RM) -r $(wildcard *.dSYM))
	$(RM) $(wildcard *.o) eimgfs 
