Commit 9cf1d375 authored by Christoph Junghans's avatar Christoph Junghans
Browse files

cmake: move fortran check for ninja in an include

parent d60901e7
Loading
Loading
Loading
Loading
+6 −20
Original line number Diff line number Diff line
@@ -255,8 +255,9 @@ if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE)
  find_package(LAPACK)
  find_package(BLAS)
  if(NOT LAPACK_FOUND OR NOT BLAS_FOUND)
    if(CMAKE_GENERATOR STREQUAL "Ninja")
      status(FATAL_ERROR "Cannot build internal linear algebra library with Ninja build tool due to lack for Fortran support")
    include(CheckIfNinjaSupportsFortran)
    if(NOT CMAKE_GENERATOR_SUPPORT_FORTRAN)
      status(FATAL_ERROR "Cannot build internal linear algebra library as CMake build tool lacks Fortran support")
    endif()
    enable_language(Fortran)
    file(GLOB LAPACK_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.[fF])
@@ -587,29 +588,14 @@ if(BUILD_TOOLS)
  add_executable(binary2txt ${LAMMPS_TOOLS_DIR}/binary2txt.cpp)
  install(TARGETS binary2txt DESTINATION ${CMAKE_INSTALL_BINDIR})

  # ninja-build<1.10 does not support fortran. thus we skip building this tool
  if(CMAKE_GENERATOR STREQUAL "Ninja")
    set(CMAKE_GENERATOR_SUPPORT_FORTRAN FALSE)
    execute_process(COMMAND "${CMAKE_MAKE_PROGRAM}" --version
      OUTPUT_VARIABLE NINJA_VERSION
      OUTPUT_STRIP_TRAILING_WHITESPACE
      RESULT_VARIABLE _Ninja_version_result
    )
    if(_Ninja_version_result)
      message(WARNING "Unable to determine ninja version: ${_Ninja_version_result}")
    elseif(NINJA_VERSION VERSION_LESS "1.10")
      message(WARNING "Ninja build tool too old, skipping building 'chain.x' due to lack of Fortran support, please install ninja-1.10 or newer")
    else()
      set(CMAKE_GENERATOR_SUPPORT_FORTRAN TRUE)
    endif()
  else()
    set(CMAKE_GENERATOR_SUPPORT_FORTRAN TRUE)
  endif()
  include(CheckIfNinjaSupportsFortran)
  if(CMAKE_GENERATOR_SUPPORT_FORTRAN)
    enable_language(Fortran)
    add_executable(chain.x ${LAMMPS_TOOLS_DIR}/chain.f)
    target_link_libraries(chain.x ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
    install(TARGETS chain.x DESTINATION ${CMAKE_INSTALL_BINDIR})
  else()
    message(WARNING "CMake build doesn't support fortran, skipping building 'chain.x'")
  endif()

  enable_language(C)