Skip to content
Snippets Groups Projects
Commit c6feda88 authored by Berk Onat's avatar Berk Onat
Browse files

Added cmake installer for linmolfile+plugins.a

parent d397d505
No related branches found
No related tags found
No related merge requests found
Showing
with 2218 additions and 207 deletions
from __future__ import absolute_import
import warnings
try:
from .molfile import libpymolfile
except ImportError:
warnings.warn("libpymolfile package not available, pymolfile does not work without its library!")
from . import plugin_list
from . import pymolfile
__all__ = [ "pymolfile" ]
from .pymolfile import OpenMolfile, list_plugins
# Stand-alone python bindings for libpymolfile
# Copyright (c) 2017 Berk Onat <b.onat@warwick.ac.uk>
# Published under the UIUC OpenSource LICENSE
"""libpymolfile library.
"""
File added
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.12
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.
"""
:Author: Berk Onat <b.onat@warwick.ac.uk>
:Year: 2017
:Licence: UIUC LICENSE
"""
from sys import version_info as _swig_python_version_info
if _swig_python_version_info >= (2, 7, 0):
def swig_import_helper():
import importlib
pkg = __name__.rpartition('.')[0]
mname = '.'.join((pkg, '_libpymolfile')).lstrip('.')
try:
return importlib.import_module(mname)
except ImportError:
return importlib.import_module('_libpymolfile')
_libpymolfile = swig_import_helper()
del swig_import_helper
elif _swig_python_version_info >= (2, 6, 0):
def swig_import_helper():
from os.path import dirname
import imp
fp = None
try:
fp, pathname, description = imp.find_module('_libpymolfile', [dirname(__file__)])
except ImportError:
import _libpymolfile
return _libpymolfile
try:
_mod = imp.load_module('_libpymolfile', fp, pathname, description)
finally:
if fp is not None:
fp.close()
return _mod
_libpymolfile = swig_import_helper()
del swig_import_helper
else:
import _libpymolfile
del _swig_python_version_info
try:
_swig_property = property
except NameError:
pass # Python < 2.2 doesn't have 'property'.
try:
import builtins as __builtin__
except ImportError:
import __builtin__
def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
if (name == "thisown"):
return self.this.own(value)
if (name == "this"):
if type(value).__name__ == 'SwigPyObject':
self.__dict__[name] = value
return
method = class_type.__swig_setmethods__.get(name, None)
if method:
return method(self, value)
if (not static):
if _newclass:
object.__setattr__(self, name, value)
else:
self.__dict__[name] = value
else:
raise AttributeError("You cannot add attributes to %s" % self)
def _swig_setattr(self, class_type, name, value):
return _swig_setattr_nondynamic(self, class_type, name, value, 0)
def _swig_getattr(self, class_type, name):
if (name == "thisown"):
return self.this.own()
method = class_type.__swig_getmethods__.get(name, None)
if method:
return method(self)
raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))
def _swig_repr(self):
try:
strthis = "proxy of " + self.this.__repr__()
except __builtin__.Exception:
strthis = ""
return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
try:
_object = object
_newclass = 1
except __builtin__.Exception:
class _object:
pass
_newclass = 0
def molfile_plugin_list(maxsize: 'int') -> "PyObject *":
"""molfile_plugin_list(maxsize) -> PyObject *"""
return _libpymolfile.molfile_plugin_list(maxsize)
def molfile_init() -> "int":
"""molfile_init() -> int"""
return _libpymolfile.molfile_init()
def molfile_finish() -> "int":
"""molfile_finish() -> int"""
return _libpymolfile.molfile_finish()
def get_plugin(molcapsule: 'PyObject *', plug_no: 'int') -> "PyObject *":
"""get_plugin(molcapsule, plug_no) -> PyObject *"""
return _libpymolfile.get_plugin(molcapsule, plug_no)
def molfile_plugin_info(molcapsule: 'PyObject *', plugin_no: 'int') -> "PyObject *":
"""molfile_plugin_info(molcapsule, plugin_no) -> PyObject *"""
return _libpymolfile.molfile_plugin_info(molcapsule, plugin_no)
def open_file_read(molcapsule: 'PyObject *', fname: 'char *', ftype: 'char *', natoms: 'int') -> "PyObject *":
"""open_file_read(molcapsule, fname, ftype, natoms) -> PyObject *"""
return _libpymolfile.open_file_read(molcapsule, fname, ftype, natoms)
def close_file_read(molpack: 'PyObject *') -> "PyObject *":
"""close_file_read(molpack) -> PyObject *"""
return _libpymolfile.close_file_read(molpack)
def read_fill_structure(molpack: 'PyObject *', prototype: 'PyObject *') -> "PyObject *":
"""read_fill_structure(molpack, prototype) -> PyObject *"""
return _libpymolfile.read_fill_structure(molpack, prototype)
def read_fill_bonds(molpack: 'PyObject *') -> "PyObject *":
"""read_fill_bonds(molpack) -> PyObject *"""
return _libpymolfile.read_fill_bonds(molpack)
def read_fill_angles(molpack: 'PyObject *') -> "PyObject *":
"""read_fill_angles(molpack) -> PyObject *"""
return _libpymolfile.read_fill_angles(molpack)
def read_fill_next_timestep(molpack: 'PyObject *') -> "PyObject *":
"""read_fill_next_timestep(molpack) -> PyObject *"""
return _libpymolfile.read_fill_next_timestep(molpack)
def are_plugins_same(molpack_a: 'PyObject *', molpack_b: 'PyObject *') -> "PyObject *":
"""are_plugins_same(molpack_a, molpack_b) -> PyObject *"""
return _libpymolfile.are_plugins_same(molpack_a, molpack_b)
def are_filehandles_same(molpack_a: 'PyObject *', molpack_b: 'PyObject *') -> "PyObject *":
"""are_filehandles_same(molpack_a, molpack_b) -> PyObject *"""
return _libpymolfile.are_filehandles_same(molpack_a, molpack_b)
# This file is compatible with both classic and new-style classes.
import warnings
import sys
from .molfile import libpymolfile
try:
from .molfile import libpymolfile
except ImportError:
warnings.warn("libpymolfile package not available, pymolfile does not work without its library!")
MAX_NUM_PLUGINS = 200
C_MOLFILE_PLUGINS = libpymolfile.molfile_plugin_list(MAX_NUM_PLUGINS)
def byte_str_decode(data, dectype=None):
try:
return data.decode(dectype).replace('\x00', '')
except AttributeError:
return data
def plugins():
""" Information on the available molfile plugins
Example tuple: ('psf', 'psf', 1, 1, 1, 0, 1, 1, 1, 0,
'CHARMM,NAMD,XPLOR PSF', 'mol file reader',
'Justin Gullingsrud, John Stone', 1, 9, 17, 1)
The fields in the tuple represent info in ordered as follows:
1: format extension
2: format name
3: read_structure is avaliable if 1
4: read_bonds is avaliable if 1
5: read_angles is avaliable if 1
6: read_next_timestep is avaliable if 1
7: write_structure is avaliable if 1
8: write_bonds is avaliable if 1
9: write_angles is avaliable if 1
10: write_timestep is avaliable if 1
11: long name of the plugin
12: type of plugin
13: authors of the plugin
14: major version of the plugin
15: minor version of the plugin
16: ABI version of the plugin
17: 1 if is reentrant (returns is_reentrant)
Returns: A list of tuples that includes the information and
capabilities of each molfile plugin. The information is
extracted from molfile_plugin_t.
"""
global C_MOLFILE_PLUGINS
numlist = libpymolfile.molfile_init()
if sys.version_info > (3,):
basestring = str
plugins_list = [
[byte_str_decode(item,
dectype="unicode_escape") for item in libpymolfile.molfile_plugin_info(
C_MOLFILE_PLUGINS, i)
] for i in range(numlist)
]
libpymolfile.molfile_finish()
return plugins_list
MOLFILE_PLUGINS = plugins()
This diff is collapsed.
import numpy
import molfile.libpymolfile as pym
mylist = pym.molfile_plugin_list(200)
print(mylist)
numlist = pym.molfile_init()
print(numlist)
for i in range(numlist):
testplugin = pym.molfile_plugin_info(mylist, i)
print(i, testplugin)
#splugin = pym.get_plugin(mylist, 99) #pdb
#cplugin = pym.get_plugin(mylist, 83) #trr
#cplugin = pym.get_plugin(mylist, 85) #xtc
splugin = pym.get_plugin(mylist, 105) #psf
#splugin = pym.get_plugin(mylist, 81) #gro
cplugin = pym.get_plugin(mylist, 69) #dcd
#cplugin = pym.get_plugin(mylist, 126) #nc
print(splugin)
print(cplugin)
natoms=0
#sfname="../test/DPDP.pdb"
#cfname="../test/DPDP.nc"
#sfname="../test/ala3.pdb"
sfname="../test/ala3.psf"
cfname="../test/ala3.dcd"
#sfname="../test/md.gro"
#cfname="../test/md.trr"
#cfname="../test/md.xtc"
#sfname="../test/md_1u19.gro"
#cfname="../test/md_1u19.xtc"
#sftype="pdb"
#cftype="trr"
#cftype="xtc"
sftype="psf"
#sftype="gro"
cftype="dcd"
#cftype="nc"
print("Structure plugin:")
spluginhandle = pym.open_file_read(splugin, sfname, sftype, natoms)
print("Coordinate plugin:")
cpluginhandle = pym.open_file_read(cplugin, cfname, cftype, natoms)
print(cpluginhandle)
print(cpluginhandle.natoms)
print(spluginhandle)
print(spluginhandle.natoms)
if cpluginhandle.natoms != spluginhandle.natoms:
print("Number of atoms do not match in structure and coordinate files.")
if pym.is_plugin_same(spluginhandle, cpluginhandle):
pym.close_file_read(cpluginhandle)
cpluginhandle = spluginhandle
#if 0 && vmdplugin_ABIVERSION > 17
# /* The new PDB file formats allows for much larger structures, */
# /* which can therefore require longer chain ID strings. The */
# /* new PDBx/mmCIF file formats do not have length limits on */
# /* fields, so PDB chains could be arbitrarily long strings */
# /* in such files. At present, we know we need at least 3-char */
# /* chains for existing PDBx/mmCIF files. */
# char chain[4]; /**< required chain name, or "" */
#else
# char chain[2]; /**< required chain name, or "" */
#endif
# Change 'chain', 'S4' to S2 for PDB
if 'pdb' in [sftype, cftype]:
print("file chain is set to S2")
chain_size = 'S2'
else:
chain_size = 'S4'
x = numpy.array([
('C1','C','ACE',0,'','','','',1.0,1.0,1.0,1.0,1.0,6),
('C2','C','ACE',0,'','','','',1.0,1.0,1.0,1.0,1.0,6)
],
dtype=[
('name', 'S16'), ('type', 'S16'), ('resname', 'S8'),
('resid', 'i4'), ('segid', 'S8'), ('chain', chain_size),
('altloc', 'S2'), ('insertion', 'S2'), ('occupancy', 'f4'),
('bfactor', 'f4'), ('mass', 'f4'), ('charge', 'f4'),
('radius', 'f4'), ('atomicnumber', 'i4')
]
)
y = pym.read_fill_structure(spluginhandle, x)
if y is not None:
print(y)
print(len(y))
try:
z = pym.read_fill_bonds(spluginhandle)
if z is not None:
print(z)
print(len(z))
except (AttributeError, SystemError):
pass
try:
a = pym.read_fill_angles(spluginhandle)
if a is not None:
print(a)
print(len(a))
except (AttributeError, SystemError):
pass
if pym.is_plugin_same(spluginhandle, cpluginhandle):
pass
else:
pym.close_file_read(spluginhandle)
step=0
while True:
#while False:
try:
c = pym.read_fill_next_timestep(cpluginhandle)
if c is None:
break
step=step+1
print("Step:",step)
print(c)
if c["coords"] is not None:
print(len(c["coords"]))
except (AttributeError,OSError):
pass
pym.close_file_read(cpluginhandle)
pym.molfile_finish()
File added
File added
cmake_minimum_required(VERSION 2.8.12)
project(TNGBuilder)
include(ExternalProject)
set(TNG_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/tng")
set(TNG_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/tng")
set(TNG_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TNG_INSTALL_DIR})
message("TNG_PREFIX='${TNG_PREFIX}'")
message("TNG_INSTALL_DIR='${TNG_INSTALL_DIR}'")
message("TNG_CMAKE_ARGS='${TNG_CMAKE_ARGS}'")
message("GIT_EXECUTABLE='${GIT_EXECUTABLE}'")
ExternalProject_Add(tng
PREFIX ${TNG_PREFIX}
GIT_REPOSITORY https://github.com/gromacs/tng.git
INSTALL_DIR ${TNG_INSTALL_DIR}
CMAKE_ARGS ${TNG_CMAKE_ARGS}
)
/* Hey emacs this is -*- C -*- and this is my editor vim.
*
* molfile.c : C and Fortran interfaces for molfile_plugins
* Copyright (c) Berk Onat <b.onat@warwick.ac.uk> 2017
*
* This program is under BSD LICENSE
*/
/*
* The code is written following the plugin test
* context of f77_molfile.c by Axel Kohlmeyer and
* in molfile_plugin/src/f77 and catdcd.c by
* Justin Gullingsrud of VMD plugins.
*/
#ifndef _MOLFILE_H_
#define _MOLFILE_H_
#ifdef __cplusplus
extern "C"
{
#endif
#include "molfile_plugin.h"
#include "libmolfile_plugin.h"
#include "vmdplugin.h"
#include "Python.h"
#include "structmember.h"
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
#include <numpy/arrayobject.h>
enum { pluginOK, pluginNOINIT, pluginCLOSE, pluginNOMEM,
pluginENDOFFILE, pluginFILENOTFOUND, pluginFORMATERROR };
#ifndef MAXPLUGINS
#define MAXPLUGINS 200
#endif
struct MolObject {
PyObject_HEAD
molfile_plugin_t* plugin;
void* file_handle;
int natoms;
MolObject(void) {}
};
static void MolObject_dealloc(MolObject* self)
{
Py_XDECREF(self->plugin);
Py_XDECREF(self->file_handle);
Py_TYPE(self)->tp_free((PyObject*)self);
}
static PyObject * MolObject_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
MolObject *self;
self = (MolObject *)type->tp_alloc(type, 0);
if (self != NULL) {
self->plugin = NULL;
self->file_handle = NULL;
self->natoms = 0;
}
return (PyObject *)self;
}
static int MolObject_init(MolObject *self, PyObject *args, PyObject *kwds)
{
molfile_plugin_t *plugin = NULL;
void *file_handle = NULL;
molfile_plugin_t *tmp1 = NULL;
void *tmp2 = NULL;
static char *kwlist[] = {"plugin", "file_handle", "natoms", NULL};
if (! PyArg_ParseTupleAndKeywords(args, kwds, "|OOi", kwlist,
&plugin, &file_handle,
&self->natoms))
return -1;
if (plugin) {
tmp1 = self->plugin;
Py_INCREF(plugin);
self->plugin = plugin;
Py_XDECREF(tmp1);
}
if (file_handle) {
tmp2 = self->file_handle;
Py_INCREF(file_handle);
self->file_handle = file_handle;
Py_XDECREF(tmp2);
}
return 0;
}
static molfile_plugin_t* MolObject_plugin(MolObject* self)
{
return self->plugin;
}
static void* MolObject_file_handle(MolObject* self)
{
return self->file_handle;
}
static PyObject* MolObject_natoms(MolObject* self)
{
return PyLong_FromLong((long)self->natoms);
}
static PyMemberDef MolObject_members[] = {
{"plugin", T_OBJECT_EX, offsetof(MolObject, plugin), 0,
"molfile_plugin_t type plugin"},
{"file_handle", T_OBJECT_EX, offsetof(MolObject, file_handle), 0,
"file handle for plugin"},
{"natoms", T_INT, offsetof(MolObject, natoms), 0,
"number of atoms"},
{NULL, 0, 0, 0, NULL} /* Sentinel */
};
static PyMethodDef MolObject_methods[] = {
{"get_plugin", (PyCFunction)MolObject_plugin, METH_NOARGS,
"Return the plugin"
},
{"get_file_handle", (PyCFunction)MolObject_file_handle, METH_NOARGS,
"Return the plugin"
},
{"get_natoms", (PyCFunction)MolObject_natoms, METH_NOARGS,
"Return the number of atoms"
},
{NULL, 0, 0, NULL} /* Sentinel */
};
#ifndef PyVarObject_HEAD_INIT
#define PyVarObject_HEAD_INIT(type, size) \
PyObject_HEAD_INIT(type) size,
#endif
static PyTypeObject MolObjectType = {
PyVarObject_HEAD_INIT(NULL, 0)
"molobject", /*tp_name*/
sizeof(MolObject), /*tp_basicsize*/
0, /*tp_itemsize*/
(destructor)MolObject_dealloc, /*tp_dealloc*/
0, /*tp_print*/
0, /*tp_getattr*/
0, /*tp_setattr*/
0, /*tp_reserved*/
0, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/
0, /*tp_as_mapping*/
0, /*tp_hash */
0, /*tp_call*/
0, /*tp_str*/
0, /*tp_getattro*/
0, /*tp_setattro*/
0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT |
Py_TPFLAGS_BASETYPE, /* tp_flags */
"molobject objects", /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
MolObject_methods, /* tp_methods */
MolObject_members, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)MolObject_init, /* tp_init */
0, /* tp_alloc */
MolObject_new, /* tp_new */
};
PyObject * read_fill_structure(PyObject* molpack, PyObject* prototype);
PyObject * read_fill_bonds(PyObject* molpack);
PyObject * read_fill_angles(PyObject* molpack);
PyObject * read_fill_next_timestep(PyObject* molpack);
PyObject * is_plugin_same(PyObject* molpack_a, PyObject* molpack_b);
PyObject * is_filehandle_same(PyObject* molpack_a, PyObject* molpack_b);
molfile_plugin_t* get_plugin(molfile_plugin_t** plug_list, int plug_no);
molfile_plugin_t** molfile_plugin_list(int maxsize);
int molfile_init(void);
int molfile_finish(void);
#ifdef __cplusplus
}
#endif
#endif /* _MOLFILE_H_ */
cmake_minimum_required(VERSION 2.8.12)
#find_package (EXPAT)
#find_package (NetCDF)
project(myexecutable)
# Set source directory
#set(SOURCE_DIR "molfile")
# Tell CMake that headers are also in SOURCE_DIR
#include_directories(${SOURCE_DIR} "${SOURCE_DIR}/vmd_molfile_plugin/molfile_plugin/include" "${SOURCE_DIR}/vmd_molfile_plugin/molfile_plugin/lib")
#set(SOURCES "${SOURCE_DIR}/libpymolfile_wrap.cxx" "${SOURCE_DIR}/pymolfile.c" "${SOURCE_DIR}/lib/libmolfile_plugin.a")
set(TARGET_ARCH_REGEX "^.*-march[= ]([^ ]+).*$")
string(REGEX MATCH "${TARGET_ARCH_REGEX}" TARGET_ARCH_MATCH "${CMAKE_C_FLAGS}" "${CMAKE_CXX_FLAGS}")
if (TARGET_ARCH_MATCH)
string(REGEX REPLACE "${TARGET_ARCH_REGEX}" "\\1" TARGET_ARCH "${CMAKE_C_FLAGS}" "${CMAKE_CXX_FLAGS}")
else()
set(TARGET_ARCH ${CMAKE_HOST_SYSTEM_PROCESSOR})
endif()
message(TARGET_ARCH= ${TARGET_ARCH})
message(OSX= ${OSX_ARCHITECTURES})
message(OSX= ${CMAKE_OSX_ARCHITECTURES})
message(SYS_VER= ${CMAKE_SYSTEM_VERSION})
message(SYS_NAME= ${CMAKE_SYSTEM_NAME})
message(SYS_PROC= ${CMAKE_SYSTEM_PROCESSOR})
message(SYS= ${CMAKE_SYSTEM})
message(TARGET_ARCH_REGEX= ${TARGET_ARCH_REGEX})
message(TARGET_ARCH_MATCH= ${TARGET_ARCH_MATCH})
add_custom_command(
OUTPUT vmd_molfile_plugins/compile/lib_MACOSXX86_64GCC/molfile/libmolfile_plugins.a
COMMAND make MACOSXX86_64GCCTNG
WORKING_DIRECTORY vmd_molfile_plugins
)
add_custom_target(
libmolfile_plugins.a
COMMAND make MACOSXX86_64GCCTNG
WORKING_DIRECTORY vmd_molfile_plugins
)
#add_executable(myexecutable myexcutable.c)
#target_link_libraries(myexecutable vmd_molfile_plugins/compile/lib_MACOSXX86_64GCCTNG/molfile/libmolfile_plugins.a)
#add_dependencies(myexecutable extern_lib)
cmake_minimum_required(VERSION 2.8.12)
project(molfileplugins)
find_package(EXPAT)
find_package(NetCDF)
find_package(TCL)
set(TARGET_ARCH_REGEX "^.*-march[= ]([^ ]+).*$")
string(REGEX MATCH "${TARGET_ARCH_REGEX}" TARGET_ARCH_MATCH "${CMAKE_C_FLAGS}" "${CMAKE_CXX_FLAGS}")
if (TARGET_ARCH_MATCH)
string(REGEX REPLACE "${TARGET_ARCH_REGEX}" "\\1" TARGET_ARCH "${CMAKE_C_FLAGS}" "${CMAKE_CXX_FLAGS}")
else()
set(TARGET_ARCH ${CMAKE_HOST_SYSTEM_PROCESSOR})
endif()
message(TARGET_ARCH= ${TARGET_ARCH})
message(SYS_VER= ${CMAKE_SYSTEM_VERSION})
message(SYS_NAME= ${CMAKE_SYSTEM_NAME})
message(SYS_PROC= ${CMAKE_SYSTEM_PROCESSOR})
message(SYS= ${CMAKE_SYSTEM})
if(TARGET_ARCH MATCHES "^.*64.*$")
set(ARCH64BIT TRUE)
endif()
set(LIB_MOLFILE_FILES
"${CMAKE_CURRENT_BINARY_DIR}/lib/libmolfile_plugins.a"
"${CMAKE_CURRENT_BINARY_DIR}/lib/libmolfile_plugins.h")
if(UNIX AND NOT APPLE)
set(LINUX TRUE)
endif()
if(WIN32)
if(MSVS OR MSYS)
set(WINCOMP TRUE)
endif()
endif()
if(LINUX)
if(CMAKE_CXX_COMPILER_ID MATCHES "^.*GNU.*$")
if(ARCH64BIT)
set(TARGET_COPT "-fPIC" "-m64" "-o")
set(TARGET_LOPT "-fPIC" "-m64" "-lstdc++" "-o")
set(TARGET_CFLAGS "-m64" "-O2" "-fPIC" "-Wall" "${CMAKE_C_FLAGS}")
set(TARGET_CXXFLG "-m64" "-O2" "-fPIC" "-Wall" "${CMAKE_CXX_FLAGS}")
else()
set(TARGET_COPT "-fPIC" "-m32" "-o")
set(TARGET_LOPT "-fPIC" "-m32" "-lstdc++" "-o")
set(TARGET_CFLAGS "-m32" "-O2" "-fPIC" "-Wall" "${CMAKE_C_FLAGS}")
set(TARGET_CXXFLG "-m32" "-O2" "-fPIC" "-Wall" "${CMAKE_CXX_FLAGS}")
endif()
else()
set(TARGET_COPT "-o ")
set(TARGET_LOPT "-o ")
set(TARGET_CFLAGS "-O2 -Wall " "${CMAKE_C_FLAGS}")
set(TARGET_CXXFLG "-O2 -Wall " "${CMAKE_CXX_FLAGS}")
endif()
endif()
if(APPLE)
if(CMAKE_CXX_COMPILER_ID MATCHES "^.*GNU.*$"
OR CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$")
if(ARCH64BIT)
set(TARGET_COPT " -fPIC -m64 -o ")
set(TARGET_LOPT " -fPIC -m64 -o ")
set(TARGET_CFLAGS " -m64 -Os -Wall -fPIC -dynamic " "${CMAKE_C_FLAGS}")
set(TARGET_CXXFLG " -m64 -Os -Wall -fPIC -dynamic " "${CMAKE_CXX_FLAGS}")
else()
set(TARGET_COPT " -fPIC -m32 -o ")
set(TARGET_LOPT " -fPIC -m32 -o ")
set(TARGET_CFLAGS " -m32 -Os -Wall -fPIC -dynamic " "${CMAKE_C_FLAGS}")
set(TARGET_CXXFLG " -m32 -Os -Wall -fPIC -dynamic " "${CMAKE_CXX_FLAGS}")
endif()
else()
set(TARGET_COPT " -o ")
set(TARGET_LOPT " -o ")
set(TARGET_CFLAGS " -O2 -Wall " "${CMAKE_C_FLAGS}")
set(TARGET_CXXFLG " -O2 -Wall " "${CMAKE_CXX_FLAGS}")
endif()
endif()
if(UNIX)
set(TARGET_DEF "-D")
set(TARGET_SHLD "${CMAKE_CXX_COMPILER}" "${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS}")
set(TARGET_LIBTOOL "libtool -dynamic")
set(TARGET_AR "${CMAKE_AR}")
set(TARGET_NM "${CMAKE_NM} -p")
set(TARGET_RANLIB "${CMAKE_RANLIB}")
set(TARGET_MOL_LIBS "")
if(TCL_FOUND)
set(TCLLDFLAGS "-l${TCL_LIBRARY}")
set(TCLINC "-I${TCL_INCLUDE_PATH}")
set(TCLLIB "-I${TCL_INCLUDE_PATH}")
set(TARGET_MOL_LIBS "${TARGET_MOL_LIBS}" "TCLLDFLAGS = ${TCLLDFLAGS}" "TCLINC = ${TCLINC}" "TCLLIB = ${TCLLIB}")
endif()
if(EXPAT_FOUND)
set(EXPATLDFLAGS "${EXPAT_LIBRARIES}")
set(EXPATINC "-I${EXPAT_INCLUDE_DIRS}")
set(EXPATLIB "-I${EXPAT_INCLUDE_DIRS}")
set(TARGET_MOL_LIBS "${TARGET_MOL_LIBS}" "EXPATLDFLAGS = ${EXPATLDFLAGS}" "EXPATINC = ${EXPATINC}" "EXPATLIB = ${EXPATLIB}")
endif()
if(NETCDF_FOUND)
set(NETCDFLDFLAGS "${NETCDF_LIBRARY}")
set(NETCDFINC "-I${NETCDF_INCLUDE_DIRS}")
set(NETCDFLIB "-I${NETCDF_INCLUDE_DIRS}")
set(TARGET_MOL_LIBS "${TARGET_MOL_LIBS}" "NETCDFLDFLAGS = ${NETCDFLDFLAGS}" "NETCDFINC = ${NETCDFINC}" "NETCDFLIB = ${NETCDFLIB}")
endif()
message(MOL_C= "${CMAKE_C_COMPILER}")
message(MOL_CXX= "${CMAKE_CXX_COMPILER}")
message(MOL_CFLAGS= "${CMAKE_C_FLAGS}")
message(MOL_CXXFLAGS= "${CMAKE_CXX_FLAGS}")
add_custom_command(
OUTPUT ${LIB_MOLFILE_FILES}
COMMAND make dynlibs staticlibs "ARCH=${TARGET_ARCH}" "COPTO=${TARGET_COPT}" "LOPTO=${TARGET_LOPT}" "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" "DEF=${TARGET_DEF}" "CCFLAGS=${TARGET_CFLAGS}" "CXXFLAGS=${TARGET_CXXFLG}" "AR=${TARGET_AR}" "NM=${TARGET_NM}" "RANLIB=${TARGET_RANLIB}" "LIBTOOL=${TARGET_LIBTOOL}" "${TARGET_MOL_LIBS}"
COMMENT "Compiling libmolfile_plugin.a"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/../molfile_plugin"
)
endif()
if(WINCOMP)
set(TARGET_DEF "/D")
set(TARGET_AR "${CMAKE_AR}")
set(TARGET_NM "${CMAKE_NM} -p")
set(TARGET_RANLIB "${CMAKE_RANLIB}")
set(TARGET_MOL_LIBS "")
set(TARGET_SHLDFLAGS "/D\"VMDPLUGIN_EXPORTS\"")
if(MSVS)
set(MYMAKE nmake)
else()
set(MYMAKE make)
endif()
if(ARCH64BIT)
set(TARGET_SHLD "\"link /DLL /nologo /incremental:no kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib wsock32.lib /MACHINE:X64 /OPT:REF\"")
set(TARGET_MOL_SETTINGS "\"CC = cl.exe /nologo /MT /DWIN64\"" "\"CXX = cl.exe /nologo /MT /TP /DWIN64\"" "\"CCFLAGS = /EHsc /Wp64 /wd4996 /O2 /D\\\"_CRT_SECURE_NO_DEPRECATE\\\"\"" "\"CXXFLAGS = /EHsc /Wp64 /wd4996 /O2 /D\\\"_CRT_SECURE_NO_DEPRECATE\\\"\"")
else()
set(TARGET_SHLD "\"link /DLL /nologo /incremental:no kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib wsock32.lib /OPT:REF\"")
set(TARGET_MOL_SETTINGS "\"CC = cl.exe /nologo /MT /DWIN32\"" "\"CXX = cl.exe /nologo /MT /TP /DWIN32\"" "\"CCFLAGS = /O2 /G5\"" "\"CXXFLAGS = /O2 /G5\"")
endif()
add_custom_command(
OUTPUT ${LIB_MOLFILE_FILES}
COMMAND ${MYMAKE} dynlibs win32staticlibs "\" ARCH = ${TARGET_ARCH} \"" "\" COPTO = /Fo \"" "\" LOPTO = /OUT: \"" "\" ${TARGET_MOL_SETTINGS} \"" "\" DEF = ${TARGET_DEF} \"" "\" AR = ${TARGET_AR} \"" "\" NM = ${TARGET_NM} \"" "\" RANLIB = ${TARGET_RANLIB} \"" "\" SHLDFLAGS = ${TARGET_SHLDFLAGS} \"" "\"${TARGET_MOL_LIBS}\""
COMMENT "Compiling libmolfile_plugin.a"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/../molfile_plugin"
)
endif()
add_custom_target(molfile_plugins_comp ALL
DEPENDS ${LIB_MOLFILE_FILES}
)
add_library(molfile_plugins INTERFACE)
target_include_directories(molfile_plugins INTERFACE "${CMAKE_CURRENT_BINARY_DIR}/lib/")
target_link_libraries(molfile_plugins INTERFACE ${MOLFILE_LIBRARIES})
#add_dependencies(molfile_plugin_comp)
With the exception of specifically marked plugins or source files
which have different license terms due to inclusion of source code
or data under different restrictions, the software contained
within the VMD plugin tree is subject to the UIUC Open Source license
which is included below the explicitly listed exceptions below:
Specifically listed exceptions:
hesstrans -- Includes the "newmat10B" free C++ matrix library by
Robert Davies (robert@statsresearch.co.nz)
intersurf -- See Intersurf INRIA license text
pmepot -- NAMD License
psfgen -- NAMD License
stamp -- See STAMP license
vmdtkcon -- See TkCon license
Prof. A. MacKerell's CHARMM Empirical Force Fields --
(excerpts included with plugins:
'autoionize', 'membrane', 'readcharmmtop', 'readcharmmpar', 'solvate')
http://www.pharmacy.umaryland.edu/faculty/amackere/force_fields.htm
------------------------------------------------------------------------------
University of Illinois Open Source License
Copyright 2006 Theoretical and Computational Biophysics Group,
All rights reserved.
Developed by: Theoretical and Computational Biophysics Group
University of Illinois at Urbana-Champaign
http://www.ks.uiuc.edu/
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the Software), to deal with
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to
do so, subject to the following conditions:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimers.
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimers in the documentation
and/or other materials provided with the distribution.
Neither the names of Theoretical and Computational Biophysics Group,
University of Illinois at Urbana-Champaign, nor the names of its contributors
may be used to endorse or promote products derived from this Software without
specific prior written permission.
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
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.
##
## Per-architecture plugin compilation rules
## Copyright 2002, Board of Trustees of the University of Illinois
## Theoretical Biophysics Group
##
make-arch-help:
@echo "Type 'make arch' where arch is one of the platforms listed below:"
@echo "--------------------------------------"
@echo " AIX4"
@echo " AIX5"
@echo " AIX5_64"
@echo " AIX6_64"
@echo " BLUEGENEQ"
@echo " BLUEWATERS"
@echo " CRAY_XC"
@echo " CRAY_XK"
@echo " FREEBSD"
@echo " FREEBSDAMD64"
@echo " HPUX11"
@echo " IRIX6"
@echo " IRIX6_64"
@echo " LINUX"
@echo " LINUXALPHA"
@echo " LINUXAMD64"
@echo " LINUXPPC"
@echo " LINUXPPC64"
@echo " LINUXIA64"
@echo " MACOSX"
@echo " MACOSXX86"
@echo " MACOSXX86_64"
@echo " MACOSXX86_64GCC"
@echo " MACOSXX86_64GCCTNG"
@echo " NETBSD"
@echo " OPENPOWER"
@echo " SOLARIS2"
@echo " SOLARIS2_64"
@echo " SOLARISX86"
@echo " SOLARISX86_64"
@echo " SUMMIT"
@echo " TRU64"
@echo " T3E"
@echo " WIN32"
@echo " WIN32-debug"
@echo " WIN64"
@echo "--------------------------------------"
@echo "Type 'make clean' to clean the compilation area"
@echo "Type 'make arch OPT=myopt' to specfy additional options."
@echo "Options include: "
@echo " TCLINC: Include path for Tcl"
@echo " TCLLIB: Library path for Tcl"
##
## Android specific configuration items
##
ANDROIDBINS = /Projects/collaboratory/kvandivo/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin
ANDROIDINCS = -DANDROID -I/home/kvandivo/Proj/ndk/sources/cxx-stl/stlport/stlport -I/home/kvandivo/Proj/ndk/sources/cxx-stl/system/include -I/home/kvandivo/Proj/ndk/platforms/android-14/arch-arm/usr/include
ANDROIDABI = arm-linux-androideabi-
ANDROIDLIBS = -L/home/kvandivo/Proj/ndk/platforms/android-14/arch-arm/usr/lib
ANDROIDSYSROOT = --sysroot=/home/kvandivo/Proj/ndk/platforms/android-14/arch-arm
AIX4:
$(MAKE) dynlibs staticlibs bins \
"ARCH = AIX4" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = xlc" \
"CXX = xlC" \
"DEF = -D" \
"CCFLAGS = -w -qinlglue -qarch=com -qtune=pwr3" \
"CXXFLAGS = -w -qstrict -Q -qarch=com -qtune=pwr3" \
"LDFLAGS = -qarch=com -qtune=pwr3" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf" \
"AR = ar" \
"NM = nm -B" \
"RANLIB = touch" \
"SHLD = xlC -bM:SRE -bnoentry -bexpall -lm -qarch=com -qtune=pwr3"
AIX5:
$(MAKE) dynlibs staticlibs bins \
"ARCH = AIX5" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = xlc" \
"CXX = xlC" \
"DEF = -D" \
"CCFLAGS = -w -qinlglue -qarch=com -qtune=pwr5" \
"CXXFLAGS = -w -qstrict -Q -qarch=com -qtune=pwr5" \
"LDFLAGS = -qarch=com -qtune=pwr5" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf" \
"AR = ar" \
"NM = nm -B" \
"RANLIB = touch" \
"SHLD = xlC -bM:SRE -bnoentry -bexpall -lm -qarch=com -qtune=pwr5"
AIX5_64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = AIX5_64" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = xlc" \
"CXX = xlC" \
"DEF = -D" \
"CCFLAGS = -w -qinlglue -q64 -qarch=com -qtune=pwr5" \
"CXXFLAGS = -w -qstrict -Q -q64 -qarch=com -qtune=pwr5" \
"LDFLAGS = -q64 -qarch=com -qtune=pwr5" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf" \
"AR = ar -X64" \
"NM = nm -B" \
"RANLIB = touch" \
"SHLD = xlC -bM:SRE -bnoentry -bexpall -lm -q64 -qarch=com -qtune=pwr5"
AIX6_64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = AIX6_64" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = xlc" \
"CXX = xlC" \
"DEF = -D" \
"CCFLAGS = -w -qinlglue -q64 -qarch=com -qtune=pwr5" \
"CXXFLAGS = -w -qstrict -Q -q64 -qarch=com -qtune=pwr5" \
"LDFLAGS = -q64 -qarch=com -qtune=pwr5" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf" \
"AR = ar -X64" \
"NM = nm -B" \
"RANLIB = touch" \
"SHLD = xlC -bM:SRE -bnoentry -bexpall -lm -q64 -qarch=com -qtune=pwr5"
ANDROIDARMV7A:
$(MAKE) staticlibs \
"ARCH = ANDROIDARMV7A" \
"COPTO = -fPIC -o " \
"LOPTO = -fPIC -o " \
"CC = $(ANDROIDBINS)/$(ANDROIDABI)gcc" \
"CXX = $(ANDROIDBINS)/$(ANDROIDABI)g++" \
"DEF = -D" \
"CCFLAGS = -O2 -fPIC -Wall -Wno-psabi -MMD -MP -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -march=armv7-a -msoft-float -mfpu=vfp -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Wa,--noexecstac $(ANDROIDINCS)" \
"CXXFLAGS = -O2 -fPIC -Wall -Wno-psabi -MMD -MP -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -march=armv7-a -msoft-float -mfpu=vfp -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Wa,--noexecstac $(ANDROIDINCS)" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = echo"
BLUEGENEQ:
$(MAKE) staticlibs \
"ARCH = BGQ" \
"COPTO = -qpic -o " \
"LOPTO = -qpic -c -o " \
"CC = bgxlc_r" \
"CXX = bgxlC_r" \
"DEF = -D" \
"CCFLAGS = -w " \
"CXXFLAGS = -w " \
"LDFLAGS = -q64 -qarch=qp -qtune=qp" \
"TCLLDFLAGS = -ltcl8.4" \
"NETCDFLDFLAGS = -lnetcdf" \
"AR = ar " \
"NM = nm -B" \
"RANLIB = touch" \
"SHLD = xlC -lm -q64 -qarch=qp -qtune=qp"
BLUEWATERS:
$(MAKE) dynlibs staticlibs bins \
"ARCH = BLUEWATERS" \
"COPTO = -fPIC -m64 -o " \
"LOPTO = -fPIC -m64 -o " \
"CC = cc" \
"CXX = CC" \
"DEF = -D" \
"CCFLAGS = -m64 -O2 -fPIC -Wall" \
"CXXFLAGS = -m64 -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
CRAY_XC:
$(MAKE) dynlibs staticlibs bins \
"ARCH = CRAY_XC" \
"COPTO = -fPIC -m64 -o " \
"LOPTO = -fPIC -m64 -o " \
"CC = cc" \
"CXX = CC" \
"DEF = -D" \
"CCFLAGS = -m64 -O2 -fPIC -Wall" \
"CXXFLAGS = -m64 -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
CRAY_XK:
$(MAKE) dynlibs staticlibs bins \
"ARCH = CRAY_XK" \
"COPTO = -fPIC -m64 -o " \
"LOPTO = -fPIC -m64 -o " \
"CC = cc" \
"CXX = CC" \
"DEF = -D" \
"CCFLAGS = -m64 -O2 -fPIC -Wall" \
"CXXFLAGS = -m64 -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
HPUX11:
$(MAKE) dynlibs staticlibs bins \
"ARCH = HPUX11" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = cc" \
"CXX = aCC" \
"DEF = -D" \
"CCFLAGS = +O2 +DAportable -Ae +z" \
"CXXFLAGS = +O2 +DAportable +z" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = ld -b"
IRIX6:
$(MAKE) dynlibs staticlibs bins \
"ARCH = IRIX6" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = cc -n32 -mips3 -KPIC" \
"CXX = CC -n32 -mips3 -KPIC" \
"DEF = -D" \
"CCFLAGS = -O2 -fullwarn" \
"CXXFLAGS = -O2 -fullwarn" \
"LDFLAGS = -n32 -mips3" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = cc -shared"
IRIX6_64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = IRIX6_64" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = cc -64 -mips4 -KPIC" \
"CXX = CC -64 -mips4 -KPIC" \
"DEF = -D" \
"CCFLAGS = -O2 -fullwarn" \
"CXXFLAGS = -O2 -fullwarn" \
"LDFLAGS = -64 -mips4" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = cc -shared -64 -mips4"
FREEBSD:
$(MAKE) dynlibs staticlibs bins \
"ARCH = FREEBSD" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -O2 -Wall -I/usr/local/include/tcl8.5" \
"CXXFLAGS = -O2 -Wall" \
"TCLLDFLAGS = -L/usr/local/lib -ltcl85" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
FREEBSDAMD64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = FREEBSD" \
"COPTO = -fPIC -m64 -o " \
"LOPTO = -fPIC -m64 -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -m64 -O2 -Wall -I/usr/local/include/tcl8.5" \
"CXXFLAGS = -m64 -O2 -Wall" \
"TCLLDFLAGS = -L/usr/local/lib -ltcl85" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
LINUX:
$(MAKE) dynlibs staticlibs bins \
"ARCH = LINUX" \
"COPTO = -fPIC -m32 -o " \
"LOPTO = -fPIC -m32 -lstdc++ -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -m32 -O2 -fPIC -Wall" \
"CXXFLAGS = -m32 -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
LINUXALPHA:
$(MAKE) dynlibs staticlibs bins \
"ARCH = LINUXALPHA" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = ccc" \
"CXX = cxx" \
"DEF = -D" \
"CCFLAGS = -O4 -arch host -tune host" \
"CXXFLAGS = -O4 -arch host -tune host" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
LINUXAMD64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = LINUXAMD64" \
"COPTO = -fPIC -m64 -o " \
"LOPTO = -fPIC -m64 -lstdc++ -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -m64 -O2 -fPIC -Wall" \
"CXXFLAGS = -m64 -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
LINUXCARMA:
$(MAKE) dynlibs staticlibs bins \
"ARCH = LINUXCARMA" \
"COPTO = -fPIC -o " \
"LOPTO = -fPIC -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -O3 -fPIC -Wall -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=vfpv3-d16 -ffast-math -fno-strict-aliasing" \
"CXXFLAGS = -O3 -fPIC -Wall -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=vfpv3-d16 -ffast-math -fno-strict-aliasing" \
"TCLLDFLAGS = -ltcl8.6 -lz -ldl -lpthread" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
LINUXPPC:
$(MAKE) dynlibs staticlibs bins \
"ARCH = LINUXPPC" \
"COPTO = -fPIC -o " \
"LOPTO = -fPIC -lstdc++ -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -O2 -fPIC -Wall" \
"CXXFLAGS = -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
LINUXPPC64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = LINUXPPC64" \
"COPTO = -fPIC -m64 -o " \
"LOPTO = -fPIC -m64 -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -m64 -O2 -fPIC -Wall" \
"CXXFLAGS = -m64 -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"NETCDFLDFLAGS = " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
LINUXIA64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = LINUXIA64" \
"COPTO = -fPIC -o " \
"LOPTO = -fPIC -o " \
"CC = cc" \
"CXX = c++" \
"DEF = -D" \
"CCFLAGS = -O2 -fPIC -Wall" \
"CXXFLAGS = -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = cc -shared"
LINUXIA64-icc:
$(MAKE) dynlibs staticlibs bins \
"ARCH = LINUXIA64" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = icc" \
"CXX = icpc" \
"DEF = -D" \
"CCFLAGS = -O2 -fPIC" \
"CXXFLAGS = -O2 -fPIC" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = icc -shared"
MACOSX:
$(MAKE) dynlibs staticlibs bins \
"ARCH = MACOSX" \
"COPTO = -fPIC -o " \
"LOPTO = -fPIC -o " \
"CC = cc" \
"CXX = c++" \
"DEF = -D" \
"CCFLAGS = -Os -Wall -fPIC -dynamic" \
"CXXFLAGS = -Os -Wall -fPIC -dynamic" \
"TCLLDFLAGS = -framework Tcl" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = ranlib" \
"LIBTOOL = libtool -dynamic" \
"SHLD = c++ -bundle" \
"TCLSHLD = c++ -dynamiclib"
MACOSXX86:
$(MAKE) dynlibs staticlibs bins \
"ARCH = MACOSXX86" \
"COPTO = -m32 -fPIC -o " \
"LOPTO = -m32 -fPIC -o " \
"CC = cc" \
"CXX = c++" \
"DEF = -D" \
"CCFLAGS = -m32 -Os -Wall -fPIC -dynamic" \
"CXXFLAGS = -m32 -Os -Wall -fPIC -dynamic" \
"TCLLDFLAGS = -framework Tcl" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = ranlib" \
"LIBTOOL = libtool -dynamic" \
"SHLD = c++ -bundle" \
"TCLSHLD = c++ -dynamiclib"
MACOSXX86_64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = MACOSXX86_64" \
"COPTO = -m64 -fPIC -o " \
"LOPTO = -m64 -fPIC -o " \
"CC = cc" \
"CXX = c++" \
"DEF = -D" \
"CCFLAGS = -m64 -Os -Wall -fPIC -dynamic" \
"CXXFLAGS = -m64 -Os -Wall -fPIC -dynamic" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf " \
"NETCDFLIB = -L/usr/local/lib " \
"NETCDFINC = -I/usr/local/include " \
"TNGLDFLAGS = -ltng_io"
"TNGLIB = -L../lib"
"TNGINC = -I../lib"
"EXPATLDFLAGS = -lexpat"
"EXPATLIB = -L/usr/lib"
"EXPATINC = -I/usr/include"
"AR = ar" \
"NM = nm -p" \
"RANLIB = ranlib" \
"LIBTOOL = libtool -dynamic" \
"SHLD = c++ -bundle" \
"TCLSHLD = c++ -dynamiclib"
MACOSXX86_64GCC:
$(MAKE) dynlibs staticlibs bins \
"ARCH = MACOSXX86_64GCC" \
"COPTO = -m64 -fPIC -o " \
"LOPTO = -m64 -fPIC -o " \
"CC = gcc-7" \
"CXX = g++-7" \
"DEF = -D" \
"CCFLAGS = -m64 -Os -Wall -fPIC -dynamic" \
"CXXFLAGS = -m64 -Os -Wall -fPIC -dynamic" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf" \
"NETCDFLIB = -L/usr/local/Cellar/netcdf/4.4.1.1_6/lib " \
"NETCDFINC = -I/usr/local/Cellar/netcdf/4.4.1.1_6/include " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = ranlib" \
"LIBTOOL = libtool -dynamic" \
"SHLD = g++-7 -shared" \
"TCLSHLD = g++-7 -dynamiclib"
MACOSXX86_64GCCTNG:
$(MAKE) dynlibs staticlibs bins \
"ARCH = MACOSXX86_64GCC" \
"COPTO = -m64 -fPIC -o " \
"LOPTO = -m64 -fPIC -o " \
"CC = gcc-7" \
"CXX = g++-7" \
"DEF = -D" \
"CCFLAGS = -m64 -Os -Wall -fPIC -dynamic" \
"CXXFLAGS = -m64 -Os -Wall -fPIC -dynamic" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf" \
"NETCDFLIB = -L/usr/local/Cellar/netcdf/4.4.1.1_6/lib " \
"NETCDFINC = -I/usr/local/Cellar/netcdf/4.4.1.1_6/include " \
"TNGLDFLAGS = -ltng_io" \
"TNGLIB = -L/Users/bonat/TNG/tng/build/lib" \
"TNGINC = -I/Users/bonat/TNG/tng/include" \
"EXPATLDFLAGS = -lexpat" \
"EXPATLIB = -L/usr/local/Cellar/expat/2.2.4/lib" \
"EXPATINC = -I/usr/local/Cellar/expat/2.2.4/include" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = ranlib" \
"LIBTOOL = libtool -dynamic" \
"SHLD = g++-7 -shared" \
"TCLSHLD = g++-7 -dynamiclib"
NETBSD:
$(MAKE) dynlibs staticlibs bins \
"ARCH = NETBSD" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -O2 -Wall -ansi" \
"CXXFLAGS = -O2 -Wall" \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
OPENPOWER:
$(MAKE) dynlibs staticlibs bins \
"ARCH = OPENPOWER" \
"COPTO = -fPIC -m64 -o " \
"LOPTO = -fPIC -m64 -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -m64 -O2 -fPIC -Wall" \
"CXXFLAGS = -m64 -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"NETCDFLDFLAGS = " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
SOLARIS2:
$(MAKE) dynlibs staticlibs bins \
"ARCH = SOLARIS2" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = cc -mt -fast -xarch=v8plusa" \
"CXX = CC -mt -fast -xarch=v8plusa" \
"DEF = -D" \
"CCFLAGS = -KPIC " \
"CXXFLAGS = -KPIC " \
"TCLLDFLAGS = -ltcl8.5 -lsocket -lnsl -ldl" \
"NETCDFLDFLAGS = -lnetcdf -lsocket -lnsl -ldl" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = cc -mt -fast -xarch=v8plusa -G"
SOLARIS2_64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = SOLARIS2_64" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = cc -D__EXTENSIONS__ -fast -mt -xarch=v9a" \
"CXX = CC -D__EXTENSIONS__ -fast -mt -xarch=v9a" \
"DEF = -D" \
"CCFLAGS = -KPIC " \
"CXXFLAGS = -KPIC " \
"TCLLDFLAGS = -ltcl8.5 -lsocket -lnsl -ldl" \
"NETCDFLDFLAGS = -lnetcdf -lsocket -lnsl -ldl" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = cc -D__EXTENSIONS__ -xarch=v9a -G"
SOLARISX86:
$(MAKE) dynlibs staticlibs bins \
"ARCH = SOLARISX86" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = cc -mt -fast -xarch=native" \
"CXX = CC -mt -fast -xarch=native" \
"DEF = -D" \
"CCFLAGS = -KPIC " \
"CXXFLAGS = -KPIC " \
"TCLLDFLAGS = -ltcl8.5 -lsocket -lnsl -ldl" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = cc -mt -fast -xarch=native -G"
SOLARISX86_64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = SOLARISX86_64" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = cc -D__EXTENSIONS__ -fast -mt -xarch=native64" \
"CXX = CC -D__EXTENSIONS__ -fast -mt -xarch=native64" \
"DEF = -D" \
"CCFLAGS = -KPIC " \
"CXXFLAGS = -KPIC " \
"TCLLDFLAGS = -ltcl8.5 -lsocket -lnsl -ldl" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = cc -D__EXTENSIONS__ -xarch=native64 -G"
SUMMIT:
$(MAKE) dynlibs staticlibs bins \
"ARCH = SUMMIT" \
"COPTO = -fPIC -m64 -o " \
"LOPTO = -fPIC -m64 -o " \
"CC = gcc" \
"CXX = g++" \
"DEF = -D" \
"CCFLAGS = -m64 -O2 -fPIC -Wall" \
"CXXFLAGS = -m64 -O2 -fPIC -Wall" \
"TCLLDFLAGS = -ltcl8.5 -ldl" \
"NETCDFLDFLAGS = " \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLD = gcc -shared"
T3E:
$(MAKE) staticlibs \
"ARCH = T3E" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = cc" \
"CXX = CC" \
"DEF = -D" \
"CCFLAGS = -O2" \
"CXXFLAGS = -O2" \
"LDFLAGS = " \
"TCLLDFLAGS = -ltcl8.5" \
"NETCDFLDFLAGS = -lnetcdf" \
"AR = ar" \
"NM = nm" \
"RANLIB = touch" \
"SHLD = echo"
TRU64:
$(MAKE) dynlibs staticlibs bins \
"ARCH = TRU64" \
"COPTO = -o " \
"LOPTO = -o " \
"CC = cc" \
"CXX = cxx" \
"DEF = -D" \
"CCFLAGS = -fast" \
"CXXFLAGS = -fast" \
"TCLLDFLAGS = -ltcl8.5 -lm" \
"NETCDFLDFLAGS = -lnetcdf " \
"AR = ar" \
"NM = nm -B" \
"RANLIB = touch" \
"SHLD = ld -shared"
WIN32:
$(MAKE) dynlibs win32staticlibs win32bins \
"ARCH = WIN32" \
"COPTO = /Fo" \
"LOPTO = /OUT:" \
"CC = cl.exe /nologo /MT /DWIN32" \
"CXX = cl.exe /nologo /MT /TP /DWIN32" \
"DEF = /D" \
"CCFLAGS = /O2 /G5" \
"CXXFLAGS = /O2 /G5" \
"TCLLDFLAGS = tcl85.lib" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLDFLAGS = /D\"VMDPLUGIN_EXPORTS\"" \
"SHLD = link /DLL /nologo /incremental:no \
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
odbc32.lib odbccp32.lib ws2_32.lib wsock32.lib /OPT:REF"
WIN32-debug:
$(MAKE) dynlibs win32staticlibs win32bins \
"ARCH = WIN32-debug" \
"COPTO = /Fo" \
"LOPTO = /OUT:" \
"CC = cl.exe /nologo /MTd /DWIN32" \
"CXX = cl.exe /nologo /MTd /TP /DWIN32" \
"DEF = /D" \
"CCFLAGS = /ZI /Od /G5 /D\"_DEBUG\"" \
"CXXFLAGS = /ZI /Od /G5 /D\"_DEBUG\"" \
"TCLLDFLAGS = tcl85.lib" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLDFLAGS = /D\"VMDPLUGIN_EXPORTS\"" \
"SHLD = link /DLL /nologo /incremental:no /debug /warn:4 \
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
odbc32.lib odbccp32.lib ws2_32.lib wsock32.lib /OPT:REF"
WIN64:
$(MAKE) dynlibs win32staticlibs win32bins \
"ARCH = WIN64" \
"COPTO = /Fo" \
"LOPTO = /OUT:" \
"CC = cl.exe /nologo /MT /DWIN64" \
"CXX = cl.exe /nologo /MT /TP /DWIN64" \
"DEF = /D" \
"CCFLAGS = /EHsc /Wp64 /wd4996 /O2 /D\"_CRT_SECURE_NO_DEPRECATE\"" \
"CXXFLAGS = /EHsc /Wp64 /wd4996 /O2 /D\"_CRT_SECURE_NO_DEPRECATE\"" \
"TCLLDFLAGS = tcl85.lib" \
"AR = ar" \
"NM = nm -p" \
"RANLIB = touch" \
"SHLDFLAGS = /D\"VMDPLUGIN_EXPORTS\"" \
"SHLD = link /DLL /nologo /incremental:no \
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
odbc32.lib odbccp32.lib ws2_32.lib wsock32.lib /MACHINE:X64 /OPT:REF"
##
## Plugin compilation and distribution rules
## Copyright 2002-2011, Board of Trustees of the University of Illinois
## Theoretical and Computational Biophysics Group
##
## $Id: Makefile,v 1.141 2016/07/13 19:24:24 johns Exp $
##
.SILENT:
default: make-arch-help
world:
@echo "Building all supported targets..."
csh -f build.csh
# These plugins were, at one time, kept in a separate multiseq CVS tree and
# need to be periodically synced up with the main VMD plugin CVS when updated.
# They are listed separately here to make this distinction more transparent.
#MSEQBUILDDIRS = blast clustalw libbiokit \
multiseq multiseqdialog phylotree \
psipred seqdata seqedit stamp
# When building from the independent multiseq tree, we'll use an empty list
# since the dependency will be dealt with manually.
MSEQBUILDDIRS =
# The Intersurf plugin is compiled manually and should only be
# listed if the binaries are up-to-date for the target platform(s)
#INTERSURF = intersurf
INTERSURF =
# List of plugins to build
# Note: molfile plugins must be first since some of the
# other plugins directly depend on them
BUILDDIRS = \
$(MSEQBUILDDIRS) \
$(INTERSURF)
INCLUDEDIR = include
PLUGINHEADERS = vmdplugin.h molfile_plugin.h vmdconio.h
distrib:
@echo "Populating distribution directory with compiled plugins"
-mkdir -p $(PLUGINDIR)/include
for header in $(PLUGINHEADERS); do cp -p $(INCLUDEDIR)/$$header $(PLUGINDIR)/include || exit 1 ; done
for dir in molfile_plugin $(BUILDDIRS); do cd $$dir && $(MAKE) distrib && cd .. || exit 1 ; done
include Make-arch
molfilelibs:
cd molfile_plugin; $(MAKE) dynlibs && cd .. || exit 1
cd molfile_plugin; $(MAKE) staticlibs && cd .. || exit 1
win32molfilelibs:
cd molfile_plugin; $(MAKE) dynlibs && cd .. || exit 1
cd molfile_plugin; $(MAKE) win32staticlibs && cd .. || exit 1
dynlibs: molfilelibs
for dir in $(BUILDDIRS); do cd $$dir && $(MAKE) dynlibs && cd .. || exit 1 ; done
staticlibs: molfilelibs
for dir in $(BUILDDIRS); do cd $$dir && $(MAKE) staticlibs && cd .. || exit 1 ; done
win32staticlibs: win32molfilelibs
for dir in $(BUILDDIRS); do cd $$dir && $(MAKE) win32staticlibs && cd .. || exit 1 ; done
bins:
for dir in molfile_plugin $(BUILDDIRS); do cd $$dir && $(MAKE) bins && cd .. || exit 1 ; done
win32bins:
for dir in molfile_plugin $(BUILDDIRS); do cd $$dir && $(MAKE) win32bins && cd .. || exit 1 ; done
clean:
find compile \( -name \*.o -o -name \*.a -o -name \*.so -o -name \*.exp -o -name \*.lib -o -name \*.h \) -print | xargs rm -f
find compile \( -name lib\* \) -print | xargs rm -rf
rm -f log.*
rm -f molfile_plugin/so_locations
checkperms:
@echo "Looking for bad file permissions..."
find . ! -perm +004
VMD Plugin README
-----------------
This directory is the root of the plugin directory for VMD.
VMD plugins are designed to add new functionality and support for new types
of files or external programs without compiling that functionality into the
main body of VMD's code. Most plugins take the form of a shared library
(files named xxx.so or xxx.dll) which can be detected by VMD and loaded at
run time. The plugin and the application communicate through a well-defined
API, which makes the plugin more reusable by avoiding direct coupling to
VMD's internal data structures. Similarly, plugins can be upgraded at
any time, independent of VMD itself.
For additional information on compiling the plugins and building VMD,
please read the web-based plugin documentation here:
http://www.ks.uiuc.edu/Research/vmd/plugins/doxygen/
Plugin directory structure
--------------------------
/_plugin:
Directories that end in _plugin are plugin source repositories. All
plugins of a given type (i.e., which use the same API) should be placed in the
corresponding directory. Each plugin directory contains the following
subdirectories:
- src: source code for all plugins of that type;
- msvc: Microsoft Visual Studio project files for each plugin;
- doc: documentation for each plugin.
The plugin directory also contains a Makefile for compiling all the plugins.
The Makefile currently is for a gcc target only.
/compile:
Contains compiled binary plugins, both static and dynamic, as well as
related header files, etc.
/include:
This directory contains the VMD plugin API header files, including
vmdplugin.h (the base-level plugin header) as well as headers for other plugin
types. Alternatively, these files may be linked from the VMD source tree.
/msvc:
Contains a Microsoft Visual Studio workspace file for compiling all
the plugins for the Win32 platform.
#!/bin/sh
# Script for creating header file for static libraries
libname=$1
shift
prefix=$1
shift
target=$1
shift
plugins=$*
#
# boilerplate header
#
echo "#ifndef LIB${libname}_PLUGIN_H" >> $target
echo "#define LIB${libname}_PLUGIN_H" >> $target
#
# include the generic vmd plugin header
#
echo "#include \"vmdplugin.h\"" >> $target
echo "" >> $target
#
# all plugin API's are extern "C".
#
echo "#ifdef __cplusplus" >> $target
echo "extern \"C\" {" >> $target
echo "#endif" >> $target
echo "" >> $target
#
# Function declarations
#
for p in $plugins
do
## XXX not legal in standard Bourne shell, so we do it in the Makefile now
## name=${p%%.so}
echo "extern int ${prefix}_${p}_init(void);" >> $target
echo "extern int ${prefix}_${p}_register(void *, vmdplugin_register_cb);" >> $target
echo "extern int ${prefix}_${p}_fini(void);" >> $target
done
echo "" >> $target
# macros for init, register, fini
echo "#define ${libname}_INIT_ALL \\" >> $target
for p in $plugins
do
## XXX not legal in standard Bourne shell, so we do it in the Makefile now
## name=${p%%.so}
echo " ${prefix}_${p}_init(); \\" >> $target
done
echo "" >> $target
echo "#define ${libname}_REGISTER_ALL(v, cb) \\" >> $target
for p in $plugins
do
## XXX not legal in standard Bourne shell, so we do it in the Makefile now
## name=${p%%.so}
echo " ${prefix}_${p}_register(v, cb); \\" >> $target
done
echo "" >> $target
echo "#define ${libname}_FINI_ALL \\" >> $target
for p in $plugins
do
## XXX not legal in standard Bourne shell, so we do it in the Makefile now
## name=${p%%.so}
echo " ${prefix}_${p}_fini(); \\" >> $target
done
echo "" >> $target
#
# wrap it up
#
echo "#ifdef __cplusplus" >> $target
echo "}" >> $target
echo "#endif" >> $target
echo "#endif" >> $target
/import_graphics_plugin.h/1.5/Fri Sep 21 19:43:10 2007//
/vmdconio.h/1.4/Sun Oct 11 22:36:27 2015//
/vmdplugin.h/1.33/Thu Oct 29 05:10:54 2015//
/molfile_plugin.h/1.108/Fri Feb 26 03:17:01 2016//
D
plugins/include
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment