6eec73a747
The obj_int_extract code is no longer worth maintaining. It creates significant issues when adapting for different build systems and no longer offers as significant of a performance benefit due to improvements in intrinsics. Source files will remain until the various third-party builds are updated. The neon fast quantizer has been moved to intrinsics. The armv6 version has been removed because so few remaining targets require it. Compilers and processors have improved significantly since the pack_tokens code was written. The assembly is no longer faster than the C code. pack_tokens were the only optimizations for the armv5te targets so the targets will be removed after the test infrastructure has been updated. BUG=710 Change-Id: Ic785b167cd9f95eeff31c7c76b7b736c07fb30eb
487 lines
16 KiB
Bash
Executable File
487 lines
16 KiB
Bash
Executable File
#!/bin/bash
|
|
##
|
|
## Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
|
##
|
|
## Use of this source code is governed by a BSD-style license
|
|
## that can be found in the LICENSE file in the root of the source
|
|
## tree. An additional intellectual property rights grant can be found
|
|
## in the file PATENTS. All contributing project authors may
|
|
## be found in the AUTHORS file in the root of the source tree.
|
|
##
|
|
|
|
self=$0
|
|
self_basename=${self##*/}
|
|
self_dirname=$(dirname "$0")
|
|
|
|
. "$self_dirname/msvs_common.sh"|| exit 127
|
|
|
|
show_help() {
|
|
cat <<EOF
|
|
Usage: ${self_basename} --name=projname [options] file1 [file2 ...]
|
|
|
|
This script generates a Visual Studio project file from a list of source
|
|
code files.
|
|
|
|
Options:
|
|
--help Print this message
|
|
--exe Generate a project for building an Application
|
|
--lib Generate a project for creating a static library
|
|
--dll Generate a project for creating a dll
|
|
--static-crt Use the static C runtime (/MT)
|
|
--target=isa-os-cc Target specifier (required)
|
|
--out=filename Write output to a file [stdout]
|
|
--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,9) of visual studio to generate for
|
|
--src-path-bare=dir Path to root of source tree
|
|
-Ipath/to/include Additional include directories
|
|
-DFLAG[=value] Preprocessor macros to define
|
|
-Lpath/to/lib Additional library search paths
|
|
-llibname Library to link against
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
generate_filter() {
|
|
local var=$1
|
|
local name=$2
|
|
local pats=$3
|
|
local file_list_sz
|
|
local i
|
|
local f
|
|
local saveIFS="$IFS"
|
|
local pack
|
|
echo "generating filter '$name' from ${#file_list[@]} files" >&2
|
|
IFS=*
|
|
|
|
open_tag Filter \
|
|
Name=$name \
|
|
Filter=$pats \
|
|
UniqueIdentifier=`generate_uuid` \
|
|
|
|
file_list_sz=${#file_list[@]}
|
|
for i in ${!file_list[@]}; do
|
|
f=${file_list[i]}
|
|
for pat in ${pats//;/$IFS}; do
|
|
if [ "${f##*.}" == "$pat" ]; then
|
|
unset file_list[i]
|
|
|
|
objf=$(echo ${f%.*}.obj \
|
|
| sed -e "s,$src_path_bare,," \
|
|
-e 's/^[\./]\+//g' -e 's,[:/ ],_,g')
|
|
open_tag File RelativePath="$f"
|
|
|
|
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}" \
|
|
|
|
tag Tool \
|
|
Name="VCCustomBuildTool" \
|
|
Description="Assembling \$(InputFileName)" \
|
|
CommandLine="$(eval echo \$asm_${cfg}_cmdline) -o \$(IntDir)\\$objf" \
|
|
Outputs="\$(IntDir)\\$objf" \
|
|
|
|
close_tag FileConfiguration
|
|
done
|
|
done
|
|
fi
|
|
if [ "$pat" == "c" ] || \
|
|
[ "$pat" == "cc" ] || [ "$pat" == "cpp" ]; then
|
|
for plat in "${platforms[@]}"; do
|
|
for cfg in Debug Release; do
|
|
open_tag FileConfiguration \
|
|
Name="${cfg}|${plat}" \
|
|
|
|
tag Tool \
|
|
Name="VCCLCompilerTool" \
|
|
ObjectFile="\$(IntDir)\\$objf" \
|
|
|
|
close_tag FileConfiguration
|
|
done
|
|
done
|
|
fi
|
|
close_tag File
|
|
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
|
|
close_tag Filter
|
|
IFS="$saveIFS"
|
|
}
|
|
|
|
# Process command line
|
|
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"
|
|
;;
|
|
--dll) proj_kind="dll"
|
|
;;
|
|
--lib) proj_kind="lib"
|
|
;;
|
|
--src-path-bare=*)
|
|
src_path_bare=$(fix_path "$optval")
|
|
src_path_bare=${src_path_bare%/}
|
|
;;
|
|
--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##-I}
|
|
opt=$(fix_path "$opt")
|
|
opt="${opt%/}"
|
|
incs="${incs}${incs:+;}"${opt}""
|
|
yasmincs="${yasmincs} -I"${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
|
|
opt=${opt##-L}
|
|
opt=$(fix_path "$opt")
|
|
libdirs="${libdirs}${libdirs:+;}"${opt}""
|
|
libdirs="${libdirs}${libdirs:+;}"${opt}/\$(PlatformName)/\$(ConfigurationName)""
|
|
libdirs="${libdirs}${libdirs:+;}"${opt}/\$(PlatformName)""
|
|
fi
|
|
;;
|
|
-l*) libs="${libs}${libs:+ }${opt##-l}.lib"
|
|
;;
|
|
-*) die_unknown $opt
|
|
;;
|
|
*)
|
|
# The paths in file_list are fixed outside of the loop.
|
|
file_list[${#file_list[@]}]="$opt"
|
|
case "$opt" in
|
|
*.asm) uses_asm=true
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Make one call to fix_path for file_list to improve performance.
|
|
fix_file_list
|
|
|
|
outfile=${outfile:-/dev/stdout}
|
|
guid=${guid:-`generate_uuid`}
|
|
asm_use_custom_step=false
|
|
uses_asm=${uses_asm:-false}
|
|
case "${vs_ver:-8}" in
|
|
7) vs_ver_id="7.10"
|
|
asm_use_custom_step=$uses_asm
|
|
warn_64bit='Detect64BitPortabilityProblems=true'
|
|
;;
|
|
8) vs_ver_id="8.00"
|
|
asm_use_custom_step=$uses_asm
|
|
warn_64bit='Detect64BitPortabilityProblems=true'
|
|
;;
|
|
9) vs_ver_id="9.00"
|
|
asm_use_custom_step=$uses_asm
|
|
warn_64bit='Detect64BitPortabilityProblems=false'
|
|
;;
|
|
esac
|
|
|
|
[ -n "$name" ] || die "Project name (--name) must be specified!"
|
|
[ -n "$target" ] || die "Target (--target) must be specified!"
|
|
|
|
if ${use_static_runtime:-false}; then
|
|
release_runtime=0
|
|
debug_runtime=1
|
|
lib_sfx=mt
|
|
else
|
|
release_runtime=2
|
|
debug_runtime=3
|
|
lib_sfx=md
|
|
fi
|
|
|
|
# Calculate debug lib names: If a lib ends in ${lib_sfx}.lib, then rename
|
|
# it to ${lib_sfx}d.lib. This precludes linking to release libs from a
|
|
# debug exe, so this may need to be refactored later.
|
|
for lib in ${libs}; do
|
|
if [ "$lib" != "${lib%${lib_sfx}.lib}" ]; then
|
|
lib=${lib%.lib}d.lib
|
|
fi
|
|
debug_libs="${debug_libs}${debug_libs:+ }${lib}"
|
|
done
|
|
|
|
|
|
# List Keyword for this target
|
|
case "$target" in
|
|
x86*) keyword="ManagedCProj"
|
|
;;
|
|
*) die "Unsupported target $target!"
|
|
esac
|
|
|
|
# List of all platforms supported for this target
|
|
case "$target" in
|
|
x86_64*)
|
|
platforms[0]="x64"
|
|
asm_Debug_cmdline="yasm -Xvc -g cv8 -f win64 ${yasmincs} "\$(InputPath)""
|
|
asm_Release_cmdline="yasm -Xvc -f win64 ${yasmincs} "\$(InputPath)""
|
|
;;
|
|
x86*)
|
|
platforms[0]="Win32"
|
|
asm_Debug_cmdline="yasm -Xvc -g cv8 -f win32 ${yasmincs} "\$(InputPath)""
|
|
asm_Release_cmdline="yasm -Xvc -f win32 ${yasmincs} "\$(InputPath)""
|
|
;;
|
|
*) die "Unsupported target $target!"
|
|
;;
|
|
esac
|
|
|
|
generate_vcproj() {
|
|
case "$proj_kind" in
|
|
exe) vs_ConfigurationType=1
|
|
;;
|
|
dll) vs_ConfigurationType=2
|
|
;;
|
|
*) vs_ConfigurationType=4
|
|
;;
|
|
esac
|
|
|
|
echo "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>"
|
|
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"
|
|
done
|
|
close_tag Platforms
|
|
|
|
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" \
|
|
|
|
case "$target" in
|
|
x86*)
|
|
case "$name" in
|
|
vpx)
|
|
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="2" \
|
|
$warn_64bit \
|
|
|
|
$uses_asm && tag Tool Name="YASM" IncludePaths="$incs" Debug="true"
|
|
;;
|
|
*)
|
|
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="2" \
|
|
$warn_64bit \
|
|
|
|
$uses_asm && tag Tool Name="YASM" IncludePaths="$incs" Debug="true"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$proj_kind" in
|
|
exe)
|
|
case "$target" in
|
|
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
|
|
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 \
|
|
|
|
;;
|
|
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" \
|
|
|
|
case "$target" in
|
|
x86*)
|
|
case "$name" in
|
|
vpx)
|
|
tag Tool \
|
|
Name="VCCLCompilerTool" \
|
|
Optimization="2" \
|
|
FavorSizeorSpeed="1" \
|
|
AdditionalIncludeDirectories="$incs" \
|
|
PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \
|
|
RuntimeLibrary="$release_runtime" \
|
|
UsePrecompiledHeader="0" \
|
|
WarningLevel="3" \
|
|
DebugInformationFormat="0" \
|
|
$warn_64bit \
|
|
|
|
$uses_asm && tag Tool Name="YASM" IncludePaths="$incs"
|
|
;;
|
|
*)
|
|
tag Tool \
|
|
Name="VCCLCompilerTool" \
|
|
AdditionalIncludeDirectories="$incs" \
|
|
Optimization="2" \
|
|
FavorSizeorSpeed="1" \
|
|
PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \
|
|
RuntimeLibrary="$release_runtime" \
|
|
UsePrecompiledHeader="0" \
|
|
WarningLevel="3" \
|
|
DebugInformationFormat="0" \
|
|
$warn_64bit \
|
|
|
|
$uses_asm && tag Tool Name="YASM" IncludePaths="$incs"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$proj_kind" in
|
|
exe)
|
|
case "$target" in
|
|
x86*)
|
|
case "$name" in
|
|
*)
|
|
tag Tool \
|
|
Name="VCLinkerTool" \
|
|
AdditionalDependencies="$libs \$(NoInherit)" \
|
|
AdditionalLibraryDirectories="$libdirs" \
|
|
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
;;
|
|
lib)
|
|
case "$target" in
|
|
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 \
|
|
|
|
;;
|
|
esac
|
|
|
|
close_tag Configuration
|
|
done
|
|
close_tag Configurations
|
|
|
|
open_tag Files
|
|
generate_filter srcs "Source Files" "c;cc;cpp;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
|
|
|
|
tag Globals
|
|
close_tag VisualStudioProject
|
|
|
|
# This must be done from within the {} subshell
|
|
echo "Ignored files list (${#file_list[@]} items) is:" >&2
|
|
for f in "${file_list[@]}"; do
|
|
echo " $f" >&2
|
|
done
|
|
}
|
|
|
|
generate_vcproj |
|
|
sed -e '/"/s;\([^ "]\)/;\1\\;g' > ${outfile}
|
|
|
|
exit
|
|
<!--
|
|
TODO: Add any files not captured by filters.
|
|
<File
|
|
RelativePath=".\ReadMe.txt"
|
|
>
|
|
</File>
|
|
-->
|