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