#**************************************************************
#
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.
#
#**************************************************************



# ----------------------------ADO settings------------------------------------#
# target
ADO_TARGET=ado

# ----------------------------ODBC BASE settings-----------------------------------#
# target
ODBC2_TARGET=odbcbase

# ----------------------------ODBC settings-----------------------------------#
# target
ODBC_TARGET=odbc

# ----------------------------JDBC settings-----------------------------------#
# target
JDBC_TARGET=jdbc

# ----------------------------dbtools settings-----------------------------------#
# target
DBTOOLS_TARGET=dbtools

# -----------------------DRIVER MANAGER settings--------------------------------#
# target
SDBC_TARGET=sdbc

# the major
SDBC_MAJOR=2
# the minor
SDBC_MINOR=0
# the micro
SDBC_MICRO=0


# -----------------------Connection Pool settings--------------------------------#
# target
DBPOOL_TARGET=dbpool

# the major
DBPOOL_MAJOR=2
# the minor
DBPOOL_MINOR=0
# the micro
DBPOOL_MICRO=0


# ----------------------------DBASE settings-----------------------------------#
# target
DBASE_TARGET=dbase

# ----------------------------MySQL settings-----------------------------------#
# target
MYSQL_TARGET=mysql

# ----------------------------Kab settings-------------------------------------#
# target
KAB_TARGET=kab

# the major
KAB_MAJOR=1
# the minor
KAB_MINOR=0
# the micro
KAB_MICRO=0


# ----------------------------Macab settings-------------------------------------#
# target
MACAB_TARGET=macab

# the major
MACAB_MAJOR=1
# the minor
MACAB_MINOR=0
# the micro
MACAB_MICRO=0

# ----------------------------HSQLDB settings-----------------------------------#
# target
HSQLDB_TARGET=hsqldb
