// -*- MPC -*-
// This file contains a number of optional features that disable VC
// warnings regarding various items that VC turned into warnings that were
// not present in earlier versions. Some people may consider these superfluous
// or have already checked code to be sure it causes no trouble. So these
// warnings are disabled by default. To enable them, generate your projects
// with the feature set to 0.


feature(vc_avoid_crt_secure_warnings) {
  specific(prop:microsoft) {
    macros += _CRT_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE
  }
  verbatim(cmake, macros, 1) {
    if(MSVC)
    "  add_compile_definitions(_CRT_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE)"
    endif()
  }
}

feature(!vc_scl_secure_warnings) {
  specific(prop:microsoft) {
    macros += _SCL_SECURE_NO_WARNINGS
  }
  verbatim(cmake, macros, 1) {
    if(MSVC)
    "  add_compile_definitions(_SCL_SECURE_NO_WARNINGS)"
    endif()
  }
}

feature(vc_avoid_this_in_initializer_warnings) {
  specific(prop:microsoft) {
    DisableSpecificWarnings += 4355
  }
  verbatim(cmake, macros, 1) {
    if(MSVC)
    "  add_compile_options(/wd4355)"
    endif()
  }
}

feature(vc_avoid_winsock_warnings) {
  specific(prop:microsoft) {
    macros += _WINSOCK_DEPRECATED_NO_WARNINGS
  }
  verbatim(cmake, macros, 1) {
    if(MSVC)
    "  add_compile_definitions(_WINSOCK_DEPRECATED_NO_WARNINGS)"
    endif()
  }
}

feature(vc_avoid_stdext_arr_iters_warning) {
  specific(prop:microsoft) {
    macros += _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING
  }
  verbatim(cmake, macros, 1) {
    if(MSVC)
    "  add_compile_definitions(_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING)"
    endif()
  }
}

feature(vc_avoid_hides_local_declaration) {
  specific(vc14) {
    DisableSpecificWarnings += 4456
  }
}

feature(vc_avoid_hides_global_declaration) {
  specific(vc14) {
    DisableSpecificWarnings += 4459
  }
}

feature(vc_avoid_hides_class_member) {
  specific(vc14) {
    DisableSpecificWarnings += 4458
  }
}
