From b262b7bba08043769a93e48bd418e79cbba1763c Mon Sep 17 00:00:00 2001
From: Berk Onat <b.onat@warwick.ac.uk>
Date: Tue, 24 Oct 2017 15:49:11 +0100
Subject: [PATCH] Python setup.py with CMake

---
 LICENSE                                       |  53 +++++++--
 pymolfile/molfile/.lipo                       | Bin 110974 -> 0 bytes
 .../molfile_plugins/compile/FindNetCDF.cmake  | 102 ++++++++++++++++++
 setup.py                                      |  62 ++++++++++-
 4 files changed, 205 insertions(+), 12 deletions(-)
 delete mode 100644 pymolfile/molfile/.lipo
 create mode 100644 pymolfile/molfile/molfile_plugins/compile/FindNetCDF.cmake

diff --git a/LICENSE b/LICENSE
index 470e42a..a398893 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,12 +1,19 @@
 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.
+-----------------------------------------------------------------------------
 
 
diff --git a/pymolfile/molfile/.lipo b/pymolfile/molfile/.lipo
deleted file mode 100644
index 6203b131c0616fd693c105831a2b1b23fb8fa669..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 110974
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
Kft!Ji1Tz6qj8hT-

diff --git a/pymolfile/molfile/molfile_plugins/compile/FindNetCDF.cmake b/pymolfile/molfile/molfile_plugins/compile/FindNetCDF.cmake
new file mode 100644
index 0000000..669630a
--- /dev/null
+++ b/pymolfile/molfile/molfile_plugins/compile/FindNetCDF.cmake
@@ -0,0 +1,102 @@
+# - 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)
diff --git a/setup.py b/setup.py
index c189d0f..6776f7e 100644
--- a/setup.py
+++ b/setup.py
@@ -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_compile),
+            CMakeExtension('molfile', sourcedir='pymolfile/molfile/'),
             libpymolfile_module,
         ],
         py_modules=["pymolfile"],
-- 
GitLab