########################################################################
# nmake.opt - MapServer 4.x configuration for MSVC++
########################################################################

# This VC++ configuration is used in building MAPSERVER.LIB, 
# MAPSERVER_I.LIB MAPSERV.EXE, and the other 
# MapServer command-line programs.  
#
# To use the makefile:
#  - Open a DOS prompt window
#  - Run the VCVARS32.BAT script to initialize the VC++ environment variables
#  - Start the build with:  nmake /f makefile.vc
#
# $Id: nmake.opt 8026 2008-11-21 15:40:21Z Assefa $
#
# Contents:
#   Section I:   Mapserver Compilation Options
#   Section II:  MapServer Rendering Options
#   Section III: MapServer Data Input Options
#   Section IV:  MapServer OGC Options
#   Section V:   MapScript Configuration Options
#   Section VI:  Support Libraries
#   Section VII: Variable Setup
#   Section VIII: UMN GIS System Support
#   Section IX:  Collect compiler flags
#
# The easiest way to get going is to use MSVC 2003 and the MapServer 
# buildkit that is available at 
# http://mapserver.gis.umn.edu/docs/howto/buildkit
# This will provide a full set of libraries to build MapServer will almost 
# all of its options enabled.  If you are building everything from 
# scratch, start by commenting out most of the options and adding them 
# in incrementally.


########################################################################
# Section I: Mapserver Compilation Options
########################################################################

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Check for external options file to include
# nmake -f makefile.vc EXT_NMAKE_OPT=mynmake.opt
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!IFDEF EXT_NMAKE_OPT
!INCLUDE $(EXT_NMAKE_OPT)
!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

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Check compiler version given in command line
# nmake -f makefile.vc MSVC_VER=xxxx
# 1310 = 7.1 (2003)   1400 = 8.0 (2005)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!IFNDEF MSVC_VER
#assume msvc 7.1
MSVC_VER=1310
!ENDIF

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# File locations and where to install things
# ----------------------------------------------------------------------
# If you are using the MapServer Build Kit, almost everything should be 
# relative to this directory throughout this option file.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Set the following to point to the directory adjacent to the dependent libs.
!IFNDEF MS_BASE 
#MS_BASE =   c:\projects\mapserver
MS_BASE = H:\Mapserver\Mapserver521
!ENDIF

# Set the following to point to the current (mapserver) directory.
!IFNDEF MS_CURRENT
MS_CURRENT = $(MS_BASE)
!ENDIF

!IFNDEF BINDIR
BINDIR = $(MS_BASE)\..\bin
!ENDIF

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Optmization, debug, and related compile flags.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

!IF $(MSVC_VER) == 1400
# Optimized, with using MSVCRT. 
OPTFLAGS =	/nologo /Ox /MD $(WARNING_LEVEL) $(DEBUG) /EHsc /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE
# Debug with MSVCRT
#OPTFLAGS = /nologo /Zi /MD $(WARNING_LEVEL) $(DEBUG) /EHsc /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE
#LDFLAGS =  /NODEFAULTLIB:msvcrt /NODEFAULTLIB:libcd /DEBUG
!ELSE
# Optimized, with using MSVCRT. 
OPTFLAGS =	/nologo /Ox /MD $(WARNING_LEVEL) $(DEBUG) /EHsc
# Debug with MSVCRT
#OPTFLAGS = /nologo /Zi /MDd $(WARNING_LEVEL) $(DEBUG) /EHsc
#LDFLAGS =  /NODEFAULTLIB:msvcrt /NODEFAULTLIB:libcd /DEBUG
!ENDIF

# Uncomment the following to link mapserv.exe with a dll.  In almost 
# all cases you will want to do this.
DLLBUILD = 1

# Set the Warning level for the compiler (defaults to W1)
WARNING_LEVEL=/W3

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Debugging Options
# ----------------------------------------------------------------------
#NEED_NONBLOCKING_STDERR=-DNEED_NONBLOCKING_STDERR
ENABLE_STDERR_DEBUG=-DENABLE_STDERR_DEBUG

# Set the linker debug option
LDEBUG=/debug

# DEBUG Build flags
# Set the DEBUG flag if you wish to make a debug build
DEBUG=/DDEBUG

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# String methods
# ----------------------------------------------------------------------
# Apparently these aren't as commonplace. Edit the
# following line to reflect the missing functions on your platform.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#STRINGS=-DNEED_STRCASECMP -DNEED_STRNCASECMP -DNEED_STRDUP
STRINGS=-DNEED_STRCASECMP -DNEED_STRNCASECMP -DNEED_STRLCAT -DNEED_STRRSTR

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Threading
# ----------------------------------------------------------------------
# Enable if you want thread safe locking, not needed for simple CGI.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
THREADS=-DUSE_THREAD

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Ignoring Missing Data
# ----------------------------------------------------------------------
# If you want to ignore missing datafile errors uncomment the following
# line. This is especially useful with large tiled datasets that may not
# have complete data for each tile.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IGNORE_MISSING_DATA=-DIGNORE_MISSING_DATA

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Measures and Z values
# ----------------------------------------------------------------------
# If you want to use shape Z and M parameter this option must be set.
# It's OFF by default.
USE_POINT_Z_M=-DUSE_POINT_Z_M
USE_POINT_Z_M=


########################################################################
# Section II: Mapserver Rendering Configuration
########################################################################

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GD Library
# ----------------------------------------------------------------------
# Mapserver 4.x only supports GD 2.x and greater.
# GD is a required support library for MapServer 4.x.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!IFNDEF GD_DIR
GD_DIR=$(MS_BASE)\..\gd-2.0.35\include
GD_LIB=$(GD_DIR)/lib/gd.lib
#GD_LIB=$(GD_DIR)/lib/bgd_i.lib
!ENDIF

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GD JPEG support
# ----------------------------------------------------------------------
# If you wish to allow JPEG output maps, uncomment the following flag.
# If not using a GD build with an internal copy of libjpeg, you will
# also need to uncomment JPEG_DIR and point to it; however, with BGD.DLL
# this is normally not necessary.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OUTPUT_JPEG=-DUSE_GD_JPEG
JPEG_DIR=$(MS_BASE)\..\jpeg-6b


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GD PNG support
# ----------------------------------------------------------------------
# If you wish to allow PNG output maps, uncomment the following flag.
# If not using a GD build with an internal copy of libpng, you will
# also need to uncomment PNG_DIR and ZLIB_DIR and point to it; 
# however, with BGD.DLL this is normally not necessary.
# See http://www.libpng.org/pub/png/libpng.html for support library.
# See http://www.gzip.org/zlib/ for support library.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OUTPUT_PNG=-DUSE_GD_PNG
!IFNDEF PNG_DIR
PNG_DIR=$(MS_BASE)\..\libpng-1.2.8
!ENDIF
ZLIB_DIR=$(MS_BASE)\..\zlib-1.2.3
ZLIB_INC=-I$(ZLIB_DIR)


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GD GIF support
# ----------------------------------------------------------------------
# Historical defines to use GIF as a result of the old Unisys patent
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OUTPUT_GIF=-DUSE_GD_GIF -DGD_HAS_GDIMAGEGIFPTR


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GD BMP support
# ----------------------------------------------------------------------
# If you wish to allow Windows BMP output maps, 
# uncomment the following flag.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OUTPUT_WBMP=-DUSE_GD_WBMP


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GD Bitmap Font support
# ----------------------------------------------------------------------
# Bitmap font support (GD 2.0.22 and greater, 
# see Bug 969 for more details)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GD_HAS_GETBITMAPFONT=-DGD_HAS_GETBITMAPFONT


# ----------------------------------------------------------------------
# used for curved text (keyword FOLLOW for angle in label object)
# GD version 2.0.29 or higher
# ----------------------------------------------------------------------
GD_HAS_FTEX_XSHOW=-DGD_HAS_FTEX_XSHOW

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GD Antialiasing support
# ----------------------------------------------------------------------
# If you want antialiasing (note that It requires gd2)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
USE_GD_ANTIALIAS=-DUSE_GD_ANTIALIAS


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GD TrueType Font support
# ----------------------------------------------------------------------
# If you wish to annotate your maps with true type fonts unccomment the
# following flag. Provide the full path to the FreeType 2.x external
# support library, unless it is provided within your GD build as is the
# case with BGD.DLL.  
# See http://www.freetype.org for support library.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ANNOTATION_FT=-DUSE_GD_FT
!IFNDEF FT_DIR
FT_DIR=$(MS_BASE)\..\freetype-2.1.10
!ENDIF

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Optional RGBA palette png output
# ----------------------------------------------------------------------
# Enable support for quantization of rgba pngs
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!IFDEF PNG_DIR
#RGBA_PNG_ENABLED=-DUSE_RGBA_PNG
!ENDIF

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# MING (Macromedia Flash SWF output support) 
# ----------------------------------------------------------------------
# The MING library can be used to allow MapServer to output maps in 
# flash format.  Ming 0.2a is the only version known to compile and work
# on Win32.  The 0.3 version does not work at this time.  See
# http://ming.sourceforge.net for the support library and more 
# information
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#MING=-DUSE_MING_FLASH
#MING_DIR=$(MS_BASE)\..\ming-0.2a


# If you wish to use AGG 
# The AGG (Ant-Grain Geometry) libraray http://www.antigrain.com/
#is used in Mapserver to putput high class rendering
#
AGG=-DUSE_AGG
AGG_DIR=$(MS_BASE)\..\agg-2.4

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# PDF (Acrobat PDF support) 
# ----------------------------------------------------------------------
# If you wish to have PDF output, uncomment the following flag and 
# provide the full path to the PDF support library project directory.
# See http://www.pdflib.com/products/pdflib/download-source.html to 
# download the support library.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#PDF=-DUSE_PDF
#PDF_DIR=$(MS_BASE)\..\PDFlib-Lite-6.0.2


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GEOS 
# ----------------------------------------------------------------------
# GEOS provides support for spatial predicates and overlay/buffer 
# operations.  It can only be compiled on Windows with MSVC 7.0 or 
# greater (or the cygwin/mingw stack).
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#GEOS=-DUSE_GEOS
#GEOS_DIR=$(MS_BASE)\..\geos-2.2.3


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ZLIB 
# ----------------------------------------------------------------------
# ZLIB is required for PNG and for SVG support to allow the output of 
# compressed files.  If -DUSE_ZLIB is defined, you essentially have all 
# you need for SVG output support
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZLIB=-DUSE_ZLIB
ZLIB_DIR=$(MS_BASE)\..\zlib-1.2.3
ZLIB_INC=-I$(ZLIB_DIR)


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ICONV
# ----------------------------------------------------------------------
#libiconv support is used for to support double bytes (see bug 911).
#uncomment the following to build with libiconv support.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ICONV=-DUSE_ICONV
#ICONV_DIR=$(MS_BASE)\..\libiconv-1.9.1


########################################################################
# Section III: Mapserver Data Input Configuration
########################################################################
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GDAL
# ----------------------------------------------------------------------
# The lite version of mapserver 4.x supports only GIF, PNG and JPEG data 
# for input. If you wish to support many geospatial raster formats 
# for input you will need the GDAL support library from 
# http://www.gdal.org/.  Once built, enable the GDAL flag, and point 
# GDAL_DIR to the directory where GDAL was built. 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GDAL=-DUSE_GDAL
GDAL_DIR=$(MS_BASE)\..\gdal-1.6.0


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# OGR
# ----------------------------------------------------------------------
# The OGR library (part of GDAL) supports a variety of geospatial vector
# formats including mapinfo, Arc/Info binary coverages, S-57, SDTS, 
# Microstation DGN (pre-v7), TIGER, UK .NTF.  It also include support 
# for treating non-spatial tablular data from ODBC, CSV, MySQL, 
# Oracle Spatial, and PostgreSQL as spatial table with use of the 
# VRT (virtual) driver. 
#
# NOTE: Both -DUSE_OGR and -DUSE_GDAL need to be defined if you 
# want to use GDAL/OGR for both raster and vector support, but GDAL_DIR 
# needs only be defined once.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#OGR=-DUSE_OGR
#GDAL_DIR=$(MS_BASE)\..\gdal_1_5_2


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# JPEG Input
# ----------------------------------------------------------------------
# JPEG input for raster layers is also available through GDAL, If you wish 
# to build support for JPEG without GDAL, uncomment the following flag
# and provide the full path to the jpeg support library project directory.
# See http://www.ijg.org/ for support library.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JPEG=-DUSE_JPEG
JPEG_DIR=$(MS_BASE)\..\jpeg-6b
JPEG_INC = -I$(JPEG_DIR)


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Direct connectivity to Postgresql PostGIS.
# ----------------------------------------------------------------------
# To turn on direct connectivity to Postgresql PostGIS uncomment the following
# flag and set the full path name to the project directory for the 
# Postgresql native Win32 client library.
# See http://www.postgresql.org for support library.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#POSTGIS =-DUSE_POSTGIS
#POSTGIS_DIR =$(MS_BASE)\..\postgresql-8.3.3

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Direct connectivity to Oracle Spatial.
# ----------------------------------------------------------------------
# Point this to where your ORACLE_HOME directory lives.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ORACLE_DIR = $(MS_BASE)\..\oracle-10.2.0.1.0
#ORACLE=-DUSE_ORACLESPATIAL
#ORACLE=-DUSE_ORACLE_PLUGIN



#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Direct connectivity to ESRI ArcSDE.
# ----------------------------------------------------------------------
# To turn on direct connectivity to ArcSDE uncomment the following
# flags and set the full path name to the project directory for ArcSDE.
# The support library for ArcSDE (the ArcSDE C API/SDK) is typically 
# only available for those with a full license of ArcSDE.  It is not 
# available for download.
# Either set USE_SDE or USE_SDE_PLUGIN, not both.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#SDE_OPT=-DUSE_SDE
#SDE_OPT= -DUSE_SDE_PLUGIN

#SDE_VERSION = 91
#SDE_DIR = C:\arcgis\arcsde
#SDE_INC = -I$(SDE_SDK)\include 


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Direct connectivity to SQL Server 
# ----------------------------------------------------------------------
# To turn on direct connectivity to SQL Server uncomment the following
# flag. You then need to set the ODBC_INC path later as well to the 
# Windows SDK include path.  The SQL Server 2008 driver can only be 
# built and used as a plugin.  See RFC 38 for more details.  The ODBC
# libs and includes must be set to be able to build the plugin.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

MSSQL2008 = YES
ODBC_DIR="C:\progra~1\micros~1.net\vc7\platformsdk"
ODBC_LIBS=$(ODBC_DIR)\lib\odbc32.lib $(ODBC_DIR)\lib\odbccp32.lib $(ODBC_DIR)\lib\user32.lib
ODBC_INC=-I"C:\progra~1\micros~1.net\vc7\platformsdk\include"

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# EPPL7 Support
# ----------------------------------------------------------------------
# This activates ERDAS as well. It is included in the distribution. 
# Probably the best raster alternative if you've got EPPL7 laying 
# around. See http://www.lmic.state.mn.us/ for more information.
# Uncomment out the following flag and set the full path name to the
# epplib.obj file.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#EPPL=-DUSE_EPPL
#EPPL_OBJ=c:/my_path/epplib.obj


# ----------------------------------------------------------------------
# Use of fribidi
# GNU FriBidi is an implementation of the Unicode Bidirectional Algorithm (bidi).
# http://fribidi.freedesktop.org/wiki/
# Unncomment out the following flags to build with fribidi
#---------------------------------------------------------------------
#FRIBIDI=-DUSE_FRIBIDI
#FRIBIDI_DIR=$(MS_BASE)\..\fribidi-0.19.1



########################################################################
# Section IV: Mapserver OGC Configuration
########################################################################

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# LIBXML: utility library to write xml.
# http://xmlsoft.org/index.html
# WFS, WCS and SOS all need this flag to be activated
# NOTE: ICONV is required when libxml2 is activated
# ----------------------------------------------------------------------
#XML2_ENABLED=-DUSE_LIBXML2
#LIBXML_DIR=$(MS_BASE)\..\libxml2-2.6.23.win32

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# WMS Server
# ----------------------------------------------------------------------
WMS=-DUSE_WMS_SVR

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# WMS Client
# ----------------------------------------------------------------------
# Use this flag to compile with WMS Client support. WMS Client support
# allows you to pull layers from other OGIS WMS servers on the interent and
# incorporate them into your map.
# To find out more about the OpenGIS Web Map Server Specification go to
# http://www.opengis.org/
# you need the libcurl library from http://curl.haxx.se/library/c/
# Set the full path to the curl project directory.
# You may also need to the full path to the windows socket library.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WMSCLIENT= -DUSE_WMS_LYR
CURL_DIR=$(MS_BASE)\..\curl-7.15.0
WINSOCK_LIB = "WSOCK32.LIB"
WINSOCK_LIB = "C:\Program Files\Microsoft Visual Studio\VC98\Lib\WSOCK32.LIB"
WINSOCK_LIB ="C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib\WS2_32.Lib"



#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# WFS Client
# ----------------------------------------------------------------------
# Use -DUSE_WFS_LYR to compile with WFS client support, requires libcurl
WFSCLIENT= -DUSE_WFS_LYR

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# WFS Server
# ----------------------------------------------------------------------
# Use -DUSE_WFS_SVR to compile with WFS server 
# support, requires OGR and PROJ4, and libxml2
WFS=-DUSE_WFS_SVR

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# WCS Server
# ----------------------------------------------------------------------
# Use -DUSE_WCS_SVR to compile with WCS server support, requires GDAL.
# It Also requires libxml2
WCS=-DUSE_WCS_SVR


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# OGC SOS
# ----------------------------------------------------------------------
# Use -DUSE_OGC_SOS to compile with SOS, needs USE_WMS_SVR or 
#USE_WFS_SVR enabled so the the gml functions to be enabled
#It also needs ICONV support and libxml2 support 
#SOS=-DUSE_SOS_SVR


########################################################################
# Section V: MapScript Configuration Options.
########################################################################

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# SWIG location
# ----------------------------------------------------------------------
# SWIG is required to *generate* the C/C++ code that creates the 
# bindings to various languages.  You can download a pre-built binary
# for SWIG at http://www.swig.org.  NOTE: The PHP bindings are *not* 
# generated with SWIG at this time.  If you use this makefile to 
# make any MapScript bindings, eg. "nmake /f makefile.vc python", you 
# will need to have SWIG installed.  
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SWIG = $(MS_BASE)\..\swigwin-1.3.37-rc1\swig.exe

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Java MapScript
# ----------------------------------------------------------------------
# Java MapScript very likely requires USE_THREAD to be defined.  It is 
# known to work with both JDK 1.5 and JDK 1.4
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#JAVA_HOME = "C:\Progra~1\Java\jdk1.5.0"

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Python MapScript
# ----------------------------------------------------------------------
# Python MapScript very likely requires USE_THREAD to be defined.  
# Python 2.2 and above are supported.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PYTHON_HOME = "c:\Python-2.4"

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# PHP MapScript
# ----------------------------------------------------------------------
# The PHP_REGEX hack allows you to use PHP's regex system rather than 
# the normal GNU regex library.  This should normally not be needed.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#PHP_HOME = $(MS_BASE)\..\php-4.4.2
#PHP_REGEX=1

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# .NET/C# MapScript
# ----------------------------------------------------------------------
# .NET will of course only work with MSVC 7.0 and 7.1.  Also note that
# you will definitely want USE_THREAD defined.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DOT_NET = YES



########################################################################
# Section VI: Support Libraries.
########################################################################

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Proj.4
# ----------------------------------------------------------------------
# If you would like mapserver to be able to reproject data from one
# geographic projection to another, uncomment the following flag
# Proj.4 distribution (cartographic projection routines).  PROJ.4 is
# also required for all OGC services (WMS, WFS, and WCS). 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROJ=-DUSE_PROJ -DUSE_PROJ_API_H
PROJ_DIR=$(MS_BASE)\..\proj-4.6.1


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# REGEX Libary
# ----------------------------------------------------------------------
# VC++ does not include the REGEX library... so we must provide our one.
# The following definitions will try to build GNU regex-0.12 located in the
# regex-0.12 sub-directory.
# If it was not included in the source distribution, then you can get it from:
#    ftp://ftp.gnu.org/pub/gnu/regex/regex-0.12.tar.gz
# Provide the full path to the REGEX project directory
# You do not need this library if you are compiling for PHP mapscript.
# In that case the PHP regex library will be used instead
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!IFNDEF PHP_REGEX
REGEX_DIR=$(MS_BASE)\..\regex-0.12
!ENDIF

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# FastCGI Support
# ----------------------------------------------------------------------
# Uncomment, and update accordingly. 
#FCGIDEF=-DUSE_FASTCGI
#FCGIDIR=$(MS_BASE)\..\fcgi-2.4.0


########################################################################
# Section VII: Variable Setup
########################################################################
# Should not need to be updated.
########################################################################

MS_LIB =    mapserver.lib
MS_LIB_DLL  =   mapserver_i.lib

# Proj.4 include and library
!IFDEF PROJ_DIR
PROJ_INC=-I$(PROJ_DIR)/src
PROJ_LIB=$(PROJ_DIR)/src/proj_i.lib
!ENDIF

# CURL include and library
!IFDEF WMSCLIENT
CURL_INC = -I$(CURL_DIR)/include
CURL_LIB = $(CURL_DIR)/libcurl.lib
!ENDIF

# LIBXML include and library
!IFDEF XML2_ENABLED
LIBXML_INC = -I$(LIBXML_DIR)/include
LIBXML_LIB = $(LIBXML_DIR)/lib/libxml2.lib
!ENDIF

# Set the jpeg library
!IFDEF JPEG_DIR
JPEG_LIB=$(JPEG_DIR)/libjpeg.lib
!ENDIF

# Set the png support libaries
!IFDEF PNG_DIR
!IFNDEF PNG_LIB
PNG_LIB=$(PNG_DIR)\projects\visualc71\Win32_LIB_Release\libpng.lib $(ZLIB_DIR)/zdll.lib
!ENDIF
PNG_INC=-I$(PNG_DIR)
!ENDIF

!IFDEF GEOS_DIR
GEOS_LIB=$(GEOS_DIR)/source/geos_c_i.lib
GEOS_INC=-I$(GEOS_DIR)/source/headers -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/capi
!ENDIF

# Set the FreeType library
!IFDEF FT_DIR
!IFNDEF FT_LIB
FT_LIB=$(FT_DIR)/objs/freetype2110.lib
!ENDIF
!ENDIF

# GD include and library
GD_INC= -I$(GD_DIR)
GD_LIBS= $(GD_LIB) $(JPEG_LIB) $(PNG_LIB) $(FT_LIB)
GD= $(OUTPUT_PNG) $(OUTPUT_JPEG) $(OUTPUT_WBMP) $(OUTPUT_GIF) $(ANNOTATION_FT) $(GD_HAS_GETBITMAPFONT) $(GD_HAS_FTEX_XSHOW)

# Tiff library on input
!IFDEF TIFF
TIFF_INC=-I$(TIFF_DIR)/libtiff
TIFF_LIB=$(TIFF_DIR)/libtiff/libtiff.lib
!ENDIF

# JPEG library on input
!IFDEF JPEG_DIR
JPEG_LIB=$(JPEG_DIR)/libjpeg.lib
!ENDIF

# Setup GDAL includes and libraries
!IFDEF GDAL
GDAL_INC = -I$(GDAL_DIR)/gcore -I$(GDAL_DIR)/alg -I$(GDAL_DIR)/ogr -I$(GDAL_DIR)/port
GDAL_LIB = $(GDAL_DIR)/gdal_i.lib
!ENDIF

# Setup OGR includes and libraries
!IFDEF OGR
OGR_INC = -I$(GDAL_DIR)/ogr/ogrsf_frmts -I$(GDAL_DIR)/ogr -I$(GDAL_DIR)/port -I$(GDAL_DIR)/gcore
OGR_LIB = $(GDAL_DIR)/gdal_i.lib
!ENDIF

# Setup ESRI SDE support.
!IFDEF SDE_OPT
SDE_INC=-I$(SDE_DIR)/include
!IF "$(SDE_OPT)" != "-DUSE_SDE_PLUGIN"
SDE_LIB = $(SDE_DIR)\lib\pe$(SDE_VERSION).lib \
          $(SDE_DIR)\lib\sde$(SDE_VERSION).lib \
          $(SDE_DIR)\lib\sg$(SDE_VERSION).lib    
!ELSE
SDE_LIB = 
!ENDIF
!ENDIF

# Setup REGEX object and includes
!IFNDEF PHP_REGEX
REGEX_OBJ=$(REGEX_DIR)\regex.obj 
REGEX_INC=-I$(REGEX_DIR)
!ELSE
REGEX_OBJ=$(PHP_HOME)\regex\regcomp.obj $(PHP_HOME)\regex\regerror.obj \
          $(PHP_HOME)\regex\regexec.obj $(PHP_HOME)\regex\regfree.obj
REGEX_INC=-I$(PHP_HOME)/regex -DPHP_NO_ALIASES
!ENDIF

# REGEX needs some special flags... here they are for VC++ 6.0
REGEX_OPT=-DHAVE_STRING_H -DREGEX_MALLOC

# Setup Postgesql PostGIS includes and libs
!IFDEF POSTGIS
!IFNDEF PHP_BUILD_CALL
# If we're building PHP MapScript, there is a macro conflict
POSTGIS_INC=-I$(POSTGIS_DIR)/src/interfaces/libpq -I$(POSTGIS_DIR)/src/include
!ENDIF
POSTGIS_LIB=$(POSTGIS_DIR)/src/interfaces/libpq/release/libpqdll.lib
!ENDIF

# Setup FLASH includes and libs
!IFDEF MING
MING_INC=-I$(MING_DIR)/src -I$(MING_DIR)
MING_LIB= $(MING_DIR)/src/libming.lib
#MING_VERSION=-DMING_VERSION_03
!ENDIF

# Setup AGG
!IFDEF AGG
AGG_INC=-I$(AGG_DIR)\include -I$(AGG_DIR)\include\platform\win32 -I$(FT_DIR)\include -I$(AGG_DIR)\font_freetype
AGG_LIB= $(AGG_DIR)\src\agg.lib
!ENDIF

# Setup PDF includes and libs
!IFDEF PDF
PDF_LIB=$(PDF_DIR)/libs/pdflib/Release_DLL/pdflib.lib
PDF_INC=-I$(PDF_DIR)/libs/pdflib
!ENDIF

# Oracle support.
!IFDEF ORACLE
ORACLE_INC=-I$(ORACLE_DIR)/include
!IF "$(ORACLE)" != "-DUSE_ORACLE_PLUGIN"
ORACLE_LIB=$(ORACLE_DIR)/lib/msvc/oci.lib
!ELSE
ORACLE_LIB = 
!ENDIF
!ENDIF

#libiconv support
!IFDEF ICONV
ICONV_LIB=$(ICONV_DIR)\lib\iconv.lib
ICONV_INC= -I$(ICONV_DIR)\include
!ENDIF

#fcgi support
!IFDEF FCGIDEF
FCGILIB=$(FCGIDIR)\libfcgi\Release\libfcgi.lib
FCGIINC=-I$(FCGIDIR)\include
!ENDIF

#fribidi support
!IFDEF FRIBIDI
FRIBIDI_INC=-I$(FRIBIDI_DIR)\lib -I$(FRIBIDI_DIR)\charset
FRIBIDI_LIB=$(FRIBIDI_DIR)\fribidi.lib
!ENDIF

########################################################################
# Section VIII: UMN GIS System Support
########################################################################
# Should not need to be updated.
########################################################################
#
# UofMN GIS/Image Processing Extension (very experimental)
#
#EGIS=-DUSE_EGIS

!IFDEF EGIS
ERR_DIR=c:/my_path_to/errLog
ERR_OBJ=$(ERR_DIR)/errLog.o
ERR_INC=-I$(ERR_DIR)
ERR_LIB=-L$(ERR_DIR) -lerrLog

IMGGEN_DIR=c:/my_path_to/imgSrc
IMGGEN_OBJ=$(IMGGEN_DIR)/imgLib.o
IMGGEN_INC=-I$(IMGGEN_DIR)
IMGGEN_LIB=-L$(IMGGEN_DIR) -limgGEN
!ENDIF


########################################################################
# Section IX: Collect compiler flags
########################################################################
# Should not need to be updated.
########################################################################
!IFNDEF EXTERNAL_LIBS
EXTERNAL_LIBS=$(GD_LIBS) $(TIFF_LIB) $(JPEG_LIB) \
     $(PROJ_LIB) $(OGR_LIB) $(GDAL_LIB)\
     $(CURL_LIB)  $(MING_LIB) $(PDF_LIB) \
     $(WINSOCK_LIB) $(POSTGIS_LIB) $(IMGGEN_LIB) $(ERR_LIB) \
     $(ORACLE_LIB) $(SDE_LIB) $(ICONV_LIB) $(FCGILIB) $(GEOS_LIB) \
     $(LIBXML_LIB) $(AGG_LIB) $(FRIBIDI_LIB)
!ENDIF
        
LIBS=$(MS_LIB) $(EXTERNAL_LIBS)
LIBS_DLL=$(MS_LIB_DLL) $(EXTERNAL_LIBS)

!IFNDEF INCLUDES
INCLUDES=$(GD_INC) $(TIFF_INC) $(JPEG_INC)  \
         $(PROJ_INC) $(REGEX_INC) $(GDAL_INC) $(OGR_INC) \
         $(CURL_INC) $(MING_INC) $(PDF_INC) $(POSTGIS_INC) \
         $(IMGGEN_INC) $(ERR_INC) $(ORACLE_INC) $(SDE_INC)\
         $(ICONV_INC) $(FCGIINC) $(GEOS_INC) $(ZLIB_INC) $(LIBXML_INC) \
         $(AGG_INC) $(PNG_INC) $(FRIBIDI_INC)
!ENDIF
        

MS_DEFS = $(REGEX_OPT) $(STRINGS) $(POSTGIS) \
          $(EPPL) $(PROJ) $(TIFF) $(JPEG) $(GD) $(OGR) $(WMS) $(THREADS) \
          $(WMSCLIENT) $(MING) $(IGNORE_MISSING_DATA) \
          $(NEED_NONBLOCKING_STDERR) $(ENABLE_STDERR_DEBUG) \
          $(USE_POINT_Z_M) $(GDAL) $(FCGIDEF) \
          $(WFS) $(WFSCLIENT) $(WCS) $(PDF) $(EGIS) \
          $(USE_GD_ANTIALIAS) $(ORACLE) $(MING_VERSION) \
          $(SDE_OPT) $(ICONV) $(GEOS) $(ZLIB) $(SOS)  $(XML2_ENABLED) $(AGG) $(RGBA_PNG_ENABLED) $(FRIBIDI)

!IFDEF WIN64
MS_CFLAGS=$(INCLUDES) $(MS_DEFS) -DWIN32 -D_WIN32 -DUSE_GENERIC_MS_NINT
!ELSE
MS_CFLAGS=$(INCLUDES) $(MS_DEFS) -DWIN32 -D_WIN32
!ENDIF


