cmake_minimum_required(VERSION 2.8)
project(MTRestart)

configure_file(
  ${CMAKE_CURRENT_SOURCE_DIR}/versionbump.cmake.in
  ${CMAKE_CURRENT_BINARY_DIR}/versionbump.cmake
  COPYONLY
)

if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/versiontag.h)
    file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/src/versiontag.h "#pragma once\n\n#define VersionTag \"0.0.0\"")
endif()

add_custom_target(VersionBump ALL COMMAND ${CMAKE_COMMAND} -DPATH:STRING=${CMAKE_CURRENT_SOURCE_DIR}/src -P ${CMAKE_CURRENT_BINARY_DIR}/versionbump.cmake)

find_package(OpenMP)
if (OPENMP_FOUND)
    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()

if(MSVC)
  # Force to always compile with W4
  if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
    string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  else()
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
  endif()
elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
  # Update if necessary
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -pedantic -std=c++11 -O3")
else()
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()

add_subdirectory(src)
add_subdirectory(test)
add_subdirectory(gradient_finder)
add_subdirectory(single_protofilament)
add_subdirectory(single_force)
