CMAKE_MINIMUM_REQUIRED(VERSION 3.14)
PROJECT(rCFDtransport C)

OPTION(USE_MPI "build with MPI support" OFF)
INCLUDE(CheckIncludeFile)

FILE(GLOB SOURCES *.c)

ADD_DEFINITIONS(-DRCFD_STANDALONE)

IF(MSVC)
    ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
endif()

ADD_LIBRARY(rcfd_transport_lib SHARED rCFD_library.c)
SET_TARGET_PROPERTIES(rcfd_transport_lib PROPERTIES OUTPUT_NAME rcfd)

IF(MSVC)
    TARGET_COMPILE_OPTIONS(rcfd_transport_lib PRIVATE /W4)
else()
    TARGET_COMPILE_OPTIONS(rcfd_transport_lib PRIVATE -Wall)
endif()

IF(NOT WIN32)
    TARGET_LINK_LIBRARIES(rcfd_transport_lib m)
ENDIF()

SET_TARGET_PROPERTIES(rcfd_transport_lib PROPERTIES PUBLIC_HEADER rCFD_library.h)

#=======================================

IF(USE_MPI)
  FIND_PACKAGE(MPI REQUIRED)

  IF(MPI_FOUND)
    ADD_DEFINITIONS(-DRCFD_LIB_MPI)
    INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH})
    TARGET_LINK_LIBRARIES(rcfd_transport_lib ${MPI_LIBRARIES})

    IF(MPI_COMPILE_FLAGS)
      SET_TARGET_PROPERTIES(rcfd_transport_lib PROPERTIES COMPILE_FLAGS "${MPI_COMPILE_FLAGS}")
    ENDIF()

    IF(MPI_LINK_FLAGS)
      SET_TARGET_PROPERTIES(rcfd_transport_lib PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}")
    ENDIF()
  ENDIF(MPI_FOUND)
ENDIF(USE_MPI)

