add minimally tested swig wrapper for Lua, Perl5, Python, and Tcl
This commit is contained in:
@ -379,6 +379,14 @@ foreach(PKG_WITH_INCL KSPACE PYTHON VORONOI USER-COLVARS USER-MOLFILE USER-NETCD
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# optionally enable building script wrappers using swig
|
||||
option(WITH_SWIG "Build scripting language wrappers with SWIG" OFF)
|
||||
if(WITH_SWIG)
|
||||
get_filename_component(LAMMPS_SWIG_DIR ${LAMMPS_SOURCE_DIR}/../swig ABSOLUTE)
|
||||
get_filename_component(LAMMPS_SWIG_BIN ${CMAKE_BINARY_DIR}/swig ABSOLUTE)
|
||||
add_subdirectory(${LAMMPS_SWIG_DIR} ${LAMMPS_SWIG_BIN})
|
||||
endif()
|
||||
|
||||
set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler and machine specific optimization flags (compilation only)")
|
||||
separate_arguments(CMAKE_TUNE_FLAGS)
|
||||
foreach(_FLAG ${CMAKE_TUNE_FLAGS})
|
||||
|
||||
55
swig/CMakeLists.txt
Normal file
55
swig/CMakeLists.txt
Normal file
@ -0,0 +1,55 @@
|
||||
# CMake configuration for generating script language interfaces with swig
|
||||
|
||||
# set minimum CMake version required and switch to new policies
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
if(POLICY CMP0078)
|
||||
cmake_policy(SET CMP0078 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0086)
|
||||
cmake_policy(SET CMP0086 NEW)
|
||||
endif()
|
||||
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
error(FATAL_ERROR "Option BUILD_SHARED_LIBS must be enabled to use SWIG wrappers")
|
||||
endif()
|
||||
|
||||
find_package(SWIG REQUIRED)
|
||||
include(${SWIG_USE_FILE})
|
||||
|
||||
option(BUILD_SWIG_LUA "Build Lua wrapper with SWIG" OFF)
|
||||
option(BUILD_SWIG_PERL5 "Build Perl5 wrapper with SWIG" OFF)
|
||||
option(BUILD_SWIG_PYTHON "Build Python wrapper with SWIG" OFF)
|
||||
option(BUILD_SWIG_TCL "Build Tcl wrapper with SWIG" OFF)
|
||||
|
||||
if(BUILD_SWIG_PYTHON)
|
||||
set_property(SOURCE lammps.i PROPERTY SWIG_MODULE_NAME pylammps)
|
||||
swig_add_library(pylammps TYPE MODULE LANGUAGE python SOURCES lammps.i)
|
||||
find_package(Python REQUIRED COMPONENTS Development)
|
||||
swig_link_libraries(pylammps PRIVATE lammps Python::Python)
|
||||
endif()
|
||||
|
||||
if(BUILD_SWIG_PERL5)
|
||||
set_property(SOURCE lammps.i PROPERTY SWIG_MODULE_NAME pllammps)
|
||||
swig_add_library(pllammps TYPE MODULE LANGUAGE perl5 SOURCES lammps.i)
|
||||
find_package(PerlLibs REQUIRED 5.0)
|
||||
target_compile_definitions(pllammps PRIVATE _LARGEFILE64_SOURCE)
|
||||
target_include_directories(pllammps PRIVATE ${PERL_INCLUDE_PATH})
|
||||
swig_link_libraries(pllammps PRIVATE lammps ${PERL_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(BUILD_SWIG_LUA)
|
||||
set_property(SOURCE lammps.i PROPERTY SWIG_MODULE_NAME lualammps)
|
||||
swig_add_library(lualammps TYPE MODULE LANGUAGE lua SOURCES lammps.i)
|
||||
find_package(Lua REQUIRED)
|
||||
target_include_directories(lualammps PRIVATE ${LUA_INCLUDE_PATH})
|
||||
swig_link_libraries(lualammps PRIVATE lammps ${LUA_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(BUILD_SWIG_TCL)
|
||||
set_property(SOURCE lammps.i PROPERTY SWIG_MODULE_NAME tcllammps)
|
||||
swig_add_library(tcllammps TYPE MODULE LANGUAGE tcl SOURCES lammps.i)
|
||||
find_package(TCL REQUIRED)
|
||||
target_include_directories(tcllammps PRIVATE ${TCL_INCLUDE_PATH})
|
||||
swig_link_libraries(tcllammps PRIVATE lammps ${TCL_LIBRARY})
|
||||
endif()
|
||||
|
||||
161
swig/lammps.i
Normal file
161
swig/lammps.i
Normal file
@ -0,0 +1,161 @@
|
||||
%{
|
||||
/* extern void *lammps_open(int argc, char **argv, MPI_Comm comm, void **ptr); */
|
||||
extern void *lammps_open_no_mpi(int argc, char **argv, void **ptr);
|
||||
extern void *lammps_open_fortran(int argc, char **argv, int f_comm);
|
||||
extern void lammps_close(void *handle);
|
||||
extern void lammps_mpi_init();
|
||||
extern void lammps_mpi_finalize();
|
||||
extern void lammps_free(void *ptr);
|
||||
extern void lammps_file(void *handle, const char *file);
|
||||
extern char *lammps_command(void *handle, const char *cmd);
|
||||
extern void lammps_commands_list(void *handle, int ncmd, const char **cmds);
|
||||
extern void lammps_commands_string(void *handle, const char *str);
|
||||
extern int lammps_version(void *handle);
|
||||
extern void lammps_get_os_info(char *buffer, int buf_size);
|
||||
extern void lammps_memory_usage(void *handle, double *meminfo);
|
||||
extern int lammps_get_mpi_comm(void *handle);
|
||||
extern double lammps_get_natoms(void *handle);
|
||||
extern double lammps_get_thermo(void *handle, const char *keyword);
|
||||
extern void lammps_extract_box(void *handle, double *boxlo, double *boxhi,
|
||||
double *xy, double *yz, double *xz,
|
||||
int *pflags, int *boxflag);
|
||||
extern void lammps_reset_box(void *handle, double *boxlo, double *boxhi,
|
||||
double xy, double yz, double xz);
|
||||
extern int lammps_extract_setting(void *handle, const char *keyword);
|
||||
extern void *lammps_extract_global(void *handle, const char *name);
|
||||
extern void *lammps_extract_atom(void *handle, const char *name);
|
||||
extern int lammps_extract_global_datatype(void *handle, const char *name);
|
||||
extern int lammps_extract_atom_datatype(void *handle, const char *name);
|
||||
/* extern int lammps_create_atoms(void *handle, int n, int *id, int *type,
|
||||
extern int lammps_create_atoms(void *handle, int n, int64_t *id, int *type, */
|
||||
extern void *lammps_extract_compute(void *handle, char *id, int, int);
|
||||
extern void *lammps_extract_fix(void *handle, char *, int, int, int, int);
|
||||
extern void *lammps_extract_variable(void *handle, char *, char *);
|
||||
extern int lammps_set_variable(void *, char *, char *);
|
||||
extern void lammps_gather(void *, char *, int, int, void *);
|
||||
extern void lammps_gather_concat(void *, char *, int, int, void *);
|
||||
extern void lammps_gather_subset(void *, char *, int, int, int, int *, void *);
|
||||
extern void lammps_scatter(void *, char *, int, int, void *);
|
||||
extern void lammps_scatter_subset(void *, char *, int, int, int, int *, void *);
|
||||
extern void lammps_gather_atoms(void *, char *, int, int, void *);
|
||||
extern void lammps_gather_atoms_concat(void *, char *, int, int, void *);
|
||||
extern void lammps_gather_atoms_subset(void *, char *, int, int, int, int *, void *);
|
||||
extern void lammps_scatter_atoms(void *, char *, int, int, void *);
|
||||
extern void lammps_scatter_atoms_subset(void *, char *, int, int, int, int *, void *);
|
||||
extern int lammps_config_has_mpi_support();
|
||||
extern int lammps_config_has_package(const char *);
|
||||
extern int lammps_config_package_count();
|
||||
extern int lammps_config_package_name(int, char *, int);
|
||||
extern int lammps_config_has_gzip_support();
|
||||
extern int lammps_config_has_png_support();
|
||||
extern int lammps_config_has_jpeg_support();
|
||||
extern int lammps_config_has_ffmpeg_support();
|
||||
extern int lammps_config_has_exceptions();
|
||||
extern int lammps_has_style(void *, const char *, const char *);
|
||||
extern int lammps_style_count(void *, const char *);
|
||||
extern int lammps_style_name(void *, const char *, int, char *, int);
|
||||
extern int lammps_has_id(void *, const char *, const char *);
|
||||
extern int lammps_id_count(void *, const char *);
|
||||
extern int lammps_id_name(void *, const char *, int, char *, int);
|
||||
extern int lammps_find_pair_neighlist(void*, char *, int, int, int);
|
||||
extern int lammps_find_fix_neighlist(void*, char *, int);
|
||||
extern int lammps_find_compute_neighlist(void*, char *, int);
|
||||
extern int lammps_neighlist_num_elements(void*, int);
|
||||
extern void lammps_neighlist_element_neighbors(void *, int, int, int *, int *, int ** );
|
||||
/*
|
||||
extern int lammps_encode_image_flags(int ix, int iy, int iz);
|
||||
extern void lammps_decode_image_flags(int image, int *flags);
|
||||
extern int64_t lammps_encode_image_flags(int ix, int iy, int iz);
|
||||
extern void lammps_decode_image_flags(int64_t image, int *flags);
|
||||
extern void lammps_set_fix_external_callback(void *, char *, FixExternalFnPtr, void*);
|
||||
extern void lammps_set_fix_external_callback(void *, char *, FixExternalFnPtr, void*);
|
||||
extern void lammps_set_fix_external_callback(void *, char *, FixExternalFnPtr, void*);
|
||||
extern void lammps_fix_external_set_energy_global(void *, char *, double);
|
||||
extern void lammps_fix_external_set_virial_global(void *, char *, double *);
|
||||
*/
|
||||
extern int lammps_is_running(void *handle);
|
||||
extern void lammps_force_timeout(void *handle);
|
||||
extern int lammps_has_error(void *handle);
|
||||
extern int lammps_get_last_error_message(void *handle, char *buffer, int buf_size);
|
||||
%}
|
||||
|
||||
/* extern void *lammps_open(int argc, char **argv, MPI_Comm comm, void **ptr); */
|
||||
extern void *lammps_open_no_mpi(int argc, char **argv, void **ptr);
|
||||
extern void *lammps_open_fortran(int argc, char **argv, int f_comm);
|
||||
extern void lammps_close(void *handle);
|
||||
extern void lammps_mpi_init();
|
||||
extern void lammps_mpi_finalize();
|
||||
extern void lammps_free(void *ptr);
|
||||
extern void lammps_file(void *handle, const char *file);
|
||||
extern char *lammps_command(void *handle, const char *cmd);
|
||||
extern void lammps_commands_list(void *handle, int ncmd, const char **cmds);
|
||||
extern void lammps_commands_string(void *handle, const char *str);
|
||||
extern int lammps_version(void *handle);
|
||||
extern void lammps_get_os_info(char *buffer, int buf_size);
|
||||
extern void lammps_memory_usage(void *handle, double *meminfo);
|
||||
extern int lammps_get_mpi_comm(void *handle);
|
||||
extern double lammps_get_natoms(void *handle);
|
||||
extern double lammps_get_thermo(void *handle, const char *keyword);
|
||||
extern void lammps_extract_box(void *handle, double *boxlo, double *boxhi,
|
||||
double *xy, double *yz, double *xz,
|
||||
int *pflags, int *boxflag);
|
||||
extern void lammps_reset_box(void *handle, double *boxlo, double *boxhi,
|
||||
double xy, double yz, double xz);
|
||||
extern int lammps_extract_setting(void *handle, const char *keyword);
|
||||
extern void *lammps_extract_global(void *handle, const char *name);
|
||||
extern void *lammps_extract_atom(void *handle, const char *name);
|
||||
extern int lammps_extract_global_datatype(void *handle, const char *name);
|
||||
extern int lammps_extract_atom_datatype(void *handle, const char *name);
|
||||
/*
|
||||
extern int lammps_create_atoms(void *handle, int n, int *id, int *type,
|
||||
extern int lammps_create_atoms(void *handle, int n, int64_t *id, int *type, */
|
||||
extern void *lammps_extract_compute(void *handle, char *id, int, int);
|
||||
extern void *lammps_extract_fix(void *handle, char *, int, int, int, int);
|
||||
extern void *lammps_extract_variable(void *handle, char *, char *);
|
||||
extern int lammps_set_variable(void *, char *, char *);
|
||||
extern void lammps_gather(void *, char *, int, int, void *);
|
||||
extern void lammps_gather_concat(void *, char *, int, int, void *);
|
||||
extern void lammps_gather_subset(void *, char *, int, int, int, int *, void *);
|
||||
extern void lammps_scatter(void *, char *, int, int, void *);
|
||||
extern void lammps_scatter_subset(void *, char *, int, int, int, int *, void *);
|
||||
extern void lammps_gather_atoms(void *, char *, int, int, void *);
|
||||
extern void lammps_gather_atoms_concat(void *, char *, int, int, void *);
|
||||
extern void lammps_gather_atoms_subset(void *, char *, int, int, int, int *, void *);
|
||||
extern void lammps_scatter_atoms(void *, char *, int, int, void *);
|
||||
extern void lammps_scatter_atoms_subset(void *, char *, int, int, int, int *, void *);
|
||||
extern int lammps_config_has_mpi_support();
|
||||
extern int lammps_config_has_package(const char *);
|
||||
extern int lammps_config_package_count();
|
||||
extern int lammps_config_package_name(int, char *, int);
|
||||
extern int lammps_config_has_gzip_support();
|
||||
extern int lammps_config_has_png_support();
|
||||
extern int lammps_config_has_jpeg_support();
|
||||
extern int lammps_config_has_ffmpeg_support();
|
||||
extern int lammps_config_has_exceptions();
|
||||
extern int lammps_has_style(void *, const char *, const char *);
|
||||
extern int lammps_style_count(void *, const char *);
|
||||
extern int lammps_style_name(void *, const char *, int, char *, int);
|
||||
extern int lammps_has_id(void *, const char *, const char *);
|
||||
extern int lammps_id_count(void *, const char *);
|
||||
extern int lammps_id_name(void *, const char *, int, char *, int);
|
||||
extern int lammps_find_pair_neighlist(void*, char *, int, int, int);
|
||||
extern int lammps_find_fix_neighlist(void*, char *, int);
|
||||
extern int lammps_find_compute_neighlist(void*, char *, int);
|
||||
extern int lammps_neighlist_num_elements(void*, int);
|
||||
extern void lammps_neighlist_element_neighbors(void *, int, int, int *, int *, int ** );
|
||||
/*
|
||||
extern int lammps_encode_image_flags(int ix, int iy, int iz);
|
||||
extern void lammps_decode_image_flags(int image, int *flags);
|
||||
extern int64_t lammps_encode_image_flags(int ix, int iy, int iz);
|
||||
extern void lammps_decode_image_flags(int64_t image, int *flags);
|
||||
extern void lammps_set_fix_external_callback(void *, char *, FixExternalFnPtr, void*);
|
||||
extern void lammps_set_fix_external_callback(void *, char *, FixExternalFnPtr, void*);
|
||||
extern void lammps_set_fix_external_callback(void *, char *, FixExternalFnPtr, void*);
|
||||
extern void lammps_fix_external_set_energy_global(void *, char *, double);
|
||||
extern void lammps_fix_external_set_virial_global(void *, char *, double *);
|
||||
*/
|
||||
extern int lammps_is_running(void *handle);
|
||||
extern void lammps_force_timeout(void *handle);
|
||||
extern int lammps_has_error(void *handle);
|
||||
extern int lammps_get_last_error_message(void *handle, char *buffer, int buf_size);
|
||||
|
||||
Reference in New Issue
Block a user