#
# Copyright (c) 2016 Cisco and/or its affiliates.
# Licensed 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.

try:
    from setuptools import setup, command, Extension
except ImportError:
    from distutils.core import setup

setup (name = 'vpp_papi',
       version = '1.2',
       description = 'VPP Python binding',
       author = 'Ole Troan',
       author_email = 'ot@cisco.com',
       test_suite = 'tests',
       packages=['vpp_papi'],
       ext_modules = [
           Extension(
               'vpp_api',
               sources = ['vpp_papi/pneum_wrap.c'],
               libraries = ['pneum'],
           )],
       long_description = '''VPP Python language binding.''',
)
