&ifdef NMAKE

# Maxim L. (Intel): select Intel compiler if used for build
&if $COMPILER == ICC
CC = icl
&else
CC = cl
&endif

!IFDEF PROCESSOR_ARCHITEW6432
!IF "$(PROCESSOR_ARCHITEW6432)" == "AMD64"
MACHINE = AMD64
!ENDIF
!ENDIF

# Maxim L. (Intel): select Intel compiler if used for build
&if $COMPILER == ICC
LINK = xilink
&else
LINK = link
&endif

!IF "$(MACHINE)" == "AMD64"
LINK = $(LINK) bufferoverflowu.lib
!ENDIF

CPPLIBS = $(SQLDBCSDK)/sdk/sqldbc/lib/libSQLDBC.lib
CLIBS = $(SQLDBCSDK)/sdk/sqldbc/lib/libSQLDBC_C.lib

CPPFLAGS = -DWIN32 -I$(SQLDBCSDK)/sdk/sqldbc/incl

# Dependencies

all: HelloWorld.exe HelloWorld_C.exe

HelloWorld_C.exe: HelloWorld_C.obj
	$(LINK) $(CLIBS) HelloWorld_C.obj 		

HelloWorld.exe: HelloWorld.obj
	$(LINK) $(CPPLIBS) HelloWorld.obj 		

HelloWorld_C.obj: HelloWorld_C.c
	$(CC) /c $(CPPFLAGS) HelloWorld_C.c		

HelloWorld.obj: HelloWorld.cpp
	$(CC) /c $(CPPFLAGS) HelloWorld.cpp		

clean: 
	del /f HelloWorld.obj HelloWorld.exe HelloWorld.lib HelloWorld.exp 
	del /f HelloWorld_C.obj HelloWorld_C.exe HelloWorld_C.lib HelloWorld_.exp 

&else

CPPFLAGS = -I$(SQLDBCSDK)/sdk/sqldbc/incl
CPPLIBS     = -L$(SQLDBCSDK)/lib -lSQLDBC
CPPLIBS64   = -L$(SQLDBCSDK)/lib/lib64 -lSQLDBC
CLIBS     = -L$(SQLDBCSDK)/lib -lSQLDBC_C
CLIBS64   = -L$(SQLDBCSDK)/lib/lib64 -lSQLDBC_C

# Maxim L. (Intel): select Intel compiler if used for build
&if $COMPILER == ICC
CC = icc
CXX = icpc
&else
CC = cc
CXX = c++
&endif


sun: HelloWorld-sun HelloWorld_C-sun
hpux: HelloWorld-hpux HelloWorld_C-hpux
linux: HelloWorld-linux HelloWorld_C-linux
dec: HelloWorld-dec HelloWorld_C-dec
hpIa64: HelloWorld-hpIa64 HelloWorld_C-hpIa64
linuxppc: HelloWorld-linuxppc HelloWorld_C-linuxppc
aix: HelloWorld-aix HelloWorld_C-aix

HelloWorld-sun:
	CC -c -xarch=v9 $(CPPFLAGS) HelloWorld.cpp
	CC -o $@ -xarch=v9 HelloWorld.o $(CPPLIBS64)
	cp $@ HelloWorld

HelloWorld_C-sun:
	cc -c -xarch=v9 $(CPPFLAGS) HelloWorld_C.c
	cc -o $@ -xarch=v9 HelloWorld_C.o $(CLIBS64) -lCrun -lm
	cp $@ HelloWorld_C

HelloWorld-aix:
	xlC -c -q64 $(CPPFLAGS) HelloWorld.cpp
	xlC_r -o $@ -q64 -brtl HelloWorld.o $(CPPLIBS64)
	cp $@ HelloWorld

HelloWorld_C-aix:
	xlc -c -q64 -qcpluscmt $(CPPFLAGS) HelloWorld_C.c
	xlc_r -o $@ -q64 -brtl HelloWorld_C.o $(CLIBS64)
	cp $@ HelloWorld_C

HelloWorld-hpIa64:
	aCC -c +DD64 $(CPPFLAGS) HelloWorld.cpp
	aCC -o $@ +DD64 HelloWorld.o  $(CPPLIBS) -lpthread  
	cp $@ HelloWorld

HelloWorld_C-hpIa64:
	cc -c +DD64 $(CPPFLAGS) HelloWorld_C.c
	cc -o $@ +DD64 HelloWorld_C.o $(CLIBS) -lCsup -lm -lcl -lpthread
	cp $@ HelloWorld_C

HelloWorld-hpux:
	aCC -c +DA2.0W +DS2.0 $(CPPFLAGS) HelloWorld.cpp
	aCC -o $@ +DA2.0W +DS2.0 HelloWorld.o $(CPPLIBS64)
	cp $@ HelloWorld

HelloWorld_C-hpux:
	cc -c +DA2.0W +DS2.0 $(CPPFLAGS) HelloWorld_C.c
	cc -o $@ +DA2.0W +DS2.0 HelloWorld_C.o $(CLIBS64) -lCsup -lm -lcl
	cp $@ HelloWorld_C

HelloWorld-linux:
	$(CXX) -c $(CPPFLAGS) HelloWorld.cpp
	$(CXX) -o $@ HelloWorld.o $(CPPLIBS)
	cp $@ HelloWorld

HelloWorld_C-linux:
	$(CC) -c $(CPPFLAGS) HelloWorld_C.c
	$(CC) -o $@ HelloWorld_C.o $(CLIBS)
	cp $@ HelloWorld_C

HelloWorld-dec:
	cxx -c $(CPPFLAGS) HelloWorld.cpp
	cxx -o $@ HelloWorld.o $(CPPLIBS)
	cp $@ HelloWorld

HelloWorld_C-dec:
	cc -c $(CPPFLAGS) HelloWorld_C.c
	cc -o $@ HelloWorld_C.o $(CLIBS)
	cp $@ HelloWorld_C

HelloWorld-linuxppc:
	c++ -c -m64 $(CPPFLAGS) HelloWorld.cpp
	c++ -o $@ -m64 -Wl,-melf64ppc HelloWorld.o $(CPPLIBS)
	cp $@ HelloWorld

HelloWorld_C-linuxppc:
	cc -c -m64 $(CPPFLAGS) HelloWorld_C.c
	cc -o $@ -m64 -Wl,-melf64ppc HelloWorld_C.o $(CLIBS)
	cp $@ HelloWorld_C

clean:
	-rm -f HelloWorld HelloWorld.o HelloWorld-*
	-rm -f HelloWorld_C HelloWorld_C.o HelloWorld_C-*

&endif
