Luca Weiss | b111122 | 2019-09-07 17:25:31 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python3 |
Rob Herring | a5ac29b | 2019-06-20 15:19:40 -0600 | [diff] [blame] | 2 | # SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) |
Simon Glass | 50f2507 | 2017-03-17 16:14:30 -0600 | [diff] [blame] | 3 | |
Luca Weiss | b111122 | 2019-09-07 17:25:31 +0200 | [diff] [blame] | 4 | # While Python 3 is the default, it's also possible to invoke |
| 5 | # this setup.py script with Python 2. |
| 6 | |
Simon Glass | 50f2507 | 2017-03-17 16:14:30 -0600 | [diff] [blame] | 7 | """ |
| 8 | setup.py file for SWIG libfdt |
Simon Glass | 90db6d9 | 2017-04-07 15:51:32 -0600 | [diff] [blame] | 9 | Copyright (C) 2017 Google, Inc. |
| 10 | Written by Simon Glass <sjg@chromium.org> |
Simon Glass | 50f2507 | 2017-03-17 16:14:30 -0600 | [diff] [blame] | 11 | """ |
| 12 | |
Rob Herring | c691776 | 2021-11-10 19:11:32 -0600 | [diff] [blame] | 13 | from setuptools import setup, Extension |
Rob Herring | c001fc0 | 2022-02-03 12:04:07 -0600 | [diff] [blame] | 14 | from setuptools.command.build_py import build_py as _build_py |
| 15 | |
Simon Glass | 50f2507 | 2017-03-17 16:14:30 -0600 | [diff] [blame] | 16 | import os |
Simon Glass | 90db6d9 | 2017-04-07 15:51:32 -0600 | [diff] [blame] | 17 | import re |
Simon Glass | 50f2507 | 2017-03-17 16:14:30 -0600 | [diff] [blame] | 18 | import sys |
| 19 | |
Rob Herring | 23b56cb | 2021-11-10 19:11:35 -0600 | [diff] [blame] | 20 | srcdir = os.path.dirname(__file__) |
| 21 | |
Marc-André Lureau | 4048aed | 2022-01-03 11:38:55 +0400 | [diff] [blame] | 22 | with open(os.path.join(srcdir, "README"), "r") as fh: |
Rob Herring | 1cc41b1 | 2021-11-11 22:16:29 -0600 | [diff] [blame] | 23 | long_description = fh.read() |
| 24 | |
Marc-André Lureau | 05874d0 | 2020-10-12 11:34:03 +0400 | [diff] [blame] | 25 | def get_top_builddir(): |
| 26 | if '--top-builddir' in sys.argv: |
| 27 | index = sys.argv.index('--top-builddir') |
| 28 | sys.argv.pop(index) |
| 29 | return sys.argv.pop(index) |
| 30 | else: |
Rob Herring | 23b56cb | 2021-11-10 19:11:35 -0600 | [diff] [blame] | 31 | return srcdir |
Marc-André Lureau | 05874d0 | 2020-10-12 11:34:03 +0400 | [diff] [blame] | 32 | |
Marc-André Lureau | 05874d0 | 2020-10-12 11:34:03 +0400 | [diff] [blame] | 33 | top_builddir = get_top_builddir() |
| 34 | |
Simon Glass | 50f2507 | 2017-03-17 16:14:30 -0600 | [diff] [blame] | 35 | libfdt_module = Extension( |
| 36 | '_libfdt', |
Rob Herring | 23b56cb | 2021-11-10 19:11:35 -0600 | [diff] [blame] | 37 | sources=[os.path.join(srcdir, 'pylibfdt/libfdt.i')], |
Ross Burton | 383e148 | 2021-11-11 16:05:36 +0000 | [diff] [blame] | 38 | define_macros=[('PY_SSIZE_T_CLEAN', None)], |
Rob Herring | 23b56cb | 2021-11-10 19:11:35 -0600 | [diff] [blame] | 39 | include_dirs=[os.path.join(srcdir, 'libfdt')], |
David Gibson | 607b858 | 2018-11-23 22:11:33 +1100 | [diff] [blame] | 40 | libraries=['fdt'], |
Marc-André Lureau | 05874d0 | 2020-10-12 11:34:03 +0400 | [diff] [blame] | 41 | library_dirs=[os.path.join(top_builddir, 'libfdt')], |
Rob Herring | 23b56cb | 2021-11-10 19:11:35 -0600 | [diff] [blame] | 42 | swig_opts=['-I' + os.path.join(srcdir, 'libfdt')], |
Simon Glass | 50f2507 | 2017-03-17 16:14:30 -0600 | [diff] [blame] | 43 | ) |
| 44 | |
Rob Herring | c001fc0 | 2022-02-03 12:04:07 -0600 | [diff] [blame] | 45 | class build_py(_build_py): |
| 46 | def run(self): |
| 47 | self.run_command("build_ext") |
| 48 | return super().run() |
| 49 | |
Simon Glass | b04a2cf | 2017-04-05 10:01:39 -0600 | [diff] [blame] | 50 | setup( |
| 51 | name='libfdt', |
Rob Herring | 0b106a7 | 2021-11-10 19:11:33 -0600 | [diff] [blame] | 52 | use_scm_version={ |
Rob Herring | 23b56cb | 2021-11-10 19:11:35 -0600 | [diff] [blame] | 53 | "root": srcdir, |
Rob Herring | 0b106a7 | 2021-11-10 19:11:33 -0600 | [diff] [blame] | 54 | }, |
Rob Herring | c001fc0 | 2022-02-03 12:04:07 -0600 | [diff] [blame] | 55 | cmdclass = {'build_py' : build_py}, |
Rob Herring | 0b106a7 | 2021-11-10 19:11:33 -0600 | [diff] [blame] | 56 | setup_requires = ['setuptools_scm'], |
Rob Herring | 69a7607 | 2021-11-10 19:11:34 -0600 | [diff] [blame] | 57 | author='Simon Glass', |
| 58 | author_email='sjg@chromium.org', |
Simon Glass | b04a2cf | 2017-04-05 10:01:39 -0600 | [diff] [blame] | 59 | description='Python binding for libfdt', |
| 60 | ext_modules=[libfdt_module], |
Rob Herring | 23b56cb | 2021-11-10 19:11:35 -0600 | [diff] [blame] | 61 | package_dir={'': os.path.join(srcdir, 'pylibfdt')}, |
David Gibson | 1e4a092 | 2018-08-10 17:33:24 +1000 | [diff] [blame] | 62 | py_modules=['libfdt'], |
Rob Herring | 1cc41b1 | 2021-11-11 22:16:29 -0600 | [diff] [blame] | 63 | |
| 64 | long_description=long_description, |
| 65 | long_description_content_type="text/plain", |
| 66 | url="https://git.kernel.org/pub/scm/utils/dtc/dtc.git", |
| 67 | license="BSD", |
| 68 | license_files=["GPL", "BSD-2-Clause"], |
| 69 | |
| 70 | classifiers=[ |
| 71 | "Programming Language :: Python :: 3", |
| 72 | "License :: OSI Approved :: BSD License", |
| 73 | "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", |
| 74 | "Operating System :: OS Independent", |
| 75 | ], |
| 76 | |
Simon Glass | b04a2cf | 2017-04-05 10:01:39 -0600 | [diff] [blame] | 77 | ) |