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
nomad-lab
pymolfile
Commits
b262b7bb
Commit
b262b7bb
authored
Oct 24, 2017
by
Berk Onat
Browse files
Python setup.py with CMake
parent
1be60c10
Changes
4
Hide whitespace changes
Inline
Side-by-side
LICENSE
View file @
b262b7bb
LICENSE for pymolfile
---------------------
All files of pymolfile except the files under vmd_molfile_plugins directory
which are licensed below with "LICENSE for VMD molfile_plugins" are
licensed under the following UIUC Open Source License:
Exceptions for pymolfile LICENSE:
---------------------------------
- FindNetCDF.cmake is LICENSE with BSD-2 Clause (See section 'LICENSE for
FindNetCDF.cmake file' in the file and below)
- VMD molfile_plugins under molfile_plugins directory are licensed with
UIUC Open Source Licence (See section 'LICENSE for VMD molfile_plugins'
in this file)
All files of pymolfile except the files listed above are licensed with
UIUC Open Source License at section 'LICENSE for Pymolfile' in this file
LICENSE for Pymolfile:
-----------------------------------------------------------------------------
University of Illinois Open Source License
Copyright 2017 University of Warwick
All rights reserved.
...
...
@@ -41,12 +48,11 @@ THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS WITH THE SOFTWARE.
-----------------------------------------------------------------------------
LICENSE for VMD molfile_plugins
-------------------------------
LICENSE for VMD molfile_plugins:
-----------------------------------------------------------------------------
University of Illinois Open Source License
Copyright 2006 Theoretical and Computational Biophysics Group,
All rights reserved.
...
...
@@ -81,5 +87,34 @@ THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS WITH THE SOFTWARE.
-----------------------------------------------------------------------------
LICENSE for FindNetCDF.cmake file:
-----------------------------------------------------------------------------
Copyright Jed Brown
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-----------------------------------------------------------------------------
pymolfile/molfile/.lipo
deleted
100644 → 0
View file @
1be60c10
File deleted
pymolfile/molfile/molfile_plugins/compile/FindNetCDF.cmake
0 → 100644
View file @
b262b7bb
# - Find NetCDF
# Find the native NetCDF includes and library
#
# NETCDF_INCLUDES - where to find netcdf.h, etc
# NETCDF_LIBRARIES - Link these libraries when using NetCDF
# NETCDF_FOUND - True if NetCDF found including required interfaces (see below)
#
# Your package can require certain interfaces to be FOUND by setting these
#
# NETCDF_CXX - require the C++ interface and link the C++ library
# NETCDF_F77 - require the F77 interface and link the fortran library
# NETCDF_F90 - require the F90 interface and link the fortran library
#
# The following are not for general use and are included in
# NETCDF_LIBRARIES if the corresponding option above is set.
#
# NETCDF_LIBRARIES_C - Just the C interface
# NETCDF_LIBRARIES_CXX - C++ interface, if available
# NETCDF_LIBRARIES_F77 - Fortran 77 interface, if available
# NETCDF_LIBRARIES_F90 - Fortran 90 interface, if available
#
# Normal usage would be:
# set (NETCDF_F90 "YES")
# find_package (NetCDF REQUIRED)
# target_link_libraries (uses_f90_interface ${NETCDF_LIBRARIES})
# target_link_libraries (only_uses_c_interface ${NETCDF_LIBRARIES_C})
# Taken from: https://github.com/jedbrown/cmake-modules/blob/master/FindNetCDF.cmake
#
# Below copyright author list is gathered using
# "git shortlog -s FindNetCDF.cmake"
# at Oct 24th, 2017
#
#Copyright Jed Brown
#All rights reserved.
#
#Redistribution and use in source and binary forms, with or without modification,
#are permitted provided that the following conditions are met:
#
#* Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
#* Redistributions in binary form must reproduce the above copyright notice, this
# list of conditions and the following disclaimer in the documentation and/or
# other materials provided with the distribution.
#
#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
#ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
#WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
#DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
#ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
#(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
#LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
#ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
#SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
if
(
NETCDF_INCLUDES AND NETCDF_LIBRARIES
)
# Already in cache, be silent
set
(
NETCDF_FIND_QUIETLY TRUE
)
endif
(
NETCDF_INCLUDES AND NETCDF_LIBRARIES
)
find_path
(
NETCDF_INCLUDES netcdf.h
HINTS NETCDF_DIR ENV NETCDF_DIR
)
find_library
(
NETCDF_LIBRARIES_C NAMES netcdf
)
mark_as_advanced
(
NETCDF_LIBRARIES_C
)
set
(
NetCDF_has_interfaces
"YES"
)
# will be set to NO if we're missing any interfaces
set
(
NetCDF_libs
"
${
NETCDF_LIBRARIES_C
}
"
)
get_filename_component
(
NetCDF_lib_dirs
"
${
NETCDF_LIBRARIES_C
}
"
PATH
)
macro
(
NetCDF_check_interface lang header libs
)
if
(
NETCDF_
${
lang
}
)
find_path
(
NETCDF_INCLUDES_
${
lang
}
NAMES
${
header
}
HINTS
"
${
NETCDF_INCLUDES
}
"
NO_DEFAULT_PATH
)
find_library
(
NETCDF_LIBRARIES_
${
lang
}
NAMES
${
libs
}
HINTS
"
${
NetCDF_lib_dirs
}
"
NO_DEFAULT_PATH
)
mark_as_advanced
(
NETCDF_INCLUDES_
${
lang
}
NETCDF_LIBRARIES_
${
lang
}
)
if
(
NETCDF_INCLUDES_
${
lang
}
AND NETCDF_LIBRARIES_
${
lang
}
)
list
(
INSERT NetCDF_libs 0
${
NETCDF_LIBRARIES_
${
lang
}}
)
# prepend so that -lnetcdf is last
else
(
NETCDF_INCLUDES_
${
lang
}
AND NETCDF_LIBRARIES_
${
lang
}
)
set
(
NetCDF_has_interfaces
"NO"
)
message
(
STATUS
"Failed to find NetCDF interface for
${
lang
}
"
)
endif
(
NETCDF_INCLUDES_
${
lang
}
AND NETCDF_LIBRARIES_
${
lang
}
)
endif
(
NETCDF_
${
lang
}
)
endmacro
(
NetCDF_check_interface
)
NetCDF_check_interface
(
CXX netcdfcpp.h netcdf_c++
)
NetCDF_check_interface
(
F77 netcdf.inc netcdff
)
NetCDF_check_interface
(
F90 netcdf.mod netcdff
)
set
(
NETCDF_LIBRARIES
"
${
NetCDF_libs
}
"
CACHE STRING
"All NetCDF libraries required for interface level"
)
# handle the QUIETLY and REQUIRED arguments and set NETCDF_FOUND to TRUE if
# all listed variables are TRUE
include
(
FindPackageHandleStandardArgs
)
find_package_handle_standard_args
(
NetCDF DEFAULT_MSG NETCDF_LIBRARIES NETCDF_INCLUDES NetCDF_has_interfaces
)
mark_as_advanced
(
NETCDF_LIBRARIES NETCDF_INCLUDES
)
setup.py
View file @
b262b7bb
...
...
@@ -14,6 +14,62 @@ except:
from
Cython.Build
import
cythonize
from
Cython.Distutils
import
build_ext
# from http://www.benjack.io/2017/06/12/python-cpp-tests.html
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
)
print
()
# Add an empty line for cleaner output
def
get_ext_filename_without_platform_suffix
(
filename
):
name
,
ext
=
os
.
path
.
splitext
(
filename
)
ext_suffix
=
sysconfig
.
get_config_var
(
'EXT_SUFFIX'
)
...
...
@@ -41,8 +97,8 @@ CLASSIFIERS = [
"Intended Audience :: Developers"
,
"License :: OSI Approved :: University of Illinois Open Source License (UIUC)"
,
"Programming Language :: C"
,
"Programming Language :: C++"
,
"Programming Language :: Python"
,
"Programming Language :: Python :: 2"
,
"Programming Language :: Python :: 3"
,
"Topic :: Scientific/Engineering :: Physics"
,
"Topic :: Scientific/Engineering :: Chemistry"
,
...
...
@@ -157,7 +213,7 @@ if __name__ == '__main__':
# command_extension={'build_ext': BuildExtWithoutPlatformSuffix}
#else:
# command_extension={}
command_extension
=
{}
command_extension
=
dict
(
build_ext
=
CMakeBuild
)
setup
(
name
=
"pymolfile"
,
...
...
@@ -172,7 +228,7 @@ if __name__ == '__main__':
packages
=
find_packages
(),
cmdclass
=
command_extension
,
ext_modules
=
[
#libmolfile_plugin_compile(cmake_libmolfile_plugin_comp
ile),
CMakeExtension
(
'molfile'
,
sourcedir
=
'pymolfile/molf
ile
/'
),
libpymolfile_module
,
],
py_modules
=
[
"pymolfile"
],
...
...
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