xref: /aosp_15_r20/external/dtc/setup.py (revision cd60bc56d4bea3af4ec04523e4d71c2b272c8aff)
1*cd60bc56SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*cd60bc56SAndroid Build Coastguard Worker# SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
3*cd60bc56SAndroid Build Coastguard Worker
4*cd60bc56SAndroid Build Coastguard Worker# While Python 3 is the default, it's also possible to invoke
5*cd60bc56SAndroid Build Coastguard Worker# this setup.py script with Python 2.
6*cd60bc56SAndroid Build Coastguard Worker
7*cd60bc56SAndroid Build Coastguard Worker"""
8*cd60bc56SAndroid Build Coastguard Workersetup.py file for SWIG libfdt
9*cd60bc56SAndroid Build Coastguard WorkerCopyright (C) 2017 Google, Inc.
10*cd60bc56SAndroid Build Coastguard WorkerWritten by Simon Glass <[email protected]>
11*cd60bc56SAndroid Build Coastguard Worker"""
12*cd60bc56SAndroid Build Coastguard Worker
13*cd60bc56SAndroid Build Coastguard Workerfrom setuptools import setup, Extension
14*cd60bc56SAndroid Build Coastguard Workerfrom setuptools.command.build_py import build_py as _build_py
15*cd60bc56SAndroid Build Coastguard Worker
16*cd60bc56SAndroid Build Coastguard Workerimport os
17*cd60bc56SAndroid Build Coastguard Workerimport re
18*cd60bc56SAndroid Build Coastguard Workerimport sys
19*cd60bc56SAndroid Build Coastguard Worker
20*cd60bc56SAndroid Build Coastguard Workersrcdir = os.path.dirname(__file__)
21*cd60bc56SAndroid Build Coastguard Worker
22*cd60bc56SAndroid Build Coastguard Workerwith open(os.path.join(srcdir, "README.md"), "r") as fh:
23*cd60bc56SAndroid Build Coastguard Worker    long_description = fh.read()
24*cd60bc56SAndroid Build Coastguard Worker
25*cd60bc56SAndroid Build Coastguard Workerdef get_top_builddir():
26*cd60bc56SAndroid Build Coastguard Worker    if '--top-builddir' in sys.argv:
27*cd60bc56SAndroid Build Coastguard Worker        index = sys.argv.index('--top-builddir')
28*cd60bc56SAndroid Build Coastguard Worker        sys.argv.pop(index)
29*cd60bc56SAndroid Build Coastguard Worker        return sys.argv.pop(index)
30*cd60bc56SAndroid Build Coastguard Worker    else:
31*cd60bc56SAndroid Build Coastguard Worker        return srcdir
32*cd60bc56SAndroid Build Coastguard Worker
33*cd60bc56SAndroid Build Coastguard Workertop_builddir = get_top_builddir()
34*cd60bc56SAndroid Build Coastguard Worker
35*cd60bc56SAndroid Build Coastguard Workerlibfdt_module = Extension(
36*cd60bc56SAndroid Build Coastguard Worker    '_libfdt',
37*cd60bc56SAndroid Build Coastguard Worker    sources=[os.path.join(srcdir, 'pylibfdt/libfdt.i')],
38*cd60bc56SAndroid Build Coastguard Worker    define_macros=[('PY_SSIZE_T_CLEAN', None)],
39*cd60bc56SAndroid Build Coastguard Worker    include_dirs=[os.path.join(srcdir, 'libfdt')],
40*cd60bc56SAndroid Build Coastguard Worker    libraries=['fdt'],
41*cd60bc56SAndroid Build Coastguard Worker    library_dirs=[os.path.join(top_builddir, 'libfdt')],
42*cd60bc56SAndroid Build Coastguard Worker    swig_opts=['-I' + os.path.join(srcdir, 'libfdt')],
43*cd60bc56SAndroid Build Coastguard Worker)
44*cd60bc56SAndroid Build Coastguard Worker
45*cd60bc56SAndroid Build Coastguard Workerclass build_py(_build_py):
46*cd60bc56SAndroid Build Coastguard Worker    def run(self):
47*cd60bc56SAndroid Build Coastguard Worker        self.run_command("build_ext")
48*cd60bc56SAndroid Build Coastguard Worker        return super().run()
49*cd60bc56SAndroid Build Coastguard Worker
50*cd60bc56SAndroid Build Coastguard Workersetup(
51*cd60bc56SAndroid Build Coastguard Worker    name='libfdt',
52*cd60bc56SAndroid Build Coastguard Worker    use_scm_version={
53*cd60bc56SAndroid Build Coastguard Worker        "root": srcdir,
54*cd60bc56SAndroid Build Coastguard Worker    },
55*cd60bc56SAndroid Build Coastguard Worker    cmdclass = {'build_py' : build_py},
56*cd60bc56SAndroid Build Coastguard Worker    setup_requires = ['setuptools_scm'],
57*cd60bc56SAndroid Build Coastguard Worker    author='Simon Glass',
58*cd60bc56SAndroid Build Coastguard Worker    author_email='[email protected]',
59*cd60bc56SAndroid Build Coastguard Worker    description='Python binding for libfdt',
60*cd60bc56SAndroid Build Coastguard Worker    ext_modules=[libfdt_module],
61*cd60bc56SAndroid Build Coastguard Worker    package_dir={'': os.path.join(srcdir, 'pylibfdt')},
62*cd60bc56SAndroid Build Coastguard Worker    py_modules=['libfdt'],
63*cd60bc56SAndroid Build Coastguard Worker
64*cd60bc56SAndroid Build Coastguard Worker    long_description=long_description,
65*cd60bc56SAndroid Build Coastguard Worker    long_description_content_type="text/plain",
66*cd60bc56SAndroid Build Coastguard Worker    url="https://git.kernel.org/pub/scm/utils/dtc/dtc.git",
67*cd60bc56SAndroid Build Coastguard Worker    license="BSD",
68*cd60bc56SAndroid Build Coastguard Worker    license_files=["GPL", "BSD-2-Clause"],
69*cd60bc56SAndroid Build Coastguard Worker
70*cd60bc56SAndroid Build Coastguard Worker    classifiers=[
71*cd60bc56SAndroid Build Coastguard Worker        "Programming Language :: Python :: 3",
72*cd60bc56SAndroid Build Coastguard Worker        "License :: OSI Approved :: BSD License",
73*cd60bc56SAndroid Build Coastguard Worker        "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)",
74*cd60bc56SAndroid Build Coastguard Worker        "Operating System :: OS Independent",
75*cd60bc56SAndroid Build Coastguard Worker    ],
76*cd60bc56SAndroid Build Coastguard Worker
77*cd60bc56SAndroid Build Coastguard Worker)
78