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

