include(RemoveCompileFlag)

macro(dolphin_disable_warnings _target)
  get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS)
  if (_target_cxx_flags)
    set(new_flags "")
    foreach(flag IN LISTS _target_cxx_flags)
      # all warning flags start with "/W" or "/w" or "-W" or "-w"
      if (NOT "${flag}" MATCHES "^[-/][Ww]")
        list(APPEND new_flags "${flag}")
      endif()
    endforeach()
    set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${new_flags}")
  endif()
  if (MSVC)
    target_compile_options(${_target} PRIVATE "/W0")
  elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
    target_compile_options(${_target} PRIVATE "-w")
  endif()
endmacro()