Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenMesh
openmesh-python
Commits
e144448d
Commit
e144448d
authored
Jan 25, 2018
by
Alexander Dielen
Browse files
added setup.py (based on pybind11 example)
parent
1ca334e5
Changes
1
Hide whitespace changes
Inline
Side-by-side
setup.py
0 → 100644
View file @
e144448d
import
os
import
re
import
sys
import
platform
import
subprocess
from
setuptools
import
setup
,
Extension
from
setuptools.command.build_ext
import
build_ext
from
distutils.version
import
LooseVersion
class
CMakeExtension
(
Extension
):
def
__init__
(
self
,
name
,
sourcedir
=
''
):
Extension
.
__init__
(
self
,
name
,
sources
=
[])
self
.
sourcedir
=
os
.
path
.
abspath
(
sourcedir
)
class
CMakeBuild
(
build_ext
):
def
run
(
self
):
try
:
out
=
subprocess
.
check_output
([
'cmake'
,
'--version'
])
except
OSError
:
raise
RuntimeError
(
"CMake must be installed to build the following extensions: "
+
", "
.
join
(
e
.
name
for
e
in
self
.
extensions
))
if
platform
.
system
()
==
"Windows"
:
cmake_version
=
LooseVersion
(
re
.
search
(
r
'version\s*([\d.]+)'
,
out
.
decode
()).
group
(
1
))
if
cmake_version
<
'3.1.0'
:
raise
RuntimeError
(
"CMake >= 3.1.0 is required on Windows"
)
for
ext
in
self
.
extensions
:
self
.
build_extension
(
ext
)
def
build_extension
(
self
,
ext
):
extdir
=
os
.
path
.
abspath
(
os
.
path
.
dirname
(
self
.
get_ext_fullpath
(
ext
.
name
)))
cmake_args
=
[
'-DCMAKE_LIBRARY_OUTPUT_DIRECTORY='
+
extdir
,
'-DPYTHON_EXECUTABLE='
+
sys
.
executable
]
cfg
=
'Debug'
if
self
.
debug
else
'Release'
build_args
=
[
'--config'
,
cfg
]
if
platform
.
system
()
==
"Windows"
:
cmake_args
+=
[
'-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{}={}'
.
format
(
cfg
.
upper
(),
extdir
)]
if
sys
.
maxsize
>
2
**
32
:
cmake_args
+=
[
'-A'
,
'x64'
]
build_args
+=
[
'--'
,
'/m'
]
else
:
cmake_args
+=
[
'-DCMAKE_BUILD_TYPE='
+
cfg
]
build_args
+=
[
'--'
,
'-j2'
]
env
=
os
.
environ
.
copy
()
env
[
'CXXFLAGS'
]
=
'{} -DVERSION_INFO=
\\
"{}
\\
"'
.
format
(
env
.
get
(
'CXXFLAGS'
,
''
),
self
.
distribution
.
get_version
())
if
not
os
.
path
.
exists
(
self
.
build_temp
):
os
.
makedirs
(
self
.
build_temp
)
subprocess
.
check_call
([
'cmake'
,
ext
.
sourcedir
]
+
cmake_args
,
cwd
=
self
.
build_temp
,
env
=
env
)
subprocess
.
check_call
([
'cmake'
,
'--build'
,
'.'
]
+
build_args
,
cwd
=
self
.
build_temp
)
setup
(
name
=
'openmesh'
,
version
=
'0.0.1'
,
author
=
''
,
author_email
=
''
,
description
=
'Python bindings for OpenMesh.'
,
long_description
=
'OpenMesh is a generic and efficient data structure for representing and manipulating polygonal meshes.'
,
ext_modules
=
[
CMakeExtension
(
'openmesh'
)],
cmdclass
=
dict
(
build_ext
=
CMakeBuild
),
zip_safe
=
False
,
setup_requires
=
[
'numpy'
],
install_requires
=
[
'numpy'
],
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment