if (NOT IS_DIRECTORY "${SM_EXTERN_DIR}/cppformat")
  message(ERROR "Submodule for cppformat missing. Run git submodule init && git submodule update first.")
  return()
endif()

list(APPEND CPPFORMAT_SRC
  "cppformat/format.cc"
)

list(APPEND CPPFORMAT_HPP
  "cppformat/format.h"
)

source_group("" FILES ${CPPFORMAT_SRC} ${CPPFORMAT_HPP})

add_library("cppformat" ${CPPFORMAT_SRC} ${CPPFORMAT_HPP})

set_property(TARGET "cppformat" PROPERTY FOLDER "External Libraries")

disable_project_warnings("cppformat")

target_include_directories("cppformat" PUBLIC "cppformat")

if (MSVC)
  sm_add_compile_definition("cppformat" _CRT_SECURE_NO_WARNINGS)
elseif(APPLE)
  set_target_properties("cppformat" PROPERTIES
    XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "${SM_CPP_STANDARD}"
    XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++"
  )
else() # Unix
  sm_add_compile_flag("cppformat" "-std=${SM_CPP_STANDARD}")
  if (CMAKE_CXX_COMPILER MATCHES "clang")
    sm_add_compile_flag("cppformat" "-stdlib=libc++")
  endif()
endif()

