From 3f17d33fbe0107cced8ad27da3cc3a5aca516814 Mon Sep 17 00:00:00 2001
From: Christoph Junghans <junghans@lanl.gov>
Date: Fri, 22 Jun 2018 11:06:12 -0600
Subject: [PATCH] cmake: add BUILD_LIB option

---
 cmake/CMakeLists.txt | 56 ++++++++++++++++++++++++++++++--------------
 1 file changed, 38 insertions(+), 18 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index cb69160797..32c6e82920 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -57,9 +57,17 @@ endif()
 ########################################################################
 # User input options                                                   #
 ########################################################################
-option(BUILD_SHARED_LIBS "Build shared libs" OFF)
-if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg
-  set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+option(BUILD_LIB "Build LAMMPS library" OFF)
+if(BUILD_LIB)
+  option(BUILD_SHARED_LIBS "Build shared library" OFF)
+  if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg
+    set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+  endif()
+  set(LIB_SUFFIX "" CACHE STRING "Suffix to append to liblammps and pkg-config file")
+  mark_as_advanced(LIB_SUFFIX)
+  if(LIB_SUFFIX)
+    set(LIB_SUFFIX "_${LIB_SUFFIX}")
+  endif()
 endif()
 option(DEVELOPER_MODE "Enable developer mode" OFF)
 mark_as_advanced(DEVELOPER_MODE)
@@ -102,7 +110,7 @@ if(LAMMPS_EXCEPTIONS)
   set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -DLAMMPS_EXCEPTIONS")
 endif()
 
-set(LAMMPS_MACHINE "" CACHE STRING "Suffix to append to lmp binary and liblammps (WON'T enable any features automatically")
+set(LAMMPS_MACHINE "" CACHE STRING "Suffix to append to lmp binary (WON'T enable any features automatically")
 mark_as_advanced(LAMMPS_MACHINE)
 if(LAMMPS_MACHINE)
   set(LAMMPS_MACHINE "_${LAMMPS_MACHINE}")
@@ -213,7 +221,7 @@ if(PKG_PYTHON)
   add_definitions(-DLMP_PYTHON)
   include_directories(${PYTHON_INCLUDE_DIR})
   list(APPEND LAMMPS_LINK_LIBS ${PYTHON_LIBRARY})
-  if(BUILD_SHARED_LIBS)
+  if(BUILDLIB AND BUILD_SHARED_LIBS)
     if(NOT PYTHON_INSTDIR)
       execute_process(COMMAND ${PYTHON_EXECUTABLE}
         -c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))"
@@ -800,28 +808,40 @@ include_directories(${LAMMPS_STYLE_HEADERS_DIR})
 ###########################################
 # Actually add executable and lib to build
 ############################################
-add_library(lammps ${LIB_SOURCES})
 get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
 list (FIND LANGUAGES "Fortran" _index)
 if (${_index} GREATER -1)
   list(APPEND LAMMPS_LINK_LIBS ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
 endif()
 list(REMOVE_DUPLICATES LAMMPS_LINK_LIBS)
-target_link_libraries(lammps ${LAMMPS_LINK_LIBS})
-if(LAMMPS_DEPS)
-  add_dependencies(lammps ${LAMMPS_DEPS})
-endif()
-set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_MACHINE})
-if(BUILD_SHARED_LIBS)
-  set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION})
-  install(TARGETS lammps LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-  install(FILES ${LAMMPS_SOURCE_DIR}/library.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps)
-  configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY)
-  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+if(BUILD_LIB)
+  add_library(lammps ${LIB_SOURCES})
+  target_link_libraries(lammps ${LAMMPS_LINK_LIBS})
+  if(LAMMPS_DEPS)
+    add_dependencies(lammps ${LAMMPS_DEPS})
+  endif()
+  set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LIB_SUFFIX})
+  if(BUILD_SHARED_LIBS)
+    set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION})
+    install(TARGETS lammps LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(FILES ${LAMMPS_SOURCE_DIR}/library.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps)
+    configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LIB_SUFFIX}.pc @ONLY)
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+  endif()
+else()
+  list(APPEND LMP_SOURCES ${LIB_SOURCES})
 endif()
 
 add_executable(lmp ${LMP_SOURCES})
-target_link_libraries(lmp lammps)
+if(BUILD_LIB)
+  target_link_libraries(lmp lammps)
+else()
+  target_link_libraries(lmp ${LAMMPS_LINK_LIBS})
+  if(LAMMPS_DEPS)
+    add_dependencies(lmp ${LAMMPS_DEPS})
+  endif()
+endif()
+  
 set_target_properties(lmp PROPERTIES OUTPUT_NAME lmp${LAMMPS_MACHINE})
 install(TARGETS lmp DESTINATION ${CMAKE_INSTALL_BINDIR})
 if(ENABLE_TESTING)
-- 
GitLab