Merge branch 'develop' into collected-small-fixes
This commit is contained in:
@ -7,6 +7,10 @@ if(CMAKE_VERSION VERSION_LESS 3.20)
|
|||||||
message(WARNING "LAMMPS is planning to require at least CMake version 3.20 by Summer 2025. Please upgrade!")
|
message(WARNING "LAMMPS is planning to require at least CMake version 3.20 by Summer 2025. Please upgrade!")
|
||||||
endif()
|
endif()
|
||||||
########################################
|
########################################
|
||||||
|
# initialize version variables with project command
|
||||||
|
if(POLICY CMP0048)
|
||||||
|
cmake_policy(SET CMP0048 NEW)
|
||||||
|
endif()
|
||||||
# set policy to silence warnings about ignoring <PackageName>_ROOT but use it
|
# set policy to silence warnings about ignoring <PackageName>_ROOT but use it
|
||||||
if(POLICY CMP0074)
|
if(POLICY CMP0074)
|
||||||
cmake_policy(SET CMP0074 NEW)
|
cmake_policy(SET CMP0074 NEW)
|
||||||
@ -27,7 +31,10 @@ endif()
|
|||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
project(lammps CXX)
|
project(lammps
|
||||||
|
DESCRIPTION "The LAMMPS Molecular Dynamics Simulator"
|
||||||
|
HOMEPAGE_URL "https://www.lammps.org"
|
||||||
|
LANGUAGES CXX C)
|
||||||
set(SOVERSION 0)
|
set(SOVERSION 0)
|
||||||
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
|
||||||
@ -196,6 +203,10 @@ if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND BUILD_SHARED_LIBS)
|
|||||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# do not include the (obsolete) MPI C++ bindings which makes for leaner object files
|
||||||
|
# and avoids namespace conflicts. Put this early to increase its visbility.
|
||||||
|
set(MPI_CXX_SKIP_MPICXX TRUE CACHE BOOL "Skip MPI C++ Bindings" FORCE)
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# User input options #
|
# User input options #
|
||||||
########################################################################
|
########################################################################
|
||||||
@ -379,7 +390,6 @@ if(PKG_ADIOS)
|
|||||||
# The search for ADIOS2 must come before MPI because
|
# The search for ADIOS2 must come before MPI because
|
||||||
# it includes its own MPI search with the latest FindMPI.cmake
|
# it includes its own MPI search with the latest FindMPI.cmake
|
||||||
# script that defines the MPI::MPI_C target
|
# script that defines the MPI::MPI_C target
|
||||||
enable_language(C)
|
|
||||||
find_package(ADIOS2 REQUIRED)
|
find_package(ADIOS2 REQUIRED)
|
||||||
if(BUILD_MPI)
|
if(BUILD_MPI)
|
||||||
if(NOT ADIOS2_HAVE_MPI)
|
if(NOT ADIOS2_HAVE_MPI)
|
||||||
@ -394,21 +404,18 @@ if(PKG_ADIOS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT CMAKE_CROSSCOMPILING)
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
find_package(MPI QUIET)
|
find_package(MPI QUIET COMPONENTS CXX)
|
||||||
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
||||||
else()
|
else()
|
||||||
option(BUILD_MPI "Build MPI version" OFF)
|
option(BUILD_MPI "Build MPI version" OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(BUILD_MPI)
|
if(BUILD_MPI)
|
||||||
# do not include the (obsolete) MPI C++ bindings which makes
|
|
||||||
# for leaner object files and avoids namespace conflicts
|
|
||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
|
||||||
# We use a non-standard procedure to cross-compile with MPI on Windows
|
# We use a non-standard procedure to cross-compile with MPI on Windows
|
||||||
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
||||||
include(MPI4WIN)
|
include(MPI4WIN)
|
||||||
else()
|
else()
|
||||||
find_package(MPI REQUIRED)
|
find_package(MPI REQUIRED COMPONENTS CXX)
|
||||||
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
||||||
if(LAMMPS_LONGLONG_TO_LONG)
|
if(LAMMPS_LONGLONG_TO_LONG)
|
||||||
target_compile_definitions(lammps PRIVATE -DLAMMPS_LONGLONG_TO_LONG)
|
target_compile_definitions(lammps PRIVATE -DLAMMPS_LONGLONG_TO_LONG)
|
||||||
@ -535,7 +542,6 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_STANDARD GREATER_EQUA
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR PKG_RHEO OR BUILD_TOOLS)
|
if(PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR PKG_RHEO OR BUILD_TOOLS)
|
||||||
enable_language(C)
|
|
||||||
if (NOT USE_INTERNAL_LINALG)
|
if (NOT USE_INTERNAL_LINALG)
|
||||||
find_package(LAPACK)
|
find_package(LAPACK)
|
||||||
find_package(BLAS)
|
find_package(BLAS)
|
||||||
|
|||||||
@ -62,6 +62,9 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|||||||
endif()
|
endif()
|
||||||
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
|
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
|
||||||
|
|
||||||
|
# skip over obsolete MPI-2 C++ bindings
|
||||||
|
set(MPI_CXX_SKIP_MPICXX TRUE)
|
||||||
|
|
||||||
#######
|
#######
|
||||||
# helper functions from LAMMPSUtils.cmake
|
# helper functions from LAMMPSUtils.cmake
|
||||||
function(validate_option name values)
|
function(validate_option name values)
|
||||||
@ -128,8 +131,7 @@ endif()
|
|||||||
################################################################################
|
################################################################################
|
||||||
# MPI configuration
|
# MPI configuration
|
||||||
if(NOT CMAKE_CROSSCOMPILING)
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
find_package(MPI QUIET COMPONENTS CXX)
|
||||||
find_package(MPI QUIET)
|
|
||||||
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
||||||
else()
|
else()
|
||||||
option(BUILD_MPI "Build MPI version" OFF)
|
option(BUILD_MPI "Build MPI version" OFF)
|
||||||
@ -141,9 +143,6 @@ if(BUILD_MPI)
|
|||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
set(MPI_CXX_SKIP_MPICXX TRUE)
|
||||||
# We use a non-standard procedure to cross-compile with MPI on Windows
|
# We use a non-standard procedure to cross-compile with MPI on Windows
|
||||||
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
||||||
# Download and configure MinGW compatible MPICH development files for Windows
|
|
||||||
option(USE_MSMPI "Use Microsoft's MS-MPI SDK instead of MPICH2-1.4.1" OFF)
|
|
||||||
if(USE_MSMPI)
|
|
||||||
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
||||||
@ -167,52 +166,15 @@ if(BUILD_MPI)
|
|||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
set_target_properties(MPI::MPI_CXX PROPERTIES
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
# set variables for status reporting at the end of CMake run
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
||||||
else()
|
else()
|
||||||
# Download and configure custom MPICH files for Windows
|
find_package(MPI REQUIRED COMPONENTS CXX)
|
||||||
message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows")
|
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball")
|
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball")
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
|
|
||||||
|
|
||||||
include(ExternalProject)
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN64_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
else()
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN32_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN32_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
|
||||||
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
|
||||||
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
|
||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
find_package(MPI REQUIRED)
|
|
||||||
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
||||||
if(LAMMPS_LONGLONG_TO_LONG)
|
if(LAMMPS_LONGLONG_TO_LONG)
|
||||||
target_compile_definitions(lammps INTERFACE -DLAMMPS_LONGLONG_TO_LONG)
|
target_compile_definitions(lammps INTERFACE -DLAMMPS_LONGLONG_TO_LONG)
|
||||||
|
|||||||
@ -75,13 +75,25 @@ function(get_lammps_version version_header variable)
|
|||||||
list(FIND MONTHS "${month}" month)
|
list(FIND MONTHS "${month}" month)
|
||||||
string(LENGTH ${day} day_length)
|
string(LENGTH ${day} day_length)
|
||||||
string(LENGTH ${month} month_length)
|
string(LENGTH ${month} month_length)
|
||||||
if(day_length EQUAL 1)
|
# no leading zero needed for new version string with dots
|
||||||
set(day "0${day}")
|
# if(day_length EQUAL 1)
|
||||||
|
# set(day "0${day}")
|
||||||
|
# endif()
|
||||||
|
# if(month_length EQUAL 1)
|
||||||
|
# set(month "0${month}")
|
||||||
|
#endif()
|
||||||
|
file(STRINGS ${version_header} line REGEX LAMMPS_UPDATE)
|
||||||
|
string(REGEX REPLACE "#define LAMMPS_UPDATE \"Update ([0-9]+)\"" "\\1" tweak "${line}")
|
||||||
|
if (line MATCHES "#define LAMMPS_UPDATE \"(Maintenance|Development)\"")
|
||||||
|
set(tweak "99")
|
||||||
endif()
|
endif()
|
||||||
if(month_length EQUAL 1)
|
if(NOT tweak)
|
||||||
set(month "0${month}")
|
set(tweak "0")
|
||||||
endif()
|
endif()
|
||||||
set(${variable} "${year}${month}${day}" PARENT_SCOPE)
|
# new version string with dots
|
||||||
|
set(${variable} "${year}.${month}.${day}.${tweak}" PARENT_SCOPE)
|
||||||
|
# old version string without dots
|
||||||
|
# set(${variable} "${year}${month}${day}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(check_for_autogen_files source_dir)
|
function(check_for_autogen_files source_dir)
|
||||||
|
|||||||
@ -1,7 +1,4 @@
|
|||||||
# Download and configure MinGW compatible MPICH development files for Windows
|
# set-up MS-MPI library for Windows with MinGW compatibility
|
||||||
option(USE_MSMPI "Use Microsoft's MS-MPI SDK instead of MPICH2-1.4.1" OFF)
|
|
||||||
|
|
||||||
if(USE_MSMPI)
|
|
||||||
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
||||||
@ -25,50 +22,10 @@ if(USE_MSMPI)
|
|||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
set_target_properties(MPI::MPI_CXX PROPERTIES
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
# set variables for status reporting at the end of CMake run
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
||||||
else()
|
|
||||||
message(STATUS "Downloading and configuring MPICH2-1.4.1 for Windows cross-compilation")
|
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball")
|
|
||||||
set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball")
|
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball")
|
|
||||||
set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball")
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
|
|
||||||
mark_as_advanced(MPICH2_WIN32_DEVEL_URL)
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
|
|
||||||
mark_as_advanced(MPICH2_WIN32_DEVEL_MD5)
|
|
||||||
|
|
||||||
include(ExternalProject)
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN64_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
else()
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN32_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN32_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
|
||||||
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
|
||||||
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
|
||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a")
|
|
||||||
endif()
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@ if(BUILD_OMP)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(BUILD_MPI)
|
if(BUILD_MPI)
|
||||||
target_compile_definitions(colvars PUBLIC -DCOLVARS_MPI)
|
|
||||||
target_link_libraries(colvars PUBLIC MPI::MPI_CXX)
|
target_link_libraries(colvars PUBLIC MPI::MPI_CXX)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@ -254,7 +254,7 @@ elseif(GPU_API STREQUAL "OPENCL")
|
|||||||
add_library(gpu STATIC ${GPU_LIB_SOURCES})
|
add_library(gpu STATIC ${GPU_LIB_SOURCES})
|
||||||
target_link_libraries(gpu PRIVATE OpenCL::OpenCL)
|
target_link_libraries(gpu PRIVATE OpenCL::OpenCL)
|
||||||
target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu)
|
target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu)
|
||||||
target_compile_definitions(gpu PRIVATE -DUSE_OPENCL -D_${GPU_PREC_SETTING})
|
target_compile_definitions(gpu PRIVATE -DUSE_OPENCL -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES})
|
||||||
if(GPU_DEBUG)
|
if(GPU_DEBUG)
|
||||||
target_compile_definitions(gpu PRIVATE -DUCL_DEBUG -DGERYON_KERNEL_DUMP)
|
target_compile_definitions(gpu PRIVATE -DUCL_DEBUG -DGERYON_KERNEL_DUMP)
|
||||||
else()
|
else()
|
||||||
@ -489,7 +489,6 @@ else()
|
|||||||
target_link_libraries(gpu PRIVATE mpi_stubs)
|
target_link_libraries(gpu PRIVATE mpi_stubs)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES})
|
|
||||||
set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_MACHINE})
|
set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_MACHINE})
|
||||||
target_sources(lammps PRIVATE ${GPU_SOURCES})
|
target_sources(lammps PRIVATE ${GPU_SOURCES})
|
||||||
target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR})
|
target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR})
|
||||||
|
|||||||
@ -21,11 +21,11 @@ if(ENABLE_TESTING)
|
|||||||
# also only verified with Fedora Linux > 30 and Ubuntu 18.04 or 22.04+(Ubuntu 20.04 fails)
|
# also only verified with Fedora Linux > 30 and Ubuntu 18.04 or 22.04+(Ubuntu 20.04 fails)
|
||||||
if((CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if((CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
AND ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")))
|
AND ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")))
|
||||||
if(((CMAKE_LINUX_DISTRO STREQUAL "Ubuntu") AND
|
if(((CMAKE_LINUX_DISTRO STREQUAL "Ubuntu") AND (CMAKE_DISTRO_VERSION VERSION_GREATER_EQUAL 22.04))
|
||||||
((CMAKE_DISTRO_VERSION VERSION_LESS_EQUAL 18.04) OR (CMAKE_DISTRO_VERSION VERSION_GREATER_EQUAL 22.04)))
|
|
||||||
OR ((CMAKE_LINUX_DISTRO STREQUAL "Fedora") AND (CMAKE_DISTRO_VERSION VERSION_GREATER 30)))
|
OR ((CMAKE_LINUX_DISTRO STREQUAL "Fedora") AND (CMAKE_DISTRO_VERSION VERSION_GREATER 30)))
|
||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
set(CMAKE_CUSTOM_LINKER_DEFAULT default)
|
set(CMAKE_CUSTOM_LINKER_DEFAULT default)
|
||||||
|
check_cxx_compiler_flag(--ld-path=${CMAKE_LINKER} HAVE_LD_PATH_FLAG)
|
||||||
check_cxx_compiler_flag(-fuse-ld=mold HAVE_MOLD_LINKER_FLAG)
|
check_cxx_compiler_flag(-fuse-ld=mold HAVE_MOLD_LINKER_FLAG)
|
||||||
check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER_FLAG)
|
check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER_FLAG)
|
||||||
check_cxx_compiler_flag(-fuse-ld=gold HAVE_GOLD_LINKER_FLAG)
|
check_cxx_compiler_flag(-fuse-ld=gold HAVE_GOLD_LINKER_FLAG)
|
||||||
@ -50,6 +50,17 @@ if(ENABLE_TESTING)
|
|||||||
if(NOT "${CMAKE_CUSTOM_LINKER}" STREQUAL "default")
|
if(NOT "${CMAKE_CUSTOM_LINKER}" STREQUAL "default")
|
||||||
target_link_options(lammps PUBLIC -fuse-ld=${CMAKE_CUSTOM_LINKER})
|
target_link_options(lammps PUBLIC -fuse-ld=${CMAKE_CUSTOM_LINKER})
|
||||||
endif()
|
endif()
|
||||||
|
if(HAVE_LD_PATH_FLAG)
|
||||||
|
if("${CMAKE_CUSTOM_LINKER}" STREQUAL "mold")
|
||||||
|
target_link_options(lammps PUBLIC --ld-path=${HAVE_MOLD_LINKER_BIN})
|
||||||
|
elseif("${CMAKE_CUSTOM_LINKER}" STREQUAL "lld")
|
||||||
|
target_link_options(lammps PUBLIC --ld-path=${HAVE_LLD_LINKER_BIN})
|
||||||
|
elseif("${CMAKE_CUSTOM_LINKER}" STREQUAL "gold")
|
||||||
|
target_link_options(lammps PUBLIC --ld-path=${HAVE_GOLD_LINKER_BIN})
|
||||||
|
elseif("${CMAKE_CUSTOM_LINKER}" STREQUAL "bfd")
|
||||||
|
target_link_options(lammps PUBLIC --ld-path=${HAVE_BFD_LINKER_BIN})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@ -19,12 +19,19 @@ set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
|||||||
|
|
||||||
set(MPI_CXX "hipcc" CACHE STRING "" FORCE)
|
set(MPI_CXX "hipcc" CACHE STRING "" FORCE)
|
||||||
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||||
|
set(MPI_C "hipcc" CACHE STRING "" FORCE)
|
||||||
|
set(MPI_C_COMPILER "mpicc" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
|
# change as needed. This is for Fedora Linux 41 and 42
|
||||||
|
set(_libomp_root "/usr/lib/clang/18")
|
||||||
|
# we need to explicitly specify the include dir, since hipcc will
|
||||||
|
# compile each file twice and doesn't find omp.h the second time
|
||||||
|
|
||||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||||
set(OpenMP_C "hipcc" CACHE STRING "" FORCE)
|
set(OpenMP_C "hipcc" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
set(OpenMP_C_FLAGS "-fopenmp=libomp -I${_libomp_root}/include" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_CXX "hipcc" CACHE STRING "" FORCE)
|
set(OpenMP_CXX "hipcc" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
set(OpenMP_CXX_FLAGS "-fopenmp=libomp -I${_libomp_root}/include" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE)
|
set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE)
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
# preset that enables KOKKOS and selects HIP compilation with OpenMP
|
# preset that enables KOKKOS and selects HIP compilation withOUT OpenMP.
|
||||||
# enabled as well. Also sets some performance related compiler flags.
|
# Kokkos OpenMP is not compatible with the second pass of hipcc.
|
||||||
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
|
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_OPENMP OFF CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_HIP ON CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_HIP ON CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ARCH_VEGA90A on CACHE BOOL "" FORCE)
|
set(Kokkos_ARCH_VEGA90A on CACHE BOOL "" FORCE)
|
||||||
@ -11,11 +11,11 @@ set(BUILD_OMP ON CACHE BOOL "" FORCE)
|
|||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -munsafe-fp-atomics" CACHE STRING "" FORCE)
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -munsafe-fp-atomics" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
# If KSPACE is also enabled, use CUFFT for FFTs
|
# If KSPACE is also enabled, use HIPFFT for FFTs
|
||||||
set(FFT_KOKKOS "HIPFFT" CACHE STRING "" FORCE)
|
set(FFT_KOKKOS "HIPFFT" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
# hide deprecation warnings temporarily for stable release
|
# hide deprecation warnings temporarily for stable release
|
||||||
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
|
#set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
# these flags are needed to build with Cray MPICH on OLCF Crusher
|
# these flags are needed to build with Cray MPICH on OLCF Crusher
|
||||||
#-D CMAKE_CXX_FLAGS="-I/${MPICH_DIR}/include"
|
#-D CMAKE_CXX_FLAGS="-I/${MPICH_DIR}/include"
|
||||||
|
|||||||
@ -28,9 +28,6 @@ if(MSVC)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(MPI REQUIRED COMPONENTS C)
|
find_package(MPI REQUIRED COMPONENTS C)
|
||||||
# do not include the (obsolete) MPI C++ bindings which makes
|
|
||||||
# for leaner object files and avoids namespace conflicts
|
|
||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
|
|
||||||
|
|||||||
@ -25,10 +25,10 @@ if(MSVC)
|
|||||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
|
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(MPI QUIET)
|
|
||||||
# do not include the (obsolete) MPI C++ bindings which makes
|
# do not include the (obsolete) MPI C++ bindings which makes
|
||||||
# for leaner object files and avoids namespace conflicts
|
# for leaner object files and avoids namespace conflicts
|
||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
set(MPI_CXX_SKIP_MPICXX TRUE)
|
||||||
|
find_package(MPI QUIET COMPONENTS C CXX)
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
|
|
||||||
|
|||||||
@ -33,23 +33,19 @@ endif()
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# MPI configuration
|
# MPI configuration
|
||||||
if(NOT CMAKE_CROSSCOMPILING)
|
# do not include the (obsolete) MPI C++ bindings which makes
|
||||||
|
# for leaner object files and avoids namespace conflicts
|
||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
set(MPI_CXX_SKIP_MPICXX TRUE)
|
||||||
find_package(MPI QUIET)
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
|
find_package(MPI QUIET COMPONENTS CXX)
|
||||||
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
||||||
else()
|
else()
|
||||||
option(BUILD_MPI "Build MPI version" OFF)
|
option(BUILD_MPI "Build MPI version" OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(BUILD_MPI)
|
if(BUILD_MPI)
|
||||||
# do not include the (obsolete) MPI C++ bindings which makes
|
|
||||||
# for leaner object files and avoids namespace conflicts
|
|
||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
|
||||||
# We use a non-standard procedure to cross-compile with MPI on Windows
|
# We use a non-standard procedure to cross-compile with MPI on Windows
|
||||||
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
||||||
# Download and configure MinGW compatible MPICH development files for Windows
|
|
||||||
option(USE_MSMPI "Use Microsoft's MS-MPI SDK instead of MPICH2-1.4.1" OFF)
|
|
||||||
if(USE_MSMPI)
|
|
||||||
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
||||||
@ -73,50 +69,13 @@ if(BUILD_MPI)
|
|||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
set_target_properties(MPI::MPI_CXX PROPERTIES
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
# set variables for status reporting at the end of CMake run
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
||||||
else()
|
|
||||||
# Download and configure custom MPICH files for Windows
|
|
||||||
message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows")
|
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball")
|
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball")
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
|
|
||||||
|
|
||||||
include(ExternalProject)
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN64_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
else()
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN32_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN32_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
|
||||||
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
|
||||||
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
|
||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a")
|
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
find_package(MPI REQUIRED)
|
find_package(MPI REQUIRED)
|
||||||
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
||||||
|
|||||||
@ -31,28 +31,28 @@ target_compile_definitions(test_library_scatter_gather PRIVATE -DTEST_INPUT_FOLD
|
|||||||
add_test(NAME LibraryScatterGather COMMAND test_library_scatter_gather)
|
add_test(NAME LibraryScatterGather COMMAND test_library_scatter_gather)
|
||||||
set_tests_properties(LibraryScatterGather PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
set_tests_properties(LibraryScatterGather PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||||
|
|
||||||
set(TEST_CONFIG_DEFS "-DTEST_INPUT_FOLDER=${CMAKE_CURRENT_SOURCE_DIR};-DLAMMPS_${LAMMPS_SIZES}")
|
set(TEST_CONFIG_DEFS "TEST_INPUT_FOLDER=${CMAKE_CURRENT_SOURCE_DIR};LAMMPS_${LAMMPS_SIZES}")
|
||||||
set(PKG_COUNT 0)
|
set(PKG_COUNT 0)
|
||||||
foreach(PKG ${STANDARD_PACKAGES} ${EXTRA_PACKAGES} ${SUFFIX_PACKAGES})
|
foreach(PKG ${STANDARD_PACKAGES} ${EXTRA_PACKAGES} ${SUFFIX_PACKAGES})
|
||||||
if(PKG_${PKG})
|
if(PKG_${PKG})
|
||||||
MATH(EXPR PKG_COUNT "${PKG_COUNT}+1")
|
MATH(EXPR PKG_COUNT "${PKG_COUNT}+1")
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
list(APPEND TEST_CONFIG_DEFS -DNUM_LAMMPS_PACKAGES=${PKG_COUNT})
|
list(APPEND TEST_CONFIG_DEFS NUM_LAMMPS_PACKAGES=${PKG_COUNT})
|
||||||
|
|
||||||
if(PKG_MANYBODY)
|
if(PKG_MANYBODY)
|
||||||
set(HAS_MANYBODY 1)
|
set(HAS_MANYBODY 1)
|
||||||
else()
|
else()
|
||||||
set(HAS_MANYBODY 0)
|
set(HAS_MANYBODY 0)
|
||||||
endif()
|
endif()
|
||||||
list(APPEND TEST_CONFIG_DEFS -DLAMMPS_HAS_MANYBODY=${HAS_MANYBODY})
|
list(APPEND TEST_CONFIG_DEFS LAMMPS_HAS_MANYBODY=${HAS_MANYBODY})
|
||||||
|
|
||||||
if(BUILD_MPI)
|
if(BUILD_MPI)
|
||||||
set(HAS_MPI 1)
|
set(HAS_MPI 1)
|
||||||
else()
|
else()
|
||||||
set(HAS_MPI 0)
|
set(HAS_MPI 0)
|
||||||
endif()
|
endif()
|
||||||
list(APPEND TEST_CONFIG_DEFS -DLAMMPS_HAS_MPI=${HAS_MPI})
|
list(APPEND TEST_CONFIG_DEFS LAMMPS_HAS_MPI=${HAS_MPI})
|
||||||
|
|
||||||
foreach(WITH "JPEG" "PNG" "GZIP" "FFMPEG")
|
foreach(WITH "JPEG" "PNG" "GZIP" "FFMPEG")
|
||||||
if(WITH_${WITH})
|
if(WITH_${WITH})
|
||||||
@ -60,7 +60,7 @@ foreach(WITH "JPEG" "PNG" "GZIP" "FFMPEG")
|
|||||||
else()
|
else()
|
||||||
set(HAS_${WITH} 0)
|
set(HAS_${WITH} 0)
|
||||||
endif()
|
endif()
|
||||||
list(APPEND TEST_CONFIG_DEFS -DLAMMPS_HAS_${WITH}=${HAS_${WITH}})
|
list(APPEND TEST_CONFIG_DEFS LAMMPS_HAS_${WITH}=${HAS_${WITH}})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_executable(test_library_config test_library_config.cpp test_main.cpp)
|
add_executable(test_library_config test_library_config.cpp test_main.cpp)
|
||||||
@ -70,7 +70,7 @@ add_test(NAME LibraryConfig COMMAND test_library_config)
|
|||||||
|
|
||||||
add_executable(test_library_mpi test_library_mpi.cpp)
|
add_executable(test_library_mpi test_library_mpi.cpp)
|
||||||
target_link_libraries(test_library_mpi PRIVATE lammps GTest::GMock)
|
target_link_libraries(test_library_mpi PRIVATE lammps GTest::GMock)
|
||||||
target_compile_definitions(test_library_mpi PRIVATE ${TEST_CONFIG_DEFS})
|
target_compile_definitions(test_library_mpi PRIVATE "${TEST_CONFIG_DEFS};MPICH_SKIP_MPICXX=1;OMPI_SKIP_MPICXX=1")
|
||||||
add_mpi_test(NAME LibraryMPI NUM_PROCS 4 COMMAND $<TARGET_FILE:test_library_mpi>)
|
add_mpi_test(NAME LibraryMPI NUM_PROCS 4 COMMAND $<TARGET_FILE:test_library_mpi>)
|
||||||
|
|
||||||
# simple run tests for coupling to the LAMMPS library
|
# simple run tests for coupling to the LAMMPS library
|
||||||
|
|||||||
Reference in New Issue
Block a user