blob: 0eac18b759a0f1467ef8646958c100f726cbc65d [file] [log] [blame]
#!/usr/bin/env python3
#
# Copyright 2019 - The Android Open Source Project
#
# 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.
# Usage:
# 1. Run envsetup and lunch first in an Android checkout
# 2. Make target bluetooth_packets_python3 that will generate C++ sources for the
# Extension
# 3. Build only:
# python3 bluetooth_packets_python3_setup.py build_ext
# Then Find the .so file in build/lib.linux-x86_64-3.X
# 4. Install:
# python3 bluetooth_packets_python3_setup.py install --user
import os
import glob
from setuptools import setup, Extension
ANDROID_BUILD_TOP = os.getenv("ANDROID_BUILD_TOP")
PYBIND11_INCLUDE_DIR = os.path.join(ANDROID_BUILD_TOP, "external/python/pybind11/include")
GD_DIR = os.path.join(ANDROID_BUILD_TOP, "system/bt/gd")
BT_PACKETS_GEN_DIR = os.path.join(ANDROID_BUILD_TOP,
"out/soong/.intermediates/system/bt/gd/BluetoothGeneratedPackets_h/gen")
BT_PACKETS_PY3_GEN_DIR = os.path.join(ANDROID_BUILD_TOP,
"out/soong/.intermediates/system/bt/gd/BluetoothGeneratedPackets_python3_cc/gen")
BT_PACKETS_BASE_SRCS = [
os.path.join(GD_DIR, "l2cap/fcs.cc"),
os.path.join(GD_DIR, "packet/bit_inserter.cc"),
os.path.join(GD_DIR, "packet/byte_inserter.cc"),
os.path.join(GD_DIR, "packet/byte_observer.cc"),
os.path.join(GD_DIR, "packet/iterator.cc"),
os.path.join(GD_DIR, "packet/fragmenting_inserter.cc"),
os.path.join(GD_DIR, "packet/packet_view.cc"),
os.path.join(GD_DIR, "packet/raw_builder.cc"),
os.path.join(GD_DIR, "packet/view.cc"),
]
BT_PACKETS_PY3_SRCs = \
[os.path.join(GD_DIR, "packet/python3_module.cc")] \
+ glob.glob(os.path.join(BT_PACKETS_PY3_GEN_DIR, "hci", "*.cc")) \
+ glob.glob(os.path.join(BT_PACKETS_PY3_GEN_DIR, "l2cap", "*.cc")) \
+ glob.glob(os.path.join(BT_PACKETS_PY3_GEN_DIR, "security", "*.cc"))
bluetooth_packets_python3_module = Extension(
'bluetooth_packets_python3',
sources=BT_PACKETS_BASE_SRCS + BT_PACKETS_PY3_SRCs,
include_dirs=[GD_DIR, BT_PACKETS_GEN_DIR, BT_PACKETS_PY3_GEN_DIR, PYBIND11_INCLUDE_DIR],
extra_compile_args=['-std=c++17'])
setup(
name='bluetooth_packets_python3',
version='1.0',
author="Android Open Source Project",
description="""Bluetooth Packet Library""",
ext_modules=[bluetooth_packets_python3_module],
py_modules=["bluetooth_packets_python3"],
)