simplify building serial executables by incorporating the STUBS/mpi.o object in LAMMPS library

This commit is contained in:
Axel Kohlmeyer
2022-01-27 15:59:48 -05:00
parent d51017ff50
commit 62ff23abe7
4 changed files with 6 additions and 25 deletions

View File

@ -290,25 +290,8 @@ if(BUILD_MPI)
endif() endif()
endif() endif()
else() else()
file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.cpp) target_sources(lammps PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS/mpi.cpp)
add_library(mpi_stubs STATIC ${MPI_SOURCES}) target_include_directories(lammps PUBLIC ${LAMMPS_SOURCE_DIR}/STUBS)
set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_MACHINE})
target_include_directories(mpi_stubs PUBLIC $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
if(BUILD_SHARED_LIBS)
target_link_libraries(lammps PRIVATE mpi_stubs)
if(MSVC)
target_link_libraries(lmp PRIVATE mpi_stubs)
target_include_directories(lmp INTERFACE $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
target_compile_definitions(lmp INTERFACE $<INSTALL_INTERFACE:LAMMPS_LIB_NO_MPI>)
endif()
target_include_directories(lammps INTERFACE $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
target_compile_definitions(lammps INTERFACE $<INSTALL_INTERFACE:LAMMPS_LIB_NO_MPI>)
else()
target_include_directories(lammps INTERFACE $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
target_compile_definitions(lammps INTERFACE $<INSTALL_INTERFACE:LAMMPS_LIB_NO_MPI>)
target_link_libraries(lammps PUBLIC mpi_stubs)
endif()
add_library(MPI::MPI_CXX ALIAS mpi_stubs)
endif() endif()
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)") set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
@ -594,7 +577,7 @@ if(PKG_ATC)
if(BUILD_MPI) if(BUILD_MPI)
target_link_libraries(atc PRIVATE MPI::MPI_CXX) target_link_libraries(atc PRIVATE MPI::MPI_CXX)
else() else()
target_link_libraries(atc PRIVATE mpi_stubs) target_include_directories(atc PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS)
endif() endif()
target_include_directories(atc PRIVATE ${LAMMPS_SOURCE_DIR}) target_include_directories(atc PRIVATE ${LAMMPS_SOURCE_DIR})
target_compile_definitions(atc PRIVATE -DLAMMPS_${LAMMPS_SIZES}) target_compile_definitions(atc PRIVATE -DLAMMPS_${LAMMPS_SIZES})

View File

@ -424,8 +424,8 @@ RegisterFixStyle(${GPU_SOURCES_DIR}/fix_gpu.h)
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES)
if(NOT BUILD_MPI) if(NOT BUILD_MPI)
# mpistubs is aliased to MPI::MPI_CXX, but older versions of cmake won't work forward the include path # add include include path to MPI STUBS for non-MPI build
target_link_libraries(gpu PRIVATE mpi_stubs) target_include_directories(gpu PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS)
else() else()
target_link_libraries(gpu PRIVATE MPI::MPI_CXX) target_link_libraries(gpu PRIVATE MPI::MPI_CXX)
endif() endif()

View File

@ -48,8 +48,6 @@ target_include_directories(style_tests PRIVATE ${LAMMPS_SOURCE_DIR})
target_link_libraries(style_tests PUBLIC gmock Yaml::Yaml lammps) target_link_libraries(style_tests PUBLIC gmock Yaml::Yaml lammps)
if(BUILD_MPI) if(BUILD_MPI)
target_link_libraries(style_tests PUBLIC MPI::MPI_CXX) target_link_libraries(style_tests PUBLIC MPI::MPI_CXX)
else()
target_link_libraries(style_tests PUBLIC mpi_stubs)
endif() endif()
# propagate sanitizer options to test tools # propagate sanitizer options to test tools
if(ENABLE_SANITIZER AND (NOT (ENABLE_SANITIZER STREQUAL "none"))) if(ENABLE_SANITIZER AND (NOT (ENABLE_SANITIZER STREQUAL "none")))