#!/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"], )