1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
PORTNAME= lammps
PORTVERSION= ${GH_TAGNAME:C/(stable|patch)_([0-9]{1,2})([A-Z][a-z][a-z])([0-9]{4})/\4.\3.\2/S/Jan/01/S/Feb/02/S/Mar/03/S/Apr/04/S/May/05/S/Jun/06/S/Jul/07/S/Aug/08/S/Sep/09/S/Oct/10/S/Nov/11/S/Dec/12/S/_update/./:C/\.([1-9])$/.0\1/}
PORTREVISION= 1
CATEGORIES= science
MAINTAINER= yuri@FreeBSD.org
COMMENT= Classical molecular dynamics code with a focus on materials modeling
WWW= https://lammps.sandia.gov/
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/LICENSE
BROKEN_i386= undefined reference to `__atomic_load'
LIB_DEPENDS= libevent.so:devel/libevent \
libfftw3.so:math/fftw3 \
libhwloc.so:devel/hwloc2 \
libnghttp2.so:www/libnghttp2 \
libpciaccess.so:devel/libpciaccess \
libssh2.so:security/libssh2 \
libzstd.so:archivers/zstd
USES= blaslapack:openblas cmake:noninja,testing compiler:c++14-lang eigen:3 fortran gnome localbase:ldflags python shebangfix
USE_GNOME= libxml2
USE_LDCONFIG= yes
USE_PYTHON= cython
USE_GITHUB= yes
GH_TAGNAME= patch_21Nov2023
SHEBANG_GLOB= *.sh *.bash
SHEBANG_FILES= lib/kokkos/bin/nvcc_wrapper
CMAKE_ON= BUILD_SHARED_LIBS
CMAKE_SOURCE_PATH= ${WRKSRC}/cmake
CMAKE_ARGS= -DBLA_VENDOR:STRING="OpenBLAS" ${CMAKE_ARGS_${CHOSEN_COMPILER_TYPE}} \
-DPython_EXECUTABLE=${PYTHON_CMD}
CMAKE_ARGS_gcc= -DBUILD_OMP:BOOL=false
CMAKE_TESTING_ON= ENABLE_TESTING # 3 tests fail, see https://github.com/lammps/lammps/issues/3875
# enable packages (for a complete list see STANDARD_PACKAGES in cmake/CMakeLists.txt)
CMAKE_ON+= PKG_ASPHERE PKG_ATC PKG_AWPMD PKG_BOCS PKG_BODY PKG_BROWNIAN PKG_CG-DNA PKG_CG-SDK PKG_CLASS2
CMAKE_ON+= PKG_COLLOID PKG_COLVARS PKG_COMPRESS PKG_DIELECTRIC PKG_DIFFRACTION PKG_DIPOLE PKG_DPD-BASIC PKG_DPD-MESO PKG_DPD-REACT PKG_DPD-SMOOTH
CMAKE_ON+= PKG_DRUDE PKG_EFF PKG_EXTRA-COMPUTE PKG_EXTRA-DUMP PKG_EXTRA-FIX PKG_EXTRA-MOLECULE PKG_EXTRA-PAIR PKG_FEP PKG_GRANULAR PKG_H5MD
CMAKE_ON+= PKG_INTERLAYER PKG_KIM PKG_KSPACE PKG_LATBOLTZ PKG_LATTE PKG_MACHDYN PKG_MANIFOLD PKG_MANYBODY PKG_MC
CMAKE_ON+= PKG_MEAM PKG_MESSAGE PKG_MGPT PKG_MISC PKG_ML-IAP PKG_ML-RANN
CMAKE_ON+= PKG_ML-SNAP PKG_MOFFF PKG_MOLECULE PKG_MOLFILE PKG_MPIIO PKG_ORIENT PKG_PERI PKG_PHONON
CMAKE_ON+= PKG_PLUGIN PKG_PLUMED PKG_POEMS PKG_PTM PKG_PYTHON PKG_QEQ PKG_QMMM PKG_QTB PKG_REACTION PKG_REAXFF
CMAKE_ON+= PKG_REPLICA PKG_RIGID PKG_SHOCK PKG_SMTBQ PKG_SPH PKG_SPIN PKG_SRD PKG_TALLY PKG_UEF
CMAKE_ON+= PKG_VORONOI PKG_YAFF
# Packages requiring extra downloades or dependencies: PKG_MSCG PKG_ADIOS PKG_MDI PKG_MESONT PKG_ML-PACE PKG_NETCDF PKG_ML-QUIP PKG_SCAFACOS PKG_VTK
# PKG_ML-HDNNP downloads https://github.com/CompPhysVienna/n2p2/archive/v2.1.4.tar.gz
OPTIONS_DEFINE= EXCEPTIONS JPEG PNG GZIP FFMPEG
OPTIONS_GROUP= PARALLEL PACKAGES
OPTIONS_DEFAULT= EXCEPTIONS MPI OPENMP JPEG PNG GZIP FFMPEG H5MD KIM KOKKOS LATTE NETCDF PLUMED VORONOI ${OPTIONS_DEFAULT_${CHOSEN_COMPILER_TYPE}}
OPTIONS_SUB= yes
PARALLEL_DESC= Enable parallelizations:
PACKAGES_DESC= Enable packages:
OPTIONS_GROUP_PARALLEL= MPI OPENMP ${OPTIONS_DEFINE_${CHOSEN_COMPILER_TYPE}}
OPTIONS_GROUP_PACKAGES= H5MD KIM KOKKOS LATTE NETCDF PLUMED VORONOI VTK
EXCEPTIONS_DESC= Enable the use of C++ exceptions
EXCEPTIONS_CMAKE_BOOL= LAMMPS_EXCEPTIONS
MPI_CMAKE_BOOL= BUILD_MPI PKG_MPIIO
MPI_LIB_DEPENDS= libmpi_cxx.so:net/openmpi4
MPI_USES= compiler:c11
FFMPEG_CMAKE_BOOL= WITH_FFMPEG
FFMPEG_BUILD_DEPENDS= ffmpeg:multimedia/ffmpeg
FFMPEG_RUN_DEPENDS= ffmpeg:multimedia/ffmpeg
JPEG_CMAKE_BOOL= WITH_JPEG
JPEG_USES= jpeg
PNG_CMAKE_BOOL= WITH_PNG
PNG_LIB_DEPENDS= libpng.so:graphics/png
GZIP_DESC= Enable GZIP support
GZIP_CMAKE_BOOL= WITH_GZIP
H5MD_DESC= H5MD package based on the libhdf5 library
H5MD_CMAKE_BOOL= PKG_H5MD
H5MD_LIB_DEPENDS= libhdf5.so:science/hdf5 \
libsz.so:science/libaec
KIM_DESC= KIM package based on the OpenKim library/repository
KIM_USES= pkgconfig
KIM_CMAKE_BOOL= PKG_KIM
KIM_CMAKE_ON= -DDOWNLOAD_KIM:BOOL=OFF
KIM_LIB_DEPENDS= libkim-api.so:science/kim-api \
libcurl.so:ftp/curl
KIM_RUN_DEPENDS= openkim-models>0:science/openkim-models
KOKKOS_DESC= Kokkos package based on the libkokkos library
KOKKOS_CMAKE_BOOL= PKG_KOKKOS EXTERNAL_KOKKOS
KOKKOS_LIB_DEPENDS= libkokkoscore.so:devel/kokkos
LATTE_DESC= Latte package based on the liblatte library
LATTE_CMAKE_BOOL= PKG_LATTE
LATTE_LIB_DEPENDS= liblatte.so:science/latte
NETCDF_DESC= NetCDF package based on the NetCDF library
NETCDF_CMAKE_BOOL= PKG_NETCDF
NETCDF_LIB_DEPENDS= libnetcdf.so:science/netcdf
PLUMED_DESC= Plumed package based on the plumed library
PLUMED_USES= pkgconfig
PLUMED_CMAKE_BOOL= PKG_PLUMED
PLUMED_CMAKE_ON= -DPLUMED_MODE=shared
PLUMED_LIB_DEPENDS= libplumed.so:science/plumed
VORONOI_DESC= Voro++, Voronoi tessellation package
VORONOI_CMAKE_BOOL= PKG_VORONOI
VORONOI_LIB_DEPENDS= libvoro++.so:science/voro++
VTK_DESC= VTK package based on the external VTK-${VTK_VER:R} library
VTK_CMAKE_BOOL= PKG_VTK
VTK_CMAKE_ON= -DVTK_DIR:PATH=${LOCALBASE}/lib/cmake/vtk-${VTK_VER}
VTK_USES= gl qt:5 xorg
VTK_USE= GL=opengl qt=core,declarative,gui,network,opengl,sql,widgets xorg=ice,sm,x11,xext,xt
VTK_LIB_DEPENDS= libvtkCommonCore-${VTK_VER}.so:math/vtk${VTK_VER:R} \
libexpat.so:textproc/expat2 \
libfreetype.so:print/freetype2 \
libtiff.so:graphics/tiff
PORTSCOUT= ignore:1 # due to a special version tagging scheme that this project uses portscout fails to find new versions, watching their GitHub release page instead
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MOPENMP}
CMAKE_ARGS+= -DBUILD_OMP:BOOL=true
.endif
xpost-patch:
# adjust SHELL in Makefile
@${REINPLACE_CMD} 's|SHELL = /bin/bash|SHELL = ${LOCALBASE}/bin/bash|' ${WRKSRC}/src/Makefile
# fix python version, also see https://github.com/lammps/lammps/issues/3098, https://github.com/lammps/lammps/issues/3099
@${FIND} ${WRKSRC} -name "CMakeLists.txt" -o -name "*.cmake" | ${XARGS} ${REINPLACE_CMD} -e ' \
s|find_package(Python3 REQUIRED |find_package(Python $${FREEBSD_PYTHON_VER} EXACT REQUIRED |; \
s|find_package(Python 3.5 COMPONENTS |find_package(Python $${FREEBSD_PYTHON_VER} EXACT COMPONENTS |; \
s|find_package(Python 3.6 COMPONENTS |find_package(Python $${FREEBSD_PYTHON_VER} EXACT COMPONENTS |; \
s|find_package(Python3 REQUIRED |find_package(Python $${FREEBSD_PYTHON_VER} EXACT REQUIRED |; \
s|find_package(Python COMPONENTS |find_package(Python3 $${FREEBSD_PYTHON_VER} EXACT COMPONENTS |; \
s|find_package(Python3 COMPONENTS |find_package(Python3 $${FREEBSD_PYTHON_VER} EXACT COMPONENTS |; \
s|find_package(Python QUIET COMPONENTS |find_package(Python3 $${FREEBSD_PYTHON_VER} EXACT QUIET COMPONENTS |; \
s|find_package(Python REQUIRED COMPONENTS |find_package(Python3 $${FREEBSD_PYTHON_VER} EXACT REQUIRED COMPONENTS | \
'
post-patch-FFMPEG-off:
@${REINPLACE_CMD} 's|find_program(FFMPEG_EXECUTABLE|#&|' ${WRKSRC}/cmake/CMakeLists.txt
post-install:
@${RM} -r ${STAGEDIR}${PREFIX}/lib/python*
.include <../../math/vtk9/Makefile.version>
.include <bsd.port.mk>
|