Build cython extensions in common setup.py (#281)
* build packer and parser with same setup * fix build * remove packer setup * extra compile args
This commit is contained in:
parent
3cfb5c7778
commit
2265c9c3dc
|
@ -12,4 +12,6 @@ can/build/
|
||||||
can/obj/
|
can/obj/
|
||||||
can/packer_pyx.cpp
|
can/packer_pyx.cpp
|
||||||
can/parser_pyx.cpp
|
can/parser_pyx.cpp
|
||||||
|
can/packer_pyx.html
|
||||||
|
can/parser_pyx.html
|
||||||
can/packer_impl.cpp
|
can/packer_impl.cpp
|
||||||
|
|
|
@ -16,12 +16,8 @@ for x in sorted(os.listdir('../')):
|
||||||
|
|
||||||
libdbc = env.SharedLibrary('libdbc', ["dbc.cc", "parser.cc", "packer.cc", "common.cc"]+dbcs, LIBS=["capnp", "kj"])
|
libdbc = env.SharedLibrary('libdbc', ["dbc.cc", "parser.cc", "packer.cc", "common.cc"]+dbcs, LIBS=["capnp", "kj"])
|
||||||
|
|
||||||
# packer
|
# Build packer and parser
|
||||||
env.Command(['packer_pyx.so'],
|
|
||||||
[libdbc, 'packer_pyx.pyx', 'packer_pyx_setup.py'],
|
|
||||||
"cd opendbc/can && python3 packer_pyx_setup.py build_ext --inplace")
|
|
||||||
|
|
||||||
# parser
|
env.Command(['packer_pyx.so', 'parser_pyx.so'],
|
||||||
env.Command(['parser_pyx.so'],
|
[libdbc, cereal, 'common_pyx_setup.py', 'packer_pyx.pyx', 'parser_pyx.pyx', 'common.pxd'],
|
||||||
[libdbc, cereal, 'parser_pyx_setup.py', 'parser_pyx.pyx', 'common.pxd'],
|
"cd opendbc/can && python3 common_pyx_setup.py build_ext --inplace")
|
||||||
"cd opendbc/can && python3 parser_pyx_setup.py build_ext --inplace")
|
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
import os
|
import os
|
||||||
import sysconfig
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sysconfig
|
||||||
import platform
|
import platform
|
||||||
from distutils.core import Extension, setup # pylint: disable=import-error,no-name-in-module
|
from distutils.core import Extension, setup # pylint: disable=import-error,no-name-in-module
|
||||||
|
|
||||||
from Cython.Build import cythonize
|
from Cython.Build import cythonize
|
||||||
from Cython.Distutils import build_ext
|
from Cython.Distutils import build_ext
|
||||||
|
|
||||||
|
|
||||||
|
ANNOTATE = os.getenv('ANNOTATE') is not None
|
||||||
BASEDIR = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../"))
|
BASEDIR = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../"))
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,10 +34,8 @@ class BuildExtWithoutPlatformSuffix(build_ext):
|
||||||
return get_ext_filename_without_platform_suffix(filename)
|
return get_ext_filename_without_platform_suffix(filename)
|
||||||
|
|
||||||
|
|
||||||
sourcefiles = ['packer_pyx.pyx']
|
|
||||||
extra_compile_args = ["-std=c++14"]
|
extra_compile_args = ["-std=c++14"]
|
||||||
ARCH = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip() # pylint: disable=unexpected-keyword-arg
|
ARCH = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip() # pylint: disable=unexpected-keyword-arg
|
||||||
|
|
||||||
if ARCH == "aarch64":
|
if ARCH == "aarch64":
|
||||||
extra_compile_args += ["-Wno-deprecated-register"]
|
extra_compile_args += ["-Wno-deprecated-register"]
|
||||||
|
|
||||||
|
@ -44,22 +44,48 @@ if platform.system() == "Darwin":
|
||||||
else:
|
else:
|
||||||
libdbc = "libdbc.so"
|
libdbc = "libdbc.so"
|
||||||
|
|
||||||
|
extra_link_args = [os.path.join(BASEDIR, 'opendbc', 'can', libdbc)]
|
||||||
|
include_dirs = [
|
||||||
|
BASEDIR,
|
||||||
|
os.path.join(BASEDIR, 'phonelibs'),
|
||||||
|
]
|
||||||
|
|
||||||
|
# Build CAN Parser
|
||||||
|
|
||||||
|
setup(name='CAN parser',
|
||||||
|
cmdclass={'build_ext': BuildExtWithoutPlatformSuffix},
|
||||||
|
ext_modules=cythonize(
|
||||||
|
Extension(
|
||||||
|
"parser_pyx",
|
||||||
|
language="c++",
|
||||||
|
sources=['parser_pyx.pyx'],
|
||||||
|
extra_compile_args=extra_compile_args,
|
||||||
|
include_dirs=include_dirs,
|
||||||
|
extra_link_args=extra_link_args,
|
||||||
|
),
|
||||||
|
annotate=ANNOTATE
|
||||||
|
),
|
||||||
|
nthreads=4,
|
||||||
|
)
|
||||||
|
|
||||||
|
if platform.system() == "Darwin":
|
||||||
|
os.system("install_name_tool -change opendbc/can/libdbc.dylib " + BASEDIR + "/opendbc/can/libdbc.dylib parser_pyx.so")
|
||||||
|
|
||||||
|
|
||||||
|
# Build CAN Packer
|
||||||
|
|
||||||
setup(name='CAN packer',
|
setup(name='CAN packer',
|
||||||
cmdclass={'build_ext': BuildExtWithoutPlatformSuffix},
|
cmdclass={'build_ext': BuildExtWithoutPlatformSuffix},
|
||||||
ext_modules=cythonize(
|
ext_modules=cythonize(
|
||||||
Extension(
|
Extension(
|
||||||
"packer_pyx",
|
"packer_pyx",
|
||||||
language="c++",
|
language="c++",
|
||||||
sources=sourcefiles,
|
sources=['packer_pyx.pyx'],
|
||||||
extra_compile_args=extra_compile_args,
|
extra_compile_args=extra_compile_args,
|
||||||
include_dirs=[
|
include_dirs=include_dirs,
|
||||||
BASEDIR,
|
extra_link_args=extra_link_args,
|
||||||
os.path.join(BASEDIR, 'phonelibs'),
|
),
|
||||||
],
|
annotate=ANNOTATE
|
||||||
extra_link_args=[
|
|
||||||
os.path.join(BASEDIR, 'opendbc', 'can', libdbc),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
),
|
),
|
||||||
nthreads=4,
|
nthreads=4,
|
||||||
)
|
)
|
|
@ -1,68 +0,0 @@
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
import sysconfig
|
|
||||||
import platform
|
|
||||||
from distutils.core import Extension, setup # pylint: disable=import-error,no-name-in-module
|
|
||||||
|
|
||||||
from Cython.Build import cythonize
|
|
||||||
from Cython.Distutils import build_ext
|
|
||||||
|
|
||||||
BASEDIR = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../"))
|
|
||||||
|
|
||||||
|
|
||||||
def get_ext_filename_without_platform_suffix(filename):
|
|
||||||
name, ext = os.path.splitext(filename)
|
|
||||||
ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')
|
|
||||||
|
|
||||||
if ext_suffix == ext:
|
|
||||||
return filename
|
|
||||||
|
|
||||||
ext_suffix = ext_suffix.replace(ext, '')
|
|
||||||
idx = name.find(ext_suffix)
|
|
||||||
|
|
||||||
if idx == -1:
|
|
||||||
return filename
|
|
||||||
else:
|
|
||||||
return name[:idx] + ext
|
|
||||||
|
|
||||||
|
|
||||||
class BuildExtWithoutPlatformSuffix(build_ext):
|
|
||||||
def get_ext_filename(self, ext_name):
|
|
||||||
filename = super().get_ext_filename(ext_name)
|
|
||||||
return get_ext_filename_without_platform_suffix(filename)
|
|
||||||
|
|
||||||
|
|
||||||
sourcefiles = ['parser_pyx.pyx']
|
|
||||||
extra_compile_args = ["-std=c++14"]
|
|
||||||
ARCH = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip() # pylint: disable=unexpected-keyword-arg
|
|
||||||
|
|
||||||
if ARCH == "aarch64":
|
|
||||||
extra_compile_args += ["-Wno-deprecated-register"]
|
|
||||||
|
|
||||||
if platform.system() == "Darwin":
|
|
||||||
libdbc = "libdbc.dylib"
|
|
||||||
else:
|
|
||||||
libdbc = "libdbc.so"
|
|
||||||
|
|
||||||
setup(name='CAN parser',
|
|
||||||
cmdclass={'build_ext': BuildExtWithoutPlatformSuffix},
|
|
||||||
ext_modules=cythonize(
|
|
||||||
Extension(
|
|
||||||
"parser_pyx",
|
|
||||||
language="c++",
|
|
||||||
sources=sourcefiles,
|
|
||||||
extra_compile_args=extra_compile_args,
|
|
||||||
include_dirs=[
|
|
||||||
BASEDIR,
|
|
||||||
os.path.join(BASEDIR, 'phonelibs'),
|
|
||||||
],
|
|
||||||
extra_link_args=[
|
|
||||||
os.path.join(BASEDIR, 'opendbc', 'can', libdbc),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
),
|
|
||||||
nthreads=4,
|
|
||||||
)
|
|
||||||
|
|
||||||
if platform.system() == "Darwin":
|
|
||||||
os.system("install_name_tool -change opendbc/can/libdbc.dylib " + BASEDIR + "/opendbc/can/libdbc.dylib parser_pyx.so")
|
|
Loading…
Reference in New Issue