Merge "examples: use I420 input for encoders"
[libvpx.git] / build / make / gen_msvs_proj.sh
blob477dec7febd8b5cb12e5c0a968539aaf316bdebb
1 #!/bin/bash
2 ##
3 ## Copyright (c) 2010 The VP8 project authors. All Rights Reserved.
4 ##
5 ## Use of this source code is governed by a BSD-style license and patent
6 ## grant that can be found in the LICENSE file in the root of the source
7 ## tree. All contributing project authors may be found in the AUTHORS
8 ## file in the root of the source tree.
9 ##
12 self=$0
13 self_basename=${self##*/}
14 EOL=$'\n'
16 show_help() {
17 cat <<EOF
18 Usage: ${self_basename} --name=projname [options] file1 [file2 ...]
20 This script generates a Visual Studio project file from a list of source
21 code files.
23 Options:
24 --help Print this message
25 --exe Generate a project for building an Application
26 --lib Generate a project for creating a static library
27 --static-crt Use the static C runtime (/MT)
28 --target=isa-os-cc Target specifier (required)
29 --out=filename Write output to a file [stdout]
30 --name=project_name Name of the project (required)
31 --proj-guid=GUID GUID to use for the project
32 --module-def=filename File containing export definitions (for DLLs)
33 --ver=version Version (7,8) of visual studio to generate for
34 -Ipath/to/include Additional include directories
35 -DFLAG[=value] Preprocessor macros to define
36 -Lpath/to/lib Additional library search paths
37 -llibname Library to link against
38 EOF
39 exit 1
42 die() {
43 echo "${self_basename}: $@" >&2
44 exit 1
47 die_unknown(){
48 echo "Unknown option \"$1\"." >&2
49 echo "See ${self_basename} --help for available options." >&2
50 exit 1
53 generate_uuid() {
54 local hex="0123456789ABCDEF"
55 local i
56 local uuid=""
57 local j
58 #93995380-89BD-4b04-88EB-625FBE52EBFB
59 for ((i=0; i<32; i++)); do
60 (( j = $RANDOM % 16 ))
61 uuid="${uuid}${hex:$j:1}"
62 done
63 echo "${uuid:0:8}-${uuid:8:4}-${uuid:12:4}-${uuid:16:4}-${uuid:20:12}"
66 indent1=" "
67 indent=""
68 indent_push() {
69 indent="${indent}${indent1}"
71 indent_pop() {
72 indent="${indent%${indent1}}"
75 tag_attributes() {
76 for opt in "$@"; do
77 optval="${opt#*=}"
78 [ -n "${optval}" ] ||
79 die "Missing attribute value in '$opt' while generating $tag tag"
80 echo "${indent}${opt%%=*}=\"${optval}\""
81 done
84 open_tag() {
85 local tag=$1
86 shift
87 if [ $# -ne 0 ]; then
88 echo "${indent}<${tag}"
89 indent_push
90 tag_attributes "$@"
91 echo "${indent}>"
92 else
93 echo "${indent}<${tag}>"
94 indent_push
98 close_tag() {
99 local tag=$1
100 indent_pop
101 echo "${indent}</${tag}>"
104 tag() {
105 local tag=$1
106 shift
107 if [ $# -ne 0 ]; then
108 echo "${indent}<${tag}"
109 indent_push
110 tag_attributes "$@"
111 indent_pop
112 echo "${indent}/>"
113 else
114 echo "${indent}<${tag}/>"
118 generate_filter() {
119 local var=$1
120 local name=$2
121 local pats=$3
122 local file_list_sz
123 local i
124 local f
125 local saveIFS="$IFS"
126 local pack
127 echo "generating filter '$name' from ${#file_list[@]} files" >&2
128 IFS=*
130 open_tag Filter \
131 Name=$name \
132 Filter=$pats \
133 UniqueIdentifier=`generate_uuid`
135 file_list_sz=${#file_list[@]}
136 for i in ${!file_list[@]}; do
137 f=${file_list[i]}
138 for pat in ${pats//;/$IFS}; do
139 if [ "${f##*.}" == "$pat" ]; then
140 unset file_list[i]
142 open_tag File RelativePath="./$f"
143 if [ "$pat" == "asm" ] && $asm_use_custom_step; then
144 for plat in "${platforms[@]}"; do
145 for cfg in Debug Release; do
146 open_tag FileConfiguration \
147 Name="${cfg}|${plat}"
148 tag Tool \
149 Name="VCCustomBuildTool" \
150 Description="Assembling \$(InputFileName)" \
151 CommandLine="$(eval echo \$asm_${cfg}_cmdline)"\
152 Outputs="\$(InputName).obj"
153 close_tag FileConfiguration
154 done
155 done
158 if [ "${f##*.}" == "cpp" ]; then
159 for plat in "${platforms[@]}"; do
160 for cfg in Debug Release; do
161 open_tag FileConfiguration \
162 Name="${cfg}|${plat}"
163 tag Tool \
164 Name="VCCLCompilerTool" \
165 CompileAs="2"
166 close_tag FileConfiguration
167 done
168 done
170 close_tag File
172 break
174 done
175 done
177 close_tag Filter
178 IFS="$saveIFS"
181 # Process command line
182 unset target
183 for opt in "$@"; do
184 optval="${opt#*=}"
185 case "$opt" in
186 --help|-h) show_help
188 --target=*) target="${optval}"
190 --out=*) outfile="$optval"
192 --name=*) name="${optval}"
194 --proj-guid=*) guid="${optval}"
196 --module-def=*)
197 link_opts="${link_opts} ModuleDefinitionFile=${optval}"
199 --exe) proj_kind="exe"
201 --lib) proj_kind="lib"
203 --static-crt) use_static_runtime=true
205 --ver=*) vs_ver="$optval"
206 case $optval in
207 [78])
209 *) die Unrecognized Visual Studio Version in $opt
211 esac
213 -I*) opt="${opt%/}"
214 incs="${incs}${incs:+;}&quot;${opt##-I}&quot;"
215 yasmincs="${yasmincs} ${opt}"
217 -D*) defines="${defines}${defines:+;}${opt##-D}"
219 -L*) # fudge . to $(OutDir)
220 if [ "${opt##-L}" == "." ]; then
221 libdirs="${libdirs}${libdirs:+;}&quot;\$(OutDir)&quot;"
222 else
223 # Also try directories for this platform/configuration
224 libdirs="${libdirs}${libdirs:+;}&quot;${opt##-L}&quot;"
225 libdirs="${libdirs}${libdirs:+;}&quot;${opt##-L}/\$(PlatformName)/\$(ConfigurationName)&quot;"
226 libdirs="${libdirs}${libdirs:+;}&quot;${opt##-L}/\$(PlatformName)&quot;"
229 -l*) libs="${libs}${libs:+ }${opt##-l}.lib"
231 -*) die_unknown $opt
233 *) file_list[${#file_list[@]}]="$opt"
234 case "$opt" in
235 *.asm) uses_asm=true;;
236 esac
237 esac
238 done
239 outfile=${outfile:-/dev/stdout}
240 guid=${guid:-`generate_uuid`}
241 asm_use_custom_step=false
242 uses_asm=${uses_asm:-false}
243 case "${vs_ver:-8}" in
244 7) vs_ver_id="7.10"
245 asm_use_custom_step=$uses_asm
247 8) vs_ver_id="8.00"
249 esac
251 [ -n "$name" ] || die "Project name (--name) must be specified!"
252 [ -n "$target" ] || die "Target (--target) must be specified!"
254 if ${use_static_runtime:-false}; then
255 release_runtime=0
256 debug_runtime=1
257 lib_sfx=mt
258 else
259 release_runtime=2
260 debug_runtime=3
261 lib_sfx=md
264 # Calculate debug lib names: If a lib ends in ${lib_sfx}.lib, then rename
265 # it to ${lib_sfx}d.lib. This precludes linking to release libs from a
266 # debug exe, so this may need to be refactored later.
267 for lib in ${libs}; do
268 if [ "$lib" != "${lib%${lib_sfx}.lib}" ]; then
269 lib=${lib%.lib}d.lib
271 debug_libs="${debug_libs}${debug_libs:+ }${lib}"
272 done
275 # List Keyword for this target
276 case "$target" in
277 x86*)
278 keyword="ManagedCProj"
280 arm*|iwmmx*)
281 keyword="Win32Proj"
283 *) die "Unsupported target $target!"
284 esac
286 # List of all platforms supported for this target
287 case "$target" in
288 x86_64*)
289 platforms[0]="x64"
291 x86*)
292 platforms[0]="Win32"
293 # these are only used by vs7
294 asm_Debug_cmdline="yasm -Xvc -g cv8 -f \$(PlatformName) ${yasmincs} \$(InputPath)"
295 asm_Release_cmdline="yasm -Xvc -f \$(PlatformName) ${yasmincs} \$(InputPath)"
297 arm*|iwmmx*)
298 case "${name}" in
299 obj_int_extract) platforms[0]="Win32"
301 *) platforms[0]="Pocket PC 2003 (ARMV4)"
303 esac
305 *) die "Unsupported target $target!"
306 esac
308 # List Command-line Arguments for this target
309 case "$target" in
310 arm*|iwmmx*)
311 if [ "$name" == "example" ];then
312 ARGU="--codec vp6 --flipuv --progress _bnd.vp6"
314 if [ "$name" == "xma" ];then
315 ARGU="--codec vp6 -h 240 -w 320 -v"
318 esac
320 generate_vcproj() {
321 case "$proj_kind" in
322 exe) vs_ConfigurationType=1
324 *) vs_ConfigurationType=4
326 esac
328 echo "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>"
329 open_tag VisualStudioProject \
330 ProjectType="Visual C++" \
331 Version="${vs_ver_id}" \
332 Name="${name}" \
333 ProjectGUID="{${guid}}" \
334 RootNamespace="${name}" \
335 Keyword="${keyword}"
337 open_tag Platforms
338 for plat in "${platforms[@]}"; do
339 tag Platform Name="$plat"
340 done
341 close_tag Platforms
343 open_tag ToolFiles
344 case "$target" in
345 x86*) $uses_asm && tag DefaultToolFile FileName="yasm.rules"
347 arm*|iwmmx*)
348 if [ "$name" == "vpx_decoder" ];then
349 case "$target" in
350 armv5*)
351 tag DefaultToolFile FileName="armasmv5.rules"
353 armv6*)
354 tag DefaultToolFile FileName="armasmv6.rules"
356 iwmmxt*)
357 tag DefaultToolFile FileName="armasmxscale.rules"
359 esac
362 esac
363 close_tag ToolFiles
365 open_tag Configurations
366 for plat in "${platforms[@]}"; do
367 plat_no_ws=`echo $plat | sed 's/[^A-Za-z0-9_]/_/g'`
368 open_tag Configuration \
369 Name="Debug|$plat" \
370 OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \
371 IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \
372 ConfigurationType="$vs_ConfigurationType" \
373 CharacterSet="1"
375 if [ "$target" == "armv6-wince-vs8" ] || [ "$target" == "armv5te-wince-vs8" ] || [ "$target" == "iwmmxt-wince-vs8" ] || [ "$target" == "iwmmxt2-wince-vs8" ];then
376 case "$name" in
377 vpx_decoder) tag Tool \
378 Name="VCPreBuildEventTool" \
379 CommandLine="call obj_int_extract.bat \$(ConfigurationName)"
380 tag Tool \
381 Name="VCMIDLTool" \
382 TargetEnvironment="1"
383 tag Tool \
384 Name="VCCLCompilerTool" \
385 ExecutionBucket="7" \
386 Optimization="0" \
387 AdditionalIncludeDirectories="$incs" \
388 PreprocessorDefinitions="_DEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES);WINCE;DEBUG;_LIB;\$(ARCHFAM);\$(_ARCHFAM_);_UNICODE;UNICODE;" \
389 MinimalRebuild="true" \
390 RuntimeLibrary="1" \
391 BufferSecurityCheck="false" \
392 UsePrecompiledHeader="0" \
393 WarningLevel="3" \
394 DebugInformationFormat="1" \
395 CompileAs="1"
396 tag Tool \
397 Name="VCResourceCompilerTool" \
398 PreprocessorDefinitions="_DEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES)" \
399 Culture="1033" \
400 AdditionalIncludeDirectories="\$(IntDir)" \
402 example|xma) tag Tool \
403 Name="VCCLCompilerTool" \
404 ExecutionBucket="7" \
405 Optimization="0" \
406 AdditionalIncludeDirectories="$incs" \
407 PreprocessorDefinitions="_DEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES);WINCE;DEBUG;_CONSOLE;\$(ARCHFAM);\$(_ARCHFAM_);_UNICODE;UNICODE;" \
408 MinimalRebuild="true" \
409 RuntimeLibrary="1" \
410 BufferSecurityCheck="false" \
411 UsePrecompiledHeader="0" \
412 WarningLevel="3" \
413 DebugInformationFormat="1" \
414 CompileAs="1"
415 tag Tool \
416 Name="VCResourceCompilerTool" \
417 PreprocessorDefinitions="_DEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES)" \
418 Culture="1033" \
419 AdditionalIncludeDirectories="\$(IntDir)" \
421 obj_int_extract) tag Tool \
422 Name="VCCLCompilerTool" \
423 Optimization="0" \
424 AdditionalIncludeDirectories="$incs" \
425 PreprocessorDefinitions="WIN32;DEBUG;_CONSOLE" \
426 RuntimeLibrary="1" \
427 WarningLevel="3" \
428 DebugInformationFormat="1" \
430 esac
433 case "$target" in
434 x86*) tag Tool \
435 Name="VCCLCompilerTool" \
436 Optimization="0" \
437 AdditionalIncludeDirectories="$incs" \
438 PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;$defines" \
439 RuntimeLibrary="$debug_runtime" \
440 UsePrecompiledHeader="0" \
441 WarningLevel="3" \
442 DebugInformationFormat="1" \
443 Detect64BitPortabilityProblems="true" \
445 $uses_asm && tag Tool Name="YASM" IncludePaths="$incs" Debug="1"
447 esac
449 case "$proj_kind" in
450 exe)
451 case "$target" in
452 x86*) tag Tool \
453 Name="VCLinkerTool" \
454 AdditionalDependencies="$debug_libs \$(NoInherit)" \
455 AdditionalLibraryDirectories="$libdirs" \
456 GenerateDebugInformation="true" \
457 ProgramDatabaseFile="\$(OutDir)/${name}.pdb" \
460 arm*|iwmmx*)
461 case "$name" in
462 obj_int_extract) tag Tool \
463 Name="VCLinkerTool" \
464 OutputFile="${name}.exe" \
465 GenerateDebugInformation="true"
467 *) tag Tool \
468 Name="VCLinkerTool" \
469 AdditionalDependencies="$debug_libs" \
470 OutputFile="\$(OutDir)/${name}.exe" \
471 LinkIncremental="2" \
472 AdditionalLibraryDirectories="${libdirs};&quot;..\lib/$plat_no_ws&quot;" \
473 DelayLoadDLLs="\$(NOINHERIT)" \
474 GenerateDebugInformation="true" \
475 ProgramDatabaseFile="\$(OutDir)/${name}.pdb" \
476 SubSystem="9" \
477 StackReserveSize="65536" \
478 StackCommitSize="4096" \
479 EntryPointSymbol="mainWCRTStartup" \
480 TargetMachine="3"
482 esac
484 esac
486 lib)
487 case "$target" in
488 arm*|iwmmx*) tag Tool \
489 Name="VCLibrarianTool" \
490 AdditionalOptions=" /subsystem:windowsce,4.20 /machine:ARM" \
491 OutputFile="\$(OutDir)/${name}.lib" \
493 *) tag Tool \
494 Name="VCLibrarianTool" \
495 OutputFile="\$(OutDir)/${name}${lib_sfx}d.lib" \
497 esac
499 dll) tag Tool \
500 Name="VCLinkerTool" \
501 AdditionalDependencies="\$(NoInherit)" \
502 LinkIncremental="2" \
503 GenerateDebugInformation="true" \
504 AssemblyDebug="1" \
505 TargetMachine="1" \
506 $link_opts
507 esac
509 if [ "$target" == "armv6-wince-vs8" ] || [ "$target" == "armv5te-wince-vs8" ] || [ "$target" == "iwmmxt-wince-vs8" ] || [ "$target" == "iwmmxt2-wince-vs8" ];then
510 case "$name" in
511 vpx_decoder) tag DeploymentTool \
512 ForceDirty="-1" \
513 RegisterOutput="0"
515 example|xma) tag DeploymentTool \
516 ForceDirty="-1" \
517 RegisterOutput="0"
518 tag DebuggerTool \
519 Arguments="${ARGU}"
521 esac
523 close_tag Configuration
525 open_tag Configuration \
526 Name="Release|$plat" \
527 OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \
528 IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \
529 ConfigurationType="$vs_ConfigurationType" \
530 CharacterSet="1" \
531 WholeProgramOptimization="0"
533 if [ "$target" == "armv6-wince-vs8" ] || [ "$target" == "armv5te-wince-vs8" ] || [ "$target" == "iwmmxt-wince-vs8" ] || [ "$target" == "iwmmxt2-wince-vs8" ];then
534 case "$name" in
535 vpx_decoder) tag Tool \
536 Name="VCPreBuildEventTool" \
537 CommandLine="call obj_int_extract.bat \$(ConfigurationName)"
538 tag Tool \
539 Name="VCMIDLTool" \
540 TargetEnvironment="1"
541 tag Tool \
542 Name="VCCLCompilerTool" \
543 ExecutionBucket="7" \
544 Optimization="2" \
545 FavorSizeOrSpeed="1" \
546 AdditionalIncludeDirectories="$incs" \
547 PreprocessorDefinitions="NDEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES);WINCE;_LIB;\$(ARCHFAM);\$(_ARCHFAM_);_UNICODE;UNICODE;" \
548 RuntimeLibrary="0" \
549 BufferSecurityCheck="false" \
550 UsePrecompiledHeader="0" \
551 WarningLevel="3" \
552 DebugInformationFormat="0" \
553 CompileAs="1"
554 tag Tool \
555 Name="VCResourceCompilerTool" \
556 PreprocessorDefinitions="NDEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES)" \
557 Culture="1033" \
558 AdditionalIncludeDirectories="\$(IntDir)" \
560 example|xma) tag Tool \
561 Name="VCCLCompilerTool" \
562 ExecutionBucket="7" \
563 Optimization="2" \
564 FavorSizeOrSpeed="1" \
565 AdditionalIncludeDirectories="$incs" \
566 PreprocessorDefinitions="NDEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES);WINCE;_CONSOLE;\$(ARCHFAM);\$(_ARCHFAM_);_UNICODE;UNICODE;" \
567 RuntimeLibrary="0" \
568 BufferSecurityCheck="false" \
569 UsePrecompiledHeader="0" \
570 WarningLevel="3" \
571 DebugInformationFormat="0" \
572 CompileAs="1"
573 tag Tool \
574 Name="VCResourceCompilerTool" \
575 PreprocessorDefinitions="NDEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES)" \
576 Culture="1033" \
577 AdditionalIncludeDirectories="\$(IntDir)" \
579 obj_int_extract) tag Tool \
580 Name="VCCLCompilerTool" \
581 AdditionalIncludeDirectories="$incs" \
582 PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" \
583 RuntimeLibrary="0" \
584 UsePrecompiledHeader="0" \
585 WarningLevel="3" \
586 Detect64BitPortabilityProblems="true" \
587 DebugInformationFormat="0" \
589 esac
592 case "$target" in
593 x86*) tag Tool \
594 Name="VCCLCompilerTool" \
595 AdditionalIncludeDirectories="$incs" \
596 PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;$defines" \
597 RuntimeLibrary="$release_runtime" \
598 UsePrecompiledHeader="0" \
599 WarningLevel="3" \
600 DebugInformationFormat="0" \
601 Detect64BitPortabilityProblems="true"
603 $uses_asm && tag Tool Name="YASM" IncludePaths="$incs"
605 esac
607 case "$proj_kind" in
608 exe)
609 case "$target" in
610 x86*) tag Tool \
611 Name="VCLinkerTool" \
612 AdditionalDependencies="$libs \$(NoInherit)" \
613 AdditionalLibraryDirectories="$libdirs" \
615 arm*|iwmmx*)
616 case "$name" in
617 obj_int_extract) tag Tool \
618 Name="VCLinkerTool" \
619 OutputFile="${name}.exe" \
620 LinkIncremental="1" \
621 GenerateDebugInformation="false" \
622 SubSystem="0" \
623 OptimizeReferences="0" \
624 EnableCOMDATFolding="0" \
625 TargetMachine="0"
627 *) tag Tool \
628 Name="VCLinkerTool" \
629 AdditionalDependencies="$libs" \
630 OutputFile="\$(OutDir)/${name}.exe" \
631 LinkIncremental="1" \
632 AdditionalLibraryDirectories="${libdirs};&quot;..\lib/$plat_no_ws&quot;" \
633 DelayLoadDLLs="\$(NOINHERIT)" \
634 GenerateDebugInformation="true" \
635 ProgramDatabaseFile="\$(OutDir)/${name}.pdb" \
636 SubSystem="9" \
637 StackReserveSize="65536" \
638 StackCommitSize="4096" \
639 OptimizeReferences="2" \
640 EnableCOMDATFolding="2" \
641 EntryPointSymbol="mainWCRTStartup" \
642 TargetMachine="3"
644 esac
646 esac
648 lib)
649 case "$target" in
650 arm*|iwmmx*) tag Tool \
651 Name="VCLibrarianTool" \
652 AdditionalOptions=" /subsystem:windowsce,4.20 /machine:ARM" \
653 OutputFile="\$(OutDir)/${name}.lib" \
655 *) tag Tool \
656 Name="VCLibrarianTool" \
657 OutputFile="\$(OutDir)/${name}${lib_sfx}.lib" \
659 esac
661 dll) # note differences to debug version: LinkIncremental, AssemblyDebug
662 tag Tool \
663 Name="VCLinkerTool" \
664 AdditionalDependencies="\$(NoInherit)" \
665 LinkIncremental="1" \
666 GenerateDebugInformation="true" \
667 TargetMachine="1" \
668 $link_opts
669 esac
671 if [ "$target" == "armv6-wince-vs8" ] || [ "$target" == "armv5te-wince-vs8" ] || [ "$target" == "iwmmxt-wince-vs8" ] || [ "$target" == "iwmmxt2-wince-vs8" ];then
672 case "$name" in
673 vpx_decoder) tag DeploymentTool \
674 ForceDirty="-1" \
675 RegisterOutput="0"
677 example|xma) tag DeploymentTool \
678 ForceDirty="-1" \
679 RegisterOutput="0"
680 tag DebuggerTool \
681 Arguments="${ARGU}"
683 esac
686 close_tag Configuration
687 done
688 close_tag Configurations
690 open_tag Files
691 generate_filter srcs "Source Files" "cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
692 generate_filter hdrs "Header Files" "h;hpp;hxx;hm;inl;inc;xsd"
693 generate_filter resrcs "Resource Files" "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
694 generate_filter resrcs "Build Files" "mk"
695 close_tag Files
697 tag Globals
698 close_tag VisualStudioProject
700 # This must be done from within the {} subshell
701 echo "Ignored files list (${#file_list[@]} items) is:" >&2
702 for f in "${file_list[@]}"; do
703 echo " $f" >&2
704 done
707 generate_vcproj |
708 sed -e '/"/s;\([^ "]\)/;\1\\;g' > ${outfile}
710 exit
711 <!--
712 TODO: Add any files not captured by filters.
713 <File
714 RelativePath=".\ReadMe.txt"
716 </File>