-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
891 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
########################################## | ||
# CMake build system for plugin examples. | ||
# The is meant to be used as a template for plugins that are | ||
# distributed independent from the LAMMPS package. | ||
########################################## | ||
|
||
cmake_minimum_required(VERSION 3.10) | ||
if(POLICY CMP0077) | ||
cmake_policy(SET CMP0077 NEW) | ||
endif() | ||
|
||
project(bfieldplugin VERSION 1.0 LANGUAGES CXX) | ||
|
||
if(NOT LAMMPS_SOURCE_DIR) | ||
message(FATAL_ERROR "Must set LAMMPS_SOURCE_DIR variable") | ||
endif() | ||
set(CMAKE_MODULE_PATH "${LAMMPS_SOURCE_DIR}/../cmake/Modules") | ||
if (NOT TARGET lammps) | ||
include(CheckIncludeFileCXX) | ||
include(LAMMPSInterfacePlugin) | ||
endif() | ||
|
||
########################## | ||
# building the plugins | ||
|
||
add_library(bfieldplugin MODULE bfieldplugin.cpp ${CMAKE_CURRENT_SOURCE_DIR}/fix_bfield.cpp) | ||
target_link_libraries(bfieldplugin PRIVATE lammps) | ||
set_target_properties(bfieldplugin PROPERTIES PREFIX "" SUFFIX ".so") | ||
|
||
# MacOS seems to need this | ||
if(CMAKE_SYSTEM_NAME STREQUAL Darwin) | ||
set_target_properties(bfieldplugin PROPERTIES LINK_FLAGS "-Wl,-undefined,dynamic_lookup") | ||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") | ||
# tell CMake to export all symbols to a .dll on Windows with special case for MinGW cross-compilers | ||
set_target_properties(bfieldplugin PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) | ||
if(CMAKE_CROSSCOMPILING) | ||
set_target_properties(bfieldplugin PROPERTIES LINK_FLAGS "-Wl,--export-all-symbols") | ||
endif() | ||
|
||
get_lammps_version(${LAMMPS_SOURCE_DIR}/version.h LAMMPS_VERSION) | ||
find_program(MAKENSIS_PATH makensis) | ||
if(MAKENSIS_PATH) | ||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/../lammps.ico | ||
${CMAKE_CURRENT_SOURCE_DIR}/../lammps-text-logo-wide.bmp ${CMAKE_CURRENT_SOURCE_DIR}/bfieldplugin.nsis ${CMAKE_BINARY_DIR}) | ||
if(TARGET package) | ||
set(mytarget package-USER-BFIELD) | ||
else() | ||
set(mytarget package) | ||
endif() | ||
if(BUILD_MPI) | ||
if(USE_MSMPI AND CMAKE_CROSSCOMPILING) | ||
add_custom_target(${mytarget} ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MSMPI bfieldplugin.nsis | ||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | ||
DEPENDS bfieldplugin ${CMAKE_BINARY_DIR}/lammps.ico ${CMAKE_BINARY_DIR}/lammps-text-logo-wide.bmp ${CMAKE_BINARY_DIR}/bfieldplugin.nsis | ||
BYPRODUCTS ${CMAKE_BINARY_DIR}/LAMMPS-USER-BFIELD-plugin-${LAMMPS_VERSION}-MSMPI.exe) | ||
else() | ||
add_custom_target(${mytarget} ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MPI bfieldplugin.nsis | ||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | ||
DEPENDS bfieldplugin ${CMAKE_BINARY_DIR}/lammps.ico ${CMAKE_BINARY_DIR}/lammps-text-logo-wide.bmp ${CMAKE_BINARY_DIR}/bfieldplugin.nsis | ||
BYPRODUCTS ${CMAKE_BINARY_DIR}/LAMMPS-USER-BFIELD-plugin-${LAMMPS_VERSION}-MPI.exe) | ||
endif() | ||
else() | ||
add_custom_target(${mytarget} ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION} bfieldplugin.nsis | ||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | ||
DEPENDS bfieldplugin ${CMAKE_BINARY_DIR}/lammps.ico ${CMAKE_BINARY_DIR}/lammps-text-logo-wide.bmp ${CMAKE_BINARY_DIR}/bfieldplugin.nsis | ||
BYPRODUCTS LAMMPS-USER-BFIELD-plugin-${LAMMPS_VERSION}.exe) | ||
endif() | ||
endif() | ||
else() | ||
set_target_properties(bfieldplugin PROPERTIES LINK_FLAGS "-rdynamic") | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
|
||
#include "lammpsplugin.h" | ||
|
||
#include "version.h" | ||
|
||
#include "fix_bfield.h" | ||
|
||
using namespace LAMMPS_NS; | ||
|
||
static Fix *bfieldcreator(LAMMPS *lmp, int argc, char **argv) | ||
{ | ||
return new FixBfield(lmp, argc, argv); | ||
} | ||
|
||
extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc) | ||
{ | ||
lammpsplugin_t plugin; | ||
lammpsplugin_regfunc register_plugin = (lammpsplugin_regfunc) regfunc; | ||
|
||
// register bfield fix style | ||
plugin.version = LAMMPS_VERSION; | ||
plugin.style = "fix"; | ||
plugin.name = "bfield"; | ||
plugin.info = "fix bfield plugin v1.0"; | ||
plugin.author = "Axel Kohlmeyer ([email protected])"; | ||
plugin.creator.v2 = (lammpsplugin_factory2 *) &bfieldcreator; | ||
plugin.handle = handle; | ||
(*register_plugin)(&plugin, lmp); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
#!Nsis Installer Command Script | ||
# | ||
# The following external defines are recognized: | ||
# ${VERSION} = YYYYMMDD | ||
|
||
!include "MUI2.nsh" | ||
!include "FileFunc.nsh" | ||
|
||
!define MUI_ICON "lammps.ico" | ||
!define MUI_UNICON "lammps.ico" | ||
!define MUI_HEADERIMAGE | ||
!define MUI_HEADERIMAGE_BITMAP "lammps-text-logo-wide.bmp" | ||
!define MUI_HEADERIMAGE_RIGHT | ||
|
||
Unicode true | ||
XPStyle on | ||
|
||
!include "LogicLib.nsh" | ||
!addplugindir "envvar/Plugins/x86-unicode" | ||
!include "x64.nsh" | ||
|
||
RequestExecutionLevel user | ||
|
||
!macro VerifyUserIsAdmin | ||
UserInfo::GetAccountType | ||
pop $0 | ||
${If} $0 != "admin" | ||
messageBox mb_iconstop "Administrator rights required!" | ||
setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED | ||
quit | ||
${EndIf} | ||
!macroend | ||
|
||
!define BFIELDPLUGIN "LAMMPS USER-BFIELD Plugin ${VERSION}" | ||
OutFile "LAMMPS-USER-BFIELD-plugin-${VERSION}.exe" | ||
|
||
Name "${BFIELDPLUGIN}" | ||
InstallDir "$LOCALAPPDATA\${BFIELDPLUGIN}" | ||
|
||
ShowInstDetails show | ||
ShowUninstDetails show | ||
SetCompressor lzma | ||
|
||
!define MUI_ABORTWARNING | ||
|
||
!insertmacro MUI_PAGE_DIRECTORY | ||
!insertmacro MUI_PAGE_INSTFILES | ||
|
||
!insertmacro MUI_UNPAGE_CONFIRM | ||
!insertmacro MUI_UNPAGE_INSTFILES | ||
|
||
!insertmacro MUI_LANGUAGE "English" | ||
|
||
function .onInit | ||
# Determine if LAMMPS was already installed and check whether it was in 32-bit | ||
# or 64-bit. Then look up path to uninstaller and offer to uninstall or quit | ||
SetRegView 32 | ||
ReadRegDWORD $0 HKCU "Software\LAMMPS-USER-BFIELD" "Bits" | ||
SetRegView LastUsed | ||
${If} $0 == "32" | ||
SetRegView 32 | ||
${ElseIf} $0 == "64" | ||
SetRegView 64 | ||
${Else} | ||
SetRegView 64 | ||
${EndIf} | ||
ClearErrors | ||
ReadRegStr $R0 HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" "UninstallString" | ||
SetRegView LastUsed | ||
${If} ${Errors} | ||
DetailPrint "LAMMPS USER-BFIELD plugin not (yet) installed" | ||
${Else} | ||
MessageBox MB_YESNO "LAMMPS USER-BFIELD plugin ($0 bit) is already installed. Uninstall existing version?" /SD IDYES IDNO Quit | ||
Pop $R1 | ||
StrCmp $R1 2 Quit +1 | ||
Exec $R0 | ||
Quit: | ||
Quit | ||
${EndIf} | ||
setShellVarContext all | ||
functionEnd | ||
|
||
Section "${BFIELDPLUGIN}" SecPaceplugin | ||
SectionIn RO | ||
# Write LAMMPS installation bitness marker. Always use 32-bit registry view | ||
SetRegView 32 | ||
IntFmt $0 "0x%08X" 64 | ||
WriteRegDWORD HKCU "Software\LAMMPS-USER-BFIELD" "Bits" $0 | ||
|
||
# Switch to "native" registry view | ||
SetRegView 64 | ||
SetShellVarContext current | ||
|
||
SetOutPath "$INSTDIR" | ||
File lammps.ico | ||
File bfieldplugin.so | ||
|
||
# Register Application and its uninstaller | ||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" \ | ||
"DisplayName" "${BFIELDPLUGIN}" | ||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" \ | ||
"Publisher" "The LAMMPS and USER-BFIELD Developers" | ||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" \ | ||
"URLInfoAbout" "lammps.org" | ||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" \ | ||
"DisplayIcon" "$INSTDIR\lammps.ico" | ||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" \ | ||
"DisplayVersion" "${VERSION}" | ||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" \ | ||
"InstallLocation" "$INSTDIR" | ||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" \ | ||
"UninstallString" "$\"$INSTDIR\uninstall.exe$\"" | ||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" \ | ||
"QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S" | ||
|
||
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2 | ||
IntFmt $0 "0x%08X" $0 | ||
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" \ | ||
"EstimatedSize" "$0" | ||
|
||
# update path variables | ||
EnVar::SetHKCU | ||
# add to LAMMPS plugin search path | ||
EnVar::AddValue "LAMMPS_PLUGIN_PATH" "$INSTDIR" | ||
|
||
WriteUninstaller "$INSTDIR\Uninstall.exe" | ||
SectionEnd | ||
|
||
function un.onInit | ||
SetShellVarContext current | ||
functionEnd | ||
|
||
Section "Uninstall" | ||
# remove LAMMPS bitness/installation indicator always in 32-bit registry view | ||
SetRegView 32 | ||
DeleteRegKey HKCU "Software\LAMMPS-USER-BFIELD" | ||
|
||
# unregister extension, and uninstall info | ||
SetRegView 64 | ||
SetShellVarContext current | ||
# unregister installation | ||
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-USER-BFIELD" | ||
|
||
# update path variables | ||
EnVar::SetHKCU | ||
# remove entry from LAMMPS plugin search path | ||
EnVar::DeleteValue "LAMMPS_PLUGIN_PATH" "$INSTDIR" | ||
|
||
Delete /REBOOTOK "$INSTDIR\bfieldplugin.so" | ||
Delete /REBOOTOK "$INSTDIR\Uninstall.exe" | ||
Delete /REBOOTOK "$INSTDIR\lammps.ico" | ||
RMDir /REBOOTOK "$INSTDIR" | ||
SectionEnd | ||
|
||
# Local Variables: | ||
# mode: sh | ||
# End: |
Oops, something went wrong.