forked from lijiext/lammps
85 lines
2.5 KiB
Python
85 lines
2.5 KiB
Python
#!/usr/bin/env python
|
|
|
|
"""
|
|
Install.py tool to build the CSlib library
|
|
used to automate the steps described in the README file in this dir
|
|
"""
|
|
|
|
from __future__ import print_function
|
|
import sys, os, subprocess, shutil
|
|
from argparse import ArgumentParser
|
|
|
|
sys.path.append('..')
|
|
from install_helpers import fullpath
|
|
|
|
parser = ArgumentParser(prog='Install.py',
|
|
description="LAMMPS library build wrapper script")
|
|
|
|
# help message
|
|
|
|
HELP = """
|
|
Syntax from src dir: make lib-message args="-m"
|
|
or: make lib-message args="-s -z"
|
|
Syntax from lib dir: python Install.py -m
|
|
or: python Install.py -s -z
|
|
|
|
Example:
|
|
|
|
make lib-message args="-m -z" # build parallel CSlib with ZMQ support
|
|
make lib-message args="-s" # build serial CSlib with no ZMQ support
|
|
"""
|
|
|
|
pgroup = parser.add_mutually_exclusive_group()
|
|
pgroup.add_argument("-m", "--mpi", action="store_true",
|
|
help="parallel build of CSlib with MPI")
|
|
pgroup.add_argument("-s", "--serial", action="store_true",
|
|
help="serial build of CSlib")
|
|
parser.add_argument("-z", "--zmq", default=False, action="store_true",
|
|
help="build CSlib with ZMQ socket support, default ()")
|
|
|
|
args = parser.parse_args()
|
|
|
|
# print help message and exit, if neither build nor path options are given
|
|
if not args.mpi and not args.serial:
|
|
parser.print_help()
|
|
sys.exit(HELP)
|
|
|
|
mpiflag = args.mpi
|
|
serialflag = args.serial
|
|
zmqflag = args.zmq
|
|
|
|
# build CSlib
|
|
# copy resulting lib to cslib/src/libmessage.a
|
|
# copy appropriate Makefile.lammps.* to Makefile.lammps
|
|
|
|
print("Building CSlib ...")
|
|
srcdir = fullpath(os.path.join("cslib", "src"))
|
|
|
|
if mpiflag and zmqflag:
|
|
cmd = "make -C %s lib_parallel" % srcdir
|
|
elif mpiflag and not zmqflag:
|
|
cmd = "make -C %s lib_parallel zmq=no" % srcdir
|
|
elif not mpiflag and zmqflag:
|
|
cmd = "make -C %s lib_serial" % srcdir
|
|
elif not mpiflag and not zmqflag:
|
|
cmd = "make -C %s lib_serial zmq=no" % srcdir
|
|
|
|
print(cmd)
|
|
try:
|
|
txt = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
|
|
print(txt.decode('UTF-8'))
|
|
except subprocess.CalledProcessError as e:
|
|
print("Make failed with:\n %s" % e.output.decode('UTF-8'))
|
|
sys.exit(1)
|
|
|
|
slb = os.path.join(srcdir, "libcsnompi.a")
|
|
if mpiflag:
|
|
slb = os.path.join(srcdir, "libcsmpi.a")
|
|
shutil.copyfile(slb, os.path.join(srcdir, "libmessage.a"))
|
|
|
|
smk = "Makefile.lammps.nozmq"
|
|
if zmqflag:
|
|
smk = "Makefile.lammps.zmq"
|
|
shutil.copyfile(smk, "Makefile.lammps")
|
|
print("Using %s for Makefile.lammps" % smk)
|