# Run ./configure in the main MapServer directory to turn this Makefile.in
# into a proper Makefile

prefix		=	@prefix@
exec_prefix	=	@exec_prefix@
INST_PREFIX	=	@exec_prefix@
INST_LIB	=	@libdir@
INST_BIN	=	@bindir@

#
# 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
IGNORE_MISSING_DATA = @IGNORE_MISSING_DATA@

#
# 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 = @USE_POINT_Z_M@

#
# Apparently these aren't as commonplace as I'd hoped. Edit the
# following line to reflect the missing functions on your platform.
#
# STRINGS=-DNEED_STRCASECMP -DNEED_STRNCASECMP -DNEED_STRDUP -DNEED_STRLCAT
STRINGS= @STRINGS@

# Proj.4 distribution (cartographic projection routines). Not required for normal use. (EXPERIMENTAL)
PROJ_INC= @PROJ_INC@
PROJ_LIBS= @PROJ_LIBS@
PROJ=     @PROJ_ENABLED@

# GD distribution (graphics library GIF and/or PNG support). (REQUIRED)
#
#   - Versions 1.3 to 1.5 write non-LZW GIF (-DUSE_GD_1_3).
#   - Versions 1.6 and greater write PNG (-DUSE_GD_1_6). Add -lpng -lz to GD_LIB line.
#
#
GDFONT_OBJ=gd-1.2/gdfontt.o gd-1.2/gdfonts.o gd-1.2/gdfontmb.o gd-1.2/gdfontl.o gd-1.2/gdfontg.o
GD_INC=  @GD_INC@
GD_LIB=  @GD_LIB@
GD=      @GD_DEF@
GD_STATIC = @GD_STATIC@


#
# Optional Anti-Grain Geometry Support.
#
AGG=     @AGG_ENABLED@
AGG_INC=  @AGG_INC@


# PDFlib distribution (PDF library w/ PDF support). (EXPERIMENTAL)
#
#
#
PDF_INC=  @PDF_INC@
PDF_LIB=  @PDF_LIB@
PDF=      @PDF_ENABLED@

# TIFF distribution (raster support for TIFF and GEOTIFF imagery). (RECOMMENDED)
TIFF_INC= @TIFF_INC@
TIFF_LIB= @TIFF_LIB@
TIFF=     @TIFF_ENABLED@

# JPEG distribution (raster support for grayscale JPEG images, INPUT ONLY).
JPEG_INC= @JPEG_INC@
JPEG_LIB= @JPEG_LIB@
JPEG=     @JPEG_ENABLED@

# EPPL7 Support (this activates ERDAS as well) 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. (RECOMMENDED)
EPPL=     @EPPL_ENABLED@
EPPL_OBJ= @EPPL_OBJ@

# ESRI SDE Support. You MUST have the SDE Client libraries and include files
# on your system someplace. The actual SDE server you wish to connect to can
# be elsewhere.
SDE=	  @SDE_ENABLED@
SDE_LIB=  @SDE_LIB@
SDE_INC=  @SDE_INC@

# Optional OGR Support.  OGC Simple Feature inspired interface for vector
# formats.  See http://ogr.maptools.org/
# Note that since OGR is part of the GDAL library, it uses GDAL_LIB + GDAL_INC
OGR=	  @OGR_ENABLED@

# Optional GDAL Support (provides read access to a variety of raster formats)
# See http://www.remotesensing.org/gdal/
GDAL=	  @GDAL_ENABLED@
GDAL_LIB=  @GDAL_LIB@
GDAL_INC=  @GDAL_INC@

# Optional GEOS Support.
# See http://geos.refractions.net/
GEOS=     @GEOS_ENABLED@
GEOS_LIB=  @GEOS_LIB@
GEOS_INC=  @GEOS_INC@

# Optional PostGIS Support.  See http://postgis.refractions.net/
POSTGIS=      @POSTGIS_ENABLED@
POSTGIS_LIB=  @POSTGIS_LIB@
POSTGIS_INC=  @POSTGIS_INC@

# Optional MyGIS Support.  See http://postgis.refractions.net/
MYGIS=      @MYGIS_ENABLED@
MYGIS_LIB=  @MYGIS_LIB@
MYGIS_INC=  @MYGIS_INC@

# Optional ORACLESPATIAL Support. Contact: cabral@cttmar.univali.br
ORACLESPATIAL=@ORACLESPATIAL_ENABLED@
ORACLESPATIAL_LIB=@ORACLESPATIAL_LIB@
ORACLESPATIAL_INC=@ORACLESPATIAL_INC@

# Optional MING/SWF/FLASH Support. Contact: assefa@dmsolutions.ca
MING=@MING_ENABLED@
MING_LIB=@MING_LIB@
MING_INC=@MING_INC@

# libcurl ... required for WMS/WFS Client Connections
CURL_INC=@CURL_INC@
CURL_LIB=@CURL_LIB@

# libxml2 ... required for OGC SOS Server
XML2_INC=@XML2_INC@
XML2_LIB=@XML2_LIB@

# OWS: OGC Web Services support
# OGC WMS Server:  -DUSE_WMS_SVR (Requires PROJ4 support)
# OGC WMS Client Connections:  -DUSE_WMS_LYR (Requires PROJ4 and libcurl)
# OGC WFS Server: -DUSE_WFS_SVR (Requires OGR, PROJ4 recommended)
# OGC WFS Client: -DUSE_WFS_LYR (Requires OGR, PROJ4 and libcurl)
# OGC WCS Server: -DUSE_WCS_SVR (Requires GDAL and PROJ4)
# OGC SOS Server: -DUSE_SOS_SVR (Requires PROJ4 and libxml2)
OWS=@WMS_SVR_ENABLED@ @WMS_LYR_ENABLED@ @WFS_SVR_ENABLED@ @WFS_LYR_ENABLED@ @WCS_SVR_ENABLED@ @SOS_SVR_ENABLED@

#
# IMPORTANT NOTE ABOUT REGEX FOR PHP_MAPSCRIPT USERS:
#
# In order to compile the PHP_MAPSCRIPT module, we have to make MapServer
# uses the same version of the REGEX library that PHP was compiled with:
#
REGEX_OBJ=@PHP_REGEX_OBJ@
REGEX_INC=@PHP_REGEX_INC@

#
# Multithreading support.
#
THREAD=@THREAD_FLAG@
THREAD_LIB=@THREAD_LIB@

#
# libiconv - Enables Internationalization
#
ICONV=@ICONV_ENABLED@
ICONV_LIB=@ICONV_LIB@
ICONV_INC=@ICONV_INC@

#
# Pick a compiler, etc. Flex and bison are only required if you need to modify the mapserver lexer (maplexer.l) or expression parser (mapparser.y).
#
CXX=	@CXX@
CC=     @CC@
LD=     @CXX@
AR= ar rc
RANLIB= @RANLIB@
LEX=    @LEX@
YACC=   @YACC@
LD_SHARED = @LD_SHARED@

XTRALIBS= @XTRALIBS@
RUNPATHS= @RPATHS@

CCFLAGS= @CFLAGS@ @DEBUG_FLAGS@ \
        $(IGNORE_MISSING_DATA) $(STRINGS) $(EPPL) $(PROJ) $(OWS) $(MING) \
	$(ORACLESPATIAL) $(TIFF) $(JPEG) $(GD) $(AGG) $(PDF) $(SDE) $(OGR) $(GDAL) $(GEOS) $(ICONV) \
	$(POSTGIS) $(MYGIS) $(THREAD) $(GD_INC) $(AGG_INC) $(PDF_INC) \
	$(PROJ_INC) $(TIFF_INC) $(JPEG_INC) $(EGIS_INC) $(SDE_INC) \
	$(REGEX_INC) $(GDAL_INC) $(POSTGIS_INC) $(MYGIS_INC) \
	$(CURL_INC) $(MING_INC) $(ORACLESPATIAL_INC) $(GEOS_INC) $(ICONV_INC) $(XML2_INC)

# Link flags and shared libs only
SUP_LIBS =  $(GD_LIB) $(PDF_LIB) $(TIFF_LIB) $(PROJ_LIBS) \
          $(JPEG_LIB) $(SDE_LIB) $(GDAL_LIB) $(MING_LIB) $(POSTGIS_LIB) \
	  $(MYGIS_LIB) $(CURL_LIB) $(ORACLESPATIAL_LIB) \
	  $(THREAD_LIB) $(XTRALIBS) $(GEOS_LIB) $(ICONV_INC) $(XML2_LIB)

# STATIC_LIBS is full filename with path of libs that will be statically linked
STATIC_LIBS= $(GD_STATIC)

EXE_LDFLAGS =	$(RUNPATHS) -L. -lmapserver $(SUP_LIBS) $(STATIC_LIBS)

LDFLAGS= $(RUNPATHS) -L../.. -lmapserver $(SUP_LIBS) $(STATIC_LIBS)

LIBMAPSCRIPT_SHARED= libmapscript.@SO_EXT@
LD_SHARED= @LD_SHARED@

# END OF CONFIGURE----

#
# SWIG Stuff
#
SWIG=swig

#
# Java Stuff
#
JAVADOC=javadoc
JAVAC=javac
JAVA=java
JAR=jar
JAVA_INCLUDE=-I${JAVA_HOME}/include -I${JAVA_HOME}/include/@OS_INCLUDE_DIR@

CC=gcc

#
# --- You shouldn't have to edit anything else. ---
#
all: mapscript_jar

# This target is for users who are generating their own interface
# with SWIG versions lower than 1.3.19 (no -outdir)
# It is here for bacwkards compatibilty as swig <1.3.24 is no longer supported
interface: interface_release

interface_release: mapscript_wrap.c

# This target will be used in the release script
mapscript_wrap.c: ../mapscript.i
	mkdir -p edu/umn/gis/mapscript 
	$(SWIG) -java -package edu.umn.gis.mapscript -outdir edu/umn/gis/mapscript -o mapscript_wrap.c ../mapscript.i

mapscript_so: mapscript_wrap.c
	$(CC) -fpic -c $(CCFLAGS) $(JAVA_INCLUDE) -fno-strict-aliasing mapscript_wrap.c
	$(LD_SHARED) -fpic mapscript_wrap.o -o $(LIBMAPSCRIPT_SHARED) $(LDFLAGS)

mapscript_java: mapscript_wrap.c
	$(JAVAC) edu/umn/gis/mapscript/*.java

mapscript_javadoc: mapscript_wrap.c
	$(JAVADOC) -d doc -sourcepath edu/umn/gis/mapscript/*.java

mapscript_jar: mapscript_java mapscript_so
	$(JAR) cf mapscript.jar edu

clean:
	rm -rf edu *.o *.c *.@SO_EXT@ *.java *.jar *.png
	rm -rf examples/*.class
	rm -rf tests/threadtest/*.class

ifneq ($(PROJ),)
ifneq ($(GDAL),)
test:
	$(JAVAC) -classpath ./:examples/:./mapscript.jar -d examples/ examples/RFC24.java examples/ConnPool.java examples/DrawMap.java examples/DumpShp.java examples/MakePoint.java examples/QueryByAttribute.java examples/ShapeInfo.java examples/WxSTest.java examples/Metadata.java examples/RunTimeBuiltWMSClient.java
	$(JAVAC) -encoding iso-8859-15 -classpath ./:examples/:./mapscript.jar -d examples/ examples/QueryByAttributeUnicode.java 
	$(JAVA) -classpath ./:examples/:./mapscript.jar -Djava.library.path=. DumpShp ../../tests/point.shp
	$(JAVA) -classpath ./:examples/:./mapscript.jar -Djava.library.path=. ShapeInfo ../../tests/point.shp ../../tests/point.dbf
	$(JAVA) -classpath ./:examples/:./mapscript.jar -Djava.library.path=. DrawMap ../../tests/test.map ./map.png
	$(JAVA) -classpath ./:examples/:./mapscript.jar -Djava.library.path=. ConnPool
	$(JAVA) -classpath ./:examples/:./mapscript.jar -Djava.library.path=. QueryByAttribute ../../tests/test.map
ifneq ($(findstring USE_WCS_SVR, $(OWS)),)
	$(JAVA) -classpath ./:examples/:./mapscript.jar -Djava.library.path=. WxSTest ../../tests/test.map
else
	@echo "WARN: Skipping WxSTest because OWS is not enabled"
endif
	$(JAVA) -classpath ./:examples/:./mapscript.jar -Djava.library.path=. RFC24 ../../tests/test.map
	LC_ALL=de_DE $(JAVA) -classpath ./:examples/:./mapscript.jar -Djava.library.path=. QueryByAttributeUnicode data/subset-umlauts.map
else
test:
	@echo "To run the tests GDAL and PROJ must be enabled"
endif
else
test:
	@echo "To run the tests GDAL and PROJ must be enabled"
endif

threadtests:
	$(JAVAC) -cp ./mapscript.jar -d tests/threadtest/ tests/threadtest/*.java
	@echo "-------------------------------------------------------------------------"
	@echo "   You can use your own map! Copy the following command in your shell"
	@echo "        and change the file to the map file (the last argument)"
	@echo "-------------------------------------------------------------------------"
	$(JAVA) -Djava.library.path=./ -cp tests/threadtest/:./mapscript.jar MapTest -t 10 -i 5 ../../tests/test.map

