
#    ========== licence begin  GPL
#    Copyright (c) 2005 SAP AG
#
#    This program is free software; you can redistribute it and/or
#    modify it under the terms of the GNU General Public License
#    as published by the Free Software Foundation; either version 2
#    of the License, or (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#    ========== licence end
&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
