# $Id: nmake.opt 16087 2009-01-14 21:50:20Z warmerdam $
#
# nmake.opt - main configuration file for NMAKE makefiles.
#
###############################################################################
# For convenience, user may put custom settings to private mynmake.opt
# and use EXT_NMAKE_OPT option while calling nmake.exe, as follows:
#
# nmake -f makefile.vc EXT_NMAKE_OPT=mynmake.opt
!IFDEF EXT_NMAKE_OPT
!INCLUDE $(EXT_NMAKE_OPT)
!ENDIF

###############################################################################
# Check version of Visual C++ compiler:
# nmake -f makefile.vc MSVC_VER=xxxx
# where xxxx is one of following:
# 1500 = 9.0 (2008)
# 1400 = 8.0 (2005) - specific compilation flags, different from older VC++
# 1310 = 7.1 (2003)
# 1300 = 7.0 (2002)
# 1200 = 6.0
#
!IFNDEF MSVC_VER
#assume msvc 7.1
MSVC_VER=1310
!ENDIF

###############################################################################
# Optional use of Visual Leak Detector (VLD) by Dan Moulding, available at
# http://dmoulding.googlepages.com/vld
# Uncomment this line to use VLD in debug configuration only:
#MSVC_VLD_DIR="C:\Program Files\Visual Leak Detector"

###############################################################################
# Location to install .exe, .dll and python stuff
# Edit as required. GDAL_HOME is used for convenience here,
# but this particular relative organization is not mandatory.
# But the paths *should* be absolute (relative paths mess up in submakefiles).

!IFNDEF GDAL_HOME
GDAL_HOME = "C:\warmerda\bld"
!ENDIF
BINDIR = $(GDAL_HOME)\bin
PLUGINDIR = $(BINDIR)\gdalplugins
PY_INST_DIR = $(GDAL_HOME)\pymod
LIBDIR = $(GDAL_HOME)\lib
INCDIR = $(GDAL_HOME)\include
DATADIR = $(GDAL_HOME)\data
HTMLDIR = $(GDAL_HOME)\html

# Set this to the installed directory containing python.  If you don't
# have python just let it point to a directory that does not exist (as now).
!IFNDEF PYDIR 
PYDIR   =	"C:\Software\Python24"
!ENDIF

# Set the location of your SWIG installation
!IFNDEF SWIG
SWIG = swig.exe
!ENDIF

# SWIG Java settings
!IFNDEF JAVA_HOME
JAVA_HOME = c:\j2sdk1.4.2_12
!ENDIF
!IFNDEF ANT_HOME
ANT_HOME=c:\programmi\apache-ant-1.7.0
!ENDIF
JAVADOC=$(JAVA_HOME)\bin\javadoc
JAVAC=$(JAVA_HOME)\bin\javac
JAVA=$(JAVA_HOME)\bin\java
JAR=$(JAVA_HOME)\bin\jar
JAVA_INCLUDE=-I$(JAVA_HOME)\include -I$(JAVA_HOME)\include\win32

# Compilation flags
!IFNDEF OPTFLAGS
!IF $(MSVC_VER) >= 1400
!IFNDEF DEBUG
OPTFLAGS= /nologo /MD /EHsc /Ox /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DNDEBUG
!ELSE
OPTFLAGS= /nologo /MD /EHsc /Zi /W4 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /Fd$(GDAL_ROOT)\gdal$(VERSION).pdb
!ENDIF
!ELSE
!IFNDEF DEBUG
OPTFLAGS=	/nologo /MD /EHsc /GR /Ox /W3 /DNDEBUG
!ELSE
OPTFLAGS=	/nologo /MD /EHsc /GR /Zi /W4 /Fd$(GDAL_ROOT)\gdal$(VERSION).pdb
!ENDIF
!ENDIF  #MSVC_VER
!ENDIF  # OPTFLAGS

# Linker debug options
!IFDEF DEBUG
LDEBUG= /debug
!ENDIF

# Uncomment the following if you are building for 64-bit windows
# (x64). You'll need to have PATH, INCLUDE and LIB set up for 64-bit
# compiles.
#WIN64=YES

# If you don't want some entry points to have STDCALL conventions, 
# comment out the following and add -DCPL_DISABLE_STDCALL in OPTFLAGS.
# This option has no effect on 64-bit windows.
STDCALL=YES

# Version number embedded in DLL name. 
VERSION =	16

# Comment the following out if you want PAM supported disabled
# by default.  
PAM_SETTING=-DPAM_ENABLED

# Uncomment the following to link OGR utilities against main GDAL DLL
# instead of statically linking against OGR libraries.
DLLBUILD=1

# Enable all OGR formats, or only raster formats?  Comment out to disable
# vector formats. 
INCLUDE_OGR_FRMTS = YES

# Location of Visual C++ directory (only required for following SETARGV stuff)
VCDIR   = 	D:\Software\VStudio\VC98

# Enable the following if VCDIR set properly, and you want the utility
# programs to be able to expand wildcards. 
#SETARGV =	"$(VCDIR)\lib\setargv.obj"

# Comment out the following to disable BSB support.
BSB_SUPPORTED = 1

# Comment out the following to disable ODBC support.
ODBC_SUPPORTED = 1

# Comment out the following to disable JPEG support.
JPEG_SUPPORTED = 1

#if using an external jpeg library uncomment the follwing lines
#JPEG_EXTERNAL_LIB = 1
#JPEGDIR = c:/projects/jpeg-6b
#JPEG_LIB = $(JPEGDIR)/libjpeg.lib

#if using an external png library uncomment the follwing lines
#PNG_EXTERNAL_LIB = 1
#PNGDIR = c:/projects/libpng-1.0.8
#PNG_LIB = $(PNGDIR)/libpng.lib

# if using an external libtiff library
#TIFF_INC =	-Ic:/warmerda/libtiff/libtiff
#TIFF_LIB =	c:/warmerda/libtiff/libtiff/libtiff_i.lib
# uncomment following line, if you have libtiff version >= 4.0 to
# enable BigTIFF support
#TIFF_OPTS=	-DBIGTIFF_SUPPORT

# if using an external libgeotiff library
#GEOTIFF_INC =   -Ic:/warmerda/libgeotiff -Ic:/warmerda/libgeotiff/libxtiff
#GEOTIFF_LIB =   C:/warmerda/libgeotiff/geotiff_i.lib

# Uncomment the following and update to enable ECW support.
#ECW_PLUGIN = NO
#ECWDIR  = 	C:\warmerda\libecwj2-3.3
#ECWLIB  = 	$(ECWDIR)\Source\NCSBuildQmake\Debug\libecwj2.lib

# DWG/DXF support via DWGdirect from Open Design Alliance

#DWGDIRECT=C:\warmerda\DWGdirect
#DWG_LIB_DIR=$(DWGDIRECT)\lib\VC6MD
#DWG_LIB=$(DWG_LIB_DIR)\DD_AcisBuilder_dll.lib $(DWG_LIB_DIR)\DD_AcisRenderer_dll.lib $(DWG_LIB_DIR)\DD_Alloc_dll.lib $(DWG_LIB_DIR)\DD_BmpExport_dll.lib $(DWG_LIB_DIR)\DD_Br_dll.lib $(DWG_LIB_DIR)\DD_Db_dll.lib $(DWG_LIB_DIR)\DD_DwfExport_dll.lib $(DWG_LIB_DIR)\DD_DwfImport_dll.lib $(DWG_LIB_DIR)\DD_Ge_dll.lib $(DWG_LIB_DIR)\DD_Gi_dll.lib $(DWG_LIB_DIR)\DD_Gs_dll.lib $(DWG_LIB_DIR)\DD_ModelerGeometry_dll.lib $(DWG_LIB_DIR)\DD_Root_dll.lib $(DWG_LIB_DIR)\DD_Sm_dll.lib $(DWG_LIB_DIR)\DD_SpatialIndex_dll.lib $(DWG_LIB_DIR)\DD_VC6MD_OleDataAccess_dll.lib

# Uncomment the following and update to enable OGDI support.
#OGDIDIR =	D:\warmerda\iii\devdir
#OGDIVER =	31
#OGDILIB =	$(OGDIDIR)\lib\$(TARGET)\ogdi$(OGDIVER).lib \
#		$(OGDIDIR)\lib\$(TARGET)\zlib_ogdi$(OGDIVER).lib

# Uncomment for Expat support (required for KML and GPX read support).
#EXPAT_DIR = "C:\Program Files\Expat 2.0.1"
#EXPAT_INCLUDE = -I$(EXPAT_DIR)/source/lib
#EXPAT_LIB = $(EXPAT_DIR)/bin/libexpat.lib

# Uncomment for Xerces based GML support.
#XERCES_DIR =	c:\warmerda\supportlibs\xerces-c_2_6_0
#XERCES_INCLUDE = -I$(XERCES_DIR)/include -I$(XERCES_DIR)/include/xercesc
#XERCES_LIB = $(XERCES_DIR)/lib/xerces-c_2.lib

# Uncomment if the NAS source is available, and Xerces is available.
#NAS_ENABLED = YES

# Uncomment the following for Interlis support.  Note that a Xercex 2.x
# is also required (see above).  Also, Interlis support only works with
# Visual Studio.NET or newer, not VC6.
#ILI_ENABLED = YES

# Uncomment for JasPer based JPEG2000 support
#JASPER_DIR = d:\projects\jasper-1.700.2.uuid
#JASPER_INCLUDE = -I$(JASPER_DIR)\src\libjasper\include -DJAS_WIN_MSVC_BUILD
#JASPER_LIB = $(JASPER_DIR)\src\msvc\Win32_Release\libjasper.lib
# Uncomment the following line if you have patched UUID-enabled version
# of JasPer from ftp://ftp.remotesensing.org/gdal/
#JASPER_INCLUDE = $(JASPER_INCLUDE) -DHAVE_JASPER_UUID

# Uncommment if you have Kakadu 4.0 or newer
#KAKDIR =	D:\warmerda\jp2\kakadu

# Uncomment the following and update to enable NCSA HDF Release 4 support.
#HDF4_PLUGIN = NO
#HDF4_DIR =	D:\warmerda\HDF41r5
#HDF4_LIB =	/LIBPATH:$(HDF4_DIR)\lib Ws2_32.lib

# Uncomment the following and update to enable NCSA HDF Release 5 support.
#HDF5_PLUGIN = NO
#HDF5_DIR =	c:\warmerda\supportlibs\hdf5\5-164-win
#HDF5_LIB =	$(HDF5_DIR)\dll\hdf5dll.lib 

# Uncomment the following for MrSID support.
# You will likely require /MD and /EHsc in OPTFLAGS. 
#MRSID_DIR =	d:\projects\mrsid
#MRSID_INCLUDE = -I$(MRSID_DIR)\include\base -I$(MRSID_DIR)\include\support \
#		-I$(MRSID_DIR)\include\metadata \
#		-I$(MRSID_DIR)\include\mrsid_readers \
#		-I$(MRSID_DIR)\include\j2k_readers
#MRSID_LIB =	$(MRSID_DIR)\lib\Release_md\lti_dsdk_dll.lib advapi32.lib user32.lib
# Comment out the following to supress JP2MRSID driver. 
#MRSID_FLAGS =	-DMRSID_J2K
# Enable these, if you have the MrSID Encoding SDK and want
# to create MrSID files
#MRSID_FLAGS =	-DMRSID_ESDK $(MRSID_FLAGS)
#MRSID_INCLUDE = -I$(MRSID_DIR)\include\mrsid_writers \
#		-I$(MRSID_DIR)\include\j2k_writers $(MRSID_INCLUDE)
#MRSID_LIB =	$(MRSID_DIR)\lib\Release_md\lti_esdk_dll.lib $(MRSID_LIB)
# Enable the following if you prefer to build MrSID support as a plugin.
#MRSID_PLUGIN = YES

# PostGIS Libraries
#PG_INC_DIR = n:\pkg\libpq_win32\include
#PG_LIB = n:\pkg\libpq_win32\lib\libpqdll.lib wsock32.lib

# MySQL Libraries
# NOTE: Need /MT instead of /MD, also enable /EHsc switch. 
#MYSQL_INC_DIR = D:\Software\MySQLServer4.1\include
#MYSQL_LIB = D:\Software\MySQLServer4.1\lib\opt\libmysql.lib advapi32.lib

# SQLite Libraries
#SQLITE_INC=-IN:\pkg\sqlite-win32
#SQLITE_LIB=N:\pkg\sqlite-win32\sqlite3_i.lib

# Informix Data Blade
#INFORMIXDIR="C:\Program Files\IBM\Informix\Client-SDK"
#IDB_INC=-I$(INFORMIXDIR)\incl\cpp -I$(INFORMIXDIR)\incl\dmi \
#	-I$(INFORMIXDIR)\incl\esql
#IDB_LIB=$(INFORMIXDIR)\lib\cpp\libthc++.lib \
#	$(INFORMIXDIR)\lib\dmi\libthdmi.lib $(INFORMIXDIR)\lib\isqlt09a.lib

# Uncomment the following and update to enable FME support.
#FME_DIR =	d:\Software\fme

# Uncomment the following to enable FITS format support
#FITS_PLUGIN = NO
#FITS_INC_DIR =	c:\dev32\usr\include\cfitsio
#FITS_LIB =	c:\dev32\usr\lib\cfitsio.lib

# Comment out to disable GRIB support.
GRIB_SETTING=yes

# Uncomment the following to enable NetCDF format.
#NETCDF_PLUGIN = NO
#NETCDF_SETTING=yes
#NETCDF_LIB=C:\Software\netcdf\lib\netcdf.lib
#NETCDF_INC_DIR=C:\Software\netcdf\include
# PROJ.4 stuff
# Uncomment the following lines to link PROJ.4 library statically. Otherwise
# it will be linked dynamically during runtime.
#PROJ_FLAGS = -DPROJ_STATIC
#PROJ_INCLUDE = -Id:\projects\proj.4\src
#PROJ_LIBRARY = d:\projects\proj.4\src\proj_i.lib

# Add ORACLE support.
# Uncomment the following line to enable OCI Oracle Spatial support.
#ORACLE_HOME =	C:/Software/Oracle/Product/10.1.0/db_1
# Uncomment the following if you prefer to build OCI support as a plugin.
#OCI_PLUGIN = YES

!IFDEF ORACLE_HOME
OCI_LIB =	$(ORACLE_HOME)\oci\lib\msvc\ociw32.lib \
		$(ORACLE_HOME)\oci\lib\msvc\oci.lib
OCI_INCLUDE =	-I$(ORACLE_HOME)\oci\include
!ENDIF

#SDE_ENABLED = YES
#SDE_VERSION=91
#SDE_PLUGIN = NO
#SDE_SDK = C:\arcgis\arcsde
#SDE_INC = $(SDE_SDK)\include 
#SDE_LIB = $(SDE_SDK)\lib\pe$(SDE_VERSION).lib \
#          $(SDE_SDK)\lib\sde$(SDE_VERSION).lib $(SDE_SDK)\lib\sg$(SDE_VERSION).lib      

# Uncomment to use libcurl (DLL by default)
# The cURL library is used for WCS, WMS, GeoJSON, SRS call importFromUrl(), etc.
#CURL_DIR=C:\curl-7.15.0
#CURL_INC = -I$(CURL_DIR)/include
# Uncoment following line to use libcurl as dynamic library
#CURL_LIB = $(CURL_DIR)/libcurl_imp.lib wsock32.lib wldap32.lib winmm.lib
# Uncoment following two lines to use libcurl as static library
#CURL_LIB = $(CURL_DIR)/libcurl.lib wsock32.lib wldap32.lib winmm.lib
#CURL_CFLAGS = -DCURL_STATICLIB

# Uncomment for DODS / OPeNDAP support
#DODS_DIR = C:\libdap3.6.2
#DODS_LIB = $(DODSDIR)\lib\libdapMD.lib

# Uncomment for GEOS support
#GEOS_DIR=C:/warmerda/geos
#GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS
#GEOS_LIB     = $(GEOS_DIR)/source/geos_c_i.lib

# Any extra libraries needed on this platform?
ADD_LIBS	=

# Comment out the following if you want to build with Python support, but
# you don't have Numeric Python installed (with include files).  Numeric
# integration may not work.  This only appears to the old generation 
# bindings. 
#HAVE_NUMPY=1

########### END OF STUFF THAT NORMALLY NEEDS TO BE UPDATED ##################


# Location of MS Data Access SDK (not really needed anymore I think)
#MSDASDK =	D:\Software\MDAC_2.6

GDAL_DLL =	gdal$(VERSION).dll

INC	=	-I$(GDAL_ROOT)\port -I$(GDAL_ROOT)\ogr -I$(GDAL_ROOT)\gcore \
		-I$(GDAL_ROOT)\alg -I$(GDAL_ROOT)\ogr\ogrsf_frmts

!IFDEF MSVC_VLD_DIR
MSVC_VLD_FLAGS=-DMSVC_USE_VLD -I$(MSVC_VLD_DIR)\include
MSVC_VLD_LIB=/LIBPATH:$(MSVC_VLD_DIR)/lib
!ENDIF

!IFDEF INCLUDE_OGR_FRMTS
OGR_FLAG = -DOGR_ENABLED
!ENDIF

#LINKER_FLAGS =	/NODEFAULTLIB:LIBC 
LINKER_FLAGS = $(MSVC_VLD_LIB) $(LDEBUG)


CFLAGS	=	$(OPTFLAGS) $(INC) $(EXTRAFLAGS) $(OGR_FLAG) $(MSVC_VLD_FLAGS)
MAKE	=	nmake /nologo

CC	=	cl

INSTALL	=	xcopy /y /r /d /f

CPLLIB	=    $(GDAL_ROOT)/port/cpl.lib

!IFDEF DLLBUILD
GDALLIB	=    $(GDAL_ROOT)/gdal_i.lib
!ELSE
GDALLIB	=    $(GDAL_ROOT)/gdal.lib
!ENDIF

!IFDEF ODBC_SUPPORTED
ODBCLIB = odbc32.lib odbccp32.lib user32.lib
!ENDIF


!IFDEF MRSID_DIR
!IF "$(MRSID_PLUGIN)" != "YES"
MRSID_LIB_LINK = $(MRSID_LIB)
!ELSE
MRSID_LIB_LINK=
!ENDIF
!ENDIF

!IFDEF ECWDIR
!IF "$(ECW_PLUGIN)" != "YES"
ECW_LIB_LINK= $(ECWLIB)
!ELSE
ECW_LIB_LINK=
!ENDIF
!ENDIF

!IFDEF FITS_LIB
!IF "$(FITS_PLUGIN)" != "YES"
FITS_LIB_LINK = $(FITS_LIB)
!ELSE
FITS_LIB_LINK =
!ENDIF
!ENDIF

!IFDEF NETCDF_LIB
!IF "$(NETCDF_PLUGIN)" != "YES"
NETCDF_LIB_LINK = $(NETCDF_LIB)
!ELSE
NETCDF_LIB_LINK =
!ENDIF
!ENDIF

!IFDEF HDF4_LIB
!IF "$(HDF4_PLUGIN)" != "YES"
HDF4_LIB_LINK = $(HDF4_LIB)
!ELSE
HDF4_LIB_LINK =
!ENDIF
!ENDIF

!IFDEF HDF5_LIB
!IF "$(HDF5_PLUGIN)" != "YES"
HDF5_LIB_LINK = $(HDF5_LIB)
!ELSE
HDF5_LIB_LINK =
!ENDIF
!ENDIF

# Under win64, symbols for function names lack the underscore prefix
# present on win32. Also the STDCALL calling convention is not used.
!IFDEF WIN64
!UNDEF STDCALL
!ELSE
SYM_PREFIX=_
!ENDIF

EXTERNAL_LIBS =	$(OGDILIB) $(XERCES_LIB) $(EXPAT_LIB) $(OCI_LIB) $(PG_LIB) $(ODBCLIB) \
		$(ECW_LIB_LINK) $(HDF4_LIB_LINK) $(FME_LIB) $(JASPER_LIB) $(MRSID_LIB_LINK) \
		$(FITS_LIB_LINK) $(JPEG_LIB) $(PNG_LIB) $(NETCDF_LIB_LINK) $(PROJ4_LIB) \
		$(GEOTIFF_LIB) $(TIFF_LIB) $(PROJ_LIBRARY) $(SQLITE_LIB) \
		$(MYSQL_LIB) $(GEOS_LIB) $(HDF5_LIB_LINK) $(SDE_LIB) $(DWG_LIB) \
		$(IDB_LIB) $(CURL_LIB) $(DODS_LIB) $(ADD_LIBS)
		
.c.obj:	
	$(CC) $(CFLAGS) /c $*.c

.cpp.obj:	
	$(CC) $(CFLAGS) /c $*.cpp

