#####################################
# Parser that the client should use #
#####################################
#only one parse can be used at a given time

testconf.client.parser.xml4c = false
testconf.client.parser.xerces = true
testconf.client.parser.guththila = false

#############################
# Server to deploy Services #
#############################
#Only one server can be used at a given time
#Also APACHE_HOME, APACHE2_HOME (simple axis server needs no environment settings) environment 
#variables should be set accordingly

server.apache1=false
server.apache2=true
server.simpleaxisserver=true

#####################
# Items to be built #
#####################

# Set the following to true if you wish the client library be built
client = true

# Set the following to true if you wish the server libraries be built
# See options below for Apache modules and Stand-alone server
server = true

# set the following options if you want to create the CBindings
# buildCBindings

# Set the following to true if you wish the API documentation be generated
documentation = true

#####################
# Parser Properties #
#####################

# Typical values are:
#	For Xerces, on Windows:
#		xmlParser = xerces
#		xmlParserLibrary = xerces-c_2
#	For Xerces, on Unix:
#		xmlParser = xerces
#		xmlParserLibrary = xerces-c

# Parsers to be used
xmlParser.xml4c = false
xmlParser.xerces = true
xmlParser.guththila = false

## Values used for XML4C
xml4c.xmlParserLibrary = xml4c
xml4c.dir.xmlParser = ${env.XML4C_HOME}
xml4c.xmlParserLibraryName = axis_xml4c

## Values used for Xerces
xerces.xmlParserLibrary = xerces-c
xerces.dir.xmlParser = ${env.XERCES_HOME}
xerces.xmlParserLibraryName = axis_xerces

## Values used for Guththila
guththila.xmlParserLibrary = guththila
guththila.dir.xmlParser = ${basedir}/src/guththila
guththila.xmlParserLibraryName = axis_guththila

# Name for compiled XML Parser library - excluding any prefix or suffix
# eg: For Windows :   axis_xmlparser will produce axis_xmlparser.dll
#     For Unix    :   axis_xmlparser will produce libaxis_xmlparser.so
xmlParserLibraryName = ${xerces.xmlParserLibraryName}

########################
# Transport Properties #
########################

# Transports to be used

transport.HTTP = true
transport.HTTP.ipv6 = true


## Values used for HTTP
HTTP.transportLibraryName = http_transport

# Name for compiled transport library - excluding any prefix or suffix
# eg: For Windows :   axis_transport will produce axis_transport.dll
#     For Unix    :   axis_transport will produce libaxis_transport.so
#
transportLibraryName = http_transport

######################
# Channel Properties #
######################

HTTP.Channel = true

# Name for compiled channel library - excluding any prefix or suffix
# eg: For Windows :   axis_transport will produce axis_transport.dll
#     For Unix    :   axis_transport will produce libaxis_transport.so
#
HTTP.ChannelLibraryName = http_channel

#############################
# Secure Channel Properties #
#############################

HTTP.SSLChannel = true

HTTP.SSLChannel.dir = ${env.OPENSSL_HOME}
# Location of all the required SSL libraries. Separate multiple
# directories with ${path.separator}
HTTP.SSLChannel.eay.dir = ${HTTP.SSLChannel.dir}/bin

# Name for compiled secure channel library - excluding any prefix or suffix
# eg: For Windows :   axis_transport will produce axis_transport.dll
#     For Unix    :   axis_transport will produce libaxis_transport.so
#
HTTP.SecureChannelLibraryName = http_channelssl

#####################
# Client Properties #
#####################

# Name for compiled client - excluding any prefix or suffix
# eg: For Windows :   axis_client will produce axis_client.dll
#     For Unix    :   axis_client will produce libaxis_client.so
clientLibraryName = axis_client
cClientLibraryName = ${clientLibraryName}C

############################
# Server Engine Properties #
############################

# Name for compiled server engine - excluding any prefix or suffix
# eg: For Windows :   axis_server will produce axis_server.dll
#     For Unix    :   axis_server will produce libaxis_server.so
serverEngineLibraryName = axis_server

#################################
# Simple Axis Server Properties #
#################################

# Is Simple Axis Server to be used?
server.simpleAxisServer = true

# Name for compiled server engine - excluding any prefix or suffix
# eg: For Windows :   simple_axis_server will produce simple_axis_server.exe
#     For Unix    :   simple_axis_server will produce simple_axis_server
simpleAxisServerExecutableName = simple_axis_server

##########################
# AdminClient Properties #
##########################

# Is AdminClient to be created?
server.adminClient = true

# Name for compiled AdminClient - excluding any prefix or suffix
# eg: For Windows :   AxisAdminClient will produce AxisAdminClient.exe
#     For Unix    :   AxisAdminClient will produce AxisAdminClient
adminClientExecutableName = AxisAdminClient

############################
# Admin Service Properties #
############################

# Is Admin Service to be created?
server.adminService = true

# Name for compile AdminService = excluding any prefix or suffix
# eg: For Windows :   AxisAdminService will produce AxisAdminService.dll
#     For Unix    :   AxisAdminService will produce libAxisAdminService.so
adminServiceLibraryName = AxisAdminService

#####################
# Apache Properties #
#####################

# Apache versions to be used
server.apache13 = true
server.apache20 = true

## Values used for Apache 1.3
apache13.dir.server = ${env.APACHE_HOME}
apache13.serverLibraryName = axiscpp_mod

## Values used for Apache 2.0
apache20.dir.server = ${env.APACHE2_HOME}
apache20.serverLibraryName = axiscpp_mod2

# Name for compiled Apache plugin library - excluding any prefix or suffix
# eg: For Windows :   axis_apache will produce axis_apache.dll
#     For Unix    :   axis_apache will produce libaxis_apache.so
serverLibraryName = mod_axis

###########################
# Location of output tree #
###########################
dir.obj = ${basedir}/../../../obj

####################
# Trace Properties #
####################

# Instrument the Axis C++ source code with entry/exit trace
dir.src.instrumented = ${dir.obj}/src

#######################################
# Properties for compiling C/C++ code #
#######################################

# Directory in which to place compiled libraries
dir.bin = ${dir.obj}/bin

# Directory in which to place object files
dir.objects = ${dir.obj}/objects

####################################
# Properties for compiling WSDL2Ws #
####################################

# Location of Axis JARs
dir.axisJARs = ${env.AXISJAVA_LIB}

# Directory in which to place compiled Java classes
dir.classes = ${dir.obj}/classes

###########################################
# Properties for packaging Binary release #
###########################################
release = axis-c-${version}-${platform}
dir.release = ${dir.obj}/package/${release}

###############################
# Properties for Deliverables #
###############################
dir.zips = ${basedir}/../../../zips

########################################
# Location of wsdl2ws for Deliverables #
########################################
dir.wsdl2ws = ${dir.release}/lib/axis

############################################
# axisConfiguration executable             #
############################################
axisConfigurationExecutableName=AxisConfiguration

############################################
# Properties for building and running test #
############################################

# Directory in which to place all generated test artifacts
# This is also the directory in which code is built and run
dir.test.generated = ${dir.obj}/test/generated

# Log files for test results
results.log = ${dir.test.generated}/results.log

# Directory containing Axis C libraries
# For Windows the packaged product has the .DLLs in the PACKAGE\bin
#             directory and the .LIBs in the PACKAGE\lib\axis directory
#             but at build time they are all in dir.bin
# For Unix    .so files are used for compiling and running so only
#             1 directory is needed
# dir.libraries the location of the libraries needed for running the client
#               i.e. the DLLs
# dir.lib       the location of the libraries needed for compiling the client
# Use these properties so they can easily be overridden when testing the
# packaged product
dir.libraries = ${dir.bin}
dir.lib = ${dir.bin}

# May want to uncomment for testing so the build output is used
#dir.include = ${dir.package.include}

# If only a single language is required then set it here.
# Valid values are cpp or c. Default if unset is both.
target.lang = cpp

# AXISCPP_DEPLOY directory
axiscpp_deploy = ${dir.test.generated}

# Details of server to be used for testing clients
testHost = localhost
testPort = 8084
monitorPort = 13260

# details of HTTP proxy for any proxy tests
proxy.host=myProxy
proxy.port=8080

