########################################################################
# 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$
#
# 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) 1500 = 9.0 (2008)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!IFNDEF MSVC_VER
#assume msvc 9.0
MSVC_VER=1500
!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 =   f:\projects\mapserver-buildkit-2008\mapserver
!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
!IFNDEF MS_DEBUG
# Optimized, with using MSVCRT.
OPTFLAGS =	/nologo /Ox /MD $(WARNING_LEVEL) $(DEBUG) /EHsc /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE
!ELSE
# 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
!ENDIF
!ELSE
!IFNDEF MS_DEBUG
# Optimized, with using MSVCRT.
OPTFLAGS =	/nologo /Ox /MD $(WARNING_LEVEL) $(DEBUG) /EHsc
!ELSE
# Debug with MSVCRT
OPTFLAGS = /nologo /Zi /MDd $(WARNING_LEVEL) $(DEBUG) /EHsc
#LDFLAGS =  /NODEFAULTLIB:msvcrt /NODEFAULTLIB:libcd /DEBUG
!ENDIF
!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=/W4

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Debugging Options
# ----------------------------------------------------------------------
!IFDEF MS_DEBUG
#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
!ENDIF

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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 -DNEED_STRCASESTR -DNEED_STRLCPY

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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
GD_LIB=$(GD_DIR)/gd.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.35
!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.3.9
!ENDIF

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

# 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
EXPAT_DIR = $(MS_BASE)\..\expat-2.0.1

# If you wish to use OpenGl
#
#OGL=-DUSE_OGL
#FTGL_DIR=$(MS_BASE)\..\ftgl-2.1.3~rc5

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Cairo renderer support
# ----------------------------------------------------------------------
# Uncomment the following to build with cairo renderer support
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#CAIRO=-DUSE_CAIRO
#CAIRO_DIR=$(MS_BASE)\..\cairo-thamas

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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-7.0.4p1


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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-06232009


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GIFLIB
# ----------------------------------------------------------------------
# Uncomment the following to build with giflib support
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#GIF=-DUSE_GIF
#GIFLIB_DIR=$(MS_BASE)\..\giflib-4.1.4
#GIFLIB_INC=-I$(GIFLIB_DIR)\include


########################################################################
# 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_7_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_7_0


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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.7

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


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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_DIR="C:\Program Files\Microsoft SDKs\Windows\v6.0A"
#ODBC_LIBS=$(ODBC_DIR)\lib\odbc32.lib $(ODBC_DIR)\lib\odbccp32.lib $(ODBC_DIR)\lib\user32.lib
#ODBC_INC=-I$(ODBC_DIR)\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

# ----------------------------------------------------------------------
# Enable KML support
#----------------------------------------------------------------------
#KML=-DUSE_KML

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


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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=-DUSE_CURL 
#CURL_DIR=$(MS_BASE)\..\curl-7.19.4
#WINSOCK_LIB ="C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib\WS2_32.Lib"
#WINSOCK_LIB ="C:\Program Files\Microsoft SDKs\Windows\v6.0A\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
#WFS=-DUSE_WFS_SVR -DWFS_USE_LIBXML2

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# WCS Server
# ----------------------------------------------------------------------
# Use -DUSE_WCS_SVR to compile with WCS server support, requires GDAL.
#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 since the libxml windows binaries
#are built with it
#http://xmlsoft.org/index.html
#SOS=-DUSE_SOS_SVR
#XML2_ENABLED=-DUSE_LIBXML2
#LIBXML_DIR=$(MS_BASE)\..\libxml2-2.7.3.win32


########################################################################
# 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)\..\SWIG-1.3.39\swig

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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 = "$(MS_BASE)\..\Python-2.6.2"

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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-5.3.1
#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-svn-04222009


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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
!IFNDEF REGEX_DIR
REGEX_DIR=$(MS_BASE)\..\regex-0.12
!ENDIF
!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)/lib/libcurl_imp.lib
!ENDIF

# LIBXML include and library
!IFDEF SOS
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)/zlib1.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/win32/vc2008/freetype239.lib
!ENDIF
!ENDIF

# GD include and library
GD_INC= -I$(GD_DIR)
GD_LIBS= $(GD_LIB) $(JPEG_LIB) $(PNG_LIB) $(FT_LIB)
GD= -DUSE_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
OGR_LIB = $(GDAL_DIR)/gdal_i.lib
!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)\ext\ereg\regex\regcomp.obj $(PHP_HOME)\ext\ereg\regex\regerror.obj \
          $(PHP_HOME)\ext\ereg\regex\regexec.obj $(PHP_HOME)\ext\ereg\regex\regfree.obj
REGEX_INC=-I$(PHP_HOME)/ext/ereg/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 OGL
!IFDEF OGL
OGL_INC= -I$(FTGL_DIR)\src
OGL_LIB= $(FTGL_DIR)\msvc\build\ftgl_static.lib opengl32.lib glu32.lib user32.lib gdi32.lib
!ENDIF

# Setup CAIRO
!IFDEF CAIRO
CAIRO_INC= -I$(CAIRO_DIR)\src
CAIRO_LIB= $(CAIRO_DIR)\src\cairo.lib
!ENDIF

# Setup EXPAT
!IFDEF EXPAT_DIR
EXPAT_INC = -I$(EXPAT_DIR)\source\lib
EXPAT_LIB = $(EXPAT_DIR)\bin\libexpat.lib
!ENDIF


# Set the GIFLIB library
!IFDEF GIFLIB_DIR
GIFLIB_LIB=$(GIFLIB_DIR)\lib\giflib.lib
!ENDIF

# Setup AGG
!IFDEF AGG
AGG_INC=-I$(FT_DIR)\include -Irenderers\agg\include
AGG_OBJ=renderers\agg\src\agg_arc.obj renderers\agg\src\agg_curves.obj renderers\agg\src\agg_vcgen_contour.obj \
renderers\agg\src\agg_vcgen_dash.obj renderers\agg\src\agg_vcgen_stroke.obj renderers\agg\src\agg_image_filters.obj \
renderers\agg\src\agg_line_aa_basics.obj renderers\agg\src\agg_line_profile_aa.obj \
renderers\agg\src\agg_sqrt_tables.obj renderers\agg\src\agg_embedded_raster_fonts.obj \
renderers\agg\src\agg_trans_affine.obj renderers\agg\src\agg_vpgen_clip_polygon.obj \
renderers\agg\src\agg_vpgen_clip_polyline.obj renderers\agg\src\agg_font_freetype.obj \
renderers\agg\src\agg_svg_parser.obj renderers\agg\src\agg_svg_path_renderer.obj \
renderers\agg\src\agg_svg_path_tokenizer.obj renderers\agg\src\clipper.obj
!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\ociw32.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) $(PDF_LIB) \
     $(WINSOCK_LIB) $(POSTGIS_LIB) $(IMGGEN_LIB) $(ERR_LIB) \
     $(ORACLE_LIB) $(ICONV_LIB) $(FCGILIB) $(GEOS_LIB) \
     $(LIBXML_LIB) $(EXPAT_LIB) $(OGL_LIB) $(CAIRO_LIB) $(FRIBIDI_LIB) $(GIFLIB_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) $(PDF_INC) $(POSTGIS_INC) \
         $(IMGGEN_INC) $(ERR_INC) $(ORACLE_INC) \
         $(ICONV_INC) $(FCGIINC) $(GEOS_INC) $(ZLIB_INC) $(LIBXML_INC) \
         $(AGG_INC) $(EXPAT_INC) $(OGL_INC) $(CAIRO_INC) $(PNG_INC) $(FRIBIDI_INC) $(GIFLIB_INC)
!ENDIF


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

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


