@@ -293,6 +293,176 @@ toolchain {
293293 }
294294 }
295295
296+ action_config {
297+ config_name: ' c++-link-executable'
298+ action_name: ' c++-link-executable'
299+ tool {
300+ tool_path: ' wrapper/bin/msvc_link.bat'
301+ }
302+ implies: 'linkstamps'
303+ implies: 'output_execpath_flags'
304+ implies: 'input_param_flags'
305+ implies: 'global_whole_archive'
306+ }
307+
308+ action_config {
309+ config_name: ' c++-link-dynamic-library'
310+ action_name: ' c++-link-dynamic-library'
311+ tool {
312+ tool_path: ' wrapper/bin/msvc_link.bat'
313+ }
314+ implies: 'shared_flag'
315+ implies: 'linkstamps'
316+ implies: 'output_execpath_flags'
317+ implies: 'input_param_flags'
318+ implies: 'global_whole_archive'
319+ implies: 'has_configured_linker_path'
320+ }
321+
322+ action_config {
323+ config_name: ' c++-link-static-library'
324+ action_name: ' c++-link-static-library'
325+ tool {
326+ tool_path: ' wrapper/bin/msvc_link.bat'
327+ }
328+ implies: 'input_param_flags'
329+ implies: 'global_whole_archive'
330+ }
331+
332+ action_config {
333+ config_name: ' c++-link-alwayslink-static-library'
334+ action_name: ' c++-link-alwayslink-static-library'
335+ tool {
336+ tool_path: ' wrapper/bin/msvc_link.bat'
337+ }
338+ implies: 'input_param_flags'
339+ implies: 'global_whole_archive'
340+ }
341+
342+ # TODO(pcloudy): The following action_config is listed in MANDATORY_LINK_TARGET_TYPES.
343+ # But do we really need them on Windows?
344+ action_config {
345+ config_name: ' c++-link-pic-static-library'
346+ action_name: ' c++-link-pic-static-library'
347+ tool {
348+ tool_path: ' wrapper/bin/msvc_link.bat'
349+ }
350+ implies: 'input_param_flags'
351+ implies: 'global_whole_archive'
352+ }
353+
354+ action_config {
355+ config_name: ' c++-link-alwayslink-pic-static-library'
356+ action_name: ' c++-link-alwayslink-pic-static-library'
357+ tool {
358+ tool_path: ' wrapper/bin/msvc_link.bat'
359+ }
360+ implies: 'input_param_flags'
361+ implies: 'global_whole_archive'
362+ }
363+
364+ action_config {
365+ config_name: ' c++-link-interface-dynamic-library'
366+ action_name: ' c++-link-interface-dynamic-library'
367+ tool {
368+ tool_path: ' wrapper/bin/msvc_link.bat'
369+ }
370+ }
371+
372+ feature {
373+ name: ' has_configured_linker_path'
374+ }
375+
376+ feature {
377+ name: ' shared_flag'
378+ flag_set {
379+ action: ' c++-link-dynamic-library'
380+ flag_group {
381+ flag: ' /DLL'
382+ }
383+ }
384+ }
385+
386+ feature {
387+ name: ' linkstamps'
388+ flag_set {
389+ action: ' c++-link-executable'
390+ action: ' c++-link-dynamic-library'
391+ expand_if_all_available: ' linkstamp_paths'
392+ flag_group {
393+ flag: ' %{linkstamp_paths}'
394+ }
395+ }
396+ }
397+
398+ feature {
399+ name: ' output_execpath_flags'
400+ flag_set {
401+ expand_if_all_available: ' output_execpath'
402+ action: ' c++-link-executable'
403+ action: ' c++-link-dynamic-library'
404+ flag_group {
405+ flag: ' /OUT:%{output_execpath}'
406+ }
407+ }
408+ }
409+
410+ feature {
411+ name: ' input_param_flags'
412+ flag_set {
413+ expand_if_all_available: ' libopts'
414+ action: ' c++-link-executable'
415+ action: ' c++-link-dynamic-library'
416+ action: ' c++-link-static-library'
417+ action: ' c++-link-alwayslink-static-library'
418+ action: ' c++-link-pic-static-library'
419+ action: ' c++-link-alwayslink-pic-static-library'
420+ flag_group {
421+ flag: ' %{libopts}'
422+ }
423+ }
424+ flag_set {
425+ expand_if_all_available: ' whole_archive_linker_params'
426+ action: ' c++-link-executable'
427+ action: ' c++-link-dynamic-library'
428+ action: ' c++-link-static-library'
429+ action: ' c++-link-alwayslink-static-library'
430+ action: ' c++-link-pic-static-library'
431+ action: ' c++-link-alwayslink-pic-static-library'
432+ flag_group {
433+ flag: ' /WHOLEARCHIVE:%{whole_archive_linker_params}'
434+ }
435+ }
436+ flag_set {
437+ expand_if_all_available: ' linker_input_params'
438+ action: ' c++-link-executable'
439+ action: ' c++-link-dynamic-library'
440+ action: ' c++-link-static-library'
441+ action: ' c++-link-alwayslink-static-library'
442+ action: ' c++-link-pic-static-library'
443+ action: ' c++-link-alwayslink-pic-static-library'
444+ flag_group {
445+ flag: ' %{linker_input_params}'
446+ }
447+ }
448+ }
449+
450+ feature {
451+ name: ' global_whole_archive'
452+ flag_set {
453+ expand_if_all_available: ' global_whole_archive'
454+ action: ' c++-link-executable'
455+ action: ' c++-link-dynamic-library'
456+ action: ' c++-link-static-library'
457+ action: ' c++-link-alwayslink-static-library'
458+ action: ' c++-link-pic-static-library'
459+ action: ' c++-link-alwayslink-pic-static-library'
460+ flag_group {
461+ flag: ' /WHOLEARCHIVE'
462+ }
463+ }
464+ }
465+
296466 compilation_mode_flags {
297467 mode: DBG
298468 compiler_flag: " /DDEBUG=1"
0 commit comments