From a1cfcb413d51338623d7ab99eeaefa735882f472 Mon Sep 17 00:00:00 2001 From: Johann Date: Mon, 28 Feb 2011 14:13:39 -0500 Subject: clean up msvs project generation add visual studio 9 to --help remove cpp, cxx, hpp, hxx files from filter add the ability to target project names. this will be necessary to enable obj_int_extract Change-Id: I407583320d8b67a0df40c07221838c42678792f7 --- build/make/gen_msvs_proj.sh | 355 +++++++++++++++++++++++--------------------- 1 file changed, 189 insertions(+), 166 deletions(-) (limited to 'build') diff --git a/build/make/gen_msvs_proj.sh b/build/make/gen_msvs_proj.sh index 5921a2b10..becd95827 100755 --- a/build/make/gen_msvs_proj.sh +++ b/build/make/gen_msvs_proj.sh @@ -32,7 +32,7 @@ Options: --name=project_name Name of the project (required) --proj-guid=GUID GUID to use for the project --module-def=filename File containing export definitions (for DLLs) - --ver=version Version (7,8) of visual studio to generate for + --ver=version Version (7,8,9) of visual studio to generate for -Ipath/to/include Additional include directories -DFLAG[=value] Preprocessor macros to define -Lpath/to/lib Additional library search paths @@ -132,7 +132,7 @@ generate_filter() { open_tag Filter \ Name=$name \ Filter=$pats \ - UniqueIdentifier=`generate_uuid` + UniqueIdentifier=`generate_uuid` \ file_list_sz=${#file_list[@]} for i in ${!file_list[@]}; do @@ -145,31 +145,21 @@ generate_filter() { if [ "$pat" == "asm" ] && $asm_use_custom_step; then for plat in "${platforms[@]}"; do for cfg in Debug Release; do - open_tag FileConfiguration \ - Name="${cfg}|${plat}" + open_tag FileConfiguration \ + Name="${cfg}|${plat}" \ + tag Tool \ Name="VCCustomBuildTool" \ Description="Assembling \$(InputFileName)" \ - CommandLine="$(eval echo \$asm_${cfg}_cmdline)"\ - Outputs="\$(InputName).obj" + CommandLine="$(eval echo \$asm_${cfg}_cmdline)" \ + Outputs="\$(InputName).obj" \ + close_tag FileConfiguration done done fi - if [ "${f##*.}" == "cpp" ]; then - for plat in "${platforms[@]}"; do - for cfg in Debug Release; do - open_tag FileConfiguration \ - Name="${cfg}|${plat}" - tag Tool \ - Name="VCCLCompilerTool" \ - CompileAs="2" - close_tag FileConfiguration - done - done - fi - close_tag File + close_tag File break fi @@ -185,57 +175,61 @@ unset target for opt in "$@"; do optval="${opt#*=}" case "$opt" in - --help|-h) show_help - ;; - --target=*) target="${optval}" - ;; - --out=*) outfile="$optval" - ;; - --name=*) name="${optval}" - ;; - --proj-guid=*) guid="${optval}" - ;; - --module-def=*) - link_opts="${link_opts} ModuleDefinitionFile=${optval}" - ;; - --exe) proj_kind="exe" - ;; - --lib) proj_kind="lib" - ;; - --static-crt) use_static_runtime=true - ;; - --ver=*) vs_ver="$optval" - case $optval in - [789]) - ;; - *) die Unrecognized Visual Studio Version in $opt - ;; - esac - ;; - -I*) opt="${opt%/}" - incs="${incs}${incs:+;}"${opt##-I}"" - yasmincs="${yasmincs} ${opt}" - ;; - -D*) defines="${defines}${defines:+;}${opt##-D}" - ;; - -L*) # fudge . to $(OutDir) - if [ "${opt##-L}" == "." ]; then - libdirs="${libdirs}${libdirs:+;}"\$(OutDir)"" - else - # Also try directories for this platform/configuration - libdirs="${libdirs}${libdirs:+;}"${opt##-L}"" - libdirs="${libdirs}${libdirs:+;}"${opt##-L}/\$(PlatformName)/\$(ConfigurationName)"" - libdirs="${libdirs}${libdirs:+;}"${opt##-L}/\$(PlatformName)"" - fi - ;; - -l*) libs="${libs}${libs:+ }${opt##-l}.lib" - ;; - -*) die_unknown $opt - ;; - *) file_list[${#file_list[@]}]="$opt" - case "$opt" in - *.asm) uses_asm=true;; - esac + --help|-h) show_help + ;; + --target=*) target="${optval}" + ;; + --out=*) outfile="$optval" + ;; + --name=*) name="${optval}" + ;; + --proj-guid=*) guid="${optval}" + ;; + --module-def=*) link_opts="${link_opts} ModuleDefinitionFile=${optval}" + ;; + --exe) proj_kind="exe" + ;; + --lib) proj_kind="lib" + ;; + --static-crt) use_static_runtime=true + ;; + --ver=*) + vs_ver="$optval" + case "$optval" in + [789]) + ;; + *) die Unrecognized Visual Studio Version in $opt + ;; + esac + ;; + -I*) + opt="${opt%/}" + incs="${incs}${incs:+;}"${opt##-I}"" + yasmincs="${yasmincs} ${opt}" + ;; + -D*) defines="${defines}${defines:+;}${opt##-D}" + ;; + -L*) # fudge . to $(OutDir) + if [ "${opt##-L}" == "." ]; then + libdirs="${libdirs}${libdirs:+;}"\$(OutDir)"" + else + # Also try directories for this platform/configuration + libdirs="${libdirs}${libdirs:+;}"${opt##-L}"" + libdirs="${libdirs}${libdirs:+;}"${opt##-L}/\$(PlatformName)/\$(ConfigurationName)"" + libdirs="${libdirs}${libdirs:+;}"${opt##-L}/\$(PlatformName)"" + fi + ;; + -l*) libs="${libs}${libs:+ }${opt##-l}.lib" + ;; + -*) die_unknown $opt + ;; + *) + file_list[${#file_list[@]}]="$opt" + case "$opt" in + *.asm) uses_asm=true + ;; + esac + ;; esac done outfile=${outfile:-/dev/stdout} @@ -278,8 +272,7 @@ done # List Keyword for this target case "$target" in - x86*) - keyword="ManagedCProj" + x86*) keyword="ManagedCProj" ;; *) die "Unsupported target $target!" esac @@ -296,155 +289,185 @@ case "$target" in asm_Release_cmdline="yasm -Xvc -f \$(PlatformName) ${yasmincs} "\$(InputPath)"" ;; *) die "Unsupported target $target!" + ;; esac generate_vcproj() { case "$proj_kind" in - exe) vs_ConfigurationType=1 - ;; - *) vs_ConfigurationType=4 - ;; + exe) vs_ConfigurationType=1 + ;; + *) vs_ConfigurationType=4 + ;; esac echo "" - open_tag VisualStudioProject \ - ProjectType="Visual C++" \ - Version="${vs_ver_id}" \ - Name="${name}" \ - ProjectGUID="{${guid}}" \ - RootNamespace="${name}" \ - Keyword="${keyword}" - - open_tag Platforms + open_tag VisualStudioProject \ + ProjectType="Visual C++" \ + Version="${vs_ver_id}" \ + Name="${name}" \ + ProjectGUID="{${guid}}" \ + RootNamespace="${name}" \ + Keyword="${keyword}" \ + + open_tag Platforms for plat in "${platforms[@]}"; do - tag Platform Name="$plat" + tag Platform Name="$plat" done close_tag Platforms - open_tag ToolFiles + open_tag ToolFiles case "$target" in x86*) $uses_asm && tag ToolFile RelativePath="$self_dirname/../x86-msvs/yasm.rules" ;; esac close_tag ToolFiles - open_tag Configurations + open_tag Configurations for plat in "${platforms[@]}"; do plat_no_ws=`echo $plat | sed 's/[^A-Za-z0-9_]/_/g'` - open_tag Configuration \ - Name="Debug|$plat" \ - OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \ - IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \ - ConfigurationType="$vs_ConfigurationType" \ - CharacterSet="1" + open_tag Configuration \ + Name="Debug|$plat" \ + OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \ + IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \ + ConfigurationType="$vs_ConfigurationType" \ + CharacterSet="1" \ case "$target" in - x86*) tag Tool \ - Name="VCCLCompilerTool" \ - Optimization="0" \ - AdditionalIncludeDirectories="$incs" \ - PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \ - RuntimeLibrary="$debug_runtime" \ - UsePrecompiledHeader="0" \ - WarningLevel="3" \ - DebugInformationFormat="1" \ - Detect64BitPortabilityProblems="true" \ - - $uses_asm && tag Tool Name="YASM" IncludePaths="$incs" Debug="1" + x86*) + case "$name" in + *) + tag Tool \ + Name="VCCLCompilerTool" \ + Optimization="0" \ + AdditionalIncludeDirectories="$incs" \ + PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \ + RuntimeLibrary="$debug_runtime" \ + UsePrecompiledHeader="0" \ + WarningLevel="3" \ + DebugInformationFormat="1" \ + Detect64BitPortabilityProblems="true" \ + + $uses_asm && tag Tool Name="YASM" IncludePaths="$incs" Debug="1" + ;; + esac ;; esac case "$proj_kind" in exe) case "$target" in - x86*) tag Tool \ - Name="VCLinkerTool" \ - AdditionalDependencies="$debug_libs \$(NoInherit)" \ - AdditionalLibraryDirectories="$libdirs" \ - GenerateDebugInformation="true" \ - ProgramDatabaseFile="\$(OutDir)/${name}.pdb" \ - + x86*) + case "$name" in + *) + tag Tool \ + Name="VCLinkerTool" \ + AdditionalDependencies="$debug_libs \$(NoInherit)" \ + AdditionalLibraryDirectories="$libdirs" \ + GenerateDebugInformation="true" \ + ProgramDatabaseFile="\$(OutDir)/${name}.pdb" \ + ;; + esac ;; esac ;; lib) case "$target" in - *) tag Tool \ - Name="VCLibrarianTool" \ - OutputFile="\$(OutDir)/${name}${lib_sfx}d.lib" \ - ;; + x86*) + tag Tool \ + Name="VCLibrarianTool" \ + OutputFile="\$(OutDir)/${name}${lib_sfx}d.lib" \ + + ;; esac ;; - dll) tag Tool \ - Name="VCLinkerTool" \ - AdditionalDependencies="\$(NoInherit)" \ - LinkIncremental="2" \ - GenerateDebugInformation="true" \ - AssemblyDebug="1" \ - TargetMachine="1" \ - $link_opts + dll) + tag Tool \ + Name="VCLinkerTool" \ + AdditionalDependencies="\$(NoInherit)" \ + LinkIncremental="2" \ + GenerateDebugInformation="true" \ + AssemblyDebug="1" \ + TargetMachine="1" \ + $link_opts \ + + ;; esac close_tag Configuration - open_tag Configuration \ - Name="Release|$plat" \ - OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \ - IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \ - ConfigurationType="$vs_ConfigurationType" \ - CharacterSet="1" \ - WholeProgramOptimization="0" + open_tag Configuration \ + Name="Release|$plat" \ + OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \ + IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \ + ConfigurationType="$vs_ConfigurationType" \ + CharacterSet="1" \ + WholeProgramOptimization="0" \ - case "$target" in - x86*) tag Tool \ - Name="VCCLCompilerTool" \ - AdditionalIncludeDirectories="$incs" \ - PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \ - RuntimeLibrary="$release_runtime" \ - UsePrecompiledHeader="0" \ - WarningLevel="3" \ - DebugInformationFormat="0" \ - Detect64BitPortabilityProblems="true" - - $uses_asm && tag Tool Name="YASM" IncludePaths="$incs" - ;; + case "$target" in + x86*) + case "$name" in + *) + tag Tool \ + Name="VCCLCompilerTool" \ + AdditionalIncludeDirectories="$incs" \ + PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \ + RuntimeLibrary="$release_runtime" \ + UsePrecompiledHeader="0" \ + WarningLevel="3" \ + DebugInformationFormat="0" \ + Detect64BitPortabilityProblems="true" \ + + $uses_asm && tag Tool Name="YASM" IncludePaths="$incs" + ;; esac + ;; + esac case "$proj_kind" in exe) case "$target" in - x86*) tag Tool \ - Name="VCLinkerTool" \ - AdditionalDependencies="$libs \$(NoInherit)" \ - AdditionalLibraryDirectories="$libdirs" \ + x86*) + case "$name" in + *) + tag Tool \ + Name="VCLinkerTool" \ + AdditionalDependencies="$libs \$(NoInherit)" \ + AdditionalLibraryDirectories="$libdirs" \ + + ;; + esac ;; esac ;; - lib) + lib) case "$target" in - *) tag Tool \ - Name="VCLibrarianTool" \ - OutputFile="\$(OutDir)/${name}${lib_sfx}.lib" \ - ;; + x86*) + tag Tool \ + Name="VCLibrarianTool" \ + OutputFile="\$(OutDir)/${name}${lib_sfx}.lib" \ + + ;; esac - ;; - dll) # note differences to debug version: LinkIncremental, AssemblyDebug - tag Tool \ - Name="VCLinkerTool" \ - AdditionalDependencies="\$(NoInherit)" \ - LinkIncremental="1" \ - GenerateDebugInformation="true" \ - TargetMachine="1" \ - $link_opts + ;; + dll) # note differences to debug version: LinkIncremental, AssemblyDebug + tag Tool \ + Name="VCLinkerTool" \ + AdditionalDependencies="\$(NoInherit)" \ + LinkIncremental="1" \ + GenerateDebugInformation="true" \ + TargetMachine="1" \ + $link_opts \ + + ;; esac close_tag Configuration done close_tag Configurations - open_tag Files - generate_filter srcs "Source Files" "cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - generate_filter hdrs "Header Files" "h;hpp;hxx;hm;inl;inc;xsd" + open_tag Files + generate_filter srcs "Source Files" "c;def;odl;idl;hpj;bat;asm;asmx" + generate_filter hdrs "Header Files" "h;hm;inl;inc;xsd" generate_filter resrcs "Resource Files" "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" generate_filter resrcs "Build Files" "mk" close_tag Files -- cgit v1.2.3