Compare commits

..

53 Commits

Author SHA1 Message Date
odrling 8615152bc2 [windows] add Amaranth in installer 2019-10-15 19:20:13 +02:00
odrling 1817ba6631 [ci] add redirection to latest version [skip ci] 2019-09-23 14:26:17 +02:00
odrling d47db93aec [windows] add openssl dlls to installation 2019-09-21 00:03:04 +02:00
odrling 61f05d2347 fix openssl build 2019-09-16 15:02:58 +02:00
odrling 3cfb48d3f6 [ci] print tag message in `latest` 2019-09-16 14:11:55 +02:00
odrling 642a96eed9 Merge branch 'ssl_update' 2019-09-16 12:38:04 +02:00
odrling fca70b014f [ci] add openssl libs after building BuildTasks 2019-09-16 08:47:42 +02:00
odrling 4fe7f57b95 [build] link libcrypto and libssl in VS 2019-09-16 03:25:49 +02:00
odrling 2ce7080077 [appveyor] use https to download codecs 2019-09-11 16:33:40 +02:00
odrling 44e45879ef Merge branch 'master' of github.com:odrling/Aegisub 2019-09-11 16:33:13 +02:00
RhiobeT 1774b59220 Add command to insert space after syllab 2019-09-11 15:55:14 +02:00
odrling 75d9473653 update boost 2019-09-10 11:01:35 +02:00
odrling 35c92b64b5 . 2019-09-10 10:49:55 +02:00
odrling c84d6376d9 [updates] use https 2019-09-10 10:39:51 +02:00
odrling e4b80f19c5 Merge branch 'master' of github.com:TypesettingTools/Aegisub 2019-09-09 14:28:30 +02:00
odrling 7c69b2a9fc put 'x64' after release version 2019-09-01 21:02:54 +02:00
odrling b33ccb591d set update url protocol to http 2019-09-01 19:51:25 +02:00
odrling eab9e2cc09 fix upload script 2019-09-01 19:51:25 +02:00
odrling 4b2f9d864a get the right release version on windows 2019-08-31 16:28:57 +02:00
odrling a08026ba41 C#... 2019-08-31 11:54:16 +02:00
odrling 5ae8bfe521 ... 2019-08-31 11:45:55 +02:00
odrling 4cf1eb084f forgot the name of the tag 2019-08-31 11:35:13 +02:00
odrling 6d8be650c7 [ci] let's see if it works 2019-08-31 11:30:02 +02:00
odrling 37588eb75a [ci] .. 2019-08-31 02:31:54 +02:00
odrling 49503516fb [ci] . 2019-08-31 02:23:00 +02:00
odrling 8ca0bfd366 [ci] generate git_version.h in the script 2019-08-31 01:48:12 +02:00
odrling f996638648 it just looks better 2019-08-31 01:38:13 +02:00
odrling a68f670908 simplify update system 2019-08-31 01:26:44 +02:00
odrling 5108535f52 Revert "Temporarily disable auto updates"
This reverts commit ac88140aaa.
2019-08-31 01:09:42 +02:00
odrling a958faea51 [appveyor] upload build via ftp part 3 2019-08-31 00:52:20 +02:00
odrling 0953d23168 [appveyor] auto ftp upload part 2 2019-08-30 23:45:07 +02:00
odrling 3f2a16c2b3 [appveyor] upload tagged release via ftp 2019-08-30 23:03:07 +02:00
RhiobeT ac88140aaa Temporarily disable auto updates 2019-08-29 12:15:58 +02:00
Jeanjean Pierre 2ac564092d Add Windows build through AppVeyor CI 2019-08-29 11:33:46 +02:00
odrling 8ab7a886d3 [style] keep font size and playback resolution constant 2019-08-24 19:09:44 +02:00
odrling 7ec32f8b2e [config] change Link volume/spectrum and Snap 2019-08-24 16:17:30 +02:00
odrling fbe26ad6c2 [automation] remove scripts from windows installation 2019-08-24 05:04:59 +02:00
odrling 0f1e16c51b Merge branch 'ttt' 2019-08-24 02:11:25 +02:00
odrling bd6383a4cc Merge branch 'tap-to-time-tt-fork' of github.com:EaterOA/Aegisub into ttt 2019-08-24 01:41:50 +02:00
odrling 78097c63f0 [automation] remove scripts that seem totally useless 2019-08-24 01:39:49 +02:00
odrling 0146c2e13f [automation] remove scripts that seem totally useless 2019-08-24 01:31:03 +02:00
odrling deaf588af9 [build] apply patch for lua 2019-08-20 01:52:21 +02:00
odrling 30f2d5ac09 [style] increase default font size 2019-08-19 15:23:34 +02:00
odrling ce60cfed61 [automation] add scripts to windows installer
untested so I hope it's doing the right thing
2019-08-19 15:16:05 +02:00
odrling 4ac55501c3 [Karaoke] disable drag timing
disables "Left-click drag moves end marker"
2019-08-19 00:22:43 +02:00
odrling 155cd9937a [style] change default style 2019-08-19 00:12:46 +02:00
odrling 7bd37b6ca1 [Karaoke] Autocommit and autofocus 2019-08-18 23:47:29 +02:00
odrling ebc0a31d48 [hotkeys] change default hotkeys
let's see if we keep this but I think it should be useful
2019-08-18 23:35:29 +02:00
odrling 03d5ff6980 [automation] add amoegisub scripts 2019-08-18 23:25:24 +02:00
Vincent Wong 35cd0322ca Audio/timing: minor style, comment
A bit more clarification of code logic. Follow predominant if/else style
2018-11-21 21:21:38 -08:00
Vincent Wong 44bda6e5d9 Audio/Timing: implement tap-to-time
Tap-to-time provides the user the ability to tap to the lyrics/syllables
of the song in order to time lines or karaoke. It consists of these
extra UI interactions:

- **Indicator**: tap marker: a designated marker that can be moved to
  the current audio position; indicated in:
  - the audio display by a green arrow underneath a marker
  - the karaoke display by a green-colored syllable
- **Control**: tap marker: the tap marker can be changed by selecting
  syllables on audio display in karaoke mode, or clicking the markers on
  audio display in dialogue mode
- **Control**: ctrl-right-click audio display: starts playing the audio
  from that exact position until the end of the file
- **Option**: Timing/Tap To Time: enables the tap marker indicator and
  commands
- **Button**: time_opt_tap_to_time: toggles the Timing/Tap To Time option
- **Button**: time_tap_connect (hotkey I): a command that:
  - moves the tap marker's position to the current playing audio
    position
  - sets the next marker to be the tap marker
  - if the tap marker is already the last marker AND BOTH autocommit AND
    next-line-on-commit is ON, will move onto the next line
  - if moved on to the next line, also sets the start marker to the current
    audio position, so the two lines are connected, and moves to the
    next tap marker (essentially reinvoking time_tap_connect once)
- **Button**: time_tap_no_connect (hotkey O): similar to
  time_tap_connect, except it will not set the next line's start
  position even if moved to the next line

Expected workflow:
1) User loads song lyrics
2) User splits each line into syllables
3) User turns on tap-to-time, autocommit, and next-line-on-commit
4) User plays audio from beginning, tapping time_tap_connect to each
syllable, occasionally tapping time_tap_no_connect when a break between
lines is desired
5) If user messes up a line, they can set the tap marker to where they
want to restart from, and ctrl-right-click to start the audio a few
seconds before it
6) Syllables can be split/merged at will, and adjustments to timing can
be done using normal karaoke timing controls
2018-11-21 21:21:31 -08:00
Vincent Wong a74323803b AudioTimingControllerKaraoke: move timing correction above MoveMarker
Having the timing correction in MoveMarker is extremely surprising
behavior if any other part of the code uses MoveMarker expecting it to
work correctly as advertised
2018-11-21 21:18:59 -08:00
Vincent Wong f1d17ac6b7 audio_timing: add missing param comment for OnLeftClick
Missing the alt_click param in comment
2018-11-21 21:18:59 -08:00
1135 changed files with 372924 additions and 235585 deletions

View File

@ -0,0 +1,14 @@
#!/bin/bash
dest="ftp://shelter.mahoro-net.org/aegisub-japan7"
tag=$(git describe --exact-match)
[ "$tag" ] || exit
curl -T 'packages\win_installer\output\Aegisub-Japan7-x64.exe' --user $FTP_USER:$FTP_PASS "$dest/Aegisub-Japan7-${tag#v}-x64.exe"
printf "${tag#v}\n$(git tag -l --format='%(contents)' $tag)" > latest
curl -T latest --user "$FTP_USER:$FTP_PASS" "$dest/"
url="Aegisub-Japan7-${tag#v}-x64.exe"
printf "<!doctype html><html><head><meta http-equiv='refresh' content='0; url=$url' /></head><body><a href='$url'>$url</a></body></html>" > Aegisub-Japan7-latest-x64.exe
curl -T Aegisub-Japan7-latest-x64.exe --user "$FTP_USER:$FTP_PASS" "$dest/"

View File

@ -1,247 +0,0 @@
name: Meson CI
on:
push:
branches:
- master
- feature
- cibuilds
pull_request:
branches:
- master
- feature
workflow_dispatch:
jobs:
build:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- name: Windows MSVC Release
os: windows-latest
msvc: true
buildtype: release
args: >-
-Ddefault_library=static
--force-fallback-for=zlib,harfbuzz,freetype2,fribidi,libpng
-Dfreetype2:harfbuzz=disabled
-Dharfbuzz:freetype=disabled
-Dharfbuzz:cairo=disabled
-Dharfbuzz:glib=disabled
-Dharfbuzz:gobject=disabled
-Dharfbuzz:tests=disabled
-Dharfbuzz:docs=disabled
-Dharfbuzz:icu=disabled
-Dfribidi:tests=false
-Dfribidi:docs=false
-Dlibass:fontconfig=disabled
-Dffmpeg:libdav1d=enabled
-Davisynth=enabled
-Dbestsource=enabled
-Dvapoursynth=enabled
- name: Windows MSVC Release (wx master)
os: windows-latest
msvc: true
buildtype: release
args: >-
-Ddefault_library=static
--force-fallback-for=zlib,harfbuzz,freetype2,fribidi,libpng
-Dfreetype2:harfbuzz=disabled
-Dharfbuzz:freetype=disabled
-Dharfbuzz:cairo=disabled
-Dharfbuzz:glib=disabled
-Dharfbuzz:gobject=disabled
-Dharfbuzz:tests=disabled
-Dharfbuzz:docs=disabled
-Dharfbuzz:icu=disabled
-Dfribidi:tests=false
-Dfribidi:docs=false
-Dlibass:fontconfig=disabled
-Dffmpeg:libdav1d=enabled
-Davisynth=enabled
-Dbestsource=enabled
-Dvapoursynth=enabled
-Dwx_version='3.3.0'
#- {
# name: Windows MinGW,
# os: windows-latest,
# msvc: false
#}
- {
name: Ubuntu Debug,
os: ubuntu-latest,
buildtype: debugoptimized,
args: ''
}
- {
name: Ubuntu Release,
os: ubuntu-latest,
buildtype: release,
args: ''
}
- name: Ubuntu AppImage
os: ubuntu-22.04
buildtype: release
appimage: true
# distro ffms is currently broken
args: >-
--prefix=/usr
-Dbuild_appimage=true
-Ddefault_library=static
--force-fallback-for=ffms2
-Dffmpeg:libdav1d=enabled
-Davisynth=enabled
-Dbestsource=enabled
-Dvapoursynth=enabled
- {
name: macOS (amd64) Release,
os: macos-13,
buildtype: release,
args: -Ddefault_library=static -Dbuild_osx_bundle=true -Dlocal_boost=true -Dvapoursynth=enabled --force-fallback-for=ffms2 -Dbestsource=enabled
}
- {
name: macOS (arm64) Release,
os: macos-latest,
buildtype: release,
args: -Ddefault_library=static -Dbuild_osx_bundle=true -Dlocal_boost=true -Dvapoursynth=enabled --force-fallback-for=ffms2 -Dbestsource=enabled
}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: '0'
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Setup Meson
run: |
python -m pip install --upgrade pip setuptools
pip install meson
- name: Setup MSVC
if: matrix.config.os == 'windows-latest' && matrix.config.msvc == true
uses: ilammy/msvc-dev-cmd@v1
- name: Install dependencies (Windows)
if: matrix.config.os == 'windows-latest'
run: |
choco install ninja innosetup
$moonscripturl = "https://github.com/leafo/moonscript/releases/download/win32-v0.5.0/moonscript-187bac54ee5a7450013e9c38e005a0e671b76f45.zip"
mkdir moonscript
Invoke-WebRequest -Uri $moonscripturl -OutFile ".\moonscript\moonscript.zip"
pushd moonscript
7z e moonscript.zip
Get-Location | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
popd
$gettexturl = "https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-static-64.zip"
Invoke-WebRequest -Uri $gettexturl -OutFile ".\gettext.zip"
Expand-Archive ".\gettext.zip" -DestinationPath gettext
pushd gettext/bin
Get-Location | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
popd
- name: Install dependencies (MacOS)
if: startsWith(matrix.config.os, 'macos-')
run: |
export HOMEBREW_NO_INSTALL_CLEANUP=1
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
# Skip brew update for now, see https://github.com/actions/setup-python/issues/577
# brew update
brew install luarocks ninja
sudo luarocks install luafilesystem 1.8.0
sudo luarocks install moonscript --dev
brew install libass zlib ffms2 fftw hunspell
brew install pulseaudio # NO OpenAL in github CI
- name: Install dependencies (Linux)
if: startsWith(matrix.config.os, 'ubuntu-')
run: |
sudo apt-get update
sudo apt-get install ninja-build build-essential libx11-dev libwxgtk3.0-gtk3-dev libfreetype6-dev pkg-config libfontconfig1-dev libass-dev libasound2-dev libffms2-dev intltool libboost-all-dev libhunspell-dev libuchardet-dev libpulse-dev libopenal-dev libxxhash-dev nasm
- name: Configure
run: |
meson setup build ${{ matrix.config.args }} -Dbuildtype=${{ matrix.config.buildtype }}
meson configure build
- name: Build
run: meson compile -C build
- name: Run test
if: matrix.config.os != 'macos-latest'
run: meson test -C build --verbose "gtest main"
# Windows artifacts
- name: Generate Windows installer
if: matrix.config.os == 'windows-latest'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run:
meson compile win-installer -C build
- name: Generate Windows portable installer
if: matrix.config.os == 'windows-latest'
run: cd build && ninja win-portable
- name: Upload artifacts - win_installer
uses: actions/upload-artifact@v4
if: matrix.config.os == 'windows-latest'
with:
name: ${{ matrix.config.name }} - installer
path: build/Aegisub-*.exe
if-no-files-found: error
- name: Upload artifacts - portable.zip
uses: actions/upload-artifact@v4
if: matrix.config.os == 'windows-latest'
with:
name: ${{ matrix.config.name }} - portable
path: build/aegisub-portable-64.zip
# macOS artifacts
- name: Generate macOS installer
if: startsWith(matrix.config.os, 'macos-')
run: |
sudo meson compile osx-bundle -C build
sudo xattr -c build/Aegisub.app
sudo meson compile osx-build-dmg -C build
- name: Upload artifacts - macOS dmg
uses: actions/upload-artifact@v4
if: startsWith(matrix.config.os, 'macos-')
with:
name: ${{ matrix.config.name }} - installer
path: build/Aegisub-*.dmg
if-no-files-found: error
# Linux artifacts (AppImage)
- name: Generate AppImage
if: matrix.config.appimage
run: |
mkdir -p appimage/appdir
meson install -C build --destdir=../appimage/appdir
cd appimage
sudo apt-get install libfuse2
curl -L "https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20220822-1/linuxdeploy-x86_64.AppImage" -o linuxdeploy
curl -L "https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage" -o appimagetool
chmod +x linuxdeploy appimagetool
./linuxdeploy --appdir appdir --desktop-file=appdir/aegisub.desktop
./appimagetool appdir
- name: Upload artifacts - Linux AppImage
uses: actions/upload-artifact@v4
if: matrix.config.appimage
with:
name: ${{ matrix.config.name }}
path: appimage/*.AppImage
if-no-files-found: error

116
.gitignore vendored
View File

@ -1,49 +1,97 @@
*.App
*.[oadi]
*.ass
*.avi
*.bz2
*.cache
*.dep
*.db
*.dll
*.dmg
*.exe
*.gch
*.gz
*.idb
*.ilk
*.log
*.manifest
*.mkv
*.mo
*.ncb
*.obj
*.opensdf
*.orig
*.patch
*.pch
*.pdb
*.profdata
*.profraw
*.sdf
*.so
*.srt
*.suo
*.swp
*.ts
*.user
*.vsp
*.y4m
*.zip
*~
/bin
/include
/ipch
/lib
/obj
/tests/data
automation/vapoursynth/__pycache__
.lvimrc
.syntastic_cpp_config
/Makefile.inc
BuildLog.htm
acconf.h
acconf.h.in
aclocal.m4
autom4te.cache
automation/aegisub-lua
build/userconfig/*.props
conf.sh
config.log
config.status
config_windows.h
configure
git_version.h
git_version.xml
packages/desktop/aegisub.desktop
packages/desktop/aegisub.desktop.template
packages/win_installer/vendor
src/aegisub
src/libresrc/bitmap.cpp
src/libresrc/bitmap.h
src/libresrc/default_config.cpp
src/libresrc/default_config.h
src/libresrc/default_config_platform.json
svn-revision.h
svn_revision
tests/*.json
tests/run
tools/osx-bundle-restart-helper
tools/osx-bundle.sed
tools/repack-thes-dict
tools/repack-thes-dict.dSYM
vendor/fribidi
vendor/luajit/src/host/buildvm
vendor/luajit/src/host/minilua
vendor/luajit/src/host/buildvm_arch.h
vendor/luajit/src/jit/vmdef.lua
vendor/luajit/src/gen
vendor/luajit/src/lj_vm.s
vendor/luajit/src/lj_bcdef.h
vendor/luajit/src/lj_ffdef.h
vendor/luajit/src/lj_folddef.h
vendor/luajit/src/lj_libdef.h
vendor/luajit/src/lj_recdef.h
vendor/luajit/src/luajit
# Platform-specific
.DS_Store
# Meson
build*/
subprojects/avisynth
subprojects/bestsource/
subprojects/boost*/
subprojects/cairo*
subprojects/dav1d
subprojects/ffmpeg
subprojects/ffms2
subprojects/fontconfig*
subprojects/freetype2
subprojects/fribidi
subprojects/glib*
subprojects/googletest-*
subprojects/harfbuzz
subprojects/icu
subprojects/libass
subprojects/libffi*
subprojects/libpng-*
subprojects/luajit
subprojects/nasm-*
subprojects/packagecache
subprojects/proxy-libintl*
subprojects/wxWidgets
subprojects/zlib-*
subprojects/dirent-*
subprojects/hunspell-*
subprojects/uchardet-*
subprojects/vapoursynth
subprojects/xxhash
.nuget
.vs

45
.gitmodules vendored Normal file
View File

@ -0,0 +1,45 @@
[submodule "freetype2"]
path = vendor/freetype2
url = git://git.sv.nongnu.org/freetype/freetype2.git
ignore = dirty
[submodule "wxWidgets"]
path = vendor/wxWidgets
url = git://github.com/Aegisub/wxWidgets.git
ignore = dirty
[submodule "googletest"]
path = vendor/googletest
url = git://github.com/svn2github/googletest.git
ignore = dirty
[submodule "ffmpeg"]
path = vendor/ffmpeg
url = git://source.ffmpeg.org/ffmpeg.git
ignore = dirty
[submodule "ffms2"]
path = vendor/ffms2
url = git://github.com/FFMS/ffms2.git
branch = master
ignore = dirty
[submodule "libass"]
path = vendor/libass
url = git://github.com/libass/libass.git
branch = master
[submodule "icu"]
path = vendor/icu
url = git://github.com/svn2github/icu4c.git
branch = master
ignore = dirty
[submodule "boost"]
path = vendor/boost
url = https://github.com/boostorg/boost.git
ignore = dirty
[submodule "fftw"]
path = vendor/fftw
url = https://github.com/Aegisub/fftw3.git
ignore = dirty
[submodule "uchardet"]
path = vendor/uchardet
url = https://gitlab.freedesktop.org/uchardet/uchardet.git
ignore = dirty
[submodule "vendor/japan7-fonts"]
path = vendor/japan7-fonts
url = https://github.com/odrling/japan7-fonts.git

9
.nuget/NuGet.Config Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
<config>
<add key="repositoryPath" value="lib" />
</config>
</configuration>

150
.nuget/NuGet.targets Normal file
View File

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
<!-- Property that enables building a package from a project -->
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">false</RequireRestoreConsent>
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>
</PropertyGroup>
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default will used the registered sources under %APPDATA%\NuGet\NuGet.Config -->
<!--
<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
</ItemGroup>
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<!-- Windows specific commands -->
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
<PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
</PropertyGroup>
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
<PackagesConfig>packages.config</PackagesConfig>
</PropertyGroup>
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\nuget.exe</NuGetExePath>
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
<!-- Commands -->
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<ResolveReferencesDependsOn Condition="$(RestorePackages) == 'true'">
RestorePackages;
$(ResolveReferencesDependsOn);
</ResolveReferencesDependsOn>
<!-- Make the build depend on restore packages -->
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
$(BuildDependsOn);
BuildPackage;
</BuildDependsOn>
</PropertyGroup>
<Target Name="CheckPrerequisites">
<!-- Raise an error if we're unable to locate nuget.exe -->
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
<SetEnvironmentVariable EnvKey="VisualStudioVersion" EnvValue="$(VisualStudioVersion)" Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' " />
<!--
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
This effectively acts as a lock that makes sure that the download operation will only happen once and all
parallel builds will have to wait for it to complete.
-->
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT" />
</Target>
<Target Name="_DownloadNuGet">
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(RestoreCommand)"
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
<Exec Command="$(RestoreCommand)"
LogStandardErrorAsError="true"
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(BuildCommand)"
Condition=" '$(OS)' != 'Windows_NT' " />
<Exec Command="$(BuildCommand)"
LogStandardErrorAsError="true"
Condition=" '$(OS)' == 'Windows_NT' " />
</Target>
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<OutputFilename ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Net" />
<Using Namespace="Microsoft.Build.Framework" />
<Using Namespace="Microsoft.Build.Utilities" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
<UsingTask TaskName="SetEnvironmentVariable" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<EnvKey ParameterType="System.String" Required="true" />
<EnvValue ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Using Namespace="System" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
}
catch {
}
]]>
</Code>
</Task>
</UsingTask>
</Project>

572
Aegisub.sln Normal file
View File

@ -0,0 +1,572 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 15.0.28307.168
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Aegisub", "build\Aegisub\Aegisub.vcxproj", "{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csrihelper", "build\csrihelper\csrihelper.vcxproj", "{C832EAF3-860D-4373-A02C-933626B47A5E}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hunspell", "build\hunspell\hunspell.vcxproj", "{CC791693-6B28-40AC-879D-64A6C16468E3}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaegisub", "build\libaegisub\libaegisub.vcxproj", "{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}"
ProjectSection(ProjectDependencies) = postProject
{A649D828-A399-4D81-ADEF-94CFDBA7847F} = {A649D828-A399-4D81-ADEF-94CFDBA7847F}
{F934AB7B-186B-4E96-B20C-A58C38C1B818} = {F934AB7B-186B-4E96-B20C-A58C38C1B818}
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F} = {5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}
{965054D2-44F2-4EB2-9879-051CC3D7EF08} = {965054D2-44F2-4EB2-9879-051CC3D7EF08}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libiconv", "build\libiconv\libiconv.vcxproj", "{965054D2-44F2-4EB2-9879-051CC3D7EF08}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libresrc", "build\libresrc\libresrc.vcxproj", "{BD00D65F-24DA-4784-8860-3B972EA125FC}"
ProjectSection(ProjectDependencies) = postProject
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC} = {0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luabins", "build\luabins\luabins.vcxproj", "{A7A30702-8162-4E1A-A010-EF51B590C121}"
ProjectSection(ProjectDependencies) = postProject
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F} = {5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "universalchardet", "build\universalchardet\universalchardet.vcxproj", "{7B56955D-5162-4698-AA5B-47484EDC8783}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fftw", "build\fftw\fftw.vcxproj", "{EA3DCC95-2423-4EA0-A508-7A427B4C0594}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "build\freetype2\freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fribidi", "build\fribidi\fribidi.vcxproj", "{FB8E8D19-A4D6-4181-943C-282075F49B41}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ffms2", "build\ffms2\ffms2.vcxproj", "{AA137613-96A1-4388-8905-71345B4F8F87}"
ProjectSection(ProjectDependencies) = postProject
{F934AB7B-186B-4E96-B20C-A58C38C1B819} = {F934AB7B-186B-4E96-B20C-A58C38C1B819}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ffmpeg", "build\ffmpeg\ffmpeg.vcxproj", "{F934AB7B-186B-4E96-B20C-A58C38C1B819}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE} = {10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "build\zlib\zlib.vcxproj", "{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{CEAEFCB9-3759-4D03-8D51-7287D7B7E7DF}"
ProjectSection(SolutionItems) = preProject
.nuget\NuGet.Config = .nuget\NuGet.Config
.nuget\NuGet.exe = .nuget\NuGet.exe
.nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxWidgets", "build\wx\wxWidgets.vcxproj", "{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libass", "build\libass\libass.vcxproj", "{8804F253-DA67-4CC4-926B-0CD2AEE5778D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PortableInstaller", "build\PortableInstaller\PortableInstaller.vcxproj", "{5B0E9978-E76F-4BBC-8194-228323F59B53}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boost", "build\boost\boost.vcxproj", "{A649D828-A399-4D81-ADEF-94CFDBA7847F}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
{F934AB7B-186B-4E96-B20C-A58C38C1B818} = {F934AB7B-186B-4E96-B20C-A58C38C1B818}
{965054D2-44F2-4EB2-9879-051CC3D7EF08} = {965054D2-44F2-4EB2-9879-051CC3D7EF08}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icu", "build\icu\icu.vcxproj", "{F934AB7B-186B-4E96-B20C-A58C38C1B818}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "googletest", "build\googletest\googletest.vcxproj", "{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tests", "build\tests\tests.vcxproj", "{49766286-2B5D-4177-A860-BD7CE1846EEF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildTasks", "build\BuildTasks\BuildTasks.csproj", "{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luajit-minilua", "build\luajit-minilua\luajit-minilua.vcxproj", "{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}"
ProjectSection(ProjectDependencies) = postProject
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luajit-buildvm", "build\luajit-buildvm\luajit-buildvm.vcxproj", "{7CA6A4EB-A11B-4975-8F3A-F633111C6213}"
ProjectSection(ProjectDependencies) = postProject
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF} = {FCAED410-90EF-4EF9-916C-4B86DC13A3CF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luajit", "build\luajit\luajit.vcxproj", "{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}"
ProjectSection(ProjectDependencies) = postProject
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF} = {FCAED410-90EF-4EF9-916C-4B86DC13A3CF}
{7CA6A4EB-A11B-4975-8F3A-F633111C6213} = {7CA6A4EB-A11B-4975-8F3A-F633111C6213}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "expat", "build\expat\expat.vcxproj", "{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "build\libpng\libpng.vcxproj", "{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scintilla", "build\scintilla\scintilla.vcxproj", "{D6EA54FD-F15C-42F6-929B-A83F299A4582}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug-MinDep|Win32 = Debug-MinDep|Win32
Debug-MinDep|x64 = Debug-MinDep|x64
Debug-Tests|Win32 = Debug-Tests|Win32
Debug-Tests|x64 = Debug-Tests|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release-MinDep|Win32 = Release-MinDep|Win32
Release-MinDep|x64 = Release-MinDep|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug|Win32.ActiveCfg = Debug|Win32
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug|Win32.Build.0 = Debug|Win32
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug|x64.ActiveCfg = Debug|x64
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug|x64.Build.0 = Debug|x64
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug-MinDep|Win32.Build.0 = Debug|Win32
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug-MinDep|x64.Build.0 = Debug|x64
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug-Tests|x64.ActiveCfg = Debug|x64
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Debug-Tests|x64.Build.0 = Debug|x64
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Release|Win32.ActiveCfg = Release|Win32
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Release|Win32.Build.0 = Release|Win32
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Release|x64.ActiveCfg = Release|x64
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Release|x64.Build.0 = Release|x64
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Release-MinDep|Win32.Build.0 = Release|Win32
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Release-MinDep|x64.ActiveCfg = Release|x64
{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}.Release-MinDep|x64.Build.0 = Release|x64
{C832EAF3-860D-4373-A02C-933626B47A5E}.Debug|Win32.ActiveCfg = Debug|Win32
{C832EAF3-860D-4373-A02C-933626B47A5E}.Debug|Win32.Build.0 = Debug|Win32
{C832EAF3-860D-4373-A02C-933626B47A5E}.Debug|x64.ActiveCfg = Debug|x64
{C832EAF3-860D-4373-A02C-933626B47A5E}.Debug|x64.Build.0 = Debug|x64
{C832EAF3-860D-4373-A02C-933626B47A5E}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{C832EAF3-860D-4373-A02C-933626B47A5E}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{C832EAF3-860D-4373-A02C-933626B47A5E}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{C832EAF3-860D-4373-A02C-933626B47A5E}.Debug-Tests|x64.ActiveCfg = Debug|x64
{C832EAF3-860D-4373-A02C-933626B47A5E}.Release|Win32.ActiveCfg = Release|Win32
{C832EAF3-860D-4373-A02C-933626B47A5E}.Release|Win32.Build.0 = Release|Win32
{C832EAF3-860D-4373-A02C-933626B47A5E}.Release|x64.ActiveCfg = Release|x64
{C832EAF3-860D-4373-A02C-933626B47A5E}.Release|x64.Build.0 = Release|x64
{C832EAF3-860D-4373-A02C-933626B47A5E}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{C832EAF3-860D-4373-A02C-933626B47A5E}.Release-MinDep|x64.ActiveCfg = Release|x64
{CC791693-6B28-40AC-879D-64A6C16468E3}.Debug|Win32.ActiveCfg = Debug|Win32
{CC791693-6B28-40AC-879D-64A6C16468E3}.Debug|Win32.Build.0 = Debug|Win32
{CC791693-6B28-40AC-879D-64A6C16468E3}.Debug|x64.ActiveCfg = Debug|x64
{CC791693-6B28-40AC-879D-64A6C16468E3}.Debug|x64.Build.0 = Debug|x64
{CC791693-6B28-40AC-879D-64A6C16468E3}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{CC791693-6B28-40AC-879D-64A6C16468E3}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{CC791693-6B28-40AC-879D-64A6C16468E3}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{CC791693-6B28-40AC-879D-64A6C16468E3}.Debug-Tests|x64.ActiveCfg = Debug|x64
{CC791693-6B28-40AC-879D-64A6C16468E3}.Release|Win32.ActiveCfg = Release|Win32
{CC791693-6B28-40AC-879D-64A6C16468E3}.Release|Win32.Build.0 = Release|Win32
{CC791693-6B28-40AC-879D-64A6C16468E3}.Release|x64.ActiveCfg = Release|x64
{CC791693-6B28-40AC-879D-64A6C16468E3}.Release|x64.Build.0 = Release|x64
{CC791693-6B28-40AC-879D-64A6C16468E3}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{CC791693-6B28-40AC-879D-64A6C16468E3}.Release-MinDep|x64.ActiveCfg = Release|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug|Win32.ActiveCfg = Debug|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug|Win32.Build.0 = Debug|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug|x64.ActiveCfg = Debug|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug|x64.Build.0 = Debug|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug-MinDep|Win32.Build.0 = Debug|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug-MinDep|x64.Build.0 = Debug|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug-Tests|Win32.Build.0 = Debug|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug-Tests|x64.ActiveCfg = Debug|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Debug-Tests|x64.Build.0 = Debug|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Release|Win32.ActiveCfg = Release|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Release|Win32.Build.0 = Release|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Release|x64.ActiveCfg = Release|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Release|x64.Build.0 = Release|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Release-MinDep|Win32.Build.0 = Release|Win32
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Release-MinDep|x64.ActiveCfg = Release|x64
{BB3FED86-DB7A-4DC7-964A-260FB86CDE61}.Release-MinDep|x64.Build.0 = Release|x64
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Debug|Win32.ActiveCfg = Debug|Win32
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Debug|Win32.Build.0 = Debug|Win32
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Debug|x64.ActiveCfg = Debug|x64
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Debug|x64.Build.0 = Debug|x64
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Debug-Tests|x64.ActiveCfg = Debug|x64
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Release|Win32.ActiveCfg = Release|Win32
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Release|Win32.Build.0 = Release|Win32
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Release|x64.ActiveCfg = Release|x64
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Release|x64.Build.0 = Release|x64
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{965054D2-44F2-4EB2-9879-051CC3D7EF08}.Release-MinDep|x64.ActiveCfg = Release|x64
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug|Win32.ActiveCfg = Debug|Win32
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug|Win32.Build.0 = Debug|Win32
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug|x64.ActiveCfg = Debug|x64
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug|x64.Build.0 = Debug|x64
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug-MinDep|Win32.Build.0 = Debug|Win32
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug-MinDep|x64.Build.0 = Debug|x64
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Debug-Tests|x64.ActiveCfg = Debug|x64
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Release|Win32.ActiveCfg = Release|Win32
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Release|Win32.Build.0 = Release|Win32
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Release|x64.ActiveCfg = Release|x64
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Release|x64.Build.0 = Release|x64
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Release-MinDep|Win32.Build.0 = Release|Win32
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Release-MinDep|x64.ActiveCfg = Release|x64
{BD00D65F-24DA-4784-8860-3B972EA125FC}.Release-MinDep|x64.Build.0 = Release|x64
{A7A30702-8162-4E1A-A010-EF51B590C121}.Debug|Win32.ActiveCfg = Debug|Win32
{A7A30702-8162-4E1A-A010-EF51B590C121}.Debug|Win32.Build.0 = Debug|Win32
{A7A30702-8162-4E1A-A010-EF51B590C121}.Debug|x64.ActiveCfg = Debug|x64
{A7A30702-8162-4E1A-A010-EF51B590C121}.Debug|x64.Build.0 = Debug|x64
{A7A30702-8162-4E1A-A010-EF51B590C121}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{A7A30702-8162-4E1A-A010-EF51B590C121}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{A7A30702-8162-4E1A-A010-EF51B590C121}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{A7A30702-8162-4E1A-A010-EF51B590C121}.Debug-Tests|x64.ActiveCfg = Debug|x64
{A7A30702-8162-4E1A-A010-EF51B590C121}.Debug-Tests|x64.Build.0 = Debug|x64
{A7A30702-8162-4E1A-A010-EF51B590C121}.Release|Win32.ActiveCfg = Release|Win32
{A7A30702-8162-4E1A-A010-EF51B590C121}.Release|Win32.Build.0 = Release|Win32
{A7A30702-8162-4E1A-A010-EF51B590C121}.Release|x64.ActiveCfg = Release|x64
{A7A30702-8162-4E1A-A010-EF51B590C121}.Release|x64.Build.0 = Release|x64
{A7A30702-8162-4E1A-A010-EF51B590C121}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{A7A30702-8162-4E1A-A010-EF51B590C121}.Release-MinDep|x64.ActiveCfg = Release|x64
{7B56955D-5162-4698-AA5B-47484EDC8783}.Debug|Win32.ActiveCfg = Debug|Win32
{7B56955D-5162-4698-AA5B-47484EDC8783}.Debug|Win32.Build.0 = Debug|Win32
{7B56955D-5162-4698-AA5B-47484EDC8783}.Debug|x64.ActiveCfg = Debug|x64
{7B56955D-5162-4698-AA5B-47484EDC8783}.Debug|x64.Build.0 = Debug|x64
{7B56955D-5162-4698-AA5B-47484EDC8783}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{7B56955D-5162-4698-AA5B-47484EDC8783}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{7B56955D-5162-4698-AA5B-47484EDC8783}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{7B56955D-5162-4698-AA5B-47484EDC8783}.Debug-Tests|x64.ActiveCfg = Debug|x64
{7B56955D-5162-4698-AA5B-47484EDC8783}.Release|Win32.ActiveCfg = Release|Win32
{7B56955D-5162-4698-AA5B-47484EDC8783}.Release|Win32.Build.0 = Release|Win32
{7B56955D-5162-4698-AA5B-47484EDC8783}.Release|x64.ActiveCfg = Release|x64
{7B56955D-5162-4698-AA5B-47484EDC8783}.Release|x64.Build.0 = Release|x64
{7B56955D-5162-4698-AA5B-47484EDC8783}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{7B56955D-5162-4698-AA5B-47484EDC8783}.Release-MinDep|x64.ActiveCfg = Release|x64
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Debug|Win32.ActiveCfg = Debug|Win32
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Debug|Win32.Build.0 = Debug|Win32
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Debug|x64.ActiveCfg = Debug|x64
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Debug|x64.Build.0 = Debug|x64
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Debug-Tests|x64.ActiveCfg = Debug|x64
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Release|Win32.ActiveCfg = Release|Win32
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Release|Win32.Build.0 = Release|Win32
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Release|x64.ActiveCfg = Release|x64
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Release|x64.Build.0 = Release|x64
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{EA3DCC95-2423-4EA0-A508-7A427B4C0594}.Release-MinDep|x64.ActiveCfg = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug-Tests|x64.ActiveCfg = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release-MinDep|x64.ActiveCfg = Release|x64
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Debug|Win32.ActiveCfg = Debug|Win32
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Debug|Win32.Build.0 = Debug|Win32
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Debug|x64.ActiveCfg = Debug|x64
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Debug|x64.Build.0 = Debug|x64
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Debug-Tests|x64.ActiveCfg = Debug|x64
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Release|Win32.ActiveCfg = Release|Win32
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Release|Win32.Build.0 = Release|Win32
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Release|x64.ActiveCfg = Release|x64
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Release|x64.Build.0 = Release|x64
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Release-MinDep|x64.ActiveCfg = Release|x64
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug|Win32.ActiveCfg = Debug|Win32
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug|Win32.Build.0 = Debug|Win32
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug|x64.ActiveCfg = Debug|x64
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug|x64.Build.0 = Debug|x64
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug-Tests|x64.ActiveCfg = Debug|x64
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Release|Win32.ActiveCfg = Release|Win32
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Release|Win32.Build.0 = Release|Win32
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Release|x64.ActiveCfg = Release|x64
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Release|x64.Build.0 = Release|x64
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Release-MinDep|x64.ActiveCfg = Release|x64
{AA137613-96A1-4388-8905-71345B4F8F87}.Debug|Win32.ActiveCfg = Debug|Win32
{AA137613-96A1-4388-8905-71345B4F8F87}.Debug|Win32.Build.0 = Debug|Win32
{AA137613-96A1-4388-8905-71345B4F8F87}.Debug|x64.ActiveCfg = Debug|x64
{AA137613-96A1-4388-8905-71345B4F8F87}.Debug|x64.Build.0 = Debug|x64
{AA137613-96A1-4388-8905-71345B4F8F87}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{AA137613-96A1-4388-8905-71345B4F8F87}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{AA137613-96A1-4388-8905-71345B4F8F87}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{AA137613-96A1-4388-8905-71345B4F8F87}.Debug-Tests|x64.ActiveCfg = Debug|x64
{AA137613-96A1-4388-8905-71345B4F8F87}.Release|Win32.ActiveCfg = Release|Win32
{AA137613-96A1-4388-8905-71345B4F8F87}.Release|Win32.Build.0 = Release|Win32
{AA137613-96A1-4388-8905-71345B4F8F87}.Release|x64.ActiveCfg = Release|x64
{AA137613-96A1-4388-8905-71345B4F8F87}.Release|x64.Build.0 = Release|x64
{AA137613-96A1-4388-8905-71345B4F8F87}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{AA137613-96A1-4388-8905-71345B4F8F87}.Release-MinDep|x64.ActiveCfg = Release|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Debug|Win32.ActiveCfg = Debug|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Debug|Win32.Build.0 = Debug|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Debug|x64.ActiveCfg = Debug|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Debug|x64.Build.0 = Debug|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Debug-Tests|x64.ActiveCfg = Debug|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Release|Win32.ActiveCfg = Release|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Release|Win32.Build.0 = Release|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Release|x64.ActiveCfg = Release|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Release|x64.Build.0 = Release|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B819}.Release-MinDep|x64.ActiveCfg = Release|x64
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Debug|Win32.ActiveCfg = Debug|Win32
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Debug|Win32.Build.0 = Debug|Win32
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Debug|x64.ActiveCfg = Debug|x64
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Debug|x64.Build.0 = Debug|x64
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Debug-Tests|x64.ActiveCfg = Debug|x64
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Release|Win32.ActiveCfg = Release|Win32
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Release|Win32.Build.0 = Release|Win32
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Release|x64.ActiveCfg = Release|x64
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Release|x64.Build.0 = Release|x64
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{10F22A5A-DD9E-44A1-BA2E-2A9A7C78B0EE}.Release-MinDep|x64.ActiveCfg = Release|x64
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Debug|Win32.ActiveCfg = Debug|Win32
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Debug|Win32.Build.0 = Debug|Win32
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Debug|x64.ActiveCfg = Debug|x64
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Debug|x64.Build.0 = Debug|x64
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Debug-Tests|x64.ActiveCfg = Debug|x64
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Release|Win32.ActiveCfg = Release|Win32
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Release|Win32.Build.0 = Release|Win32
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Release|x64.ActiveCfg = Release|x64
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Release|x64.Build.0 = Release|x64
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}.Release-MinDep|x64.ActiveCfg = Release|x64
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Debug|Win32.ActiveCfg = Debug|Win32
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Debug|Win32.Build.0 = Debug|Win32
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Debug|x64.ActiveCfg = Debug|x64
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Debug|x64.Build.0 = Debug|x64
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Debug-Tests|x64.ActiveCfg = Debug|x64
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Release|Win32.ActiveCfg = Release|Win32
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Release|Win32.Build.0 = Release|Win32
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Release|x64.ActiveCfg = Release|x64
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Release|x64.Build.0 = Release|x64
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{8804F253-DA67-4CC4-926B-0CD2AEE5778D}.Release-MinDep|x64.ActiveCfg = Release|x64
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Debug|Win32.ActiveCfg = Debug|Win32
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Debug|x64.ActiveCfg = Debug|x64
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Debug-Tests|x64.ActiveCfg = Debug|x64
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Release|Win32.ActiveCfg = Release|Win32
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Release|x64.ActiveCfg = Release|x64
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{5B0E9978-E76F-4BBC-8194-228323F59B53}.Release-MinDep|x64.ActiveCfg = Release|x64
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Debug|Win32.ActiveCfg = Debug|Win32
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Debug|Win32.Build.0 = Debug|Win32
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Debug|x64.ActiveCfg = Debug|x64
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Debug|x64.Build.0 = Debug|x64
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Debug-Tests|x64.ActiveCfg = Debug|x64
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Release|Win32.ActiveCfg = Release|Win32
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Release|Win32.Build.0 = Release|Win32
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Release|x64.ActiveCfg = Release|x64
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Release|x64.Build.0 = Release|x64
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{A649D828-A399-4D81-ADEF-94CFDBA7847F}.Release-MinDep|x64.ActiveCfg = Release|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Debug|Win32.ActiveCfg = Debug|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Debug|Win32.Build.0 = Debug|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Debug|x64.ActiveCfg = Debug|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Debug|x64.Build.0 = Debug|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Debug-Tests|x64.ActiveCfg = Debug|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Debug-Tests|x64.Build.0 = Debug|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Release|Win32.ActiveCfg = Release|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Release|Win32.Build.0 = Release|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Release|x64.ActiveCfg = Release|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Release|x64.Build.0 = Release|x64
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{F934AB7B-186B-4E96-B20C-A58C38C1B818}.Release-MinDep|x64.ActiveCfg = Release|x64
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Debug|Win32.ActiveCfg = Debug|Win32
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Debug|Win32.Build.0 = Debug|Win32
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Debug|x64.ActiveCfg = Debug|x64
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Debug|x64.Build.0 = Debug|x64
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Debug-MinDep|x64.ActiveCfg = Debug|Win32
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Debug-Tests|x64.ActiveCfg = Debug|x64
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Release|Win32.ActiveCfg = Release|Win32
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Release|Win32.Build.0 = Release|Win32
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Release|x64.ActiveCfg = Release|x64
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Release|x64.Build.0 = Release|x64
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}.Release-MinDep|x64.ActiveCfg = Release|x64
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug|Win32.ActiveCfg = Debug|Win32
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug|Win32.Build.0 = Debug|Win32
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug|x64.ActiveCfg = Debug|x64
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug|x64.Build.0 = Debug|x64
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug-MinDep|x64.ActiveCfg = Debug|Win32
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug-Tests|Win32.Build.0 = Debug|Win32
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug-Tests|x64.ActiveCfg = Debug|x64
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Release|Win32.ActiveCfg = Release|Win32
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Release|x64.ActiveCfg = Release|x64
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Release-MinDep|x64.ActiveCfg = Release|x64
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug|Win32.Build.0 = Debug|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug|x64.ActiveCfg = Debug|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug-MinDep|Win32.ActiveCfg = Debug|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug-MinDep|x64.ActiveCfg = Debug|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug-Tests|Win32.ActiveCfg = Debug|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug-Tests|x64.ActiveCfg = Debug|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Release|Win32.ActiveCfg = Release|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Release|x64.ActiveCfg = Release|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Release-MinDep|Win32.ActiveCfg = Release|Any CPU
{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Release-MinDep|x64.ActiveCfg = Release|Any CPU
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Debug|Win32.ActiveCfg = Debug|Win32
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Debug|Win32.Build.0 = Debug|Win32
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Debug|x64.ActiveCfg = Debug|x64
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Debug|x64.Build.0 = Debug|x64
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Debug-Tests|x64.ActiveCfg = Debug|Win32
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Release|Win32.ActiveCfg = Release|Win32
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Release|Win32.Build.0 = Release|Win32
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Release|x64.ActiveCfg = Release|x64
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Release|x64.Build.0 = Release|x64
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{FCAED410-90EF-4EF9-916C-4B86DC13A3CF}.Release-MinDep|x64.ActiveCfg = Release|x64
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Debug|Win32.ActiveCfg = Debug|Win32
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Debug|Win32.Build.0 = Debug|Win32
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Debug|x64.ActiveCfg = Debug|x64
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Debug|x64.Build.0 = Debug|x64
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Debug-Tests|x64.ActiveCfg = Debug|Win32
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Release|Win32.ActiveCfg = Release|Win32
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Release|Win32.Build.0 = Release|Win32
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Release|x64.ActiveCfg = Release|x64
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Release|x64.Build.0 = Release|x64
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{7CA6A4EB-A11B-4975-8F3A-F633111C6213}.Release-MinDep|x64.ActiveCfg = Release|x64
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Debug|Win32.ActiveCfg = Debug|Win32
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Debug|Win32.Build.0 = Debug|Win32
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Debug|x64.ActiveCfg = Debug|x64
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Debug|x64.Build.0 = Debug|x64
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Debug-Tests|x64.ActiveCfg = Debug|x64
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Debug-Tests|x64.Build.0 = Debug|x64
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Release|Win32.ActiveCfg = Release|Win32
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Release|Win32.Build.0 = Release|Win32
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Release|x64.ActiveCfg = Release|x64
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Release|x64.Build.0 = Release|x64
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{5391A8B1-9C70-4DC4-92AD-D3E34C6B803F}.Release-MinDep|x64.ActiveCfg = Release|x64
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug|Win32.ActiveCfg = Debug|Win32
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug|Win32.Build.0 = Debug|Win32
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug|x64.ActiveCfg = Debug|x64
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug|x64.Build.0 = Debug|x64
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug-Tests|Win32.Build.0 = Debug|Win32
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug-Tests|x64.ActiveCfg = Debug|x64
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Debug-Tests|x64.Build.0 = Debug|x64
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Release|Win32.ActiveCfg = Release|Win32
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Release|Win32.Build.0 = Release|Win32
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Release|x64.ActiveCfg = Release|x64
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Release|x64.Build.0 = Release|x64
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}.Release-MinDep|x64.ActiveCfg = Release|x64
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug|Win32.ActiveCfg = Debug|Win32
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug|Win32.Build.0 = Debug|Win32
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug|x64.ActiveCfg = Debug|x64
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug|x64.Build.0 = Debug|x64
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug-Tests|Win32.Build.0 = Debug|Win32
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug-Tests|x64.ActiveCfg = Debug|x64
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Debug-Tests|x64.Build.0 = Debug|x64
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Release|Win32.ActiveCfg = Release|Win32
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Release|Win32.Build.0 = Release|Win32
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Release|x64.ActiveCfg = Release|x64
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Release|x64.Build.0 = Release|x64
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{5CABCBEF-E79A-4D27-94A5-CF4EAAF1DD96}.Release-MinDep|x64.ActiveCfg = Release|x64
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug|Win32.ActiveCfg = Debug|Win32
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug|Win32.Build.0 = Debug|Win32
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug|x64.ActiveCfg = Debug|x64
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug|x64.Build.0 = Debug|x64
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug-MinDep|Win32.ActiveCfg = Debug|Win32
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug-MinDep|x64.ActiveCfg = Debug|x64
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug-Tests|Win32.ActiveCfg = Debug|Win32
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug-Tests|Win32.Build.0 = Debug|Win32
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug-Tests|x64.ActiveCfg = Debug|x64
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Debug-Tests|x64.Build.0 = Debug|x64
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Release|Win32.ActiveCfg = Release|Win32
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Release|Win32.Build.0 = Release|Win32
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Release|x64.ActiveCfg = Release|x64
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Release|x64.Build.0 = Release|x64
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Release-MinDep|Win32.ActiveCfg = Release|Win32
{D6EA54FD-F15C-42F6-929B-A83F299A4582}.Release-MinDep|x64.ActiveCfg = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

12
Makefile Normal file
View File

@ -0,0 +1,12 @@
include header.mk
ifeq (yes, $(BUILD_DARWIN))
osx-bundle:
$(BIN_SHELL) tools/osx-bundle.sh "$(AEGISUB_COMMAND)" "$(BIN_WX_CONFIG)" "$(FONTCONFIG_CONF_DIR)" DICT_DIR=$(DICT_DIR)
osx-dmg: osx-bundle
codesign -s 'Mac Developer' --deep Aegisub.app || true
$(BIN_SHELL) tools/osx-dmg.sh "$(BUILD_VERSION_STRING)"
endif
include Makefile.target

140
Makefile.inc.in Normal file
View File

@ -0,0 +1,140 @@
#########################
# AEGISUB FEATURE SUPPORT
#########################
HAVE_ALSA = @with_alsa@
HAVE_FFMS2 = @with_ffms2@
HAVE_HUNSPELL = @with_hunspell@
HAVE_LIBPULSE = @with_libpulse@
HAVE_OPENAL = @with_openal@
HAVE_OSS = @with_oss@
HAVE_PORTAUDIO = @with_portaudio@
HAVE_UCHARDET = @with_uchardet@
SYSTEM_LUAJIT = @with_system_luajit@
##############
# BUILD OUTPUT
##############
PROGRAM := $(PROGRAM)
LIB := $(LIB)
###################
# PLATFORM SETTINGS
###################
BUILD_DARWIN = @build_darwin@
#######
# FLAGS
#######
CFLAGS = @CFLAGS@
CXXFLAGS = @CXXFLAGS@
CPPFLAGS = @CPPFLAGS@
CFLAGS_DEP = -MMD -MP
LIBS = @LIBS@
LDFLAGS = @LDFLAGS@
INSTALL_FLAGS = -m 644
LIB_SHARED_LINK = -shared -Wl,-soname -Wl,$(LIB_SHARED_FULL)
LIB_SHARED_LINK_OSX = -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -compatibility_version $(LIB_VERSION) -current_version $(LIB_VERSION) -Wl,-single_module -mmacosx-version-min=10.8 -install_name ${CURDIR}/$(LIB_SHARED_FULL)
#########
# STRINGS
#########
AEGISUB_COMMAND = @AEGISUB_COMMAND@
AEGISUB_CATALOG = @AEGISUB_CATALOG@
BUILD_DATE = @BUILD_DATE@
BUILD_VERSION_STRING = @BUILD_GIT_VERSION_STRING@
#######
# PATHS
#######
prefix = ${P_PREFIX}
exec_prefix = ${P_PREFIX_EXEC}
datarootdir = ${P_DATAROOT}
P_PREFIX = @prefix@
P_PREFIX_EXEC = @exec_prefix@
P_BINDIR = @bindir@
P_DATAROOT = @datarootdir@
P_LOCALE = @localedir@
P_DESKTOP = @P_DESKTOP@
P_ICON = @P_ICON@
P_DATA = $(P_DATAROOT)/aegisub/
###############
# LIBRARY FLAGS
###############
CFLAGS_WX = @WX_CFLAGS@
CXXFLAGS_WX = @WX_CXXFLAGS@
CPPFLAGS_WX = @WX_CPPFLAGS@
LIBS_WX = @WX_LIBS@ -lz
CPPFLAGS_BOOST = @BOOST_CPPFLAGS@
LIBS_BOOST = @BOOST_LDFLAGS@ @BOOST_FILESYSTEM_LIB@ @BOOST_LOCALE_LIB@ @BOOST_REGEX_LIB@ @BOOST_SYSTEM_LIB@ @BOOST_THREAD_LIB@ @BOOST_CHRONO_LIB@
CFLAGS_FFMS2 = @FFMS2_CFLAGS@
CFLAGS_FFTW3 = @FFTW3_CFLAGS@
CFLAGS_FONTCONFIG = @FONTCONFIG_CFLAGS@
CFLAGS_FREETYPE = @FREETYPE_CFLAGS@
CFLAGS_GL = @GL_CFLAGS@
CFLAGS_HUNSPELL = @HUNSPELL_CFLAGS@
CFLAGS_ICONV = @ICONV_CFLAGS@
CFLAGS_ICU = @ICU_I18N_CFLAGS@
CFLAGS_LIBASS = @LIBASS_CFLAGS@
CFLAGS_LIBPULSE = @LIBPULSE_CFLAGS@
CFLAGS_LUA = @LUAJIT_CFLAGS@
CFLAGS_OPENAL = @OPENAL_CFLAGS@
CFLAGS_OSS = @OSS_CFLAGS@
CFLAGS_PORTAUDIO = @PORTAUDIO_CFLAGS@
CFLAGS_PTHREAD = @PTHREAD_CFLAGS@
CFLAGS_UCHARDET = @UCHARDET_CFLAGS@
LIBS_ALSA = @ALSA_LIBS@
LIBS_FFMS2 = @FFMS2_LIBS@
LIBS_FFTW3 = @FFTW3_LIBS@
LIBS_FONTCONFIG = @FONTCONFIG_LIBS@
LIBS_FREETYPE = @FREETYPE_LIBS@
LIBS_GL = @GL_LIBS@
LIBS_HUNSPELL = @HUNSPELL_LIBS@
LIBS_ICONV = @ICONV_LIBS@
LIBS_ICU = @ICU_UC_LIBS@ @ICU_I18N_LIBS@
LIBS_LIBASS = @LIBASS_LIBS@
LIBS_LIBPULSE = @LIBPULSE_LIBS@
LIBS_LUA = @LUAJIT_LIBS@
LIBS_OPENAL = @OPENAL_LIBS@
LIBS_PORTAUDIO = @PORTAUDIO_LIBS@
LIBS_PTHREAD = @PTHREAD_CFLAGS@ @PTHREAD_LIBS@
LIBS_UCHARDET = @UCHARDET_LIBS@
ifeq (yes, $(BUILD_DARWIN))
LIBS_LUA = $(TOP)vendor/luajit/src/libluajit.a
endif
FONTCONFIG_CONF_DIR = @FONTCONFIG_CONF_DIR@
#####################
# DEBUG / DEVELOPMENT
#####################
PRECOMPILED_HEADER = @enable_gcc_prec@
##########
# BINARIES
##########
BIN_AR = ar
BIN_RANLIB = ranlib
BIN_LN = ln
BIN_RM = rm
BIN_SHELL = @SHELL@
BIN_MV = mv
BIN_SED = sed
BIN_INSTALL = @INSTALL@
BIN_MSGMERGE = @MSGMERGE@
BIN_XGETTEXT = @XGETTEXT@
BIN_MSGFMT = @MSGFMT@
BIN_CC = @CC@
BIN_CXX = @CXX@
BIN_CP = cp
BIN_MKDIR = mkdir
BIN_MKDIR_P = mkdir -p
BIN_ECHO = echo
BIN_TOUCH = touch
BIN_LUA = @LUA@
BIN_WX_CONFIG = @WX_CONFIG_PATH@

121
Makefile.target Normal file
View File

@ -0,0 +1,121 @@
ifneq (yes, $(INCLUDING_CHILD_MAKEFILES))
COMMANDS := all install clean distclean test depclean osx-bundle osx-dmg test-automation test-libaegisub
.PHONY: $(COMMANDS)
.DEFAULT_GOAL := all
# Would be nice to move this somewhere else (Makefile.inc?)
ifeq (yes, $(BUILD_DARWIN))
CFLAGS += -mmacosx-version-min=10.8 -gfull
CXXFLAGS += -mmacosx-version-min=10.8 -gfull
LDFLAGS += -mmacosx-version-min=10.8 -Wl,-dead_strip -pagezero_size 10000 -image_base 100000000
LIB_SHARED_LINK = $(LIB_SHARED_LINK_OSX)
endif
LIB_TARGETS := $(addprefix $(TOP)lib/,$(LIB:%=lib%.a))
# Handle per-target flags in the form foo_CFLAGS := -w by mapping them to all
# of the objects a target depends on. This has potentially dumb results if
# multiple targets use a single object file, so don't do that.
define set_target_flags
OBJ += $($1_OBJ)
$($1_OBJ): CPPFLAGS := $(CPPFLAGS) $($1_CPPFLAGS)
$($1_OBJ): CXXFLAGS := $(CXXFLAGS) $($1_CXXFLAGS)
$($1_OBJ): OBJCXXFLAGS := $(CXXFLAGS) $($1_CXXFLAGS)
ifeq (yes, $(PRECOMPILED_HEADER))
ifdef $1_PCH
CLEANFILES += $($1_PCH).gch
$($1_OBJ): CXXFLAGS += -include $($1_PCH) $(PCHFLAGS)
$($1_OBJ): $($1_PCH).gch
$($1_PCH).gch: $($1_PCH)
$($1_PCH).gch: CPPFLAGS := $(CPPFLAGS) $($1_CPPFLAGS)
$($1_PCH).gch: CXXFLAGS := $(CXXFLAGS) $($1_CXXFLAGS)
else
$($1_OBJ): CXXFLAGS += -include acconf.h
endif
else
$($1_OBJ): CXXFLAGS += -include acconf.h
endif
endef
$(foreach target,$(LIB),$(eval $(call set_target_flags,$(target),$(TOP)lib/lib$(target).a)))
$(foreach target,$(PROGRAM),$(eval $(call set_target_flags,$(notdir $(target)),$(target))))
# Create the build and install targets for programs
# Not done with a pattern rule since the pattern would be just %: and doing that
# leads to make trying to use gcc to make any nonexistent targets rather than
# erroring
define create_program_targets
ifdef $1_INSTALLNAME
install: $(DESTDIR)$(P_BINDIR)/$($1_INSTALLNAME)
$(DESTDIR)$(P_BINDIR)/$($1_INSTALLNAME): $(dir $2)$($1_INSTALLNAME)
@$(BIN_MKDIR) -p $(DESTDIR)$(P_BINDIR)
@$(BIN_INSTALL) $(dir $2)$($1_INSTALLNAME) $(DESTDIR)$(P_BINDIR)/$($1_INSTALLNAME)
$(dir $2)$($1_INSTALLNAME): $($1_OBJ)
$(BIN_CXX) -o $(dir $2)$($1_INSTALLNAME) $(LDFLAGS) $($1_OBJ) $(LIBS) $($1_LIBS)
all: $(dir $2)$($1_INSTALLNAME)
else
$2: $($1_OBJ)
$(BIN_CXX) -o $2 $(LDFLAGS) $($1_OBJ) $(LIBS) $($1_LIBS)
all: $2
endif
$(eval CLEANFILES += $(filter-out %/,$2 $(dir $2)$($1_INSTALLNAME)))
endef
$(foreach target,$(PROGRAM),$(eval $(call create_program_targets,$(notdir $(target)),$(target))))
# The dependency files which will be automatically generated by gcc.
# The filter is due to that libraries also appear in OBJ
DEP := $(filter %.d,$(OBJ:%.o=%.d))
# If the goal is a relative path to a file, convert it to an absolute path
ifneq ($(filter-out $(COMMANDS),$(MAKECMDGOALS)),)
ABSGOAL := $(abspath $(MAKECMDGOALS))
ifneq ($(MAKECMDGOALS),$(ABSGOAL))
$(MAKECMDGOALS): $(ABSGOAL) ;
endif
endif
# Primary build targets
all: $(LIB_TARGETS)
clean:
$(BIN_RM) -f $(OBJ) $(CLEANFILES) $(LIB_TARGETS)
distclean: clean
$(BIN_RM) -rf $(DISTCLEANFILES) $(DEP)
depclean: clean
$(BIN_RM) -rf $(DEP)
install:
# The actual build rules
.SUFFIXES:
CXX_CMD = $(CXX_ENV) $(BIN_CXX) $(CFLAGS_DEP) $(CPPFLAGS)
CC_CMD = $(CXX_ENV) $(BIN_CC) $(CFLAGS_DEP) $(CPPFLAGS)
POST_FLAGS = $($@_FLAGS) -c -o $@ $<
%.o: %.c ; $(CC_CMD) $(CFLAGS) $(POST_FLAGS)
%.o: %.cpp ; $(CXX_CMD) $(CXXFLAGS) $(POST_FLAGS)
%.o: %.cxx ; $(CXX_CMD) $(CXXFLAGS) $(POST_FLAGS)
%.o: %.cc ; $(CXX_CMD) $(CXXFLAGS) $(POST_FLAGS)
%.o: %.mm ; $(CXX_CMD) $(OBJCXXFLAGS) $(POST_FLAGS)
%.o: %.m ; $(CC_CMD) $(CFLAGS) -fmodules $(POST_FLAGS)
%.gch: %
@$(BIN_RM) -f $@
$(CXX_ENV) $(BIN_CXX) $(CPPFLAGS) $(CXXFLAGS) -x c++-header $<
.SECONDEXPANSION:
# Libraries contain all object files they depend on (but they may depend on other files)
# Not using libtool on OS X because it has an unsilenceable warning about a
# compatibility issue with BSD 4.3 (wtf)
lib%.a: $$($$*_OBJ)
@$(BIN_MKDIR_P) $(dir $@)
$(BIN_AR) cru $@ $(filter %.o,$^)
$(BIN_RANLIB) $@
-include $(DEP)
endif

186
README.md
View File

@ -1,113 +1,10 @@
## arch1t3cht's Aegisub "fork"
Download release builds [here](https://github.com/arch1t3cht/Aegisub/releases), or the latest CI builds [here](https://github.com/arch1t3cht/Aegisub/actions?query=branch%3Afeature+event%3Apush).
The release page also has detailed list of all changes and new features. If you're interested in the technical details or want to compile yourself, read on.
### Don't we have enough Aegisub forks already??
We absolutely do, and I'm aware that adding another one [doesn't sound like](https://xkcd.com/927/) a [good idea on paper](https://cdn.discordapp.com/attachments/425357202963038208/1007103606421459004/unknown.png). However,
- None of the existing forks are completely satisfying at the moment:
- [wangqr's fork](https://github.com/wangqr/Aegisub) is actively maintained, but focussing more on stability. It's missing most of the modern features.
- [AegisubDC](https://github.com/Ristellise/AegisubDC) has the most modern features (in particular video-panning), but is Windows-only and not actively maintained anymore.
- [The TypesettingTools fork](https://github.com/TypesettingTools/Aegisub) is the one that will one day become the upstream version and builds relatively effortlessly on all operating systems, but at the moment it's not moving much. It's the base for this fork, and I hope to one day merge most of these additions into it.
- Only PR'ing the changes in here to various forks would cause even more chaos
- ~~I try to convince myself that this isn't really a "fork" in the traditional sense - one which aims to provide extended support and stability fixes. It's a collection of new feature additions which I built myself, together with some of the most important new features floating around other forks.~~ At this point it's probably too late to still be saying this. Still, the general mission hasn't changed. This fork collects new features and critical bugfixes, but won't be putting extra time into maintenance aspects like cleanup and refactors. Partly, this is also because any big refactors would make it harder to pull these changes into upstream repositories or future forks.
While this is usually also the version of Aegisub I'm currently using, I make no promises on stability. **Don't** use this version if you're just looking for any version of Aegisub - this is mostly intended for typesetting and other advanced usage.
### Organization
Being a collection of different feature additions, this repository consists of a set of branches for different features, so that they can easily be merged into other repositories. The [`feature`](https://github.com/arch1t3cht/Aegisub/tree/feature) branch merges together all the features I deem as currently usable. Due to the structure of the repository, I will be force-pushing to this branch and some of the individual branches very frequently, so they're not ideal for basing further branches on.
The `cibuilds` branch makes some CI builds of snapshots of `feature` at relevant points in time.
### Branch/Feature list
This list is for navigating the repository. Go to the [release page](https://github.com/arch1t3cht/Aegisub/releases) for a more structured changelog.
- [`folding`](https://github.com/arch1t3cht/Aegisub/tree/folding): Add the ability to visually group and collapse lines in the subtitle grid
- [`lua_api`](https://github.com/arch1t3cht/Aegisub/tree/lua_api): Add new functions to the Lua automation API, like controlling the selection or cursor in the text edit box
- [`vector_clip_actions`](https://github.com/arch1t3cht/Aegisub/tree/vector_clip_actions): Make the different modes of the vector clip tool (lines, bezier curves, adding points, etc) bindable to hotkeys
- [`color_picker_fix2`](https://github.com/arch1t3cht/Aegisub/tree/color_picker_fix2): Add an option (under "Interface") to restrict the color picker to the window, which fixes the color picker on Linux in a lot of cases.
- [`avisynth`](https://github.com/arch1t3cht/Aegisub/tree/avisynth): Reenable Avisynth support on Windows and enable Avisynth on Linux
- [`bestsource`](https://github.com/arch1t3cht/Aegisub/tree/bestsource): Add BestSource audio and video source. This source is slower than others by multiple orders of magnitude, but in exchange it can guarantee exact seeking.
- [`vapoursynth`](https://github.com/arch1t3cht/Aegisub/tree/vapoursynth): Add Vapoursynth audio and video source
- [`bugfixes`](https://github.com/arch1t3cht/Aegisub/tree/bugfixes): Various fixes necessary for compilation. Most branches are based on this.
- [`workarounds`](https://github.com/arch1t3cht/Aegisub/tree/workarounds): Same as `bugfixes`, but these are hacky fixes that probably shouldn't be pulled without more work.
- [`fixes`](https://github.com/arch1t3cht/Aegisub/tree/fixes): Miscellaneous bugfixes
- [`misc`](https://github.com/arch1t3cht/Aegisub/tree/misc): Other miscellaneous additions
- [`wangqr_gui`](https://github.com/arch1t3cht/Aegisub/tree/wangqr_gui): Merge wangqr's changes regarding the GUI. In particular, add high-DPI compatibility.
- [`misc_dc`](https://github.com/arch1t3cht/Aegisub/tree/misc_dc): Miscellaneous changes taken from AegisubDC
- [`xa2-ds`](https://github.com/arch1t3cht/Aegisub/tree/xa2-ds): Add XAudio2 backend and allow stereo playback for some other backends, by wangqr and Shinon.
- [`stereo`](https://github.com/arch1t3cht/Aegisub/tree/stereo): Add multi-channel support for the other audio backends where possible.
- [`video_panning_option`](https://github.com/arch1t3cht/Aegisub/tree/video_panning_option): Merge [moex3's video zoom and panning](https://github.com/TypesettingTools/Aegisub/pull/150), with several bugfixes and more options to control zoom behavior
- [`spectrum-frequency-mapping`](https://github.com/arch1t3cht/Aegisub/tree/spectrum-frequency-mapping): Merge EleonoreMizo's [spectrum display improvements](https://github.com/TypesettingTools/Aegisub/pull/94), and also make Shift+Scroll vertically zoom the audio display
- [`wangqr_time_video`](https://github.com/arch1t3cht/Aegisub/tree/wangqr_time_video): Merge wangqr's feature adding a tool for timing subtitles to changes in the video
### Troubleshooting
I'll gladly take any bug reports, but if you encounter an issue, please check first if it occurs only on my fork, or also on [earlier TSTools builds](https://github.com/TypesettingTools/Aegisub/actions).
If it wasn't introduced by my fork, I can still take a look, but I can't promise anything.
You can find me for support on various servers, including the cave and the TSTools server linked below.
#### Aegisub on Linux doesn't recognize my GTK theme
This is probably because you're building with wxgtk2. Building with wxgtk3 fixes this, but causes some problems of its own (notably the broken color picker, occasional crashes when opening file dialogs from automation scripts, and general layouting issues).
The exact way of switching depends on your Linux distribution, but essentially you need to ensure that `wx-config` or the next best variant of it points to wxgtk3. If it points to wxgtk2 by default and deinstalling wxgtk2 isn't an option, you can also temporarily move it out of the path or use a `native-file` in your meson project. Then, fully reconfigure meson using `meson configure --clearcache` and `meson setup --reconfigure`.
#### The video is desynced / Frames don't appear at the right time
This is probably due to the ffms2 seeking bug ([#394](https://github.com/FFMS/ffms2/issues/394)). On Windows, this specific regression shouldn't happen anymore. On Linux, you need to install the latest git version of ffms2 - for example the [`ffms2-git`](https://aur.archlinux.org/packages/ffms2-git) AUR package on Arch linux, or just compile it yourself.
If it's not because of this particular bug, you can also try an alternative video source like LSMASHSource via Avisynth or Vapoursynth, or BestSource.
#### On Windows: Aegisub crashes whenever I open a video
If you're compiling yourself, try adding `--force-fallback-for=zlib` to the meson options.
### Compilation
If you're just looking to install Aegisub, you might want to check out the [releases page](https://github.com/arch1t3cht/Aegisub/releases) or the [CI builds](https://github.com/arch1t3cht/Aegisub/actions) first.
For compilation on Windows, see the TSTools documentation below. Also check the [GitHub workflow](https://github.com/arch1t3cht/Aegisub/blob/cibuilds/.github/workflows/ci.yml) for the project arguments.
On Arch Linux, there is an AUR package called [aegisub-arch1t3cht-git](https://aur.archlinux.org/packages/aegisub-arch1t3cht-git). It's not maintained by me but seems to work.
On other Linux distributions or for manual compilation you can use this package or the [TSTools PKGBUILD](https://aur.archlinux.org/packages/aegisub-ttools-meson-git) as a reference, in particular for installing the necessary dependencies if you don't want to compile them yourself.
If all dependencies are installed:
- Install Meson
- Clone the repository
- In the repository, run `meson setup build --buildtype=release` for the default configuration. See below for further options.
- `cd` to the `build` directory and run `ninja`
- You'll get an `aegisub` binary in the `build` folder. To install it to a system-wide location, run `ninja install`. To install to `/usr` instead of `/usr/local`, pass `--prefix=/usr` when configuring or reconfiguring meson.
- When recompiling after pulling new commits, skip the `meson setup` setup and just immediately run `ninja` from the build directory - even when the build configuration changed.
#### Compilation flags
Some features are not enabled by default. To enable them, pass `-D<feature>=enabled` with the `meson setup` command:
- `-Davisynth=enabled`: Avisynth support
- `-Dbestsource=enabled`: BestSource
- `-Dvapoursynth=enabled`: Vapoursynth support
You can also disable options that are active by default in the same way. Check the file `meson_options.txt` for all options.
To change the options of an existing build directory, run `meson setup --reconfigure <new arguments>` from inside the `build` directory.
### Dependencies
Apart from the dependencies for the TSTools version, there are some additional dependencies. These are cloned and compiled from scratch if not found, but you might want to install binaries instead:
- `xxhash`: For BestSource
- `ffmpeg`: Becomes a direct dependency when compiling with BestSource
- `avisynth` (or `avisynthplus`): Optional run-time dependency for the Avisynth audio/video provider
- `vapoursynth`: Optional run-time dependency for the VapourSynth audio/video provider
The following VapourSynth plugins are used by the default scripts set in the default configuration:
- [`lsmas`](https://github.com/HomeOfAviSynthPlusEvolution/L-SMASH-Works): For LWLibavSource
- [`bs`](https://github.com/vapoursynth/bestsource): For BestSource, used for audio
- [`wwxd`](https://github.com/dubhater/vapoursynth-wwxd) and [`scxvid`](https://github.com/dubhater/vapoursynth-scxvid) (depending on settings): For keyframe generation
# Aegisub
For binaries and general information [see the homepage](http://www.aegisub.org).
The bug tracker can be found at https://github.com/Aegisub/Aegisub/issues.
The bug tracker can be found at http://devel.aegisub.org.
Support is available on [Discord](https://discord.com/invite/AZaVyPr) or [IRC](irc://irc.rizon.net/aegisub).
Support is available on [the forums](http://forum.aegisub.org) or [on IRC](irc://irc.rizon.net/aegisub).
## Building Aegisub
@ -115,59 +12,74 @@ Support is available on [Discord](https://discord.com/invite/AZaVyPr) or [IRC](i
Prerequisites:
1. Visual Studio (Community edition of any recent version is fine)
1. Visual Studio 2015 (the free Community edition is good enough)
2. The June 2010 DirectX SDK (the final release before DirectSound was dropped)
3. Python 3
4. Meson
5. CMake
6. Powershell execution policy set to Unrestricted
3. [Yasm](http://yasm.tortall.net/) installed to somewhere on your path.
There are a few optional dependencies that must be installed and on your PATH:
There are a few optional dependencies:
1. msgfmt, to build the translations
2. InnoSetup, to build the regular installer
3. 7zip, to build the regular installer
4. Moonscript, to build the regular installer
2. WinRAR, to build the portable installer
3. InnoSetup, to build the regular installer
All other dependencies are either stored in the repository or are included as submodules.
Building:
1. Clone Aegisub's repository: `git clone https://github.com/arch1t3cht/Aegisub.git`
2. From the Visual Studio "x64 Native Tools Command Prompt", generate the build directory: `meson build -Ddefault_library=static` (if building for release, add `--buildtype=release`)
3. Build with `cd build` and `ninja`
1. Clone Aegisub's repository recursively to fetch it and all submodules: `git clone --recursive git@github.com:Aegisub/Aegisub.git` This will take quite a while and requires about 2.5 GB of disk space.
2. Open Aegisub.sln
3. Build the BuildTasks project.
4. Build the entire solution.
You should now have a binary: `aegisub.exe`.
You should now have a `bin` directory in your Aegisub directory which contains `aegisub32d.exe`, along with a pile of other files.
Installer:
The Aegisub installer includes some files not built as part of Aegisub (such as Avisynth and VSFilter), so for a fully functional copy of Aegisub you now need to copy all of the files from an installed copy of Aegisub into your `bin` directory (and don't overwrite any of the files already there).
You'll also either need to copy the `automation` directory into the `bin` directory, or edit your automation search paths to include the `automation` directory in the source tree.
You can generate the installer with `ninja win-installer` after a successful build. This assumes a working internet connection and installation of the optional dependencies.
You can generate the portable zip with `ninja win-portable` after a successful build.
After building the solution once, you'll want to switch to the Debug-MinDep configuration, which skips checking if the dependencies are out of date, as that takes a while.
### OS X
A vaguely recent version of Xcode and the corresponding command-line tools are required.
Nothing older than Xcode 5 has been tested recently, but it is likely that some later versions of Xcode 4 are good enough.
For personal usage, you can use pip and homebrew to install almost all of Aegisub's dependencies:
For personal usage, you can use homebrew to install almost all of Aegisub's dependencies:
pip3 install meson
brew install cmake ninja pkg-config libass boost zlib ffms2 fftw hunspell
export LDFLAGS="-L/usr/local/opt/icu4c/lib"
export CPPFLAGS="-I/usr/local/opt/icu4c/include"
export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
brew install autoconf automake ffmpeg ffms2 fftw freetype fribidi gettext icu4c libass m4 pkg-config boost
brew install luajit --HEAD
brew link --force gettext
export LDFLAGS="-L/usr/local/opt/icu4c/lib"
export CPPFLAGS="-I/usr/local/opt/icu4c/include"
export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
Once the dependencies are installed, build Aegisub with `meson build && meson compile -C build`.
wxWidgets is located in vendor/wxWidgets, and can be built like so:
#### Build dmg
CPPFLAGS="$CPPFLAGS -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" \
./configure --disable-aboutdlg --disable-animatectrl --disable-aui --disable-any \
--disable-bannerwindow --disable-base64 --disable-calendar --disable-caret \
--disable-cmdline --disable-colourpicker --disable-compat28 --disable-config \
--disable-constraints --disable-datepick --disable-dctransform --disable-debugreport \
--disable-dialupman --disable-docview --disable-filehistory --disable-finddlg \
--disable-fs_archive --disable-fs_inet --disable-fs_zip --disable-fsvolume \
--disable-fswatcher --disable-gif --disable-help --disable-html --disable-ipc \
--disable-joystick --disable-jpeg --disable-largefile --disable-markup --disable-mdi \
--disable-mediactrl --disable-metafiles --disable-miniframe --disable-notifmsg \
--disable-numberdlg --disable-pcx --disable-pnm --disable-postscript \
--disable-prefseditor --disable-printarch --disable-progressdlg --disable-propgrid \
--disable-protocol --disable-protocols --disable-rearrangectrl --disable-ribbon \
--disable-richtext --disable-richtooltip --disable-snglinst --disable-sockets \
--disable-sockets --disable-sound --disable-splash --disable-splines \
--disable-std_iostreams --disable-svg --disable-tarstream --disable-tiff \
--disable-tipdlg --disable-tipwindow --disable-url --disable-webkit --disable-webview \
--disable-wizarddlg --disable-xrc \
--enable-geometry --enable-imaglist --enable-listctrl --enable-stc --with-cocoa \
--with-libpng=yes --with-macosx-version-min=10.9 \
--with-opengl \
--without-libjpeg --without-libtiff --without-regex \
&& make
```bash
meson build_static -Ddefault_library=static -Dbuildtype=debugoptimized -Dbuild_osx_bundle=true -Dlocal_boost=true
meson compile -C build_static
meson test -C build_static --verbose
meson compile osx-bundle -C build_static
meson compile osx-build-dmg -C build_static
```
Once the dependencies are installed, build Aegisub with `autoreconf && ./configure --with-wxdir=/path/to/Aegisub/vendor/wxWidgets && make && make osx-bundle`.
`autoreconf` should be skipped if you are building from a source tarball rather than `git`.
## Updating Moonscript

15
acinclude.m4 Normal file
View File

@ -0,0 +1,15 @@
m4_include([m4macros/ac_agi.m4])
m4_include([m4macros/ac_flag.m4])
m4_include([m4macros/agi_find_libheader.m4])
m4_include([m4macros/ax_boost_base.m4])
m4_include([m4macros/ax_boost_chrono.m4])
m4_include([m4macros/ax_boost_filesystem.m4])
m4_include([m4macros/ax_boost_locale.m4])
m4_include([m4macros/ax_boost_regex.m4])
m4_include([m4macros/ax_boost_system.m4])
m4_include([m4macros/ax_boost_thread.m4])
m4_include([m4macros/ax_check_gl.m4])
m4_include([m4macros/ax_lang_compiler_ms.m4])
m4_include([m4macros/ax_pthread.m4])
m4_include([m4macros/check_gnu_make.m4])
m4_include([m4macros/wxwin.m4])

87
appveyor.yml Normal file
View File

@ -0,0 +1,87 @@
image: Visual Studio 2017
install:
- cd %APPVEYOR_BUILD_FOLDER%
- git submodule update --init --recursive
- curl -O https://mugen.karaokes.moe/downloads/aegisub-japan7/openssl-aegisub.zip
- set PATH=C:\gettext\bin;"C:\Program Files (x86)\Inno Setup 5";C:\yasm;%PATH%
- mkdir C:\yasm
- curl -o "C:\yasm\yasm.exe" http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe
- mkdir C:\gettext
- curl -L -o "C:\gettext.zip" https://github.com/vslavik/gettext-tools-windows/releases/download/v0.20.1/gettext-tools-windows-0.20.1.zip
- cd C:\gettext
- 7z x C:\gettext.zip
build_script:
- cd %APPVEYOR_BUILD_FOLDER%
- MSBuild.exe Aegisub.sln /target:BuildTasks
- 7z x openssl-aegisub.zip
- MSBuild.exe Aegisub.sln /m /p:Configuration=Release /p:Platform=x64
after_build:
- curl -o "C:\aegisub-codecs.zip" https://mugen.karaokes.moe/downloads/aegisub-codecs.zip
- cd %APPVEYOR_BUILD_FOLDER%
- msgfmt.exe -o po\ar.mo po\ar.po
- msgfmt.exe -o po\wxstd-ar.mo vendor\wxWidgets\locale\ar.po
- msgfmt.exe -o po\bg.mo po\bg.po
- msgfmt.exe -o po\ca.mo po\ca.po
- msgfmt.exe -o po\wxstd-ca.mo vendor\wxWidgets\locale\ca.po
- msgfmt.exe -o po\cs.mo po\cs.po
- msgfmt.exe -o po\wxstd-cs.mo vendor\wxWidgets\locale\cs.po
- msgfmt.exe -o po\da.mo po\da.po
- msgfmt.exe -o po\wxstd-da.mo vendor\wxWidgets\locale\da.po
- msgfmt.exe -o po\de.mo po\de.po
- msgfmt.exe -o po\wxstd-de.mo vendor\wxWidgets\locale\de.po
- msgfmt.exe -o po\el.mo po\el.po
- msgfmt.exe -o po\wxstd-el.mo vendor\wxWidgets\locale\el.po
- msgfmt.exe -o po\es.mo po\es.po
- msgfmt.exe -o po\wxstd-es.mo vendor\wxWidgets\locale\es.po
- msgfmt.exe -o po\eu.mo po\eu.po
- msgfmt.exe -o po\wxstd-eu.mo vendor\wxWidgets\locale\eu.po
- msgfmt.exe -o po\fa.mo po\fa.po
- msgfmt.exe -o po\fi.mo po\fi.po
- msgfmt.exe -o po\wxstd-fi.mo vendor\wxWidgets\locale\fi.po
- msgfmt.exe -o po\fr_FR.mo po\fr_FR.po
- msgfmt.exe -o po\wxstd-fr.mo vendor\wxWidgets\locale\fr.po
- msgfmt.exe -o po\gl.mo po\gl.po
- msgfmt.exe -o po\wxstd-gl_ES.mo vendor\wxWidgets\locale\gl_ES.po
- msgfmt.exe -o po\hu.mo po\hu.po
- msgfmt.exe -o po\wxstd-hu.mo vendor\wxWidgets\locale\hu.po
- msgfmt.exe -o po\id.mo po\id.po
- msgfmt.exe -o po\wxstd-id.mo vendor\wxWidgets\locale\id.po
- msgfmt.exe -o po\it.mo po\it.po
- msgfmt.exe -o po\wxstd-it.mo vendor\wxWidgets\locale\it.po
- msgfmt.exe -o po\ja.mo po\ja.po
- msgfmt.exe -o po\wxstd-ja.mo vendor\wxWidgets\locale\ja.po
- msgfmt.exe -o po\ko.mo po\ko.po
- msgfmt.exe -o po\wxstd-ko_KR.mo vendor\wxWidgets\locale\ko_KR.po
- msgfmt.exe -o po\nl.mo po\nl.po
- msgfmt.exe -o po\wxstd-nl.mo vendor\wxWidgets\locale\nl.po
- msgfmt.exe -o po\pl.mo po\pl.po
- msgfmt.exe -o po\wxstd-pl.mo vendor\wxWidgets\locale\pl.po
- msgfmt.exe -o po\pt_BR.mo po\pt_BR.po
- msgfmt.exe -o po\wxstd-pt_BR.mo vendor\wxWidgets\locale\pt_BR.po
- msgfmt.exe -o po\pt_PT.mo po\pt_PT.po
- msgfmt.exe -o po\wxstd-pt.mo vendor\wxWidgets\locale\pt.po
- msgfmt.exe -o po\ru.mo po\ru.po
- msgfmt.exe -o po\wxstd-ru.mo vendor\wxWidgets\locale\ru.po
- msgfmt.exe -o po\sr_RS.mo po\sr_RS.po
- msgfmt.exe -o po\sr_RS@latin.mo po\sr_RS@latin.po
- msgfmt.exe -o po\uk_UA.mo po\uk_UA.po
- msgfmt.exe -o po\wxstd-uk_UA.mo vendor\wxWidgets\locale\uk_UA.po
- msgfmt.exe -o po\vi.mo po\vi.po
- msgfmt.exe -o po\wxstd-vi.mo vendor\wxWidgets\locale\vi.po
- msgfmt.exe -o po\zh_CN.mo po\zh_CN.po
- msgfmt.exe -o po\wxstd-zh_CN.mo vendor\wxWidgets\locale\zh_CN.po
- msgfmt.exe -o po\zh_TW.mo po\zh_TW.po
- msgfmt.exe -o po\wxstd-zh_TW.mo vendor\wxWidgets\locale\zh_TW.po
- 7z x "C:\aegisub-codecs.zip"
- cd packages\win_installer
- iscc aegisub3.iss
- cd ..\..
on_success:
- IF DEFINED APPVEYOR_REPO_TAG_NAME bash.exe ".ci\upload_win_installer.sh"
artifacts:
- path: packages\win_installer\output\Aegisub-Japan7-x64.exe

7
autogen.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/sh
set -e
echo Running autoreconf...
autoreconf -ivf "$@"
echo Now run ./configure and then make to build Aegisub

34
automation/Makefile Normal file
View File

@ -0,0 +1,34 @@
include $(dir $(lastword $(MAKEFILE_LIST)))../header.mk
DATA_AUTOMATION := \
$(sort $(wildcard $(d)autoload/*)) \
$(sort $(wildcard $(d)demos/*)) \
$(sort $(wildcard $(d)include/*.lua)) \
$(sort $(wildcard $(d)include/aegisub/*))
DATA_AUTOMATION_REL := $(subst $(d),,$(DATA_AUTOMATION))
DATA_AUTOMATION_INSTALLED = $(addprefix $(DESTDIR)$(P_DATA)/automation/, $(DATA_AUTOMATION_REL))
$(DESTDIR)$(P_DATA)/automation/%: $(d)%
$(MKDIR_INSTALL)
aegisub-lua_OBJ := $(d)tests/aegisub.o $(TOP)lib/libaegisub.a $(TOP)lib/libluabins.a
aegisub-lua_CPPFLAGS := $(CPPFLAGS_BOOST) $(CFLAGS_LUA) -I$(TOP)libaegisub/include -I$(TOP)src $(CXXFLAGS_WX)
aegisub-lua_LIBS := $(LIBS_WX) $(LIBS_BOOST) $(LIBS_ICU) $(LIBS_PTHREAD)
ifeq (no, $(SYSTEM_LUAJIT))
aegisub-lua_OBJ += $(LIBS_LUA)
else
aegisub-lua_LIBS += $(LIBS_LUA)
endif
PROGRAM += $(d)aegisub-lua
test-automation: $(PROGRAM)
eval `luarocks path`; cd $(TOP)automation; ./aegisub-lua tests/busted.lua -p 'moon' tests/modules
test: test-automation
install: $(DATA_AUTOMATION_INSTALLED)
include $(TOP)Makefile.target

View File

@ -1,46 +0,0 @@
local tr = aegisub.gettext
script_name = tr"Clean k tags"
script_description = tr"Remove double k tags"
script_author = "amoethyst"
script_version = "1.0"
local double_k = "^(.-{\\k[^}]-)(\\k.+)$"
-- if the first tag is K/kf this would break the timing for the previous timing
local expr = "^(.-){\\(ko?)([0-9.]+)[^}]-}([^{]-){\\[kK][fo]?([0-9.]+)[^}]-}( -{(\\[kK][fo]?)[0-9.]+[^}]-}.*)$"
function _special_k(subs, i)
line = subs[i]
before, after = line.text:match(double_k)
while after ~= nil do
line.text = before .. "}{" .. after
before, after = line.text:match(double_k)
end
before, tag, k1, between, k2, after = line.text:match(expr)
while after ~= nil do
line.text = before .. "{\\" .. tag .. tonumber(k1) + tonumber(k2) .. "}" .. between .. after
before, tag, k1, between, k2, after = line.text:match(expr)
end
return line
end
function special_k(subs, sel)
for _, i in ipairs(sel) do
ok, res = pcall(_special_k, subs, i)
if ok then
subs[i] = res
else
aegisub.log("error on line " .. i .. ": " .. line.text .. "\n")
aegisub.log(res .. "\n")
end
end
end
aegisub.register_macro(script_name, script_description, special_k)

View File

@ -1,26 +0,0 @@
local tr = aegisub.gettext
script_name = tr"driftfix"
script_description = tr"shift drifting lines"
script_author = "amoethyst"
script_version = "1.0"
function split_line(subs, sel)
local step = -200 -- drift step in milliseconds
local drift = step
for _, i in ipairs(sel) do
line = subs[i]
line.start_time = line.start_time + drift
line.end_time = line.end_time + drift
drift = drift + step
subs[i] = line
end
aegisub.set_undo_point(script_name)
end
aegisub.register_macro(script_name, script_description, split_line)

View File

@ -149,7 +149,9 @@ function deduetto_meika(subs, sel)
bracketed = bracketed:gsub("\\f[sn][^\\}]*", "")
-- add style marker
bracketed = "{s:" .. script_style.name .. bracketed:sub(2, #bracketed)
if line.style ~= script_style.name then
bracketed = "{s:" .. script_style.name .. bracketed:sub(2, #bracketed)
end
line.text = line.text:sub(1, match_start-1) .. bracketed .. line.text:sub(match_end + 1, #line.text)
end
end

View File

@ -13,7 +13,7 @@ ktag = "\\[kK][fo]?%d+" --pattern used to detect karaoke tags
-- KM template line definition
km_template_effect = "template pre-line all keeptags"
km_template_text = '!retime("line",$start < 900 and -$start or -900,200)!{!$start < 900 and "\\\\k" .. ($start/10) or "\\\\k90"!\\fad(!$start < 900 and $start or 300!,200)}'
km_templayte_text = '!retime("line",$start < 900 and -$start or -900,200)!{!$start < 900 and "\\\\k" .. ($start/10) or "\\\\k90"!\\fad(!$start < 900 and $start or 300!,200)}'
function hasleadin(line)--check if there is an existing lead in (2 consecutive bracket with karaoke tags at the start of the line)
return line.text:find("^{[^{}]-" .. ktag .. "[^{}]-}%s*{[^{}]-" .. ktag .. "[^{}]-}")
@ -88,7 +88,7 @@ end
function is_template_line(line)
return (line.class == "dialogue"
and line.effect == km_template_effect
and line.text == km_template_text)
and line.text == km_templayte_text)
end
@ -104,16 +104,12 @@ function mugenizer(subs)
if line.key == "PlayResX" or line.key == "PlayResY" then
line.value = "0"
end
if line.key == "ScaledBorderAndShadow" then
line.value = "yes"
end
end
if line.class == "style" then
line.fontname = "Arial"
line.fontsize = "24"
line.outline = "1.5"
line.shadow = "0"
line.margin_l = "15"
line.margin_r = "15"
line.margin_t = "20"
@ -167,7 +163,7 @@ function mugenizer(subs)
line.start_time = 0
line.end_time = 0
line.effect = km_template_effect
line.text = km_template_text
line.text = km_templayte_text
subs.insert(first, line)
end
end

View File

@ -1,79 +0,0 @@
--[[
Copyright (c) 2007, Niels Martin Hansen
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the Aegisub Group nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
]]
local tr = aegisub.gettext
script_name = tr"Automatic karaoke lead-in"
script_description = tr"Join up the ends of selected lines and add \\k tags to shift karaoke"
script_author = "Niels Martin Hansen"
script_version = "1.0"
function add_auto_leadin(subs, sel)
-- Smallest inter-line duration
local min_interdur = nil
for i = 2, #sel do
-- Grab two selected lines
local A = subs[sel[i-1]]
local B = subs[sel[i]]
-- Blank duration between lines
local interdur = B.start_time - A.end_time
if interdur > 0 then
-- Update smallest inter-line duration
if not min_interdur or interdur < min_interdur then
min_interdur = interdur
end
B.start_time = A.end_time
B.text = string.format("{\\k%d}%s", interdur/10, B.text)
subs[sel[i]] = B
else
aegisub.debug.out(2, "Warning: Skipping line-pair with zero or negative inter-duration:\n%s\n%s\n\n", A.text, B.text)
end
end
if min_interdur then
aegisub.debug.out(0, "Smallest inter-line duration: %d milliseconds", min_interdur)
aegisub.set_undo_point(script_name)
else
aegisub.debug.out(2, "Warning: No lines modified")
end
end
function check_minsel_2(subs, sel)
return #sel >= 2
end
aegisub.register_macro(script_name, script_description, add_auto_leadin, check_minsel_2)

View File

@ -1,39 +0,0 @@
local tr = aegisub.gettext
script_name = tr"kf"
script_description = tr"add kf tag for 'long' syllables"
script_author = "amoethyst"
script_version = "1.0"
function split_line(subs, sel)
local expr_k = "(.-{[^}]*\\)[kK][of]?(%d+)([^{]*)"
local before, after, dur, text
for _, i in ipairs(sel) do
line = subs[i]
-- replace k tags
text = ""
for before, dur, after in line.text:gmatch(expr_k) do
if before == nil then
break
else
if tonumber(dur) >= 90 then
text = text .. before .. "kf" .. dur .. after
else
text = text .. before .. "k" .. dur .. after
end
end
end
if text ~= "" then
line.text = text
subs[i] = line
end
end
aegisub.set_undo_point(script_name)
end
aegisub.register_macro(script_name, script_description, split_line)

View File

@ -1,21 +0,0 @@
-- Automation 4 demo script
-- Macro that adds \be1 tags in front of every selected line
local tr = aegisub.gettext
script_name = tr"Add edgeblur"
script_description = tr"A demo macro showing how to do simple line modification in Automation 4"
script_author = "Niels Martin Hansen"
script_version = "1"
function add_edgeblur(subtitles, selected_lines, active_line)
for z, i in ipairs(selected_lines) do
local l = subtitles[i]
l.text = "{\\be1}" .. l.text
subtitles[i] = l
end
aegisub.set_undo_point(script_name)
end
aegisub.register_macro(script_name, tr"Adds \\be1 tags to all selected lines", add_edgeblur)

View File

@ -1,80 +0,0 @@
-- Automation 4 demo script
-- Converts halfwidth (ASCII) Latin letters to fullwidth JIS Latin letters
local tr = aegisub.gettext
script_name = tr("Make text fullwidth")
script_description = tr("Shows how to use the unicode include to iterate over characters and a lookup table to convert those characters to something else.")
script_author = "Niels Martin Hansen"
script_version = "1"
include("unicode.lua")
lookup = {
['!'] = '', ['"'] = '', ['#'] = '', ['$'] = '',
['%'] = '', ['&'] = '', ["'"] = '', ['('] = '',
[')'] = '', ['*'] = '', ['+'] = '', [','] = '',
['-'] = '', ['.'] = '', ['/'] = '',
['1'] = '', ['2'] = '', ['3'] = '', ['4'] = '',
['5'] = '', ['6'] = '', ['7'] = '', ['8'] = '',
['9'] = '', ['0'] = '',
[':'] = '', [';'] = '', ['<'] = '', ['='] = '',
['>'] = '', ['?'] = '', ['@'] = '',
['A'] = '', ['B'] = '', ['C'] = '', ['D'] = '',
['E'] = '', ['F'] = '', ['G'] = '', ['H'] = '',
['I'] = '', ['J'] = '', ['K'] = '', ['L'] = '',
['M'] = '', ['N'] = '', ['O'] = '', ['P'] = '',
['Q'] = '', ['R'] = '', ['S'] = '', ['T'] = '',
['U'] = '', ['V'] = '', ['W'] = '', ['X'] = '',
['Y'] = '', ['Z'] = '',
['['] = '', ['\\'] = '', [']'] = '', ['^'] = '',
['a'] = '', ['b'] = '', ['c'] = '', ['d'] = '',
['e'] = '', ['f'] = '', ['g'] = '', ['h'] = '',
['i'] = '', ['j'] = '', ['k'] = '', ['l'] = '',
['m'] = '', ['n'] = '', ['o'] = '', ['p'] = '',
['q'] = '', ['r'] = '', ['s'] = '', ['t'] = '',
['u'] = '', ['v'] = '', ['w'] = '', ['x'] = '',
['y'] = '', ['z'] = '',
['_'] = '_', ['`'] = '',
['{'] = '', ['|'] = '', ['}'] = '', ['~'] = '',
}
function make_fullwidth(subtitles, selected_lines, active_line)
for z, i in ipairs(selected_lines) do
local l = subtitles[i]
aegisub.debug.out(string.format('Processing line %d: "%s"\n', i, l.text))
aegisub.debug.out("Chars: \n")
local in_tags = false
local newtext = ""
for c in unicode.chars(l.text) do
aegisub.debug.out(c .. ' -> ')
if c == "{" then
in_tags = true
end
if in_tags then
aegisub.debug.out(c .. " (ignored, in tags)\n")
newtext = newtext .. c
else
if lookup[c] then
aegisub.debug.out(lookup[c] .. " (converted)\n")
newtext = newtext .. lookup[c]
else
aegisub.debug.out(c .. " (not found in lookup)\n")
newtext = newtext .. c
end
end
if c == "}" then
in_tags = false
end
end
l.text = newtext
subtitles[i] = l
end
aegisub.set_undo_point(tr"Make fullwidth")
end
aegisub.register_macro(tr"Make fullwidth", tr"Convert Latin letters to SJIS fullwidth letters", make_fullwidth)

View File

@ -1,32 +0,0 @@
-- Copyright (c) 2010, Thomas Goyne <plorkyeran@aegisub.org>
--
-- Permission to use, copy, modify, and distribute this software for any
-- purpose with or without fee is hereby granted, provided that the above
-- copyright notice and this permission notice appear in all copies.
--
-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
local tr = aegisub.gettext
script_name = tr"Strip tags"
script_description = tr"Remove all override tags from selected lines"
script_author = "Thomas Goyne"
script_version = "1"
function strip_tags(subs, sel)
for _, i in ipairs(sel) do
local line = subs[i]
line.text = line.text:gsub("{[^}]+}", "")
subs[i] = line
end
aegisub.set_undo_point(tr"strip tags")
end
aegisub.register_macro(script_name, script_description, strip_tags)

View File

@ -0,0 +1,523 @@
--[[ "Blur / Layers" creates layers with blur. Supports 2 borders, xbord, ybord, xshad, and yshad. Basic support for transforms and \r.
"Blur + Glow" - Same as above but with an extra layer for glow. Set blur amount and alpha for the glow.
The "double border" option additionally lets you change the size and colour of the 2nd border.
If blur is missing, default blur is added.
"Bottom blur" allows you to use different blur for the lowest non-glow layer than for top layer(s).
"fix \\1a for layers with border and fade" - Uses \1a&HFF& for the duration of a fade on layers with border.
"transition" - for \fad(500,0) with transition 80ms you get \1a&HFF&\t(420,500,\1a&H00&).
"only add glow" - will add glow to a line with a border, without messing with the primary / border. (Blur + Glow)
"only add 2nd border" - will add 2nd border, without messing with the primary / first border. (Blur / Layers)
"Fix fades" - Recalculates those \1a fades mentioned above.
Use this when you shift something like an episode title to a new episode and the duration of the sign is different.
"Change layer" - raises or lowers layer for all selected lines by the same amount. [This is separate from the other functions.]
Full manual: http://unanimated.xtreemhost.com/ts/scripts-manuals.htm#blurglow
]]
script_name="Blur and Glow"
script_description="Add blur and/or glow to signs"
script_author="unanimated"
script_url="http://unanimated.xtreemhost.com/ts/blur-and-glow.lua"
script_version="2.5"
script_namespace="ua.BlurAndGlow"
local haveDepCtrl,DependencyControl,depRec=pcall(require,"l0.DependencyControl")
if haveDepCtrl then
script_version="2.5.0"
depRec=DependencyControl{feed="https://raw.githubusercontent.com/TypesettingTools/unanimated-Aegisub-Scripts/master/DependencyControl.json"}
end
function glow(subs,sel)
if not res.rep then al=res.alfa bl=res.blur end
if res.glowcol then glowc=res.glc:gsub("#(%x%x)(%x%x)(%x%x)","&H%3%2%1&") end
if res.autod then if res.clr or res.bsize then res.double=true end end
for z=#sel,1,-1 do
i=sel[z]
progress("Glowing line: "..(#sel-z+1).."/"..#sel)
line=subs[i]
text=line.text
if defaref and line.style=="Default" then sr=defaref
elseif lastref and laststyle==line.style then sr=lastref
else sr=stylechk(line.style) end
lastref=sr laststyle=line.style
duration=line.end_time-line.start_time
-- get colors, border, shadow from style
stylinfo(text)
text=preprocess(text)
line.text=text
if border~="0" or text:match("\\[xy]bord") then
-- WITH TWO BORDERS
if res.double then
-- second border
line1=line
line1.text=text
line1.text=borderline2(line1.text)
line1.layer=line1.layer+1
subs.insert(i+1,line1)
-- first border
line2=line
line2.text=text
line2.text=borderline(line2.text)
if shadow~="0" then line2.text=line2.text:gsub("^({\\[^}]+)}","%1\\shad"..shadow.."}") end
if not res.s_mid then line2.text=line2.text:gsub("^({\\[^}]-)}","%1\\4a&HFF&}") end
line2.layer=line2.layer+1
subs.insert(i+2,line2)
-- top line
line3=line
line3.text=text
line3.text=topline(line3.text)
line3.layer=line3.layer+1
subs.insert(i+3,line3)
-- bottom / glow
text=borderline2(text)
text=glowlayer(text,"3c","3")
if res.botalpha and line.text:match("\\fad%(") then text=botalfa(text) end
line.layer=line.layer-3
line.text=text
sls=3
else
-- WITH ONE BORDER
-- border
line2=line
if not res.onlyg then
line2.text=text
line2.text=borderline(line2.text)
end
line2.layer=line2.layer+1
subs.insert(i+1,line2)
-- top line
line3=line
line3.layer=line3.layer+1
if not res.onlyg then
line3.text=text
line3.text=topline(line3.text)
subs.insert(i+2,line3)
end
-- bottom / glow
text=glowlayer(text,"3c","3")
if res.botalpha and line.text:match("\\fad%(") then text=botalfa(text) end
line.layer=line.layer-2
line.text=text
sls=2
end
else
-- WITHOUT BORDER
line2=line
line2.layer=line2.layer+1
subs.insert(i+1,line2)
text=glowlayer(text,"c","1")
line.layer=line.layer-1
line.text=text
sls=1
end
subs[i]=line
for s=z,#sel do sel[s]=sel[s]+sls end
end
progress("Blur & Glow: DONE")
return sel
end
function layerblur(subs,sel)
if res.autod then if res.clr or res.bsize then res.double=true end end
for z=#sel,1,-1 do
i=sel[z]
progress("Blurring line: "..(#sel-z+1).."/"..#sel)
line=subs[i]
text=line.text
if defaref~=nil and line.style=="Default" then sr=defaref
elseif lastref~=nil and laststyle==line.style then sr=lastref
else sr=stylechk(line.style) end
lastref=sr laststyle=line.style
duration=line.end_time-line.start_time
-- get colors, border, shadow from style
stylinfo(text)
text=preprocess(text)
line.text=text
-- TWO BORDERS
if res.double then
-- first border
line2=line
if not res.onlyb then
line2.text=text
line2.text=borderline(line2.text)
if not res.s_mid then line2.text=line2.text:gsub("^({\\[^}]-)}","%1\\4a&HFF&}") end
end
line2.layer=line2.layer+1
subs.insert(i+1,line2)
-- top line
line3=line
line3.layer=line3.layer+1
if not res.onlyb then
line3.text=text
line3.text=topline(line3.text)
subs.insert(i+2,line3)
end
-- second border
text=borderline2(text)
line.layer=line.layer-2
line.text=text
sls=2
-- ONE BORDER
else
-- top line
line3=line
line3.text=text
line3.text=topline(line3.text)
line3.layer=line3.layer+1
subs.insert(i+1,line3)
-- bottom line
text=borderline(text)
line.layer=line.layer-1
line.text=text
sls=1
end
subs[i]=line
for s=z,#sel do sel[s]=sel[s]+sls end
end
progress("Blur: DONE")
end
function topline(txt)
txt=txt
:gsub("(\\t%([^%)]*)\\bord[%d%.]+","%1")
:gsub("(\\t%([^%)]*)\\shad[%d%.]+","%1")
:gsub("\\t%([^\\]*%)","")
if not txt:match("^{[^}]-\\bord") then txt=txt:gsub("^{\\","{\\bord0\\") end
txt=txt
:gsub("\\bord[%d%.]+","\\bord0")
:gsub("(\\r[^}]-)}","%1\\bord0}")
txt=txt:gsub("(\\[xy]bord)[%d%.]+","") :gsub("\\3c&H%x+&","")
if shadow~="0" then txt=txt:gsub("^({\\[^}]+)}","%1\\shad"..shadow.."}") end
txt=txt
:gsub("^({\\[^}]-)}","%1\\4a&HFF&}")
:gsub("(\\r[^}]-)}","%1\\shad"..shadow.."\\4a&HFF&}")
:gsub("\\bord[%d%.%-]+([^}]-)(\\bord[%d%.%-]+)","%1%2")
:gsub("\\shad[%d%.%-]+([^}]-)(\\shad[%d%.%-]+)","%1%2")
if res.s_top then txt=txt:gsub("\\4a&HFF&","") end
txt=txt:gsub("{}","")
return txt
end
function borderline(txt)
txt=txt:gsub("\\c&H%x+&","")
-- transform check
if txt:match("^{[^}]-\\t%([^%)]-\\3c") then
pretrans=text:match("^{(\\[^}]-)\\t")
if not pretrans:match("^{[^}]-\\3c") then txt=txt:gsub("^{\\","{\\c"..soutline.."\\") end
end
if not txt:match("^{[^}]-\\3c&[^}]-}") then
txt=txt:gsub("^({\\[^}]+)}","%1\\c"..soutline.."}")
:gsub("(\\r[^}]-)}","%1\\c"..routline.."}")
end
txt=txt:gsub("(\\3c)(&H%x+&)","%1%2\\c%2")
:gsub("(\\r[^}]-)}","%1\\c"..routline.."}")
:gsub("(\\r[^}]-\\3c)(&H%x+&)([^}]-)}","%1%2\\c%2%3")
:gsub("\\c&H%x+&([^}]-)(\\c&H%x+&)",function(a,b) if not a:match("\\t") then return a..b end end)
:gsub("{%*?}","")
if res.bbl and not res.double then txt=txt:gsub("\\blur[%d%.]+","\\blur"..res.bblur) end
if res.botalpha and txt:match("\\fad%(") then txt=botalfa(txt) end
return txt
end
function borderline2(txt)
outlinetwo=primary
if res.clr then col3=res.c3:gsub("#(%x%x)(%x%x)(%x%x)","&H%3%2%1&") outlinetwo=col3 rimary=col3 end
bordertwo=border
if res.bsize then bordertwo=res.secbord end
-- transform check
if txt:match("^{[^}]-\\t%([^%)]-\\bord") then
pretrans=text:match("^{(\\[^}]-)\\t")
if not pretrans:match("^{[^}]-\\bord") then txt=txt:gsub("^{\\","{\\bord"..border.."\\") end
end
if not txt:match("^{[^}]-\\bord") then txt=txt:gsub("^{\\","{\\bord"..border.."\\") end
txt=txt:gsub("(\\r[^\\}]-)([\\}])","%1\\bord"..rbord.."%2")
:gsub("(\\r[^\\}]-)\\bord[%d%.%-]+([^}]-)(\\bord[%d%.%-]+)","%1%2%3")
:gsub("(\\bord)([%d%.]+)",function(a,b) if res.bsize then brd=bordertwo else brd=b end return a..b+brd end)
:gsub("(\\[xy]bord)([%d%.]+)",function(a,b) return a..b+b end)
:gsub("\\3c&H%x+&","")
:gsub("^({\\[^}]+)}","%1\\3c"..outlinetwo.."}")
:gsub("(\\3c)(&H%x+&)","%1"..outlinetwo)
if res.clr then txt=txt:gsub("\\c&H%x+&([^}]-)}","\\c"..rimary.."\\3c"..outlinetwo.."%1}")
else txt=txt:gsub("(\\c)(&H%x+&)([^}]-)}","%1%2%3\\3c%2}") end
txt=txt:gsub("(\\r[^}]+)}","%1\\3c"..rimary.."}")
:gsub("\\c&H%x+&([^}]-)(\\c&H%x+&)",function(a,b) if not a:match("\\t") then return a..b end end)
:gsub("\\3c&H%x+&([^}]-)(\\3c&H%x+&)",function(a,b) if not a:match("\\t") then return a..b end end)
:gsub("{%*?}","")
if res.bbl and res.double then txt=txt:gsub("\\blur[%d%.]+","\\blur"..res.bblur) end
if res.botalpha and txt:match("\\fad%(") then txt=botalfa(txt) end
return txt
end
function glowlayer(txt,kol,alf)
txt=txt:gsub("\\alpha&H(%x%x)&",function(a) if a>al then return "\\alpha&H"..a.."&" else return "\\alpha&H"..al.."&" end end)
:gsub("\\"..alf.."a&H(%x%x)&",function(a) if a>al then return "\\"..alf.."a&H"..a.."&" else return "\\"..alf.."a&H"..al.."&" end end)
:gsub("(\\blur)[%d%.]*([\\}])","%1"..bl.."%2")
:gsub("(\\r[^}]-)}","%1\\alpha&H"..al.."&}")
if not txt:match("^{[^}]-\\alpha") then txt=txt:gsub("^({\\[^}]-)}","%1\\alpha&H"..al.."&}") end
if res.alfa=="00" then txt=txt:gsub("^({\\[^}]-)\\alpha&H00&","%1") end
txt=txt:gsub("{%*?}","")
if res.glowcol then
if txt:match("^{\\[^}]-\\"..kol.."&") then txt=txt:gsub("\\"..kol.."&H%x+&","\\"..kol..glowc)
else txt=txt:gsub("\\"..kol.."&H%x+&","\\"..kol..glowc) txt=txt:gsub("^({\\[^}]-)}","%1\\"..kol..glowc.."}")
end
end
return txt
end
function botalfa(txt)
fadin,fadout=txt:match("\\fad%((%d+)%,(%d+)")
alfadin=res.alphade alfadout=res.alphade
if res.alphade=="max" then alfadin=fadin alfadout=fadout end
if fadin==nil or fadout==nil then aegisub.log("\n ERROR: Failed to capture fade times from line:\n "..text) end
if fadin~="0" then
txt=txt:gsub("^({\\[^}]-)}","%1\\1a&HFF&\\t("..fadin-alfadin..","..fadin..",\\1a&H00&)}")
end
if fadout~="0" then
txt=txt:gsub("^({\\[^}]-)}","%1\\t("..duration-fadout..","..duration-fadout+alfadout..",\\1a&HFF&)}")
end
return txt
end
function stylinfo(text)
startags=text:match("^{\\[^}]-}") or ""
startags=startags:gsub("\\t%b()","")
primary=startags:match("^{[^}]-\\c(&H%x+&)") or sr.color1:gsub("H%x%x","H")
soutline=sr.color3:gsub("H%x%x","H")
outline=startags:match("^{[^}]-\\3c(&H%x+&)") or soutline
border=startags:match("^{[^}]-\\bord([%d%.]+)") or tostring(sr.outline)
shadow=startags:match("^{[^}]-\\shad([%d%.]+)") or tostring(sr.shadow)
if text:match("\\r%a") then
rstyle=text:match("\\r([^\\}]+)")
reref=stylechk(rstyle)
rimary=reref.color1:gsub("H%x%x","H")
routline=reref.color3:gsub("H%x%x","H")
rbord=tostring(reref.outline)
else routline=soutline rimary=primary rbord=border
end
end
function preprocess(text)
if not text:match("^{\\") then text="{\\blur"..bdef.."}"..text -- default blur if no tags
text=text:gsub("(\\r[^}]-)}","%1\\blur"..bdef.."}")
end
if not text:match("\\blur") then text=text:gsub("^{\\","{\\blur"..bdef.."\\") -- default blur if missing in tags
text=text:gsub("(\\r[^}]-)}","%1\\blur"..bdef.."}")
end
if text:match("\\blur") and not text:match("^{[^}]*blur[^}]*}") then -- add blur if missing in first tag block
text=text:gsub("^{\\","{\\blur"..bdef.."\\")
end
if text:match("^{[^}]-\\t[^}]-}") and not text:match("^{[^}]-\\3c[^}]-\\t") then -- \t workaround
text=text:gsub("^{\\","{\\3c"..soutline.."\\")
end
text=text:gsub("\\1c","\\c")
return text
end
function fixfade(subs,sel)
for z=#sel,1,-1 do
i=sel[z]
line=subs[i]
text=line.text
sr=stylechk(line.style)
duration=line.end_time-line.start_time
border=tostring(sr.outline)
bord=text:match("^{[^}]-\\bord([%d%.]+)")
if bord then border=bord end
if border~="0" and line.text:match("\\fad%(") then
text=text:gsub("\\1a&H%x+&","") :gsub("\\t%([^\\%(%)]-%)","")
text=botalfa(text)
end
line.text=text
subs[i]=line
end
end
function layeraise(subs,sel)
for z=#sel,1,-1 do
i=sel[z]
line=subs[i]
if line.layer+res["layer"]>=0 then line.layer=line.layer+res["layer"] else t_error("You're dumb. Layers can't go below 0.",1) end
subs[i]=line
end
end
function styleget(subs)
styles={}
for i=1,#subs do
if subs[i].class=="style" then
table.insert(styles,subs[i])
end
if subs[i].class=="dialogue" then break end
end
end
function stylechk(sn)
for s=1,#styles do
if sn==styles[s].name then
sr=styles[s]
if styles[s].name=="Default" then defaref=styles[s] end
end
end
if sr==nil then t_error("Style '"..sn.."' doesn't exist.",1) end
return sr
end
function saveconfig()
bgconf="Blur & Glow config\n\n"
for key,val in ipairs(GUI) do
if val.class=="floatedit" or val.class=="dropdown" or val.class=="color" then
bgconf=bgconf..val.name..":"..res[val.name].."\n"
end
if val.class=="checkbox" and val.name~="save" then
bgconf=bgconf..val.name..":"..tf(res[val.name]).."\n"
end
end
blurkonfig=ADP("?user").."\\blurandglow.conf"
file=io.open(blurkonfig,"w")
file:write(bgconf)
file:close()
ADD({{class="label",label="Config saved to:\n"..blurkonfig}},{"OK"},{close='OK'})
end
function loadconfig()
blurkonfig=ADP("?user").."\\blurandglow.conf"
file=io.open(blurkonfig)
if file~=nil then
konf=file:read("*all")
io.close(file)
for key,val in ipairs(GUI) do
if val.class=="floatedit" or val.class=="checkbox" or val.class=="dropdown" or val.class=="color" then
if konf:match(val.name) then val.value=detf(konf:match(val.name..":(.-)\n")) end
end
end
end
end
function tf(val)
if val==true then ret="true"
elseif val==false then ret="false"
else ret=val end
return ret
end
function detf(txt)
if txt=="true" then ret=true
elseif txt=="false" then ret=false
else ret=txt end
return ret
end
function logg(m) m=tf(m) or "nil" aegisub.log("\n "..m) end
function progress(msg)
if aegisub.progress.is_cancelled() then ak() end
aegisub.progress.title(msg)
end
function t_error(message,cancel)
ADD({{class="label",label=message}},{"OK"},{close='OK'})
if cancel then ak() end
end
function blurandglow(subs,sel)
ADD=aegisub.dialog.display
ADP=aegisub.decode_path
ak=aegisub.cancel
GUI={
--left
{x=0,y=0,width=2,class="label",label=" = Blur and Glow version "..script_version.." ="},
{x=0,y=1,class="label",label="Glow blur:"},
{x=0,y=2,class="label",label="Glow alpha:"},
{x=1,y=1,width=2,class="floatedit",name="blur",value=3},
{x=1,y=2,width=2,class="dropdown",name="alfa",items={"00","20","30","40","50","60","70","80","90","A0","B0","C0","D0","F0"},value="80"},
{x=0,y=3,class="checkbox",name="glowcol",label="glow c.:",hint="glow colour"},
{x=1,y=3,width=2,class="color",name="glc"},
{x=0,y=4,width=2,class="checkbox",name="s_top",label="keep shadow on top layer"},
{x=0,y=5,width=5,class="checkbox",name="botalpha",label="fix \\1a for layers with border and fade --> transition:",value=true,
hint="uses \\1a&HFF& for bottom layer during fade"},
{x=5,y=5,class="dropdown",name="alphade",items={0,45,80,120,160,200,"max"},value=45},
{x=6,y=5,width=2,class="label",label="ms"},
{x=0,y=6,width=4,class="checkbox",name="onlyg",label="only add glow (layers w/ border)"},
-- right
{x=4,y=0,class="checkbox",name="double",label="double border"},
{x=5,y=0,width=2,class="checkbox",name="onlyb",label="only add 2nd border"},
{x=4,y=1,class="checkbox",name="bbl",label="bottom blur:",
hint="Blur for bottom layer \n[not the glow layer] \nif different from top layer."},
{x=5,y=1,width=2,class="floatedit",name="bblur",value=1},
{x=4,y=2,class="checkbox",name="bsize",label="2nd b. size:",
hint="Size for 2nd border \n[counts from first border out] \nif different from the current border."},
{x=5,y=2,width=2,class="floatedit",name="secbord",value=2},
{x=4,y=3,class="checkbox",name="clr",label="2nd b. colour:",hint="Colour for 2nd border \nif different from primary."},
{x=5,y=3,width=2,class="color",name="c3"},
{x=4,y=4,width=4,class="checkbox",name="s_mid",label="keep shadow on middle layer"},
{x=4,y=6,class="label",label=" Change layer:"},
{x=5,y=6,class="dropdown",name="layer",items={"-5","-4","-3","-2","-1","+1","+2","+3","+4","+5"},value="+1"},
{x=0,y=7,width=2,class="checkbox",name="rep",label="repeat with last settings"},
{x=4,y=7,class="checkbox",name="autod",label="auto double",value=true,
hint="automatically use double border\nif 2nd colour or 2nd border size is checked"},
{x=6,y=6,class="dropdown",name="def",items={"0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"},value="0.6",hint="config: default blur"},
{x=5,y=7,width=2,class="checkbox",name="save",label="save configuration"},
}
loadconfig()
buttons={"Blur / Layers","Blur + Glow","Fix fades","Change layer","cancel"}
pressed,res=ADD(GUI,buttons,{ok='Blur / Layers',close='cancel'})
if pressed=="cancel" then ak() end
bdef=res.def
if res.onlyg then res.double=false end
if res.onlyb then res.double=true end
if res.save then saveconfig()
else
if res.rep then res=lastres end
styleget(subs)
if pressed=="Blur / Layers" then layerblur(subs,sel) end
if pressed=="Blur + Glow" then sel=glow(subs,sel) end
if pressed=="Fix fades" then fixfade(subs,sel) end
if pressed=="Change layer" then layeraise(subs,sel) end
end
if res.rep==false then lastres=res end
aegisub.set_undo_point(script_name)
return sel
end
if haveDepCtrl then depRec:registerMacro(blurandglow) else aegisub.register_macro(script_name,script_description,blurandglow) end

View File

@ -0,0 +1,148 @@
script_name="Change Case"
script_description="Capitalises text or makes it lowercase / uppercase"
script_author="unanimated"
script_version="3.0"
script_namespace="ua.ChangeCase"
local haveDepCtrl,DependencyControl,depRec=pcall(require,"l0.DependencyControl")
if haveDepCtrl then
script_version="3.0.0"
depRec=DependencyControl{feed="https://raw.githubusercontent.com/TypesettingTools/unanimated-Aegisub-Scripts/master/DependencyControl.json"}
end
re=require'aegisub.re'
unicode=require'aegisub.unicode'
function case(subs,sel)
for z,i in ipairs(sel) do
line=subs[i]
t=line.text
if P=="lowercase" then t=lowercase(t) end
if P=="UPPERCASE" then t=uppercase(t) end
if P=="Lines" then t=capitalines(t) end
if P=="Sentences" then
if res.mod then res.mod=false t=lowercase(t) res.mod=true end
t=sentences(t)
end
if P=="Words" then
if not res.mod then t=lowercase(t) end
t=capitalise(t)
end
line.text=t
subs[i]=line
end
end
function lowercase(t)
t=t
:gsub("\\[Nnh]","{%1}")
:gsub("^([^{]*)",function(l)
if res.mod then l=re.sub(l,[[\b(\u\u+'?\u*)]],function(u) return ulower(u) end) return l
else return ulower(l) end end)
:gsub("}([^{]*)",function(l)
if res.mod then l=re.sub(l,[[\b(\u\u+'?\u*)]],function(u) return ulower(u) end) return "}"..l
else return "}"..ulower(l) end end)
:gsub("{(\\[Nnh])}","%1")
return t
end
function uppercase(t)
t=t
:gsub("\\[Nnh]","{%1}")
:gsub("^([^{]*)",function(u) return uupper(u) end)
:gsub("}([^{]*)",function(u) return "}"..uupper(u) end)
:gsub("{(\\[Nnh])}","%1")
return t
end
function capitalines(t)
t=re.sub(t,[[^(["']?\l)]],function(l) return uupper(l) end)
t=re.sub(t,[[^\{[^}]*\}(["']?\l)]],function(l) return uupper(l) end)
if not res.mod then
t=t:gsub(" i([' %?!%.,])"," I%1"):gsub("\\Ni([' ])","\\NI%1")
end
return t
end
function sentences(t)
somewords={"English","Japanese","American","British","German","French","Spanish","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","January","February","April","June","July","August","September","October","November","December"}
hnrfx={"%-san","%-kun","%-chan","%-sama","%-dono","%-se[nm]pai","%-on%a+an"}
t=re.sub(t,[[^(["']?\l)]],function(l) return uupper(l) end)
t=re.sub(t,[[^\{[^}]*\}(["']?\l)]],function(l) return uupper(l) end)
t=re.sub(t,[[[\.\?!](\s|\s\\N|\\N)["']?(\l)]],function(l) return uupper(l) end)
t=t
:gsub(" i([' %?!%.,])"," I%1")
:gsub("\\Ni([' ])","\\NI%1")
:gsub(" m(arch %d)"," M%1")
:gsub(" a(pril %d)"," A%1")
for l=1,#somewords do t=t:gsub(somewords[l]:lower(),somewords[l]) end
for h=1,#hnrfx do
t=t:gsub("([ %p]%l)(%l*"..hnrfx[h]..")",function(h,f) return h:upper()..f end)
t=t:gsub("(\\N%l)(%l*"..hnrfx[h]..")",function(h,f) return h:upper()..f end)
end
t=re.sub(t,"\\b(of|in|from|\\d+st|\\d+nd|\\d+rd|\\d+th) m(arch|ay)\\b","\\1 M\\2")
t=re.sub(t,"\\bm(r|rs|s)\\.","M\\1.")
t=re.sub(t,"\\bdr\\.","Dr.")
return t
end
function capitalise(txt)
word={"A","About","Above","Across","After","Against","Along","Among","Amongst","An","And","Around","As","At","Before","Behind","Below","Beneath","Beside","Between","Beyond","But","By","Despite","During","Except","For","From","In","Inside","Into","Near","Nor","Of","On","Onto","Or","Over","Per","Sans","Since","Than","The","Through","Throughout","Till","To","Toward","Towards","Under","Underneath","Unlike","Until","Unto","Upon","Versus","Via","With","Within","Without","According to","Ahead of","Apart from","Aside from","Because of","Inside of","Instead of","Next to","Owing to","Prior to","Rather than","Regardless of","Such as","Thanks to","Up to","and Yet"}
onore={"%-San","%-Kun","%-Chan","%-Sama","%-Dono","%-Se[nm]pai","%-On%a+an"}
nokom={"^( ?)([^{]*)","(})([^{]*)"}
for n=1,2 do
txt=txt:gsub(nokom[n],function(no_t,t)
t=t:gsub("\\[Nnh]","{%1}")
t=re.sub(t,[[\b\l]],function(l) return uupper(l) end)
t=re.sub(t,[[[I\l]'(\u)]],function(l) return ulower(l) end)
for r=1,#word do w=word[r]
t=t
:gsub("^ "..w.." "," "..w:lower().." ")
:gsub("([^%.:%?!]) "..w.." ","%1 "..w:lower().." ")
:gsub("([^%.:%?!]) (%b{})"..w.." ","%1 %2"..w:lower().." ")
:gsub("([^%.:%?!]) (%*Large_break%* ?)"..w.." ","%1 %2"..w:lower().." ")
end
-- Roman numbers (this may mismatch some legit words - sometimes there just are 2 options and it's a guess)
t=t
:gsub("$","#")
:gsub("(%s?)([IVXLCDM])([ivxlcdm]+)([%s%p#])",function(s,r,m,e) return s..r..m:upper()..e end)
:gsub("([DLM])ID","%1id")
:gsub("DIM","Dim")
:gsub("MIX","Mix")
:gsub("Ok([%s%p#])","OK%1")
for h=1,#onore do
t=t:gsub(onore[h].."([%s%p#])",onore[h]:lower().."%1")
end
t=t
:gsub("#$","")
:gsub("{(\\[Nnh])}","%1")
return no_t..t end)
end
return txt
end
ulower=unicode.to_lower_case
uupper=unicode.to_upper_case
function logg(m) m=m or "nil" aegisub.log("\n "..m) end
function capital(subs,sel)
GUI={
{x=1,y=0,class="label",label="Words - Capitalise Words Like in Titles"},
{x=1,y=1,class="label",label=" Lines - Capitalise first word in selected lines"},
{x=1,y=2,class="label",label=" Sentences - Capitalise first word in each sentence"},
{x=1,y=3,class="label",label=" Lowercase - make text in selected lines lowercase"},
{x=1,y=4,class="label",label=" Uppercase - MAKE TEXT IN SELECTED LINES UPPERCASE"},
{x=2,y=5,class="label",label=script_name.." v "..script_version},
{x=1,y=5,class="checkbox",name="mod",label="mod",hint="Words - leave uppercase words\nLines - don't capitalize 'i'\nSentences - run lowercase first\nlowercase - only for uppercase words"},
}
P,res=aegisub.dialog.display(GUI,{"Words","Lines","Sentences","lowercase","UPPERCASE","Cancel"},{ok='Words',close='Cancel'})
if P=="Cancel" then aegisub.cancel() end
case(subs,sel)
aegisub.set_undo_point(script_name)
return sel
end
if haveDepCtrl then depRec:registerMacro(capital) else aegisub.register_macro(script_name,script_description,capital) end

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,116 @@
-- Manual: http://unanimated.hostfree.pw/ts/scripts-manuals.htm#cycle
script_name="Cycles"
script_description="Cycles blur, border, shadow, alpha, alignment, font spacing"
script_author="unanimated"
script_version="2.0"
script_namespace="ua.Cycles"
local haveDepCtrl,DependencyControl,depRec=pcall(require,"l0.DependencyControl")
if haveDepCtrl then
script_version="2.0.0"
depRec=DependencyControl{feed="https://raw.githubusercontent.com/unanimated/luaegisub/master/DependencyControl.json"}
end
-- SETTINGS - You can change these sequences
blur_sequence={"0.6","0.8","1","1.2","1.5","2","2.5","3","4","5","6","8","10","0.4","0.5"}
bord_sequence={"0","1","1.5","2","2.5","3","4","5","6","7","8","9","10","11","12","15","20"}
shad_sequence={"0","1","1.5","2","2.5","3","4","5","6","7","8","9","10","11","12"}
alpha_sequence={"FF","00","10","30","60","80","A0","C0","E0"}
align_sequence={"1","2","3","4","5","6","7","8","9"}
fsp_sequence={"0","1","2","3","4","5","6","7","8","10","12","15","20","30"}
--[[ Adding more tags
You could make this also work for the following tags: frz, frx, fry, fax, fay, fs, fscx, fscy, be, xbord, xshad, ybord, yshad
by doing 3 things:
1. add a new sequence to the settings above for the tag you want to add
2. add a function below here based on what the others look like (it's adjusted for negative values too)
3. add "aegisub.register_macro("Cycles/YOUR_SCRIPT_NAME","Cycles WHATEVER_YOU_CHOOSE",FUNCTION_NAME_HERE)" at the end of the script
If you at least roughly understand the basics, this should be easy. The main cycle function remains the same for all tags.
Should you want to add other tags with different value patterns, check the existing exceptions for alpha in the cycle function.]]
function blur(subs,sel) cycle(subs,sel,"blur",blur_sequence) end
function bord(subs,sel) cycle(subs,sel,"bord",bord_sequence) end
function shad(subs,sel) cycle(subs,sel,"shad",shad_sequence) end
function alph(subs,sel) cycle(subs,sel,"alpha",alpha_sequence) end
function algn(subs,sel) cycle(subs,sel,"an",align_sequence) end
function fsp(subs,sel) cycle(subs,sel,"fsp",fsp_sequence) end
function cycle(subs,sel,tag,sequence)
if tag=="alpha" then base=16 else base=10 end
for z,i in ipairs(sel) do
line=subs[i]
text=line.text
local back
if line.comment or text:match'{switch}$' then back=true end
text=text:gsub("\\t(%b())",function(t) return "\\t"..t:gsub("\\","|") end)
if tag=="alpha" then val1=text:match("^{[^}]-\\alpha&H(%x%x)&") else val1=text:match("^{[^}]-\\"..tag.."(%-?[%d%.]+)") end
if val1 then
for n=1,#sequence do
N=n+1
if back then N=n-1 end
if N==0 then N=#sequence end
if val1==sequence[n] then val2=sequence[N] or sequence[1] break end
end
if val2==nil then
for n=1,#sequence do
if n>1 or sequence[1]~="FF" then
local N=n
if back then N=n-1 end
if N==0 then N=#sequence end
if tonumber(val1,base)<tonumber(sequence[n],base) then val2=sequence[N] break end
end
end
end
if val2==nil then if back then val2=sequence[#sequence] else val2=sequence[1] end end
if tag=="alpha" then
text=text:gsub("^({[^}]-\\alpha&H)%x%x","%1"..val2)
else
text=text:gsub("^({[^}]-\\"..tag..")%-?[%d%.]+","%1"..val2)
end
val2=nil
else
text="{\\"..tag..sequence[1].."}"..text
text=text:gsub("alpha(%x%x)}","alpha&H%1&}")
:gsub("{(\\.-)}{\\","{%1\\")
end
text=text:gsub("{\\[^}]-}",function(t) return t:gsub("|","\\") end)
line.text=text
subs[i]=line
end
end
function switch(subs,sel)
for z,i in ipairs(sel) do
l=subs[i]
t=l.text
t=t.."{switch}"
t=t:gsub("{switch}{switch}$","")
l.text=t
subs[i]=l
end
end
function logg(m) m=m or "nil" aegisub.log("\n "..m) end
if haveDepCtrl then
depRec:registerMacros({
{"Cycles/Blur Cycle","Cycles Blur",blur},
{"Cycles/Border Cycle","Cycles Border",bord},
{"Cycles/Shadow Cycle","Cycles Shadow",shad},
{"Cycles/Alpha Cycle","Cycles Alpha",alph},
{"Cycles/Alignment Cycle","Cycles Alignment",algn},
{"Cycles/FontSpacing Cycle","Cycles Font Spacing",fsp},
{"Cycles/Switch","Switches sequence direction",switch},
},false)
else
aegisub.register_macro("Cycles/Blur Cycle","Cycles Blur",blur)
aegisub.register_macro("Cycles/Border Cycle","Cycles Border",bord)
aegisub.register_macro("Cycles/Shadow Cycle","Cycles Shadow",shad)
aegisub.register_macro("Cycles/Alpha Cycle","Cycles Alpha",alph)
aegisub.register_macro("Cycles/Alignment Cycle","Cycles Alignment",algn)
aegisub.register_macro("Cycles/FontSpacing Cycle","Cycles Font Spacing",fsp)
aegisub.register_macro("Cycles/Switch","Switches sequence direction",switch)
end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,758 @@
-- Disclaimer: RTFM! - http://unanimated.hostfree.pw/ts/scripts-manuals.htm#cleanup
script_name="Script Cleanup"
script_description="Garbage disposal and elimination of incriminating evidence"
script_author="unanimated"
script_version="5.0"
script_namespace="ua.ScriptCleanup"
local haveDepCtrl,DependencyControl,depRec=pcall(require,"l0.DependencyControl")
if haveDepCtrl then
script_version="5.0.0"
depRec=DependencyControl{feed="https://raw.githubusercontent.com/unanimated/luaegisub/master/DependencyControl.json"}
end
dont_delete_empty_tags=false -- option to not delete {}
re=require'aegisub.re'
function cleanlines(subs,sel)
if res.all then
for k,v in ipairs(GUI) do
if v.x==0 then res[v.name]=true end
end
end
for z,i in ipairs(sel) do
progress("Processing line: "..z.."/"..#sel)
prog=math.floor(z/#sel*100)
aegisub.progress.set(prog)
line=subs[i]
text=line.text
stl=line.style
if res.nots and not res.nocom then text=text:gsub("{TS[^}]*} *","") end
if res.nocom then
text=text:gsub("{[^\\}]-}","")
:gsub("{[^\\}]-\\N[^\\}]-}","")
:gsub("^({[^}]-}) *","%1")
:gsub(" *$","")
end
if res.clear_a then line.actor="" end
if res.clear_e then line.effect="" end
if res.layers and line.layer<5 then
if stl:match("Defa") or stl:match("Alt") or stl:match("Main") then line.layer=line.layer+5 end
end
if res.cleantag and text:match("{[*>]?\\") then
txt2=text
text=text:gsub("{\\\\k0}",""):gsub(">\\","\\"):gsub("{(\\[^}]-)} *\\N *{(\\[^}]-)}","\\N{%1%2}")
repeat text,r=text:gsub("{(\\[^}]-)}{(\\[^}]-)}","{%1%2}") until r==0
text=text:gsub("({\\[^}]-){(\\[^}]-})","%1%2"):gsub("{.-\\r","{\\r"):gsub("^{\\r([\\}])","{%1")
:gsub("\\fad%(0,0%)",""):gsub(ATAG.."$",""):gsub("^({\\[^}]-)\\frx0\\fry0","%1"):gsub("\\%a+%(%)","")
text=text:gsub(ATAG,function(tgs)
tgs2=tgs
:gsub("\\+([\\}])","%1")
:gsub("(\\[^\\})]+)",function(a) if not a:match'clip' and not a:match'\\fn' and not a:match'\\r' then a=a:gsub(' ','') end return a end)
:gsub("(\\%a+)([%d%-]+%.%d+)",function(a,b) if not a:match("\\fn") then b=rnd2dec(b) end return a..b end)
:gsub("(\\%a+)%(([%d%.%-]+),([%d%.%-]+)%)",function(a,b,c) b=rnd2dec(b) c=rnd2dec(c) return a.."("..b..","..c..")" end)
:gsub("(\\%a+)%(([%d%.%-]+),([%d%.%-]+),([%d%.%-]+),([%d%.%-]+)",function(a,b,c,d,e)
return a.."("..rnd2dec(b)..","..rnd2dec(c)..","..rnd2dec(d)..","..rnd2dec(e) end)
tgs2=duplikill(tgs2)
tgs2=extrakill(tgs2)
return tgs2
end)
if txt2~=text then kleen=kleen+1 end
end
if res.overlap then
if line.comment==false and stl:match("Defa") then
start=line.start_time
endt=line.end_time
if i<#subs then nextline=subs[i+1] nextart=nextline.start_time end
prevline=subs[i-1]
prevstart=prevline.start_time
prevend=prevline.end_time
dur=line.end_time-line.start_time
ms2fr=aegisub.frame_from_ms
fr2ms=aegisub.ms_from_frame
keyframes=aegisub.keyframes()
startf=ms2fr(start)
endf=ms2fr(endt)
prevendf=ms2fr(prevend)
nextartf=ms2fr(nextart)
-- start gaps/overlaps
if prevline.class=="dialogue" and prevline.style:match("Defa") and dur>50 then
-- get keyframes
kfst=0 kfprev=0
for k,kf in ipairs(keyframes) do
if kf==startf then kfst=1 end
if kf==prevendf then kfprev=1 end
end
-- start overlap
if start<prevend and prevend-start<=50 then
if kfst==0 or kfprev==1 then nstart=prevend end
end
-- start gap
if start>prevend and start-prevend<=50 then
if kfst==0 and kfprev==1 then nstart=prevend end
end
end
-- end gaps/overlaps
if i<#subs and nextline.style:match("Defa") and dur>50 then
--get keyframes
kfend=0 kfnext=0
for k,kf in ipairs(keyframes) do
if kf==endf then kfend=1 end
if kf==nextartf then kfnext=1 end
end
-- end overlap
if endt>nextart and endt-nextart<=50 then
if kfnext==1 and kfend==0 then nendt=nextart end
end
-- end gap
if endt<nextart and nextart-endt<=50 then
if kfend==0 or kfnext==1 then nendt=nextart end
end
end
end
if nstart then line.start_time=nstart end
if nendt then line.end_time=nendt end
nstart=nil nendt=nil
end
if res.spaces then text=text:gsub(" +"," ") :gsub(" *$","") :gsub("^({\\[^}]-}) *","%1") end
if res.nobreak2 then text=text:gsub("\\[Nn]","")
elseif res.nobreak then
text=text
:gsub(" *{\\i0}\\N{\\i1} *"," ")
:gsub("%*","_ast_")
:gsub("\\[Nn]","*")
:gsub(" *%*+ *"," ")
:gsub("_ast_","*")
end
if res.hspace then text=text:gsub("\\h","") end
if res.notag then text=text:gsub(ATAG,"") end
if res.allcol then text=text:gsub("\\[1234]?c[^\\})]*","") end
if res.alpha14 then text=text:gsub("\\[1234]a[^\\})]*","")
elseif res.allphas then text=text:gsub("\\[1234]a[^\\})]*","") :gsub("\\alpha[^\\})]*","") end
if res.xyshad then text=text:gsub("\\[xy]shad[^\\})]*","")
elseif res.allshad then text=text:gsub("\\[xy]?shad[^\\})]*","") end
if res.xyrot then text=text:gsub("\\fr[xy][^\\})]*","")
elseif res.allrot then text=text:gsub("\\fr[^\\})]*","") end
if res.allpers then text=text:gsub("\\f[ar][xyz][^\\})]*","") :gsub("\\org%b()","") end
if res.scales then text=text:gsub("\\fsc[xy][^\\})]*","")
elseif res.allsize then text=text:gsub("\\fs[%d.]+","") :gsub("\\fs([\\}%)])","%1") :gsub("\\fsc[xy][^\\})]*","") end
if res.parent2 then text=text:gsub("(\\%a%a+)(%b())",function(a,b) if a=='\\pos' then return a..b else return "" end end)
elseif res.parent then text=text:gsub("\\%a%a+%b()","") end
if res.ctrans then text=text:gsub(ATAG,function(tg) return cleantr(tg) end) end
if res.inline2 then repeat text,r=text:gsub("(.)"..ATAG.."(.-{%*?\\)","%1%2") until r==0
elseif res.inline then text=text:gsub("(.)"..ATAG,"%1") end
if res.alphacol then
text=text
:gsub("alpha&(%x%x)&","alpha&H%1&")
:gsub("alpha&?H?(%x%x)&?([\\}])","alpha&H%1&%2")
:gsub("alpha&H0&","alpha&H00&")
:gsub("alpha&H(%x%x)%x*&","alpha&H%1&")
:gsub("(\\[1234]a)&(%x%x)&","%1&H%2&")
:gsub("(\\[1234]a)(%x%x)([\\}])","%1&H%2&%3")
:gsub("(\\[1234]?c&)(%x%x%x%x%x%x)&","%1H%2&")
:gsub("(\\[1234]?c&H%x%x%x%x%x%x)([^&])","%1&%2")
:gsub("(\\i?clip%([^%)]-) ?([\\}])","%1)%2")
:gsub("(\\t%([^%)]-\\i?clip%([^%)]-%))([\\}])","%1)%2")
:gsub("(fad%([%d,]+)([\\}])","%1)%2")
:gsub("([1234]?[ac])H&(%x+)","%1&H%2")
:gsub("([1234]?c&H)00(%x%x%x%x%x%x)","%1%2")
end
text=text:gsub("^ *","") :gsub("\\t%([^\\%)]-%)","") :gsub("{%*}","")
if not dont_delete_empty_tags then text=text:gsub("{}","") end
if line.text~=text then chng=chng+1 end
line.text=text
subs[i]=line
end
if res.info then
infotxt="Lines with modified Text field: "..chng
if res.cleantag then infotxt=infotxt.."\nChanges from Clean Tags: "..kleen end
P,rez=ADD({{class="label",label=infotxt}},{"OK"},{close='OK'})
end
return sel
end
-- delete commented lines from selected lines
function nocom_line(subs,sel)
progress("Deleting commented lines")
ncl_sel={}
for s=#sel,1,-1 do
line=subs[sel[s]]
if line.comment then
for z,i in ipairs(ncl_sel) do ncl_sel[z]=i-1 end
subs.delete(sel[s])
else
table.insert(ncl_sel,sel[s])
end
end
return ncl_sel
end
-- delete empty lines
function noempty(subs,sel)
progress("Deleting empty lines")
noe_sel={}
for s=#sel,1,-1 do
line=subs[sel[s]]
if line.text=="" then
for z,i in ipairs(noe_sel) do noe_sel[z]=i-1 end
subs.delete(sel[s])
else
table.insert(noe_sel,sel[s])
end
end
return noe_sel
end
-- delete commented or empty lines
function noemptycom(subs,sel)
progress("Deleting commented/empty lines")
noecom_sel={}
for s=#sel,1,-1 do
line=subs[sel[s]]
if line.comment or line.text=="" then
for z,i in ipairs(noecom_sel) do noecom_sel[z]=i-1 end
subs.delete(sel[s])
else
table.insert(noecom_sel,sel[s])
end
end
return noecom_sel
end
-- delete unused styles
function nostyle(subs,sel)
stylist=",,"
for i=#subs,1,-1 do
if subs[i].class=="dialogue" then
line=subs[i]
text=line.text
st2=text:match("\\r([^\\}]*)")
st=line.style
if not stylist:match(","..esc(st)..",") then stylist=stylist..st..",," end
if st2 and st2~="" and not stylist:match(","..esc(st2)..",") then stylist=stylist..st2..",," end
end
if subs[i].class=="style" then
style=subs[i]
if res.nostyle2 and style.name:match("Defa") or res.nostyle2 and style.name:match("Alt") then nodel=1 else nodel=0 end
if not stylist:match(","..esc(style.name)..",") and nodel==0 then
subs.delete(i)
logg("\n Deleted style: "..style.name)
for s=1,#sel do sel[s]=sel[s]-1 end
end
end
end
return sel
end
-- kill everything
function killemall(subs,sel)
if res.inverse then
for k,v in ipairs(GUI) do
if v.x>4 and v.y>0 and v.name~="onlyt" then res[v.name]=not res[v.name] end
end
end
for z,i in ipairs(sel) do
progress("Processing line: "..z.."/"..#sel)
line=subs[i]
text=line.text
if res.onlyt then res.trans=false
text=text:gsub(ATAG,function(t) return t:gsub("\\","|") end)
:gsub("|t(%b())",function(t) return "\\t"..t:gsub("|","\\") end)
end
tags=text:match(STAG) or ""
inline=text:gsub(STAG,"")
if res.skill and res.ikill then trgt=text tg=3
elseif res.ikill then trgt=inline tg=2
else trgt=tags tg=1 end
if res.border then trgt=killtag("[xy]?bord",trgt) end
if res.shadow then trgt=killtag("shad",trgt) end
if res.blur then trgt=killtag("blur",trgt) end
if res.bee then trgt=killtag("be",trgt) end
if res.fsize then trgt=killtag("fs",trgt) end
if res.fspace then trgt=killtag("fsp",trgt) end
if res.scalex then trgt=killtag("fscx",trgt) end
if res.scaley then trgt=killtag("fscy",trgt) end
if res.fade then trgt=trgt:gsub("\\fade?%b()","") end
if res.posi then trgt=trgt:gsub("\\pos%b()","") end
if res.move then trgt=trgt:gsub("\\move%b()","") end
if res.org then trgt=trgt:gsub("\\org%b()","") end
if res.color1 then trgt=killctag("1?c",trgt) end
if res.color2 then trgt=killctag("2c",trgt) end
if res.color3 then trgt=killctag("3c",trgt) end
if res.color4 then trgt=killctag("4c",trgt) end
if res.alfa1 then trgt=killctag("1a",trgt) end
if res.alfa2 then trgt=killctag("2a",trgt) end
if res.alfa3 then trgt=killctag("3a",trgt) end
if res.alfa4 then trgt=killctag("4a",trgt) end
if res.alpha then trgt=killctag("alpha",trgt) end
if res.clip then trgt=trgt:gsub("\\i?clip%b()","") end
if res.fname then trgt=trgt:gsub("\\fn[^\\}]+","") end
if res.frz then trgt=killtag("frz",trgt) end
if res.frx then trgt=killtag("frx",trgt) end
if res.fry then trgt=killtag("fry",trgt) end
if res.fax then trgt=killtag("fax",trgt) end
if res.fay then trgt=killtag("fay",trgt) end
if res.anna then trgt=killtag("an",trgt) end
if res.align then trgt=killtag("a",trgt) end
if res.wrap then trgt=killtag("q",trgt) end
if res["return"] then trgt=trgt:gsub("\\r.+([\\}])","%1") end
if res.kara then trgt=trgt:gsub("\\[Kk][fo]?[%d%.]+([\\}])","%1") end
if res.ital then repeat trgt,r=trgt:gsub("\\i[01]?([\\}])","%1") until r==0 end
if res.bold then repeat trgt,r=trgt:gsub("\\b[01]?([\\}])","%1") until r==0 end
if res.under then repeat trgt,r=trgt:gsub("\\u[01]?([\\}])","%1") until r==0 end
if res.stri then repeat trgt,r=trgt:gsub("\\s[01]?([\\}])","%1") until r==0 end
if res.trans then trgt=trgt:gsub("\\t%b()","") end
trgt=trgt:gsub("\\t%([%d%.,]*%)","") :gsub("{%**}","")
if tg==1 then tags=trgt elseif tg==2 then inline=trgt elseif tg==3 then text=trgt end
if trgt~=text then text=tags..inline end
if res.onlyt then text=text:gsub("{%*?|[^}]-}",function(t) return t:gsub("|","\\") end) end
line.text=text
subs[i]=line
end
end
function killtag(tag,t) repeat t,r=t:gsub("\\"..tag.."[%d%.%-]-([\\}])","%1") until r==0 return t end
function killctag(tag,t) t=t:gsub("\\"..tag.."&H%x+&","") repeat t,r=t:gsub("\\"..tag.."([\\}])","%1") until r==0 return t end
-- hide tags
function hide_tags(subs,sel)
hide=true
if res.inverse then hide=nil end
local numbers="\\i\\b\\u\\s\\q\\a\\be\\blur\\bord\\fs\\fscx\\fscy\\shad\\an\\frz\\fry\\frx\\fsp\\fax\\fay\\"
local alphacol="\\1a\\2a\\3a\\4a\\1c\\2c\\3c\\4c\\alpha\\"
local parent="\\fad\\pos\\move\\org\\clip\\"
local fontret="\\r\\fn\\"
if hide then
hidem={}
for k,v in ipairs(GUI) do
if v.x>4 and v.y>0 and v.name~='onlyt' and v.name~='kara' then
nom=v.label:gsub("c, 1c","1c"):gsub("%(i%)","")
if res[v.name] then table.insert(hidem,nom) end
end
end
end
for x,i in ipairs(sel) do
line=subs[i]
text=line.text:gsub("\\c&","\\1c&")
startg=text:match("^{\\[^}]-}") or ""
startg=trem(startg)
t2=text:gsub("^{\\[^}]-}","")
if hide then
for t=1,#hidem do
local tag='\\'..hidem[t]
local htag='//'..hidem[t]
local chk=tag..'\\'
tg=nil
if numbers:match(chk) then
tg=startg:match(tag.."([%d.-]+)")
if tg then t2=t2.."{"..htag..tg.."}" end
startg=startg:gsub(tag.."[%d.-]+","")
if not tg and tag=="\\shad" then
tg1=startg:match("\\xshad([%d.-]+)")
tg2=startg:match("\\yshad([%d.-]+)")
if tg1 then t2=t2.."{//xshad"..tg1.."}" end
if tg2 then t2=t2.."{//yshad"..tg2.."}" end
startg=startg:gsub("\\[xy]shad[%d.-]+","")
end
elseif alphacol:match(chk) then
tg=startg:match(tag.."(&H%x+&)")
if tg then t2=t2.."{"..htag..tg.."}" end
startg=startg:gsub(tag.."&H%x+&","")
elseif parent:match(chk) then
tg=startg:match(tag.."(%b())")
if not tg and tag=="\\clip" then tg=startg:match("\\iclip(%b())") tag='\\iclip' htag='//iclip' end
if not tg and tag=="\\fad" then tg=startg:match("\\fade(%b())") tag='\\fade' htag='//fade' end
if tg then t2=t2.."{"..htag..tg.."}" end
startg=startg:gsub(tag.."%b()","")
elseif fontret:match(chk) then
tg=startg:match(tag.."([^\\}]*)")
if tg then t2=t2.."{"..htag..tg.."}" end
startg=startg:gsub(tag.."[^\\}]*","")
elseif tag=='\\t' then
t2=t2.."{"..trnsfrm:gsub("\\t","//t").."}"
end
end
if res.hidline then
-- hide inline
inT=inline_pos(t2)
t2=t2:gsub(ATAG,"")
for k,v in ipairs(inT) do
t2=t2..v.t:gsub("{%*?\\","{"..v.n.."//")
end
end
else
local vis1,vis2=t2:gsub("%b{}","")
local c=0
repeat
-- Unhide regular
if res.skill then
for hidden in t2:gmatch("{(//.-)}") do
t2=t2:gsub("{"..esc(hidden).."}","")
hidden=hidden:gsub("//","\\")
startg=startg.."{"..hidden.."}"
end
end
-- unhide inline
if t2:match("{%d+//[^}]+}") and res.ikill then
inT={}
stT=''
for num,tag in t2:gmatch("{(%d+)//([^}]+)}") do
table.insert(inT,{n=num,t=tag})
end
for tag in t2:gmatch("{//[^}]+}") do stT=stT..tag end
table.sort(inT,function(a,b) return tonumber(a.n)<tonumber(b.n) end)
t2=t2:gsub("{%d+//[^}]+}","")
if t2:match"{" then orig=t2 t2=t2:gsub("%b{}","") end
t2=inline_ret2(t2,inT)
if orig then t2=textmod(orig,t2) orig=nil end
t2=t2..stT
end
vis2=t2:gsub("%b{}","")
c=c+1
until vis1==vis2 or c==666
if vis1~=vis2 then logg('Error:\n '..vis1..'\n> '..vis2) end
end
if not hide or hide and not res.trans then startg=startg.."{"..trnsfrm.."}" end
text=duplikill(startg:gsub("}{",""):gsub("\\1c","\\c"))..t2
text=text:gsub("{}",""):gsub("\\1c","\\c")
if line.text~=text then line.text=text subs[i]=line end
end
return sel
end
-- save inline tags
function inline_pos(t)
inTags={}
tl=t:len()
if tl==0 then return {} end
p=0
t1=''
repeat
seg=t:match("^(%b{})") -- try to match tags/comments
if seg then
if seg:match("{%*?\\") then table.insert(inTags,{n=p,t=seg}) end
else
seg=t:match("^([^{]+)") -- or match text
if not seg then t_error("Error: There appears to be a problem with the brackets here...\n"..t1..t,1) end
SL=re.find(seg,".")
p=p+#SL -- position of next '{' [or end]
end
t1=t1..seg
t=t:gsub("^"..esc(seg),"")
tl=t:len()
until tl==0
return inTags
end
-- rebuild inline tags
function inline_ret2(t,tab)
tl=t:len()
nt=''
kill='_Z#W_' -- this is supposed to never match
for k,v in ipairs(tab) do
N=tonumber(v.n)
if N==0 then nt=nt..v.t
else
m='.'
-- match how many chars at the start
m=m:rep(N)
RS=re.find(t,m)
seg=RS[1].str
seg=re.sub(seg,'^'..kill,'')
nt=nt..seg..'{\\'..v.t..'}'
kill=m -- how many matched in the last round
end
end
-- the rest
seg=re.sub(t,'^'..kill,'')
nt=nt..seg
return nt
end
-- reanimatools -------
function esc(str) str=str:gsub("[%%%(%)%[%]%.%-%+%*%?%^%$]","%%%1") return str end
function rnd2dec(num) num=math.floor((num*100)+0.5)/100 return num end
function logg(m) m=m or "nil" aegisub.log("\n "..m) end
function wrap(str) return "{"..str.."}" end
function nobra(t) return t:gsub("%b{}","") end
function nobrea(t) return t:gsub("%b{}",""):gsub("\\[Nh]","") end
function nobrea1(t) return t:gsub("%b{}",""):gsub(" *\\[Nh] *"," ") end
function tagmerge(t) repeat t,r=t:gsub("({\\[^}]-)}{(\\[^}]-})","%1%2") until r==0 return t end
function progress(msg) if aegisub.progress.is_cancelled() then ak() end aegisub.progress.title(msg) end
function t_error(message,cancel) ADD({{class="label",label=message}},{"OK"},{close='OK'}) if cancel then ak() end end
function duplikill(tagz)
local tags1={"blur","be","bord","shad","xbord","xshad","ybord","yshad","fs","fsp","fscx","fscy","frz","frx","fry","fax","fay"}
local tags2={"c","2c","3c","4c","1a","2a","3a","4a","alpha"}
tagz=tagz:gsub("\\t%b()",function(t) return t:gsub("\\","|") end)
for i=1,#tags1 do
tag=tags1[i]
repeat tagz,c=tagz:gsub("|"..tag.."[%d%.%-]+([^}]-)(\\"..tag.."[%d%.%-]+)","%1%2") until c==0
repeat tagz,c=tagz:gsub("\\"..tag.."[%d%.%-]+([^}]-)(\\"..tag.."[%d%.%-]+)","%2%1") until c==0
end
tagz=tagz:gsub("\\1c&","\\c&")
for i=1,#tags2 do
tag=tags2[i]
repeat tagz,c=tagz:gsub("|"..tag.."&H%x+&([^}]-)(\\"..tag.."&H%x+&)","%1%2") until c==0
repeat tagz,c=tagz:gsub("\\"..tag.."&H%x+&([^}]-)(\\"..tag.."&H%x+&)","%2%1") until c==0
end
repeat tagz,c=tagz:gsub("\\fn[^\\}]+([^}]-)(\\fn[^\\}]+)","%2%1") until c==0
repeat tagz,c=tagz:gsub("(\\[ibusq])%d(.-)(%1%d)","%2%3") until c==0
repeat tagz,c=tagz:gsub("(\\an)%d(.-)(%1%d)","%3%2") until c==0
tagz=tagz:gsub("(|i?clip%(%A-%))(.-)(\\i?clip%(%A-%))","%2%3")
:gsub("(\\i?clip%b())(.-)(\\i?clip%b())",function(a,b,c)
if a:match("m") and c:match("m") or not a:match("m") and not c:match("m") then return b..c else return a..b..c end end)
tagz=tagz:gsub("|","\\"):gsub("\\t%([^\\%)]-%)","")
return tagz
end
function extrakill(text,o)
local tags3={"pos","move","org","fad"}
for i=1,#tags3 do
tag=tags3[i]
if o==2 then
repeat text,c=text:gsub("(\\"..tag.."[^\\}]+)([^}]-)(\\"..tag.."[^\\}]+)","%3%2") until c==0
else
repeat text,c=text:gsub("(\\"..tag.."[^\\}]+)([^}]-)(\\"..tag.."[^\\}]+)","%1%2") until c==0
end
end
repeat text,c=text:gsub("(\\pos[^\\}]+)([^}]-)(\\move[^\\}]+)","%1%2") until c==0
repeat text,c=text:gsub("(\\move[^\\}]+)([^}]-)(\\pos[^\\}]+)","%1%2") until c==0
return text
end
function trem(tags)
trnsfrm=""
for t in tags:gmatch("\\t%b()") do trnsfrm=trnsfrm..t end
tags=tags:gsub("\\t%b()","")
return tags
end
function cleantr(tags)
trnsfrm=""
zerotf=""
for t in tags:gmatch("\\t%b()") do
if t:match("\\t%(\\") then
zerotf=zerotf..t:match("\\t%((.*)%)$")
else
trnsfrm=trnsfrm..t
end
end
zerotf="\\t("..zerotf..")"
tags=tags:gsub("\\t%b()",""):gsub("^({[^}]*)}","%1"..zerotf..trnsfrm.."}"):gsub("\\t%(%)","")
return tags
end
function retextmod(orig,text)
local v1,v2,c,t2
v1=nobrea(orig)
c=0
repeat
t2=textmod(orig,text)
v2=nobrea(text)
c=c+1
until v1==v2 or c==666
if v1~=v2 then logg("Something went wrong with the text...") logg(v1) logg(v2) end
return t2
end
function textmod(orig,text)
if text=="" then return orig end
tk={}
tg={}
text=text:gsub("{\\\\k0}","")
text=tagmerge(text)
vis=nobra(text)
ltrmatches=re.find(vis,".")
if not ltrmatches then logg("text: "..text..'\nvisible: '..vis)
logg("If you're seeing this, something really weird is happening with the re module.\nTry this again or rescan Autoload.")
end
for l=1,#ltrmatches do
table.insert(tk,ltrmatches[l].str)
end
stags=text:match(STAG) or ""
text=text:gsub(STAG,"") :gsub("{[^\\}]-}","")
orig=orig:gsub("{([^\\}]+)}",function(c) return wrap("\\\\"..c.."|||") end)
count=0
for seq in orig:gmatch("[^{]-{%*?\\[^}]-}") do
chars,as,tak=seq:match("([^{]-){(%*?)(\\[^}]-)}")
pos=re.find(chars,".")
if pos==nil then ps=0+count else ps=#pos+count end
tgl={p=ps,t=tak,a=as}
table.insert(tg,tgl)
count=ps
end
count=0
for seq in text:gmatch("[^{]-{%*?\\[^}]-}") do
chars,as,tak=seq:match("([^{]-){(%*?)(\\[^}]-)}")
pos=re.find(chars,".")
if pos==nil then ps=0+count else ps=#pos+count end
tgl={p=ps,t=tak,a=as}
table.insert(tg,tgl)
count=ps
end
newline=""
for i=1,#tk do
newline=newline..tk[i]
newt=""
for n,t in ipairs(tg) do
if t.p==i then newt=newt..t.a..t.t end
end
if newt~="" then newline=newline.."{"..as..newt.."}" end
end
newtext=stags..newline:gsub("(|||)(\\\\)","%1}{%2"):gsub("({[^}]-)\\\\([^\\}]-)|||","{%2}%1")
text=newtext:gsub("{}","")
return text
end
function cleanup(subs,sel,act)
ADD=aegisub.dialog.display
ak=aegisub.cancel
if #sel==0 then t_error("No selection",1) end
ATAG="{[*>]?\\[^}]-}"
STAG="^{>?\\[^}]-}"
if act==0 then act=sel[1] end
chng=0 kleen=0
GUI={
{x=0,y=0,class="checkbox",name="nots",label="Remove TS timecodes",hint="Removes timecodes like {TS 12:36}"},
{x=0,y=1,class="checkbox",name="clear_a",label="Clear Actor field"},
{x=0,y=2,class="checkbox",name="clear_e",label="Clear Effect field"},
{x=0,y=3,class="checkbox",name="layers",label="Raise dialogue layer by 5"},
{x=0,y=4,class="checkbox",name="cleantag",label="Clean up tags",hint="Fixes duplicates, \\\\, \\}, }{, and other garbage"},
{x=0,y=5,class="checkbox",name="ctrans",label="Clean up transforms"},
{x=0,y=6,class="checkbox",name="overlap",label="Fix 1-frame gaps/overlaps"},
{x=0,y=7,class="checkbox",name="nocomline",label="Delete commented lines"},
{x=0,y=8,class="checkbox",name="noempty",label="Delete empty lines"},
{x=0,y=9,class="checkbox",name="alphacol",label="Try to fix alpha / colour tags"},
{x=0,y=10,class="checkbox",name="spaces",label="Fix start/end/double spaces"},
{x=0,y=12,class="checkbox",name="info",label="Print info"},
{x=0,y=13,class="checkbox",name="all",label="ALL OF THE ABOVE"},
{x=1,y=0,class="label",label=" "},
{x=2,y=0,width=2,class="checkbox",name="allcol",label="Remove all colour tags"},
{x=2,y=1,class="checkbox",name="allphas",label="Remove all alphas"},
{x=3,y=1,class="checkbox",name="alpha14",label="Only 1a-4a"},
{x=2,y=2,class="checkbox",name="allrot",label="Remove all rotations",hint="frx, fry, frz"},
{x=3,y=2,class="checkbox",name="xyrot",label="Only x, y",hint="remove frx, fry"},
{x=2,y=3,class="checkbox",name="allsize",label="Remove size/scaling",hint="fs, fscx, fscy"},
{x=3,y=3,class="checkbox",name="scales",label="Only scaling",hint="remove fscx, fscy"},
{x=2,y=4,class="checkbox",name="allshad",label="Remove all shadows",hint="shad, xshad, yshad"},
{x=3,y=4,class="checkbox",name="xyshad",label="Only x, y",hint="remove xshad, yshad"},
{x=2,y=5,class="checkbox",name="parent",label="Remove parentheses",hint="fad(e), (i)clip, pos, move, org\n(but not t)"},
{x=3,y=5,class="checkbox",name="parent2",label="Except \\pos",hint="fad(e), (i)clip, move, org\n(but not t or pos)"},
{x=2,y=6,width=2,class="checkbox",name="allpers",label="Remove all perspective",hint="frx, fry, frz, fax, fay, org"},
{x=2,y=7,width=2,class="label",label=" ~ Script Cleanup v"..script_version.." ~"},
{x=2,y=8,width=2,class="checkbox",name="hspace",label="Remove hard spaces - \\h"},
{x=2,y=9,class="checkbox",name="nobreak",label="Remove line breaks"},
{x=3,y=9,class="checkbox",name="nobreak2",label="...no space",hint="Remove line breaks, leave no spaces"},
{x=2,y=10,class="checkbox",name="nostyle",label="Delete unused styles"},
{x=3,y=10,class="checkbox",name="nostyle2",label="Except Def.",hint="Delete unused styles except Default"},
{x=2,y=11,class="checkbox",name="inline",label="Remove inline tags"},
{x=3,y=11,class="checkbox",name="inline2",label="Except last",hint="Remove inline tags except the last one"},
{x=2,y=12,width=2,class="checkbox",name="nocom",label="Remove comments from lines",hint="Removes {comments} (not tags)"},
{x=2,y=13,width=2,class="checkbox",name="notag",label="Remove all {\\tags} from selected lines"},
{x=4,y=0,height=14,class="label",label="| \n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|"},
{x=5,y=0,class="checkbox",name="skill",label="[start]",value=true},
{x=6,y=0,class="checkbox",name="ikill",label="[inline]",value=true,hint="only kill, not hide"},
{x=7,y=0,width=2,class="checkbox",name="inverse",label="[inverse/unhide]",hint="kill all except checked ones\n\n'Unhide' for 'Hide Tags'"},
{x=7,y=1,width=2,class="checkbox",name="onlyt",label="[from \\t]",hint="remove only from transforms\n\n n/a for 'Hide Tags'"},
{x=5,y=1,class="checkbox",name="blur",label="blur"},
{x=5,y=2,class="checkbox",name="border",label="bord",hint="includes xbord and ybord [not for Hide]"},
{x=5,y=3,class="checkbox",name="shadow",label="shad",hint="includes xshad and yshad for Hide"},
{x=5,y=4,class="checkbox",name="fsize",label="fs"},
{x=5,y=5,class="checkbox",name="fspace",label="fsp"},
{x=5,y=6,class="checkbox",name="scalex",label="fscx"},
{x=5,y=7,class="checkbox",name="scaley",label="fscy"},
{x=5,y=8,class="checkbox",name="fname",label="fn"},
{x=5,y=9,class="checkbox",name="ital",label="i"},
{x=5,y=10,class="checkbox",name="bold",label="b"},
{x=5,y=11,class="checkbox",name="under",label="u"},
{x=5,y=12,class="checkbox",name="stri",label="s"},
{x=5,y=13,class="checkbox",name="wrap",label="q"},
{x=6,y=1,class="checkbox",name="bee",label="be"},
{x=6,y=2,class="checkbox",name="color1",label="c, 1c"},
{x=6,y=3,class="checkbox",name="color2",label="2c"},
{x=6,y=4,class="checkbox",name="color3",label="3c"},
{x=6,y=5,class="checkbox",name="color4",label="4c"},
{x=6,y=6,class="checkbox",name="alpha",label="alpha"},
{x=6,y=7,class="checkbox",name="alfa1",label="1a"},
{x=6,y=8,class="checkbox",name="alfa2",label="2a"},
{x=6,y=9,class="checkbox",name="alfa3",label="3a"},
{x=6,y=10,class="checkbox",name="alfa4",label="4a"},
{x=6,y=11,class="checkbox",name="align",label="a"},
{x=6,y=12,class="checkbox",name="anna",label="an"},
{x=6,y=13,class="checkbox",name="clip",label="(i)clip"},
{x=7,y=2,class="checkbox",name="fade",label="fad"},
{x=7,y=3,class="checkbox",name="posi",label="pos"},
{x=7,y=4,class="checkbox",name="move",label="move"},
{x=7,y=5,class="checkbox",name="org",label="org"},
{x=7,y=6,class="checkbox",name="frz",label="frz"},
{x=7,y=7,class="checkbox",name="frx",label="frx"},
{x=7,y=8,class="checkbox",name="fry",label="fry"},
{x=7,y=9,class="checkbox",name="fax",label="fax"},
{x=7,y=10,class="checkbox",name="fay",label="fay"},
{x=7,y=11,width=2,class="checkbox",name="kara",label="k/kf/ko"},
{x=7,y=12,class="checkbox",name="return",label="r"},
{x=7,y=13,class="checkbox",name="trans",label="t"},
{x=8,y=12,height=2,class="checkbox",name="hidline",label="hide\ninline",hint='Hide ALL inline tags'},
}
P,res=ADD(GUI,
{"Run selected","Comments","Tags","Dial 5","Clean Tags","^ Kill Tags","Hide Tags","Cancer"},{ok='Run selected',cancel='Cancer'})
if P=="Cancer" then ak() end
if P=="^ Kill Tags" then killemall(subs,sel) end
if P=="Hide Tags" then hide_tags(subs,sel) end
if P=="Comments" then res.nocom=true cleanlines(subs,sel) end
if P=="Tags" then res.notag=true cleanlines(subs,sel) end
if P=="Dial 5" then res.layers=true cleanlines(subs,sel) end
if P=="Clean Tags" then res.cleantag=true cleanlines(subs,sel) end
if P=="Run selected" then
C=0 for key,v in ipairs(GUI) do if v.x<=3 and res[v.name] then C=1 end end
if C==0 then t_error("Run Selected: Error - nothing selected",1) end
if res.all then
for key,v in ipairs(GUI) do if v.x>0 and v.name then res[v.name]=false end end
cleanlines(subs,sel)
sel=noemptycom(subs,sel)
else cleanlines(subs,sel)
if res.nocomline and res.noempty then sel=noemptycom(subs,sel)
else
if res.nocomline then sel=nocom_line(subs,sel) end
if res.noempty then sel=noempty(subs,sel) end
end
table.sort(sel)
if res.nostyle or res.nostyle2 then sel=nostyle(subs,sel) end
end
end
if act>#subs then act=#subs end
return sel,act
end
if haveDepCtrl then depRec:registerMacro(cleanup) else aegisub.register_macro(script_name,script_description,cleanup) end

View File

@ -1,55 +0,0 @@
local tr = aegisub.gettext
script_name = tr"Nihongo wa muzukashii"
script_description = tr"Turn your \"o e\"s into \"wo he\"s"
script_author = "amoethyst"
script_version = "1.0"
function wohe(subs, sel)
-- "Unfortunately Lua patterns do not support this, only single characters can be repeated or chosen between, not sub-patterns or strings"
-- well, fuck
local exprs = {
"^(.* {[^}]*})([oe])({[^}]*} .*)$",
"^(.* )([oe])({[^}]*} .*)$",
"^(.* {[^}]*})([oe])( .*)$",
"^(.* )([oe])( .*)$",
"^()([oe])( .*)$",
}
for _, i in ipairs(sel) do
line = subs[i]
line.text = line.text .. " "
for _, expr in ipairs(exprs) do
local before, o_or_e, after = line.text:match(expr)
while o_or_e ~= nil do
line.text = ""
if before ~= nil then
line.text = before
end
if o_or_e == "o" then
line.text = line.text .. "wo"
else
line.text = line.text .. "he"
end
if after ~= nil then
line.text = line.text .. after
end
before, o_or_e, after = line.text:match(expr)
end
end
line.text = line.text:gsub(" $", "")
subs[i] = line
end
end
aegisub.register_macro(script_name, script_description, wohe)

View File

@ -1,14 +0,0 @@
# Copy files to build directory for testing purposes
lua_files = files(
'argcheck.moon',
'clipboard.lua',
'ffi.moon',
'lfs.moon',
're.moon',
'unicode.moon',
'util.moon',
)
foreach f: lua_files
configure_file(input: f, output: '@PLAINNAME@', copy: true)
endforeach

View File

@ -39,7 +39,7 @@ search = (re, str, start) ->
res = regex.search re, str, str\len(), start
return unless res != nil
first, last = res[0], res[1]
ffi.gc(res, ffi.C.free)
ffi.C.free res
first, last
replace = (re, replacement, str, max_count) ->

View File

@ -23,10 +23,10 @@ OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
]]
cleantags_version = "1.302"
cleantags_modified = "12 October 2023"
cleantags_version = "1.301"
cleantags_modified = "13 November 2009"
ktag = "\\[kK][fo]?[%d.]+"
ktag = "\\[kK][fo]?%d+"
--[[ The main function that performs the cleaning up
Takes: text

View File

@ -1,20 +0,0 @@
# Copy files to build directory for testing purposes
lua_files = files(
'cleantags.lua',
'clipboard.lua',
'karaskel-auto4.lua',
'karaskel.lua',
'lfs.lua',
'moonscript.lua',
're.lua',
'unicode.lua',
'unicode-monkeypatch.lua',
'utils-auto4.lua',
'utils.lua',
)
foreach f: lua_files
configure_file(input: f, output: '@PLAINNAME@', copy: true)
endforeach
subdir('aegisub')

View File

@ -1,133 +0,0 @@
local ffi = require("ffi")
if ffi.os ~= "Windows" then
return
end
-- Safety first!
do
if pcall(string.dump, io.open) then
error("io.open is already patched!")
end
local function index(t, k)
return t[k]
end
if pcall(index, ffi.C, "GetACP") == false then
ffi.cdef[[
uint32_t __stdcall GetACP();
]]
end
end
local CP_UTF8 = 65001
local MB_ERR_INVALID_CHARS = 8
if ffi.C.GetACP() == CP_UTF8 then
-- "Use Unicode UTF-8 for worldwide language support" is ticked.
-- Don't bother patching it.
return
end
ffi.cdef[[
int32_t __stdcall MultiByteToWideChar(
uint32_t CodePage,
uint32_t dwFlags,
const char *lpMultiByteStr,
int32_t cbMultiByte,
wchar_t *lpWideCharStr,
int32_t cchWideChar
);
void *_wfreopen(wchar_t *path, wchar_t *mode, void *file);
int32_t _wrename(wchar_t *oldname, wchar_t *newname);
int32_t _wremove(wchar_t *path);
int32_t _wsystem(wchar_t *command);
char *strerror(int errnum);
]]
local function widen(ch)
local size = ffi.C.MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, ch, #ch, nil, 0)
if size == 0 then
error(fname .. ": invalid character sequence")
end
local buf = ffi.new("wchar_t[?]", size + 1)
if ffi.C.MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, ch, #ch, buf, size) == 0 then
error(fname .. ": char conversion error")
end
return buf
end
local function fileresult(stat, fname)
if stat == 0 then
return true
end
local errno = ffi.errno()
local msg = ffi.C.strerror(errno)
if fname then
return nil, fname .. ": " .. ffi.string(msg), errno
end
return nil, msg, errno
end
local function execresult(stat)
if stat == -1 then
return fileresult(0, nil)
end
if stat == 0 then
return true, "exit", stat
end
return nil, "exit", stat
end
local orig_open = io.open
local orig_rename = os.rename
local orig_remove = os.remove
local orig_execute = os.execute
function io.open(fname, mode)
local wfname = widen(fname)
if not mode then
mode = "r"
end
local wmode = widen(mode)
local file = assert(orig_open("nul", "rb"))
if ffi.C._wfreopen(wfname, wmode, file) == nil then
local msg, errno = select(2, file:close())
return nil, fname .. ": " .. tostring(msg), errno
end
return file
end
function os.rename(oldname, newname)
local woldname = widen(oldname)
local wnewname = widen(newname)
local stat = ffi.C._wrename(woldname, wnewname)
return fileresult(stat, oldname)
end
function os.remove(fname)
local wfname = widen(fname)
local stat = ffi.C._wremove(wfname)
return fileresult(stat, fname)
end
function os.execute(command)
local wcommand = command
if command then
wcommand = widen(command)
local stat = ffi.C._wsystem(wcommand)
return execresult(stat)
end
return true
end

View File

@ -1,56 +0,0 @@
subdir('include')
subdir('vapoursynth')
automation_dir = dataroot / 'automation'
install_data(
'autoload/clean-k-tags.lua',
'autoload/cleantags-autoload.lua',
'autoload/driftfix.lua',
'autoload/duetto-meika.lua',
'autoload/karaoke-adjust-1sec.lua',
'autoload/karaoke-auto-leadin.lua',
'autoload/karaoke-split.lua',
'autoload/kara-templater.lua',
'autoload/kf.lua',
'autoload/macro-1-edgeblur.lua',
'autoload/macro-2-mkfullwitdh.lua',
'autoload/select-overlaps.moon',
'autoload/strip-tags.lua',
'autoload/unkf.lua',
'autoload/wohe.lua',
install_dir: automation_dir / 'autoload')
install_data(
'demos/future-windy-blur.lua',
'demos/raytracer.lua',
'demos/raytracer-test1.ass',
install_dir: automation_dir / 'demos')
install_data(
'include/cleantags.lua',
'include/clipboard.lua',
'include/karaskel-auto4.lua',
'include/karaskel.lua',
'include/lfs.lua',
'include/moonscript.lua',
'include/re.lua',
'include/unicode.lua',
'include/unicode-monkeypatch.lua',
'include/utils-auto4.lua',
'include/utils.lua',
install_dir: automation_dir / 'include')
install_data(
'include/aegisub/argcheck.moon',
'include/aegisub/clipboard.lua',
'include/aegisub/ffi.moon',
'include/aegisub/lfs.moon',
'include/aegisub/re.moon',
'include/aegisub/unicode.moon',
'include/aegisub/util.moon',
install_dir: automation_dir / 'include' / 'aegisub')
install_data(
'vapoursynth/aegisub_vs.py',
install_dir: automation_dir / 'vapoursynth')

View File

@ -1,93 +0,0 @@
Video Frame functions in Automation 4
This file describes the interface used for reading frames from loaded videos.
---
Get a specific frame from the currently loaded video on which multiple other
functions are defined.
function aegisub.get_frame(frame_number, withSubtitles)
@frame_number (number)
Number of frame to retrieve.
@withSubtitles (boolean)
Optional. Whether to load with subtitles drawn on to the frame.
Returns: frame (userdata)
The frame object defines multiple other functions. See below.
---
Get width of frame object.
function frame:width()
Returns: number
Width in pixels.
---
Get height of frame object.
function frame:height()
Returns: number
Height in pixels.
---
Get RGB pixel value at a certain position of frame object.
function frame:getPixel(x, y)
@x (number)
Pixel to retrieve on the x-axis
@y (number)
Pixel to retrieve on the y-axis
Returns: 3 values, all numbers
1. R value of the pixel
2. G value of the pixel
3. B value of the pixel
---
Get ASS formated pixel value at a certain position of frame object.
function frame:getPixelFormatted(x, y)
@x (number)
Pixel to retrieve on the x-axis
@y (number)
Pixel to retrieve on the y-axis
Returns: string
String in ASS format representing the pixel value. e.g. "&H0073FF&"
---
Get raw BGRA (alpha being irrelevant) data of frame object, whose pixel values
can then be accessed via LuaJIT's FFI.
The frame data is valid until the frame object is garbage-collected.
Example usage (which does not account for flipped frames for simplicity)
data, pitch = frame:data()
buf = require("ffi").cast("unsigned char *", data)
-- Get the R value of the pixel at coordinates (42, 34)
pix_val = buf[34 * pitch + 4 * 42 + 2]
function frame:data()
Returns: 3 values - a lightuserdata, a number, and a boolean
1. Lightuserdata object which can be cast to "unsigned char *" via ffi.cast, a pointer
to the raw frame data.
2. The pitch of the frame data.
3. Whether the frame is flipped upside-down.
---

View File

@ -1,66 +0,0 @@
Automation 4 Gui Functions
This document describes the available Automation 4 functions for
controlling the editor's graphical interface. These all reside in the
table aegisub.gui .
---
Getting and setting the selection and cursor in the text edit box
This set of functions controls the selection in the text edit box.
All indices are counted starting from 1, following Lua conventions.
The setter functions are applied after all subtitle changes have been
applied. Only the latest update is applied.
The getter functions return the state after the latest update by
the setter functions, or the original state if there were none.
function aegisub.gui.get_cursor()
Returns: 1 number
1. The position of the cursor in the text edit field.
---
function aegisub.gui.get_selection()
Returns: 2 values, all numbers.
1. Starting position of the selection.
2. Ending position of the selection, always larger or equal
than the stating position.
---
function aegisub.gui.set_cursor(position)
@position (number)
The new position of the cursor.
Returns: 0 values
---
function aegisub.gui.set_selection(start, end)
@start (number)
The new start of the selection.
@end (number)
The new end of the selection, i.e. where the cursor will be.
Can be smaller than the start, in which case the cursor will
be on the left side of the selection.
Returns: 0 values
---
Determining whether there are unsaved changes
function aegisub.gui.is_modified()
Returns: 1 boolean
1. Whether the current file has unsaved changes.
---

View File

@ -1,325 +0,0 @@
"""
Utility functions for loading video files into Aegisub using the VapourSynth
video provider.
When encountering a file whose file extension is not .py or .vpy, the
VapourSynth audio and video providers will execute the respective default
script set in Aegisub's configuration, with the following string variables set:
- filename: The path to the file that's being opened.
- __aegi_data, __aegi_dictionary, __aegi_local, __aegi_script, __aegi_temp, __aegi_user:
The values of ?data, ?dictionary, etc. respectively.
- __aegi_vscache: The path to a directory where the VapourSynth script can
store cache files. This directory is cleaned by Aegisub when it gets too
large (as defined by Aegisub's configuration).
The provider reads the video from the script's 0-th output node. By default,
the video is assumed to be CFR. The script can pass further information to
Aegisub using the following variables:
- __aegi_timecodes: List[int] | str: The timecodes for the video, or the
path to a timecodes file.
- __aegi_keyframes: List[int] | str: List of frame numbers to load as
keyframes, or the path to a keyframes file.
- __aegi_hasaudio: int: If nonzero, Aegisub will try to load an audio track
from the same file.
The script can control the progress dialog shown by Aegisub with certain log
messages. Check the functions defined below for more information.
This module provides some utility functions to obtain timecodes, keyframes, and
other data.
"""
import os
import os.path
import re
from enum import Enum
from collections import deque
from typing import Any, Dict, List, Tuple, Callable
import vapoursynth as vs
core = vs.core
aegi_vscache: str = ""
aegi_vsplugins: str = ""
plugin_extension = ".dll" if os.name == "nt" else ".so"
def progress_set_message(message: str):
"""
Sets the message of Aegisub's progress dialog.
"""
vs.core.log_message(vs.MESSAGE_TYPE_DEBUG, f"__aegi_set_message,{message}")
def progress_set_progress(percent: float):
"""
Sets the progress shown in Aegisub's progress dialog to
the given percentage.
"""
vs.core.log_message(vs.MESSAGE_TYPE_DEBUG, f"__aegi_set_progress,{percent}")
def progress_set_indeterminate():
"""
Sets Aegisub's progress dialog to show indeterminate progress.
"""
vs.core.log_message(vs.MESSAGE_TYPE_DEBUG, f"__aegi_set_indeterminate,")
def set_paths(vars: dict):
"""
Initialize the wrapper library with the given configuration directories.
Should usually be called at the start of the default script as
set_paths(globals())
"""
global aegi_vscache
global aegi_vsplugins
aegi_vscache = vars["__aegi_vscache"]
aegi_vsplugins = vars["__aegi_vsplugins"]
def ensure_plugin(name: str, loadname: str, errormsg: str):
"""
Ensures that the VapourSynth plugin with the given name exists.
If it doesn't, it tries to load it from `loadname`.
If that fails, it raises an error with the given error message.
"""
if hasattr(core, name):
return
if aegi_vsplugins and loadname:
try:
core.std.LoadPlugin(os.path.join(aegi_vsplugins, loadname + plugin_extension))
if hasattr(core, name):
return
except vs.Error:
pass
raise vs.Error(errormsg)
def make_lwi_cache_filename(filename: str) -> str:
"""
Given a path to a video, will return a file name like the one LWLibavSource
would use for a .lwi file.
"""
max_len = 254
extension = ".lwi"
if len(filename) + len(extension) > max_len:
filename = filename[-(max_len + len(extension)):]
return "".join(("_" if c in "/\\:" else c) for c in filename) + extension
def make_keyframes_filename(filename: str) -> str:
"""
Given a path `path/to/file.mkv`, will return the path
`path/to/file_keyframes.txt`.
"""
extlen = filename[::-1].find(".") + 1
return filename[:len(filename) - extlen] + "_keyframes.txt"
lwindex_re1 = re.compile(r"Index=(?P<Index>-?[0-9]+),POS=(?P<POS>-?[0-9]+),PTS=(?P<PTS>-?[0-9]+),DTS=(?P<DTS>-?[0-9]+),EDI=(?P<EDI>-?[0-9]+)")
lwindex_re2 = re.compile(r"Key=(?P<Key>-?[0-9]+),Pic=(?P<Pic>-?[0-9]+),POC=(?P<POC>-?[0-9]+),Repeat=(?P<Repeat>-?[0-9]+),Field=(?P<Field>-?[0-9]+)")
streaminfo_re = re.compile(r"Codec=(?P<Codec>[0-9]+),TimeBase=(?P<TimeBase>[0-9\/]+),Width=(?P<Width>[0-9]+),Height=(?P<Height>[0-9]+),Format=(?P<Format>[0-9a-zA-Z]+),ColorSpace=(?P<ColorSpace>[0-9]+)")
videoindex_re = re.compile(r"<ActiveVideoStreamIndex>(?P<VideoStreamIndex>[0-9+]+)</ActiveVideoStreamIndex>")
class LWIndexFrame:
pts: int
key: int
index: int
def __init__(self, raw: list[str]):
match1 = lwindex_re1.match(raw[0])
match2 = lwindex_re2.match(raw[1])
if not match1 or not match2:
raise ValueError("Invalid lwindex format")
self.index = int(match1.group("Index"))
self.pts = int(match1.group("PTS"))
self.key = int(match2.group("Key"))
def __int__(self) -> int:
return self.pts
def info_from_lwindex(indexfile: str) -> Dict[str, List[int]]:
"""
Given a path to an .lwi file, will return a dictionary containing
information about the video, with the keys
- timcodes: The timecodes.
- keyframes: Array of frame numbers of keyframes.
"""
with open(indexfile, encoding="latin1") as f:
index = f.read().splitlines()
videoindex_str = next(l for l in index if l.startswith("<ActiveVideoStreamIndex>"))
videoindex_match = videoindex_re.match(videoindex_str)
if not videoindex_match:
raise ValueError("Invalid lwindex format: Invalid ActiveVideoStreamIndex line")
videoindex = int(videoindex_match.group("VideoStreamIndex"))
# The picture list starts after the last </StreamInfo> tag
indexstart, indexend = (len(index) - index[::-1].index("</StreamInfo>")), index.index("</LibavReaderIndex>")
frames = [LWIndexFrame(index[i:i+2]) for i in range(indexstart, indexend, 2)]
frames = [f for f in frames if f.index == videoindex] # select the first stream
frames.sort(key=int)
streaminfo = streaminfo_re.match(index[index.index(f"<StreamInfo={videoindex},0>") + 1]) # info of first stream
if not streaminfo:
raise ValueError("Invalid lwindex format")
timebase_num, timebase_den = [int(i) for i in streaminfo.group("TimeBase").split("/")]
return {
"timecodes": [(f.pts * 1000 * timebase_num) // timebase_den for f in frames],
"keyframes": [i for i, f in enumerate(frames) if f.key],
}
def wrap_lwlibavsource(filename: str, cachedir: str | None = None, **kwargs: Any) -> Tuple[vs.VideoNode, Dict[str, List[int]]]:
"""
Given a path to a video file and a directory to store index files in
(usually __aegi_vscache), will open the video with LWLibavSource and read
the generated .lwi file to obtain the timecodes and keyframes.
Additional keyword arguments are passed on to LWLibavSource.
"""
if cachedir is None:
cachedir = aegi_vscache
os.makedirs(cachedir, exist_ok=True)
cachefile = os.path.join(cachedir, make_lwi_cache_filename(filename))
progress_set_message("Loading video file")
progress_set_indeterminate()
ensure_plugin("lsmas", "libvslsmashsource", "To use Aegisub's LWLibavSource wrapper, the `lsmas` plugin for VapourSynth must be installed")
if b"-Dcachedir" not in core.lsmas.Version()["config"]: # type: ignore
raise vs.Error("To use Aegisub's LWLibavSource wrapper, the `lsmas` plugin must support the `cachedir` option for LWLibavSource.")
clip = core.lsmas.LWLibavSource(source=filename, cachefile=cachefile, **kwargs)
progress_set_message("Getting timecodes and keyframes from the index file")
return clip, info_from_lwindex(cachefile)
def make_keyframes(clip: vs.VideoNode, use_scxvid: bool = False,
resize_h: int = 360, resize_format: int = vs.GRAY8,
**kwargs: Any) -> List[int]:
"""
Generates a list of keyframes from a clip, using either WWXD or Scxvid.
:param clip: Clip to process.
:param use_scxvid: Whether to use Scxvid. If False, the function uses WWXD.
:param resize_h: Height to resize the clip to before processing.
:param resize_format: Format to convert the clip to before processing.
The remaining keyword arguments are passed on to the respective filter.
"""
progress_set_message("Generating keyframes")
progress_set_progress(1)
clip = core.resize.Bilinear(clip, width=resize_h * clip.width // clip.height, height=resize_h, format=resize_format)
if use_scxvid:
ensure_plugin("scxvid", "libscxvid", "To use the keyframe generation, the scxvid plugin for VapourSynth must be installed")
clip = core.scxvid.Scxvid(clip, **kwargs)
else:
ensure_plugin("wwxd", "libwwxd64", "To use the keyframe generation, the wwxdplugin for VapourSynth must be installed")
clip = core.wwxd.WWXD(clip, **kwargs)
keyframes = {}
done = 0
def _cb(n: int, f: vs.VideoFrame) -> vs.VideoFrame:
nonlocal done
keyframes[n] = f.props._SceneChangePrev if use_scxvid else f.props.Scenechange # type: ignore
done += 1
if done % max(1, clip.num_frames // 200) == 0:
progress_set_progress(100 * done / clip.num_frames)
return f
deque(clip.std.ModifyFrame(clip, _cb).frames(close=True), 0)
progress_set_progress(100)
return [n for n in range(clip.num_frames) if keyframes[n]]
def save_keyframes(filename: str, keyframes: List[int]):
"""
Saves a list of keyframes in Aegisub's keyframe format v1 to a file with
the given filename.
"""
with open(filename, "w") as f:
f.write("# keyframe format v1\n")
f.write("fps 0\n")
f.write("".join(f"{n}\n" for n in keyframes))
class GenKeyframesMode(Enum):
NEVER = 0
ALWAYS = 1
ASK = 2
def ask_gen_keyframes(_: str) -> bool:
from tkinter.messagebox import askyesno
progress_set_message("Asking whether to generate keyframes")
progress_set_indeterminate()
result = askyesno("Generate Keyframes", \
"No keyframes file was found for this video file.\nShould Aegisub detect keyframes from the video?\nThis will take a while.", default="no")
progress_set_message("")
return result
def get_keyframes(filename: str, clip: vs.VideoNode, fallback: str | List[int],
generate: GenKeyframesMode = GenKeyframesMode.ASK,
ask_callback: Callable = ask_gen_keyframes, **kwargs: Any) -> str | List[int]:
"""
Looks for a keyframes file for the given filename.
If no file was found, this function can generate a keyframe file for the given clip next
to the given filename using WWXD or Scxvid (see the make_keyframes docstring).
Whether or not keyframes are generated depends on the `generate` argument.
Depending on the `generate` argument, the function will
- always generate keyframes when no file was found
- never generate keyframes when no file was found
(and return the fallback keyframes instead)
- show a dialog to ask the user whether keyframes should be
generated or not
Additional keyword arguments are passed on to make_keyframes.
"""
progress_set_message("Looking for keyframes")
progress_set_indeterminate()
kffilename = make_keyframes_filename(filename)
if not os.path.exists(kffilename):
if generate == GenKeyframesMode.NEVER:
return fallback
if generate == GenKeyframesMode.ASK and not ask_callback(filename):
return fallback
keyframes = make_keyframes(clip, **kwargs)
save_keyframes(kffilename, keyframes)
return kffilename
def check_audio(filename: str, **kwargs: Any) -> bool:
"""
Checks whether the given file has an audio track by trying to open it with
BestSource. Requires the `bs` plugin to return correct results, but
won't crash if it's not installed.
Additional keyword arguments are passed on to BestSource.
"""
progress_set_message("Checking if the file has an audio track")
progress_set_indeterminate()
try:
ensure_plugin("bs", "BestSource", "")
vs.core.bs.AudioSource(source=filename, **kwargs)
return True
except AttributeError:
pass
except vs.Error:
pass
return False

View File

@ -1,8 +0,0 @@
# Copy files to build directory for testing purposes
vs_files = files(
'aegisub_vs.py',
)
foreach f: vs_files
configure_file(input: f, output: '@PLAINNAME@', copy: true)
endforeach

View File

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (c) 2011 Niels Martin Hansen
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the Aegisub Group nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Aegisub Project http://www.aegisub.org/
-->
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Build credit text -->
<ItemDefinitionGroup Condition="'$(AegisubBuildCredit)'==''">
<ClCompile>
<PreprocessorDefinitions>BUILD_CREDIT="$(AegisubBuildCredit)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- Update checker -->
<ItemDefinitionGroup Condition="'$(AegisubUseUpdateChecker)'=='true'">
<ClCompile>
<PreprocessorDefinitions>
WITH_UPDATE_CHECKER;
UPDATE_CHECKER_SERVER="$(UpdateCheckerServer)";
UPDATE_CHECKER_BASE_URL="$(UpdateCheckerURL)";
%(PreprocessorDefinitions)
</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- Hunspell support -->
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>WITH_HUNSPELL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(AegisubContribBase)hunspell\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<!-- CSRI helper library support -->
<ItemDefinitionGroup Condition="'$(AegisubUseCsri)'=='HelperLibrary'">
<ClCompile>
<PreprocessorDefinitions>WITH_CSRI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- CSRI external library support -->
<ItemDefinitionGroup Condition="'$(AegisubUseCsri)'=='External'">
<ClCompile>
<PreprocessorDefinitions>WITH_CSRI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>$(CsriLibraryPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>$(CsriLibraryName);%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<!-- FFmpegSource support -->
<ItemDefinitionGroup Condition="'$(AegisubUseFfms)'=='true'">
<ClCompile>
<PreprocessorDefinitions>WITH_FFMS2;FFMS_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- Avisynth support -->
<ItemDefinitionGroup Condition="'$(AegisubUseAvisynth)'=='true'">
<ClCompile>
<PreprocessorDefinitions>WITH_AVISYNTH;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- FFTW support -->
<ItemDefinitionGroup Condition="'$(AegisubUseFftw)'=='true'">
<ClCompile>
<PreprocessorDefinitions>WITH_FFTW3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- OpenAL support -->
<ItemDefinitionGroup Condition="'$(AegisubUseOpenAl)'=='true'">
<ClCompile>
<PreprocessorDefinitions>WITH_OPENAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- DirectSound support -->
<ItemDefinitionGroup Condition="'$(AegisubUseDSound)'=='true'">
<ClCompile>
<PreprocessorDefinitions>WITH_DIRECTSOUND;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>dsound.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<!-- Special builds -->
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions Condition="'$(StartupLog)'=='true'">WITH_STARTUPLOG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- General configuration, always required libraries -->
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>
NOMINMAX;
_WIN32_WINNT=0x0602;
%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<AdditionalIncludeDirectories>
$(SrcDir)include\;
$(AegisubSourceBase)libaegisub\include;
$(AegisubSourceBase)build;
$(AegisubSourceBase)include;
$(AegisubSourceBase)src;
%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>$(AegisubLibraryDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<!-- Add property pages -->
<ItemGroup>
<PropertyPageSchema Include="$(MSBuildThisFileDirectory)Aegisub.xml" />
<ProjectTools Include="AegisubConfig" />
</ItemGroup>
<!-- Compile translations if msgfmt is available -->
<Target Name="Translations"
AfterTargets="ClCompile"
Condition="'$(MsgFmtPath)'!=''"
Inputs="@(MsgFmt)"
Outputs="$(AegisubBinaryDir)locale\%(Filename)\aegisub.mo"
>
<Error Condition="!Exists($(MsgFmtPath))" Text="$(MsgFmtPath) not found" />
<MakeDir Directories="$(AegisubBinaryDir)locale\%(MsgFmt.Filename)" />
<Exec Command="$(MsgFmtPath) -o $(AegisubBinaryDir)locale\%(MsgFmt.Filename)\aegisub.mo %(MsgFmt.Identity)" />
</Target>
</Project>

View File

@ -0,0 +1,441 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- VC boilerplate -->
<PropertyGroup Label="Globals">
<ProjectGuid>{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}</ProjectGuid>
<RootNamespace>Aegisub</RootNamespace>
</PropertyGroup>
<!-- Aegisub project configuration -->
<PropertyGroup Label="AegisubConfiguration">
<AegisubProjectType>exe</AegisubProjectType>
<SrcDir>..\..\src\</SrcDir>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<PropertyGroup>
<TargetName>aegisub$(AegisubPlatformSuffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>agi_pre.h</PrecompiledHeaderFile>
<ForcedIncludeFiles>agi_pre.h</ForcedIncludeFiles>
<AdditionalOptions>/Zm150 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalLibraryDirectories Condition="'$(Platform)'=='Win32'">$(DXSDK_DIR)\Lib\x86</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories Condition="'$(Platform)'=='x64'">$(DXSDK_DIR)\Lib\x64</AdditionalLibraryDirectories>
<AdditionalDependencies>libssl.lib;libcrypto.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<!-- Update git_version.h -->
<Target Name="UpdateVersion" BeforeTargets="ClCompile">
<GitVersion Root="$(AegisubSourceBase)" />
</Target>
<!-- Project References -->
<ItemGroup>
<ProjectReference Include="..\boost\boost.vcxproj">
<Project>{a649d828-a399-4d81-adef-94cfdba7847f}</Project>
</ProjectReference>
<ProjectReference Include="..\csrihelper\csrihelper.vcxproj">
<Project>{c832eaf3-860d-4373-a02c-933626b47a5e}</Project>
</ProjectReference>
<ProjectReference Include="..\ffms2\ffms2.vcxproj" Condition="Exists('$(FfmsSrcDir)')">
<Project>{aa137613-96a1-4388-8905-71345b4f8f87}</Project>
</ProjectReference>
<ProjectReference Include="..\fftw\fftw.vcxproj" Condition="Exists('$(FftwSrcDir)')">
<Project>{ea3dcc95-2423-4ea0-a508-7a427b4c0594}</Project>
</ProjectReference>
<ProjectReference Include="..\freetype2\freetype.vcxproj" Condition="Exists('$(Freetype2SrcDir)')">
<Project>{78b079bd-9fc7-4b9e-b4a6-96da0f00248b}</Project>
</ProjectReference>
<ProjectReference Include="..\fribidi\fribidi.vcxproj">
<Project>{fb8e8d19-a4d6-4181-943c-282075f49b41}</Project>
</ProjectReference>
<ProjectReference Include="..\hunspell\hunspell.vcxproj">
<Project>{cc791693-6b28-40ac-879d-64a6c16468e3}</Project>
</ProjectReference>
<ProjectReference Include="..\icu\icu.vcxproj">
<Project>{f934ab7b-186b-4e96-b20c-a58c38c1b818}</Project>
</ProjectReference>
<ProjectReference Include="..\libaegisub\libaegisub.vcxproj">
<Project>{bb3fed86-db7a-4dc7-964a-260fb86cde61}</Project>
</ProjectReference>
<ProjectReference Include="..\libass\libass.vcxproj" Condition="Exists('$(LibassSrcDir)')">
<Project>{8804f253-da67-4cc4-926b-0cd2aee5778d}</Project>
</ProjectReference>
<ProjectReference Include="..\libiconv\libiconv.vcxproj">
<Project>{965054d2-44f2-4eb2-9879-051cc3d7ef08}</Project>
</ProjectReference>
<ProjectReference Include="..\libresrc\libresrc.vcxproj">
<Project>{bd00d65f-24da-4784-8860-3b972ea125fc}</Project>
</ProjectReference>
<ProjectReference Include="..\luabins\luabins.vcxproj">
<Project>{A7A30702-8162-4E1A-A010-EF51B590C121}</Project>
</ProjectReference>
<ProjectReference Include="..\luajit\luajit.vcxproj">
<Project>{5391a8b1-9c70-4dc4-92ad-d3e34c6b803f}</Project>
</ProjectReference>
<ProjectReference Include="..\universalchardet\universalchardet.vcxproj">
<Project>{7b56955d-5162-4698-aa5b-47484edc8783}</Project>
</ProjectReference>
<ProjectReference Include="..\wx\wxWidgets.vcxproj">
<Project>{0518d6c0-7bf6-4fd1-91fb-191bd10db2ac}</Project>
</ProjectReference>
<ProjectReference Include="..\zlib\zlib.vcxproj">
<Project>{10f22a5a-dd9e-44a1-ba2e-2a9a7c78b0ee}</Project>
</ProjectReference>
<ProjectReference Include="..\expat\expat.vcxproj">
<Project>{d6ba6815-0aac-48fa-8372-d32cde8bf07a}</Project>
</ProjectReference>
<ProjectReference Include="..\libpng\libpng.vcxproj">
<Project>{5cabcbef-e79a-4d27-94a5-cf4eaaf1dd96}</Project>
</ProjectReference>
<ProjectReference Include="..\scintilla\scintilla.vcxproj">
<Project>{d6ea54fd-f15c-42f6-929b-a83f299a4582}</Project>
</ProjectReference>
</ItemGroup>
<!-- Source files -->
<ItemGroup>
<ClInclude Include="$(SrcDir)MatroskaParser.h" />
<ClInclude Include="$(SrcDir)aegisublocale.h" />
<ClInclude Include="$(SrcDir)agi_pre.h" />
<ClInclude Include="$(SrcDir)ass_attachment.h" />
<ClInclude Include="$(SrcDir)ass_dialogue.h" />
<ClInclude Include="$(SrcDir)ass_entry.h" />
<ClInclude Include="$(SrcDir)ass_export_filter.h" />
<ClInclude Include="$(SrcDir)ass_exporter.h" />
<ClInclude Include="$(SrcDir)ass_file.h" />
<ClInclude Include="$(SrcDir)ass_info.h" />
<ClInclude Include="$(SrcDir)ass_karaoke.h" />
<ClInclude Include="$(SrcDir)ass_override.h" />
<ClInclude Include="$(SrcDir)ass_parser.h" />
<ClInclude Include="$(SrcDir)ass_style.h" />
<ClInclude Include="$(SrcDir)ass_style_storage.h" />
<ClInclude Include="$(SrcDir)audio_box.h" />
<ClInclude Include="$(SrcDir)audio_colorscheme.h" />
<ClInclude Include="$(SrcDir)audio_controller.h" />
<ClInclude Include="$(SrcDir)audio_display.h" />
<ClInclude Include="$(SrcDir)audio_karaoke.h" />
<ClInclude Include="$(SrcDir)audio_marker.h" />
<ClInclude Include="$(SrcDir)audio_player_portaudio.h" />
<ClInclude Include="$(SrcDir)audio_provider_factory.h" />
<ClInclude Include="$(SrcDir)audio_renderer.h" />
<ClInclude Include="$(SrcDir)audio_renderer_spectrum.h" />
<ClInclude Include="$(SrcDir)audio_renderer_waveform.h" />
<ClInclude Include="$(SrcDir)audio_timing.h" />
<ClInclude Include="$(SrcDir)auto4_base.h" />
<ClInclude Include="$(SrcDir)auto4_lua.h" />
<ClInclude Include="$(SrcDir)auto4_lua_factory.h" />
<ClInclude Include="$(SrcDir)avisynth.h" />
<ClInclude Include="$(SrcDir)avisynth_wrap.h" />
<ClInclude Include="$(SrcDir)base_grid.h" />
<ClInclude Include="$(SrcDir)block_cache.h" />
<ClInclude Include="$(SrcDir)charset_detect.h" />
<ClInclude Include="$(SrcDir)colorspace.h" />
<ClInclude Include="$(SrcDir)colour_button.h" />
<ClInclude Include="$(SrcDir)command\command.h" />
<ClInclude Include="$(SrcDir)compat.h" />
<ClInclude Include="$(SrcDir)crash_writer.h" />
<ClInclude Include="$(SrcDir)dialog_detached_video.h" />
<ClInclude Include="$(SrcDir)dialog_export_ebu3264.h" />
<ClInclude Include="$(SrcDir)dialog_manager.h" />
<ClInclude Include="$(SrcDir)dialog_progress.h" />
<ClInclude Include="$(SrcDir)dialog_search_replace.h" />
<ClInclude Include="$(SrcDir)dialog_style_editor.h" />
<ClInclude Include="$(SrcDir)dialog_styling_assistant.h" />
<ClInclude Include="$(SrcDir)dialog_translation.h" />
<ClInclude Include="$(SrcDir)dialogs.h" />
<ClInclude Include="$(SrcDir)export_fixstyle.h" />
<ClInclude Include="$(SrcDir)export_framerate.h" />
<ClInclude Include="$(SrcDir)factory_manager.h" />
<ClInclude Include="$(SrcDir)ffmpegsource_common.h" />
<ClInclude Include="$(SrcDir)fft.h" />
<ClInclude Include="$(SrcDir)flyweight_hash.h" />
<ClInclude Include="$(SrcDir)font_file_lister.h" />
<ClInclude Include="$(SrcDir)frame_main.h" />
<ClInclude Include="$(SrcDir)gl_text.h" />
<ClInclude Include="$(SrcDir)gl_wrap.h" />
<ClInclude Include="$(SrcDir)grid_column.h" />
<ClInclude Include="$(SrcDir)help_button.h" />
<ClInclude Include="$(SrcDir)hotkey_data_view_model.h" />
<ClInclude Include="$(SrcDir)include\aegisub\audio_player.h" />
<ClInclude Include="$(SrcDir)include\aegisub\context.h" />
<ClInclude Include="$(SrcDir)include\aegisub\hotkey.h" />
<ClInclude Include="$(SrcDir)include\aegisub\menu.h" />
<ClInclude Include="$(SrcDir)include\aegisub\spellchecker.h" />
<ClInclude Include="$(SrcDir)include\aegisub\subtitles_provider.h" />
<ClInclude Include="$(SrcDir)include\aegisub\toolbar.h" />
<ClInclude Include="$(SrcDir)include\aegisub\video_provider.h" />
<ClInclude Include="$(SrcDir)initial_line_state.h" />
<ClInclude Include="$(SrcDir)main.h" />
<ClInclude Include="$(SrcDir)mkv_wrap.h" />
<ClInclude Include="$(SrcDir)options.h" />
<ClInclude Include="$(SrcDir)pen.h" />
<ClInclude Include="$(SrcDir)persist_location.h" />
<ClInclude Include="$(SrcDir)placeholder_ctrl.h" />
<ClInclude Include="$(SrcDir)preferences.h" />
<ClInclude Include="$(SrcDir)preferences_base.h" />
<ClInclude Include="$(SrcDir)project.h" />
<ClInclude Include="$(SrcDir)resolution_resampler.h" />
<ClInclude Include="$(SrcDir)search_replace_engine.h" />
<ClInclude Include="$(SrcDir)selection_controller.h" />
<ClInclude Include="$(SrcDir)spellchecker_hunspell.h" />
<ClInclude Include="$(SrcDir)spline.h" />
<ClInclude Include="$(SrcDir)spline_curve.h" />
<ClInclude Include="$(SrcDir)string_codec.h" />
<ClInclude Include="$(SrcDir)subs_controller.h" />
<ClInclude Include="$(SrcDir)subs_edit_box.h" />
<ClInclude Include="$(SrcDir)subs_edit_ctrl.h" />
<ClInclude Include="$(SrcDir)subs_preview.h" />
<ClInclude Include="$(SrcDir)subtitle_format.h" />
<ClInclude Include="$(SrcDir)subtitle_format_ass.h" />
<ClInclude Include="$(SrcDir)subtitle_format_ebu3264.h" />
<ClInclude Include="$(SrcDir)subtitle_format_encore.h" />
<ClInclude Include="$(SrcDir)subtitle_format_microdvd.h" />
<ClInclude Include="$(SrcDir)subtitle_format_mkv.h" />
<ClInclude Include="$(SrcDir)subtitle_format_srt.h" />
<ClInclude Include="$(SrcDir)subtitle_format_ssa.h" />
<ClInclude Include="$(SrcDir)subtitle_format_transtation.h" />
<ClInclude Include="$(SrcDir)subtitle_format_ttxt.h" />
<ClInclude Include="$(SrcDir)subtitle_format_txt.h" />
<ClInclude Include="$(SrcDir)subtitles_provider_csri.h" />
<ClInclude Include="$(SrcDir)subtitles_provider_libass.h" />
<ClInclude Include="$(SrcDir)text_file_reader.h" />
<ClInclude Include="$(SrcDir)text_file_writer.h" />
<ClInclude Include="$(SrcDir)text_selection_controller.h" />
<ClInclude Include="$(SrcDir)thesaurus.h" />
<ClInclude Include="$(SrcDir)async_video_provider.h" />
<ClInclude Include="$(SrcDir)time_range.h" />
<ClInclude Include="$(SrcDir)timeedit_ctrl.h" />
<ClInclude Include="$(SrcDir)toggle_bitmap.h" />
<ClInclude Include="$(SrcDir)tooltip_manager.h" />
<ClInclude Include="$(SrcDir)utils.h" />
<ClInclude Include="$(SrcDir)validators.h" />
<ClInclude Include="$(SrcDir)vector2d.h" />
<ClInclude Include="$(SrcDir)version.h" />
<ClInclude Include="$(SrcDir)video_box.h" />
<ClInclude Include="$(SrcDir)video_controller.h" />
<ClInclude Include="$(SrcDir)video_display.h" />
<ClInclude Include="$(SrcDir)video_frame.h" />
<ClInclude Include="$(SrcDir)video_out_gl.h" />
<ClInclude Include="$(SrcDir)video_provider_dummy.h" />
<ClInclude Include="$(SrcDir)video_provider_manager.h" />
<ClInclude Include="$(SrcDir)video_slider.h" />
<ClInclude Include="$(SrcDir)visual_feature.h" />
<ClInclude Include="$(SrcDir)visual_tool.h" />
<ClInclude Include="$(SrcDir)visual_tool_clip.h" />
<ClInclude Include="$(SrcDir)visual_tool_cross.h" />
<ClInclude Include="$(SrcDir)visual_tool_drag.h" />
<ClInclude Include="$(SrcDir)visual_tool_rotatexy.h" />
<ClInclude Include="$(SrcDir)visual_tool_rotatez.h" />
<ClInclude Include="$(SrcDir)visual_tool_scale.h" />
<ClInclude Include="$(SrcDir)visual_tool_vector_clip.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(SrcDir)aegisublocale.cpp" />
<ClCompile Include="$(SrcDir)agi_pre.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="$(SrcDir)MatroskaParser.c">
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<ForcedIncludeFiles></ForcedIncludeFiles>
</ClCompile>
<ClCompile Include="$(SrcDir)ass_attachment.cpp" />
<ClCompile Include="$(SrcDir)ass_dialogue.cpp" />
<ClCompile Include="$(SrcDir)ass_entry.cpp" />
<ClCompile Include="$(SrcDir)ass_export_filter.cpp" />
<ClCompile Include="$(SrcDir)ass_exporter.cpp" />
<ClCompile Include="$(SrcDir)ass_file.cpp" />
<ClCompile Include="$(SrcDir)ass_karaoke.cpp" />
<ClCompile Include="$(SrcDir)ass_override.cpp" />
<ClCompile Include="$(SrcDir)ass_parser.cpp" />
<ClCompile Include="$(SrcDir)ass_style.cpp" />
<ClCompile Include="$(SrcDir)ass_style_storage.cpp" />
<ClCompile Include="$(SrcDir)async_video_provider.cpp" />
<ClCompile Include="$(SrcDir)audio_box.cpp" />
<ClCompile Include="$(SrcDir)audio_colorscheme.cpp" />
<ClCompile Include="$(SrcDir)audio_controller.cpp" />
<ClCompile Include="$(SrcDir)audio_display.cpp" />
<ClCompile Include="$(SrcDir)audio_karaoke.cpp" />
<ClCompile Include="$(SrcDir)audio_marker.cpp" />
<ClCompile Include="$(SrcDir)audio_player.cpp" />
<ClCompile Include="$(SrcDir)audio_player_alsa.cpp" />
<ClCompile Include="$(SrcDir)audio_player_dsound.cpp" />
<ClCompile Include="$(SrcDir)audio_player_dsound2.cpp" />
<ClCompile Include="$(SrcDir)audio_player_openal.cpp" />
<ClCompile Include="$(SrcDir)audio_player_oss.cpp" />
<ClCompile Include="$(SrcDir)audio_player_portaudio.cpp" />
<ClCompile Include="$(SrcDir)audio_player_pulse.cpp" />
<ClCompile Include="$(SrcDir)audio_provider_avs.cpp" />
<ClCompile Include="$(SrcDir)audio_provider_factory.cpp" />
<ClCompile Include="$(SrcDir)audio_provider_ffmpegsource.cpp" />
<ClCompile Include="$(SrcDir)audio_renderer.cpp" />
<ClCompile Include="$(SrcDir)audio_renderer_spectrum.cpp" />
<ClCompile Include="$(SrcDir)audio_renderer_waveform.cpp" />
<ClCompile Include="$(SrcDir)audio_timing_dialogue.cpp" />
<ClCompile Include="$(SrcDir)audio_timing_karaoke.cpp" />
<ClCompile Include="$(SrcDir)auto4_base.cpp" />
<ClCompile Include="$(SrcDir)auto4_lua.cpp" />
<ClCompile Include="$(SrcDir)auto4_lua_assfile.cpp" />
<ClCompile Include="$(SrcDir)auto4_lua_dialog.cpp" />
<ClCompile Include="$(SrcDir)auto4_lua_progresssink.cpp" />
<ClCompile Include="$(SrcDir)avisynth_wrap.cpp" />
<ClCompile Include="$(SrcDir)base_grid.cpp" />
<ClCompile Include="$(SrcDir)charset_detect.cpp" />
<ClCompile Include="$(SrcDir)colorspace.cpp" />
<ClCompile Include="$(SrcDir)colour_button.cpp" />
<ClCompile Include="$(SrcDir)command\app.cpp" />
<ClCompile Include="$(SrcDir)command\audio.cpp" />
<ClCompile Include="$(SrcDir)command\automation.cpp" />
<ClCompile Include="$(SrcDir)command\command.cpp" />
<ClCompile Include="$(SrcDir)command\edit.cpp" />
<ClCompile Include="$(SrcDir)command\grid.cpp" />
<ClCompile Include="$(SrcDir)command\help.cpp" />
<ClCompile Include="$(SrcDir)command\keyframe.cpp" />
<ClCompile Include="$(SrcDir)command\recent.cpp" />
<ClCompile Include="$(SrcDir)command\subtitle.cpp" />
<ClCompile Include="$(SrcDir)command\time.cpp" />
<ClCompile Include="$(SrcDir)command\timecode.cpp" />
<ClCompile Include="$(SrcDir)command\tool.cpp" />
<ClCompile Include="$(SrcDir)command\video.cpp" />
<ClCompile Include="$(SrcDir)command\vis_tool.cpp" />
<ClCompile Include="$(SrcDir)compat.cpp" />
<ClCompile Include="$(SrcDir)context.cpp" />
<ClCompile Include="$(SrcDir)crash_writer.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(SrcDir)crash_writer_minidump.cpp" />
<ClCompile Include="$(SrcDir)dialog_about.cpp" />
<ClCompile Include="$(SrcDir)dialog_attachments.cpp" />
<ClCompile Include="$(SrcDir)dialog_automation.cpp" />
<ClCompile Include="$(SrcDir)dialog_autosave.cpp" />
<ClCompile Include="$(SrcDir)dialog_colorpicker.cpp" />
<ClCompile Include="$(SrcDir)dialog_detached_video.cpp" />
<ClCompile Include="$(SrcDir)dialog_dummy_video.cpp" />
<ClCompile Include="$(SrcDir)dialog_export.cpp" />
<ClCompile Include="$(SrcDir)dialog_export_ebu3264.cpp" />
<ClCompile Include="$(SrcDir)dialog_fonts_collector.cpp" />
<ClCompile Include="$(SrcDir)dialog_jumpto.cpp" />
<ClCompile Include="$(SrcDir)dialog_kara_timing_copy.cpp" />
<ClCompile Include="$(SrcDir)dialog_log.cpp" />
<ClCompile Include="$(SrcDir)dialog_paste_over.cpp" />
<ClCompile Include="$(SrcDir)dialog_progress.cpp" />
<ClCompile Include="$(SrcDir)dialog_properties.cpp" />
<ClCompile Include="$(SrcDir)dialog_resample.cpp" />
<ClCompile Include="$(SrcDir)dialog_search_replace.cpp" />
<ClCompile Include="$(SrcDir)dialog_selected_choices.cpp" />
<ClCompile Include="$(SrcDir)dialog_selection.cpp" />
<ClCompile Include="$(SrcDir)dialog_shift_times.cpp" />
<ClCompile Include="$(SrcDir)dialog_spellchecker.cpp" />
<ClCompile Include="$(SrcDir)dialog_style_editor.cpp" />
<ClCompile Include="$(SrcDir)dialog_style_manager.cpp" />
<ClCompile Include="$(SrcDir)dialog_styling_assistant.cpp" />
<ClCompile Include="$(SrcDir)dialog_text_import.cpp" />
<ClCompile Include="$(SrcDir)dialog_timing_processor.cpp" />
<ClCompile Include="$(SrcDir)dialog_translation.cpp" />
<ClCompile Include="$(SrcDir)dialog_version_check.cpp" />
<ClCompile Include="$(SrcDir)dialog_video_details.cpp" />
<ClCompile Include="$(SrcDir)dialog_video_properties.cpp" />
<ClCompile Include="$(SrcDir)export_fixstyle.cpp" />
<ClCompile Include="$(SrcDir)export_framerate.cpp" />
<ClCompile Include="$(SrcDir)ffmpegsource_common.cpp">
<DisableSpecificWarnings>4345;4307;4800</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="$(SrcDir)fft.cpp" />
<ClCompile Include="$(SrcDir)font_file_lister.cpp" />
<ClCompile Include="$(SrcDir)font_file_lister_gdi.cpp" />
<ClCompile Include="$(SrcDir)frame_main.cpp" />
<ClCompile Include="$(SrcDir)gl_text.cpp" />
<ClCompile Include="$(SrcDir)gl_wrap.cpp" />
<ClCompile Include="$(SrcDir)grid_column.cpp" />
<ClCompile Include="$(SrcDir)help_button.cpp" />
<ClCompile Include="$(SrcDir)hotkey.cpp" />
<ClCompile Include="$(SrcDir)hotkey_data_view_model.cpp" />
<ClCompile Include="$(SrcDir)initial_line_state.cpp" />
<ClCompile Include="$(SrcDir)main.cpp" />
<ClCompile Include="$(SrcDir)menu.cpp" />
<ClCompile Include="$(SrcDir)mkv_wrap.cpp" />
<ClCompile Include="$(SrcDir)pen.cpp" />
<ClCompile Include="$(SrcDir)persist_location.cpp" />
<ClCompile Include="$(SrcDir)preferences.cpp" />
<ClCompile Include="$(SrcDir)preferences_base.cpp" />
<ClCompile Include="$(SrcDir)project.cpp" />
<ClCompile Include="$(SrcDir)resolution_resampler.cpp" />
<ClCompile Include="$(SrcDir)search_replace_engine.cpp" />
<ClCompile Include="$(SrcDir)selection_controller.cpp" />
<ClCompile Include="$(SrcDir)spellchecker.cpp" />
<ClCompile Include="$(SrcDir)spellchecker_hunspell.cpp" />
<ClCompile Include="$(SrcDir)spline.cpp" />
<ClCompile Include="$(SrcDir)spline_curve.cpp" />
<ClCompile Include="$(SrcDir)string_codec.cpp" />
<ClCompile Include="$(SrcDir)subs_controller.cpp" />
<ClCompile Include="$(SrcDir)subs_edit_box.cpp" />
<ClCompile Include="$(SrcDir)subs_edit_ctrl.cpp" />
<ClCompile Include="$(SrcDir)subs_preview.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_ass.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_ebu3264.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_encore.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_microdvd.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_mkv.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_srt.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_ssa.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_transtation.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_ttxt.cpp" />
<ClCompile Include="$(SrcDir)subtitle_format_txt.cpp" />
<ClCompile Include="$(SrcDir)subtitles_provider.cpp" />
<ClCompile Include="$(SrcDir)subtitles_provider_csri.cpp" />
<ClCompile Include="$(SrcDir)subtitles_provider_libass.cpp" />
<ClCompile Include="$(SrcDir)text_file_reader.cpp" />
<ClCompile Include="$(SrcDir)text_file_writer.cpp" />
<ClCompile Include="$(SrcDir)text_selection_controller.cpp" />
<ClCompile Include="$(SrcDir)thesaurus.cpp" />
<ClCompile Include="$(SrcDir)timeedit_ctrl.cpp" />
<ClCompile Include="$(SrcDir)toggle_bitmap.cpp" />
<ClCompile Include="$(SrcDir)toolbar.cpp" />
<ClCompile Include="$(SrcDir)tooltip_manager.cpp" />
<ClCompile Include="$(SrcDir)utils.cpp" />
<ClCompile Include="$(SrcDir)validators.cpp" />
<ClCompile Include="$(SrcDir)vector2d.cpp" />
<ClCompile Include="$(SrcDir)version.cpp" />
<ClCompile Include="$(SrcDir)video_box.cpp" />
<ClCompile Include="$(SrcDir)video_controller.cpp" />
<ClCompile Include="$(SrcDir)video_display.cpp" />
<ClCompile Include="$(SrcDir)video_frame.cpp" />
<ClCompile Include="$(SrcDir)video_out_gl.cpp" />
<ClCompile Include="$(SrcDir)video_provider_avs.cpp" />
<ClCompile Include="$(SrcDir)video_provider_cache.cpp" />
<ClCompile Include="$(SrcDir)video_provider_dummy.cpp" />
<ClCompile Include="$(SrcDir)video_provider_ffmpegsource.cpp" />
<ClCompile Include="$(SrcDir)video_provider_manager.cpp" />
<ClCompile Include="$(SrcDir)video_provider_yuv4mpeg.cpp" />
<ClCompile Include="$(SrcDir)video_slider.cpp" />
<ClCompile Include="$(SrcDir)visual_feature.cpp" />
<ClCompile Include="$(SrcDir)visual_tool.cpp" />
<ClCompile Include="$(SrcDir)visual_tool_clip.cpp" />
<ClCompile Include="$(SrcDir)visual_tool_cross.cpp" />
<ClCompile Include="$(SrcDir)visual_tool_drag.cpp" />
<ClCompile Include="$(SrcDir)visual_tool_rotatexy.cpp" />
<ClCompile Include="$(SrcDir)visual_tool_rotatez.cpp" />
<ClCompile Include="$(SrcDir)visual_tool_scale.cpp" />
<ClCompile Include="$(SrcDir)visual_tool_vector_clip.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(SrcDir)res\res.rc" />
<ResourceCompile Include="$(SrcDir)res\strings.rc" />
</ItemGroup>
<ItemGroup>
<MsgFmt Include="$(AegisubSourceBase)po\*.po" />
</ItemGroup>
<ImportGroup Label="ExtensionTargets">
<Import Project="$(MSBuildThisFileDirectory)Aegisub.targets" />
</ImportGroup>
</Project>

File diff suppressed because it is too large Load Diff

254
build/Aegisub/Aegisub.xml Normal file
View File

@ -0,0 +1,254 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (c) 2011 Niels Martin Hansen
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the Aegisub Group nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Aegisub Project http://www.aegisub.org/
-->
<Rule Name="AegisubConfig"
DisplayName="Aegisub"
Order="1"
PageTemplate="tool"
xmlns="http://schemas.microsoft.com/build/2009/properties">
<Rule.DataSource>
<DataSource Persistence="UserFile" ItemType="" HasConfigurationCondition="true" />
</Rule.DataSource>
<Rule.Categories>
<Category Name="Config" DisplayName="Configuration" Description="General build configuration" />
<Category Name="Features" DisplayName="External libraries" Description="Control which optional external libraries to use" />
<Category Name="Paths" DisplayName="Library paths" Description="Configure third-party library paths" />
</Rule.Categories>
<!-- Config -->
<BoolProperty
Name="StartupLog"
DisplayName="Start-up logging"
Description="Enable verbose startup logging to help figuration out where an error occurs"
Category="Config"
/>
<StringProperty
Name="AegisubBuildCredit"
Category="Config"
DisplayName="Build credit"
Description="Name the build should be credited to. Appears in the about box, and in the title bar of development builds."
/>
<BoolProperty
Name="AegisubUseUpdateChecker"
Category="Config"
DisplayName="Enable Update Checker"
Description="Specify whether to enable the update checker. Should be disabled if you will be distributing builds via something that has its own update checking functionality."
/>
<StringProperty
Name="UpdateCheckerServer"
Category="Config"
DisplayName="Update Checker Server"
Description="Server name to connect to for updates."
/>
<StringProperty
Name="UpdateCheckerURL"
Category="Config"
DisplayName="Update Checker URL"
Description="URL to get for updates."
/>
<StringProperty
Name="MsgFmtPath"
Category="Config"
DisplayName="msgfmt.exe location"
Description="Location of msgfmt.exe, for compiling translations"
/>
<!-- External Libraries -->
<BoolProperty
Name="AegisubUseAvisynth"
Category="Features"
DisplayName="Avisynth"
Description="Enable the Avisynth audio and video providers. This is experimental on x64. This has no external build dependencies."
/>
<EnumProperty
Name="AegisubUseCsri"
DisplayName="Use CSRI subtitle renderer"
Description="Specify whether to include support for CSRI subtitle rendering. The included helper library dynamically loads CSRI renderers, while linking another library allows you to e.g. link VSFilter.dll directly."
Category="Features"
>
<EnumValue Name="HelperLibrary" DisplayName="Use included helper library" Description="Use the included helper library to dynamically load CSRI renderers." />
<EnumValue Name="External" DisplayName="Link other library" Description="Use another CSRI renderer" />
<EnumValue Name="false" DisplayName="No CSRI support" Description="Do not use CSRI" />
</EnumProperty>
<BoolProperty
Name="AegisubUseDSound"
Category="Features"
DisplayName="DirectSound"
Description="Enable the DirectSound-based audio player"
/>
<BoolProperty
Name="AegisubUseFfms"
Category="Features"
DisplayName="FFMS2"
Description="Enable the FFMS2 audio and video providers. Requires copies of the FFMS2 and FFmpeg/libav source"
/>
<BoolProperty
Name="AegisubUseFftw"
Category="Features"
DisplayName="FFTW"
Description="A high-speed fourier transformation library which improves the spectograph speed and quality. Requires a copy of the FFTW 3.2 source."
/>
<BoolProperty
Name="AegisubUseOpenAl"
Category="Features"
DisplayName="OpenAL"
Description="OpenAL audio player. Requires a copy of the OpenAL SDK."
/>
<!-- Library Paths -->
<StringProperty
Subtype="folder"
Name="WinRarPath"
Category="Paths"
DisplayName="WinRAR.exe location"
Description="Location of a copy of WinRAR.exe. Required to build the portable installer."
/>
<StringProperty
Subtype="folder"
Name="BoostPath"
Category="Paths"
DisplayName="Boost root path"
Description="Location of a copy of boost."
/>
<StringProperty
Subtype="folder"
Name="CsriLibraryPath"
Category="Paths"
DisplayName="External CSRI library path"
Description="Location of external CSRI library files, for when not using the CSRI helper library."
/>
<StringProperty
Subtype="file"
Name="CsriLibraryName"
Category="Paths"
DisplayName="External CSRI library name"
Description="Name of external CSRI library, for when not using the CSRI helper library"
/>
<StringProperty
Subtype="folder"
Name="FfmsSrcDir"
Category="Paths"
DisplayName="FFMS2 source path"
Description="Location of FFMS2 source code."
/>
<StringProperty
Subtype="folder"
Name="FfmpegSrcDir"
Category="Paths"
DisplayName="FFmpeg/libav source path"
Description="Location of FFmpeg or libav source code. Required for FFMS2."
/>
<StringProperty
Subtype="folder"
Name="FftwSrcDir"
Category="Paths"
DisplayName="FFTW 3 source path"
Description="Location of FFTW 3 source code."
/>
<StringProperty
Subtype="folder"
Name="Freetype2SrcDir"
Category="Paths"
DisplayName="Freetype 2 source path"
Description="Location of Freetype 2 source code. Required for libass and fontconfig."
/>
<StringProperty
Subtype="folder"
Name="FribidiSrcDir"
Category="Paths"
DisplayName="Fribidi source path"
Description="Location of Fribidi source code. Required for libass."
/>
<StringProperty
Subtype="folder"
Name="FontconfigSrcDir"
Category="Paths"
DisplayName="Fontconfig source path"
Description="Location of Fontconfig source code."
/>
<StringProperty
Subtype="folder"
Name="IcuSrcDir"
Category="Paths"
DisplayName="ICU source path"
Description="Location of ICU source code."
/>
<StringProperty
Subtype="folder"
Name="GtestSrcDir"
Category="Paths"
DisplayName="googletest source path"
Description="Location of googletest source code."
/>
<StringProperty
Subtype="folder"
Name="LibassSrcDir"
Category="Paths"
DisplayName="libass source path"
Description="Location of libass source code."
/>
<StringProperty
Subtype="folder"
Name="WxSrcDir"
Category="Paths"
DisplayName="wxWidgets source path"
Description="Location of wxWidgets source code."
/>
<StringProperty
Subtype="folder"
Name="ZlibSrcDir"
Category="Paths"
DisplayName="zlib source path"
Description="Location of zlib source code. Required for FFMS2."
/>
</Rule>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_PropertySheetDisplayName>Standard Libraries</_PropertySheetDisplayName>
</PropertyGroup>
<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>
Usp10.lib;
Vfw32.lib;
advapi32.lib;
bcrypt.lib;
comctl32.lib;
comdlg32.lib;
gdi32.lib;
kernel32.lib;
ole32.lib;
oleaut32.lib;
opengl32.lib;
rpcrt4.lib;
shell32.lib;
user32.lib;
uuid.lib;
wsock32.lib;
%(AdditionalDependencies)
</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BuildTasks</RootNamespace>
<AssemblyName>BuildTasks</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\..\</SolutionDir>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)..\paths.props" />
<PropertyGroup>
<OutputPath>$(AegisubBinaryDir)</OutputPath>
<IntermediateOutputPath>$(AegisubObjectDir)</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="ICSharpCode.SharpZipLib">
<HintPath>..\..\.nuget\lib\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="LibGit2Sharp">
<HintPath>..\..\.nuget\lib\LibGit2Sharp.0.17.0.0\lib\net35\LibGit2Sharp.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Build" />
<Reference Include="Microsoft.Build.Engine" />
<Reference Include="Microsoft.Build.Framework" />
<Reference Include="Microsoft.Build.Utilities.v4.0" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="DownloadTgzFile.cs" />
<Compile Include="GitVersion.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TarballProject.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<PropertyGroup>
<PostBuildEvent>
if not exist "$(TargetDir)NativeBinaries" md "$(TargetDir)NativeBinaries"
if not exist "$(TargetDir)NativeBinaries\x86" md "$(TargetDir)NativeBinaries\x86"
xcopy /s /y /d "$(SolutionDir).nuget\lib\LibGit2Sharp.0.17.0.0\lib\net35\NativeBinaries\x86\*.*" "$(TargetDir)NativeBinaries\x86"
if not exist "$(TargetDir)NativeBinaries\amd64" md "$(TargetDir)NativeBinaries\amd64"
xcopy /s /y /d "$(SolutionDir).nuget\lib\LibGit2Sharp.0.17.0.0\lib\net35\NativeBinaries\amd64\*.*" "$(TargetDir)NativeBinaries\amd64"</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,54 @@
// Copyright (c) 2014, Thomas Goyne <plorkyeran@aegisub.org>
//
// Permission to use, copy, modify, and distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
//
// Aegisub Project http://www.aegisub.org/
namespace BuildTasks {
public class DownloadTgzFile : Microsoft.Build.Utilities.Task {
public string Url { get; set; }
public string OutputFile { get; set; }
public string Hash { get; set; }
private void DownloadArchive(string url, string unpackDest) {
var downloadStream = new System.Net.WebClient().OpenRead(url);
var gzStream = new ICSharpCode.SharpZipLib.GZip.GZipInputStream(downloadStream);
using (var file = System.IO.File.Create(unpackDest)) {
gzStream.CopyTo(file);
}
}
public override bool Execute() {
try {
using (var fs = System.IO.File.OpenRead(this.OutputFile)) {
var hash = new System.Security.Cryptography.SHA1Managed().ComputeHash(fs);
if (System.BitConverter.ToString(hash).Replace("-", "").ToLower() == this.Hash)
return true;
}
}
catch (System.IO.IOException) {
// Need to download if file not present or not readable
}
try {
DownloadArchive(this.Url, this.OutputFile);
}
catch (System.Exception e) {
this.Log.LogErrorFromException(e);
return false;
}
return true;
}
}
}

View File

@ -0,0 +1,132 @@
// Copyright (c) 2014, Thomas Goyne <plorkyeran@aegisub.org>
//
// Permission to use, copy, modify, and distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
//
// Aegisub Project http://www.aegisub.org/
using LibGit2Sharp;
using System;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
namespace BuildTasks {
public class GitVersion : Microsoft.Build.Utilities.Task {
public string Root { get; set; }
private static ObjectId LastSVNCommit = new ObjectId("16cd907fe7482cb54a7374cd28b8501f138116be");
private const string versionHTemplate =
@"#define BUILD_GIT_VERSION_NUMBER {0}
#define BUILD_GIT_VERSION_STRING ""{1}""
#define RELEASE_VERSION ""{2}""
#define TAGGED_RELEASE {3}
#define INSTALLER_VERSION ""{4}""
#define RESOURCE_BASE_VERSION {5}
";
private const string versionXmlTemplate =
@"<?xml version=""1.0"" encoding=""utf-8""?>
<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
<PropertyGroup>
<GitVersionNumber>{0}</GitVersionNumber>
<GitVersionString>{1}</GitVersionString>
</PropertyGroup>
</Project>
";
private string UniqueAbbreviation(Repository repo, string full) {
for (int len = 7; len < 40; ++len) {
try {
repo.Lookup(full.Substring(0, len));
return full.Substring(0, len);
}
catch (AmbiguousSpecificationException) {
continue;
}
}
return full;
}
private void WriteIfChanged(string path, string template, params object[] args) {
var body = string.Format(template, args).Replace("\r\n", "\n");
try {
var oldBody = File.ReadAllText(path);
if (body != oldBody)
File.WriteAllText(path, body);
}
catch (IOException) {
File.WriteAllText(path, body);
}
}
public override bool Execute() {
string versionHPath = Root + "build/git_version.h";
string versionXmlPath = Root + "build/git_version.xml";
if (!Directory.Exists(Root + ".git")) {
if (File.Exists(versionHPath)) {
Log.LogMessage("Using cached version.h");
return true;
}
Log.LogError("git repo not found and no cached git_version.h");
return false;
}
int commits = 6962; // Rev ID when we switched away from SVN
string installerVersion = "0.0.0";
string resourceVersion = "0, 0, 0";
string versionStr = null;
Tag releaseVersion = null;
bool taggedRelease = false;
using (var repo = new Repository(Root + ".git")) {
commits += repo.Commits.TakeWhile(c => !c.Id.Equals(LastSVNCommit)).Count();
foreach (var tag in repo.Tags) {
if (releaseVersion == null) {
releaseVersion = tag;
} else {
var filter = new CommitFilter()
{
Since = tag.Target.Sha,
Until = releaseVersion.Target.Sha
};
if (repo.Commits.QueryBy(filter).ToList().Count > 0)
releaseVersion = tag;
}
if (!tag.Target.Id.Equals(repo.Head.Tip.Id)) continue;
taggedRelease = true;
versionStr = tag.Name;
if (versionStr.StartsWith("v")) versionStr = versionStr.Substring(1);
if (Regex.Match(versionStr, @"(\d)\.(\d)\.(\d)").Success) {
installerVersion = versionStr;
resourceVersion = versionStr.Replace(".", ", ");
}
break;
}
if (versionStr == null) {
string branch = repo.Head.Name ?? "(unnamed branch)";
versionStr = string.Format("{0}-{1}-{2}", commits, branch,
UniqueAbbreviation(repo, repo.Head.Tip.Sha.ToString()));
}
}
WriteIfChanged(versionHPath, versionHTemplate, commits, versionStr, releaseVersion.Name.TrimStart('v'), taggedRelease ? "1" : "0", installerVersion, resourceVersion);
WriteIfChanged(versionXmlPath, versionXmlTemplate, commits, versionStr);
return true;
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("BuildTasks")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BuildTasks")]
[assembly: AssemblyCopyright("Copyright © Thomas Goyne 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("157803fb-ca11-4802-8394-1ee152112561")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,96 @@
// Copyright (c) 2014, Thomas Goyne <plorkyeran@aegisub.org>
//
// Permission to use, copy, modify, and distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
//
// Aegisub Project http://www.aegisub.org/
using ICSharpCode.SharpZipLib.Tar;
using System;
using System.IO;
using System.Security.Cryptography;
namespace BuildTasks {
public class TarballProject : Microsoft.Build.Utilities.Task {
public string Url { get; set; }
public string Root { get; set; }
public string Hash { get; set; }
private bool NeedsUpdate() {
try {
return Hash != File.ReadAllText(Path.Combine(Root, "aegisub.hash"));
}
catch (IOException) {
return true;
}
}
private void ExtractEntry(string destDir, TarEntry entry, ICSharpCode.SharpZipLib.Tar.TarInputStream stream) {
string name = entry.Name;
if (Path.IsPathRooted(name))
name = name.Substring(Path.GetPathRoot(name).Length);
name = name.Replace('/', Path.DirectorySeparatorChar);
name = name.Substring(name.IndexOf(Path.DirectorySeparatorChar) + 1);
string dest = Path.Combine(destDir, name);
if (entry.IsDirectory)
Directory.CreateDirectory(dest);
else {
Directory.CreateDirectory(Path.GetDirectoryName(dest));
using (Stream outputStream = File.Create(dest)) {
stream.CopyEntryContents(outputStream);
}
}
}
public override bool Execute() {
if (!NeedsUpdate()) return true;
try {
var ms = new MemoryStream();
var downloadStream = new System.Net.WebClient().OpenRead(Url);
downloadStream.CopyTo(ms);
ms.Seek(0, SeekOrigin.Begin);
var hash = new SHA256Managed().ComputeHash(ms);
if (BitConverter.ToString(hash).Replace("-", "").ToLower() != this.Hash) {
Log.LogError("Got wrong hash for {0}", Url);
return false;
}
try {
Directory.Delete(Root, true);
}
catch (DirectoryNotFoundException) {
// Obviously not an issue
}
ms.Seek(0, SeekOrigin.Begin);
var bzStream = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(ms);
var tarStream = new ICSharpCode.SharpZipLib.Tar.TarInputStream(bzStream);
while (true) {
TarEntry entry = tarStream.GetNextEntry();
if (entry == null) break;
ExtractEntry(Root, entry, tarStream);
}
File.WriteAllText(Path.Combine(Root, "aegisub.hash"), Hash);
return true;
}
catch (Exception e) {
Log.LogErrorFromException(e);
return false;
}
}
}
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="LibGit2Sharp" version="0.17.0.0" targetFramework="net45" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net45" />
</packages>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (c) 2011 Niels Martin Hansen
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the Aegisub Group nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Aegisub Project http://www.aegisub.org/
$Id$
-->
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Default settings for build-time options -->
<PropertyGroup>
<AegisubBuildCredit>Anonymous</AegisubBuildCredit>
<AegisubUseAvisynth Condition="'$(AegisubUseAvisynth)|$(Platform)'=='|Win32'">true</AegisubUseAvisynth>
<AegisubUseAvisynth Condition="'$(AegisubUseAvisynth)|$(Platform)'=='|x64'">false</AegisubUseAvisynth>
<AegisubUseCsri>HelperLibrary</AegisubUseCsri>
<AegisubUseDSound>true</AegisubUseDSound>
<AegisubUseFfms>true</AegisubUseFfms>
<AegisubUseFftw>true</AegisubUseFftw>
<AegisubUseOpenAl>false</AegisubUseOpenAl>
<AegisubUseUpdateChecker>true</AegisubUseUpdateChecker>
<CsriLibraryName>vsfilter.lib</CsriLibraryName>
<StartupLog>false</StartupLog>
<UpdateCheckerServer>mugen.karaokes.moe</UpdateCheckerServer>
<UpdateCheckerURL>/downloads/aegisub-japan7</UpdateCheckerURL>
<VendorRoot>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\vendor))</VendorRoot>
<BoostPath>$(VendorRoot)\boost</BoostPath>
<FfmsSrcDir>$(VendorRoot)\ffms2</FfmsSrcDir>
<FfmpegSrcDir>$(VendorRoot)\ffmpeg</FfmpegSrcDir>
<FftwSrcDir>$(VendorRoot)\fftw</FftwSrcDir>
<Freetype2SrcDir>$(VendorRoot)\freetype2</Freetype2SrcDir>
<FribidiSrcDir>$(VendorRoot)\fribidi</FribidiSrcDir>
<GtestSrcDir>$(VendorRoot)\googletest</GtestSrcDir>
<IcuSrcDir>$(VendorRoot)\icu\source</IcuSrcDir>
<LibassSrcDir>$(VendorRoot)\libass</LibassSrcDir>
<WxSrcDir>$(VendorRoot)\wxWidgets</WxSrcDir>
<ZlibSrcDir>$(VendorRoot)\wxWidgets\src\zlib</ZlibSrcDir>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{5B0E9978-E76F-4BBC-8194-228323F59B53}</ProjectGuid>
<RootNamespace>PortableInstaller</RootNamespace>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
<Import Project="$(MSBuildThisFileDirectory)..\git_version.xml" />
</ImportGroup>
<PropertyGroup>
<PlatformName Condition="$(Platform) == 'Win32'">x86</PlatformName>
<PlatformName Condition="$(Platform) == 'x64'">x64</PlatformName>
<FileName>aegisub-$(GitVersionString)-portable-$(AegisubPlatformSuffix)</FileName>
<OutputFile>$(AegisubSourceBase)packages\win_installer\output\$(FileName).exe</OutputFile>
</PropertyGroup>
<Target Name="Build">
<Error
Condition="!Exists($(WinRarPath))"
Text="WinRAR.exe not found. Please set the path to it."
/>
<MakeDir Directories="$(AegisubObjectDir)\$(FileName)" />
<MakeDir Directories="$(AegisubSourceBase)\packages\win_installer\output" />
<Copy
SourceFiles="@(RarContents)"
DestinationFiles="$(AegisubObjectDir)$(FileName)\%(RarContents.OutputPath)%(Filename)%(Extension)"
SkipUnchangedFiles="true"
/>
<Copy
SourceFiles="@(RarMetafiles)"
DestinationFolder="$(AegisubObjectDir)"
SkipUnchangedFiles="true"
/>
<Delete Files="$(OutputFile)" />
<Exec
Command="&quot;$(WinRarPath)&quot; a -sfx -s -m5 -ep1 -r -zportable-comment.txt -iimgside-logo.bmp -iiconicon.ico $(OutputFile) $(FileName)"
WorkingDirectory="$(AegisubObjectDir)"
/>
</Target>
<ItemGroup>
<RarContents Include="$(AegisubSourceBase)automation\autoload\cleantags-autoload.lua">
<OutputPath>automation\autoload\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\kara-templater.lua">
<OutputPath>automation\autoload\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\karaoke-auto-leadin.lua">
<OutputPath>automation\autoload\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\macro-1-edgeblur.lua">
<OutputPath>automation\autoload\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\macro-2-mkfullwitdh.lua">
<OutputPath>automation\autoload\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\select-overlaps.moon">
<OutputPath>automation\autoload\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\strip-tags.lua">
<OutputPath>automation\autoload\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\demos\future-windy-blur.lua">
<OutputPath>automation\demos\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\demos\raytracer.lua">
<OutputPath>automation\demos\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\argcheck.moon">
<OutputPath>automation\include\aegisub\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\clipboard.lua">
<OutputPath>automation\include\aegisub\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\ffi.moon">
<OutputPath>automation\include\aegisub\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\lfs.moon">
<OutputPath>automation\include\aegisub\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\re.moon">
<OutputPath>automation\include\aegisub\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\unicode.moon">
<OutputPath>automation\include\aegisub\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\util.moon">
<OutputPath>automation\include\aegisub\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\cleantags.lua">
<OutputPath>automation\include\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\clipboard.lua">
<OutputPath>automation\include\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\karaskel-auto4.lua">
<OutputPath>automation\include\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\karaskel.lua">
<OutputPath>automation\include\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\moonscript.lua">
<OutputPath>automation\include\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\re.lua">
<OutputPath>automation\include\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\unicode.lua">
<OutputPath>automation\include\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\utils-auto4.lua">
<OutputPath>automation\include\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\utils.lua">
<OutputPath>automation\include\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\AssDraw3.chm" />
<RarContents Include="$(AegisubSourceBase)bin\AssDraw3.exe" />
<RarContents Include="$(AegisubSourceBase)bin\DirectShowSource.dll" Condition="'$(AegisubUseAvisynth)' == 'true'" />
<RarContents Include="$(AegisubSourceBase)bin\aegisub$(AegisubPlatformSuffix).exe" />
<RarContents Include="$(AegisubSourceBase)bin\avisynth.dll" Condition="'$(AegisubUseAvisynth)' == 'true'" />
<RarContents Include="$(AegisubSourceBase)bin\csri\xy-vsfilter-aegisub$(PlatformArchitecture).dll" Condition="'$(AegisubUseCsri)' == 'HelperLibrary'">
<OutputPath>csri\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\devil.dll" Condition="'$(AegisubUseAvisynth)' == 'true'" />
<RarContents Include="$(AegisubSourceBase)packages\win_installer\portable\config.json" />
<RarContents Include="$(AegisubSourceBase)bin\dictionaries\en_US.aff">
<OutputPath>dictionaries\</OutputPath>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\dictionaries\en_US.dic">
<OutputPath>dictionaries\</OutputPath>
</RarContents>
</ItemGroup>
<ItemGroup>
<RarMetafiles Include="$(AegisubSourceBase)packages\win_installer\portable\icon.ico" />
<RarMetafiles Include="$(AegisubSourceBase)packages\win_installer\portable\side-logo.bmp" />
<RarMetafiles Include="$(AegisubSourceBase)packages\win_installer\portable\portable-comment.txt" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Automation">
<UniqueIdentifier>{2c1914de-647f-44ab-a698-a289b10ec29c}</UniqueIdentifier>
</Filter>
<Filter Include="Automation\Autoload">
<UniqueIdentifier>{862d477a-6db6-4ef0-b547-fa347b8d3aff}</UniqueIdentifier>
</Filter>
<Filter Include="Automation\Include">
<UniqueIdentifier>{d15cec98-3f6e-4713-a192-8cfdf1bac1d0}</UniqueIdentifier>
</Filter>
<Filter Include="CSRI">
<UniqueIdentifier>{61b13b0c-d018-48c6-8629-b44b83aa0dc8}</UniqueIdentifier>
</Filter>
<Filter Include="Automation\Tests">
<UniqueIdentifier>{8880eb0c-4bf7-424d-9a79-73c20c2dd169}</UniqueIdentifier>
</Filter>
<Filter Include="Automation\Demos">
<UniqueIdentifier>{743db065-17d0-4595-b241-9baa143dd68c}</UniqueIdentifier>
</Filter>
<Filter Include="AssDraw">
<UniqueIdentifier>{8e48f676-fdad-4b6e-a146-58a300ee528d}</UniqueIdentifier>
</Filter>
<Filter Include="Avisynth">
<UniqueIdentifier>{63aff439-dbde-4092-8dad-905a01c4be6c}</UniqueIdentifier>
</Filter>
<Filter Include="Dictionaries">
<UniqueIdentifier>{baf7aa4e-709d-4a03-aee1-b54749006b82}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<RarContents Include="$(AegisubSourceBase)automation\autoload\cleantags-autoload.lua">
<Filter>Automation\Autoload</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\kara-templater.lua">
<Filter>Automation\Autoload</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\karaoke-auto-leadin.lua">
<Filter>Automation\Autoload</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\macro-1-edgeblur.lua">
<Filter>Automation\Autoload</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\macro-2-mkfullwitdh.lua">
<Filter>Automation\Autoload</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\select-overlaps.moon">
<Filter>Automation\Autoload</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\autoload\strip-tags.lua">
<Filter>Automation\Autoload</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\demos\future-windy-blur.lua">
<Filter>Automation\Demos</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\demos\raytracer.lua">
<Filter>Automation\Demos</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\clipboard.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\re.moon">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\unicode.moon">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\aegisub\util.moon">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\cleantags.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\clipboard.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\karaskel-auto4.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\karaskel.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\moonscript.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\re.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\unicode.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\utils-auto4.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)automation\include\utils.lua">
<Filter>Automation\Include</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\aegisub$(AegisubPlatformSuffix).exe" />
<RarContents Include="$(AegisubSourceBase)packages\win_installer\portable\config.json" />
<RarContents Include="$(AegisubSourceBase)bin\csri\xy-vsfilter-aegisub$(PlatformArchitecture).dll">
<Filter>CSRI</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\AssDraw3.chm">
<Filter>AssDraw</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\AssDraw3.exe">
<Filter>AssDraw</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\avisynth.dll">
<Filter>Avisynth</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\devil.dll">
<Filter>Avisynth</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\DirectShowSource.dll">
<Filter>Avisynth</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\dictionaries\en_US.aff">
<Filter>Dictionaries</Filter>
</RarContents>
<RarContents Include="$(AegisubSourceBase)bin\dictionaries\en_US.dic">
<Filter>Dictionaries</Filter>
</RarContents>
</ItemGroup>
</Project>

66
build/aegisub.props Normal file
View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_PropertySheetDisplayName>Aegisub project</_PropertySheetDisplayName>
</PropertyGroup>
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<!-- Base configuration for VC projects -->
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType Condition="'$(AegisubProjectType)'=='lib'">StaticLibrary</ConfigurationType>
<ConfigurationType Condition="'$(AegisubProjectType)'=='dll'">DynamicLibrary</ConfigurationType>
<ConfigurationType Condition="'$(AegisubProjectType)'=='exe'">Application</ConfigurationType>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'" >true</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Release'" >false</UseDebugLibraries>
<WholeProgramOptimization Condition="'$(Configuration)'=='Release'" >true</WholeProgramOptimization>
<CharacterSet >Unicode</CharacterSet>
<CharacterSet Condition="'$(AegisubMBCS)'=='true'" >MultiByte</CharacterSet>
<PlatformToolset >v141</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<!-- Default configuration -->
<ImportGroup Label="ExtensionSettings">
<Import Project="$(MSBuildThisFileDirectory)\DefaultConfiguration.props" />
<!-- Import the Aegisub user config file for non-Aegisub projects since
there doesn't seem to be any sort of solution-wide config file -->
<Import Project="$(MSBuildThisFileDirectory)\Aegisub\Aegisub.vcxproj.user"
Condition="'$(MSBuildProjectName)' != 'Aegisub' and Exists('$(MSBuildThisFileDirectory)\Aegisub\Aegisub.vcxproj.user')" />
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)userconfig\*.props" />
<Import Project="$(MSBuildThisFileDirectory)paths.props" />
<Import Project="$(MSBuildThisFileDirectory)Aegisub\standard-libraries.props" />
<Import Project="$(MSBuildThisFileDirectory)standard-settings.props" />
<Import Project="$(MSBuildThisFileDirectory)standard-outdirs.props" />
<Import Project="$(MSBuildThisFileDirectory)tasks.props" />
</ImportGroup>
<!-- The standard targets need to go last for all paths to be proper -->
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Label="LocalAppDataPlatform" />
<ImportGroup Label="Targets">
<Import Project="$(MSBuildThisFileDirectory)install.targets" />
</ImportGroup>
</Project>

139
build/boost/boost.vcxproj Normal file
View File

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{A649D828-A399-4D81-ADEF-94CFDBA7847F}</ProjectGuid>
<RootNamespace>boost</RootNamespace>
</PropertyGroup>
<!-- Aegisub project configuration -->
<PropertyGroup Label="AegisubConfiguration">
<AegisubProjectType>lib</AegisubProjectType>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>
BOOST_LOCALE_WITH_ICONV=1;
BOOST_LOCALE_WITH_ICU=1;
BOOST_LOCALE_NO_STD_BACKEND=1;
BOOST_LOCALE_NO_WINAPI_BACKEND=1;
BOOST_LOCALE_NO_POSIX_BACKEND=1;
BOOST_THREAD_BUILD_LIB;
%(PreprocessorDefinitions)
</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<PropertyGroup>
<BuildGenerateSourcesTargets>
$(BuildGenerateSourcesTargets);
CopyBoostHeaders
</BuildGenerateSourcesTargets>
</PropertyGroup>
<!-- Have the target depend on the boost version.hpp file so it will usually
be skipped if the boost version hasn't changed since last build. -->
<Target
Name="CopyBoostHeaders"
Inputs="$(BoostPath)\libs\config\include\boost\version.hpp"
Outputs="$(AegisubSourceBase)include\boost\version.hpp"
>
<Message Importance="High" Text="Copy boost headers" />
<!-- All this cruft is to work around that despite what the documentation
claims, %(RecursiveDir) matches everything from the first * (not even
**) until the last / -->
<ItemGroup>
<BoostLibraries Include="$([System.IO.Directory]::GetDirectories(&quot;$(BoostPath)\libs&quot;))" />
<BoostIncludeDirs Include="%(BoostLibraries.Identity)\include\boost;$(BoostPath)\libs\numeric\conversion\include\boost" />
<Headers Include="%(BoostIncludeDirs.Identity)\**\*.*" />
</ItemGroup>
<Copy
SourceFiles="@(Headers)"
DestinationFiles="@(Headers->'$(AegisubSourceBase)include\boost\%(RecursiveDir)%(Filename)%(Extension)')"
SkipUnchangedFiles="true"
/>
</Target>
<!-- Project References -->
<ItemGroup>
<ProjectReference Include="..\icu\icu.vcxproj">
<Project>{f934ab7b-186b-4e96-b20c-a58c38c1b818}</Project>
</ProjectReference>
<ProjectReference Include="..\libiconv\libiconv.vcxproj">
<Project>{965054d2-44f2-4eb2-9879-051cc3d7ef08}</Project>
</ProjectReference>
</ItemGroup>
<!-- Source files -->
<ItemGroup>
<ClCompile Include="$(BoostPath)\libs\filesystem\src\codecvt_error_category.cpp" />
<ClCompile Include="$(BoostPath)\libs\filesystem\src\operations.cpp" />
<ClCompile Include="$(BoostPath)\libs\filesystem\src\path.cpp" />
<ClCompile Include="$(BoostPath)\libs\filesystem\src\path_traits.cpp" />
<ClCompile Include="$(BoostPath)\libs\filesystem\src\portability.cpp" />
<ClCompile Include="$(BoostPath)\libs\filesystem\src\unique_path.cpp" />
<ClCompile Include="$(BoostPath)\libs\filesystem\src\utf8_codecvt_facet.cpp" />
<ClCompile Include="$(BoostPath)\libs\filesystem\src\windows_file_codecvt.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\encoding\codepage.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\boundary.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\codecvt.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\collator.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\conversion.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\icu_backend.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\shared\generator.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\shared\ids.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\shared\localization_backend.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\util\codecvt_converter.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\util\default_locale.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\util\info.cpp" />
<ClCompile Include="$(BoostPath)\libs\locale\src\util\locale_data.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\c_regex_traits.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\cpp_regex_traits.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\cregex.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\fileiter.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\icu.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\instances.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\posix_api.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\regex.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\regex_raw_buffer.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\regex_traits_defaults.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\static_mutex.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\usinstances.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\w32_regex_traits.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\wc_regex_traits.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\wide_posix_api.cpp" />
<ClCompile Include="$(BoostPath)\libs\regex\src\winstances.cpp" />
<ClCompile Include="$(BoostPath)\libs\system\src\error_code.cpp" />
<ClCompile Include="$(BoostPath)\libs\thread\src\win32\thread.cpp" />
<ClCompile Include="$(BoostPath)\libs\thread\src\win32\tss_pe.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)locale_stubs.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(BoostPath)\libs\filesystem\src\windows_file_codecvt.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\encoding\conv.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\all_generator.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\cdata.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\codecvt.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\icu_backend.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\icu_util.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\predefined_formatters.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\uconv.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\shared\ios_prop.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\shared\mo_hash.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\shared\mo_lambda.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\util\gregorian.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\util\iconv.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\util\locale_data.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\util\numeric.hpp" />
<ClInclude Include="$(BoostPath)\libs\locale\src\util\timezone.hpp" />
<ClInclude Include="$(BoostPath)\libs\regex\src\internals.hpp" />
</ItemGroup>
<ItemGroup>
<None Include="$(BoostPath)\libs\locale\src\encoding\iconv_codepage.ipp" />
<None Include="$(BoostPath)\libs\locale\src\encoding\uconv_codepage.ipp" />
<None Include="$(BoostPath)\libs\locale\src\encoding\wconv_codepage.ipp" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,222 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="regex">
<UniqueIdentifier>{e091980d-4374-41b8-aa61-1b07695e1b17}</UniqueIdentifier>
</Filter>
<Filter Include="system">
<UniqueIdentifier>{be9f03e9-74a3-4705-97ee-105a404d8a10}</UniqueIdentifier>
</Filter>
<Filter Include="filesystem">
<UniqueIdentifier>{98abe5b9-aca6-4145-ab6d-e472e24eb522}</UniqueIdentifier>
</Filter>
<Filter Include="locale">
<UniqueIdentifier>{0dae6521-8684-471f-8d62-9fe3b9295b0c}</UniqueIdentifier>
</Filter>
<Filter Include="locale\encoding">
<UniqueIdentifier>{8c30568b-1ab1-4815-82e0-127ad31732d7}</UniqueIdentifier>
</Filter>
<Filter Include="locale\icu">
<UniqueIdentifier>{47e5ad22-f37e-4512-a8e1-bcb5f04ad24b}</UniqueIdentifier>
</Filter>
<Filter Include="locale\shared">
<UniqueIdentifier>{52190269-979d-429b-a825-8e68eacc2274}</UniqueIdentifier>
</Filter>
<Filter Include="locale\util">
<UniqueIdentifier>{829ed5fb-dcba-4d3e-910c-33341e0e6379}</UniqueIdentifier>
</Filter>
<Filter Include="thread">
<UniqueIdentifier>{c76e09db-3a8e-4eaf-bb9a-6bac6945fd6f}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(BoostPath)\libs\regex\src\c_regex_traits.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\cpp_regex_traits.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\cregex.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\fileiter.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\instances.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\posix_api.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\regex.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\regex_raw_buffer.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\regex_traits_defaults.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\static_mutex.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\usinstances.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\w32_regex_traits.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\wc_regex_traits.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\wide_posix_api.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\winstances.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\system\src\error_code.cpp">
<Filter>system</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\filesystem\src\codecvt_error_category.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\filesystem\src\operations.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\filesystem\src\path.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\filesystem\src\path_traits.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\filesystem\src\portability.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\filesystem\src\unique_path.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\filesystem\src\utf8_codecvt_facet.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\filesystem\src\windows_file_codecvt.cpp">
<Filter>filesystem</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\regex\src\icu.cpp">
<Filter>regex</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\boundary.cpp">
<Filter>locale\icu</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\codecvt.cpp">
<Filter>locale\icu</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\collator.cpp">
<Filter>locale\icu</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\conversion.cpp">
<Filter>locale\icu</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\icu\icu_backend.cpp">
<Filter>locale\icu</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\util\codecvt_converter.cpp">
<Filter>locale\util</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\util\default_locale.cpp">
<Filter>locale\util</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\util\info.cpp">
<Filter>locale\util</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\util\locale_data.cpp">
<Filter>locale\util</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\shared\generator.cpp">
<Filter>locale\shared</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\shared\ids.cpp">
<Filter>locale\shared</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\shared\localization_backend.cpp">
<Filter>locale\shared</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\locale\src\encoding\codepage.cpp">
<Filter>locale\encoding</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\thread\src\win32\thread.cpp">
<Filter>thread</Filter>
</ClCompile>
<ClCompile Include="$(BoostPath)\libs\thread\src\win32\tss_pe.cpp">
<Filter>thread</Filter>
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)locale_stubs.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(BoostPath)\libs\regex\src\internals.hpp">
<Filter>regex</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\filesystem\src\windows_file_codecvt.hpp">
<Filter>filesystem</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\all_generator.hpp">
<Filter>locale\icu</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\cdata.hpp">
<Filter>locale\icu</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\codecvt.hpp">
<Filter>locale\icu</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\icu_backend.hpp">
<Filter>locale\icu</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\icu_util.hpp">
<Filter>locale\icu</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\predefined_formatters.hpp">
<Filter>locale\icu</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\icu\uconv.hpp">
<Filter>locale\icu</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\util\gregorian.hpp">
<Filter>locale\util</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\util\iconv.hpp">
<Filter>locale\util</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\util\locale_data.hpp">
<Filter>locale\util</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\util\numeric.hpp">
<Filter>locale\util</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\util\timezone.hpp">
<Filter>locale\util</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\shared\ios_prop.hpp">
<Filter>locale\shared</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\shared\mo_hash.hpp">
<Filter>locale\shared</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\shared\mo_lambda.hpp">
<Filter>locale\shared</Filter>
</ClInclude>
<ClInclude Include="$(BoostPath)\libs\locale\src\encoding\conv.hpp">
<Filter>locale\encoding</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="$(BoostPath)\libs\locale\src\encoding\iconv_codepage.ipp">
<Filter>locale\encoding</Filter>
</None>
<None Include="$(BoostPath)\libs\locale\src\encoding\uconv_codepage.ipp">
<Filter>locale\encoding</Filter>
</None>
<None Include="$(BoostPath)\libs\locale\src\encoding\wconv_codepage.ipp">
<Filter>locale\encoding</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,69 @@
// Copyright (c) 2014, Thomas Goyne <plorkyeran@aegisub.org>
//
// Permission to use, copy, modify, and distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
//
// Aegisub Project http://www.aegisub.org/
#include <boost/locale/gnu_gettext.hpp>
#include <boost/locale/localization_backend.hpp>
#include <unicode/locid.h>
// Boost.locale doesn't support partial builds of ICU, so provide stub versions
// of some of the things we don't use
namespace boost { namespace locale {
namespace impl_icu {
struct cdata {
icu::Locale locale;
std::string encoding;
bool utf8;
};
std::locale create_formatting(std::locale const& in, cdata const& cd, character_facet_type type) {
return in;
}
std::locale create_parsing(std::locale const& in, cdata const& cd, character_facet_type type) {
return in;
}
std::locale create_calendar(std::locale const& in, cdata const& cd) {
return in;
}
}
namespace gnu_gettext {
template<>
message_format<char> *create_messages_facet(messages_info const &info) {
return nullptr;
}
template<>
message_format<wchar_t> *create_messages_facet(messages_info const &info) {
return nullptr;
}
#ifdef BOOST_HAS_CHAR16_T
template<>
message_format<char16_t> *create_messages_facet(messages_info const &info) {
return nullptr;
}
#endif
#ifdef BOOST_HAS_CHAR32_T
template<>
message_format<char32_t> *create_messages_facet(messages_info const &info) {
return nullptr;
}
#endif
}
} }

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- VC boilerplate -->
<PropertyGroup Label="Globals">
<ProjectGuid>{C832EAF3-860D-4373-A02C-933626B47A5E}</ProjectGuid>
<RootNamespace>csrihelper</RootNamespace>
</PropertyGroup>
<!-- Aegisub project configuration -->
<PropertyGroup Label="AegisubConfiguration">
<AegisubProjectType>lib</AegisubProjectType>
<SrcDir>..\..\vendor\csri\</SrcDir>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>CSRI_NO_EXPORT;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SrcDir)include\;$(SrcDir)lib\;$(SrcDir)lib\win32\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<InstallHeader>
<HeaderRoot>$(SrcDir)include</HeaderRoot>
</InstallHeader>
</ItemDefinitionGroup>
<!-- Source files -->
<ItemGroup>
<InstallHeader Include="$(SrcDir)include\csri\*.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(SrcDir)include\csri\csri.h" />
<ClInclude Include="$(SrcDir)include\csri\fmtids.h" />
<ClInclude Include="$(SrcDir)include\csri\logging.h" />
<ClInclude Include="$(SrcDir)include\csri\openerr.h" />
<ClInclude Include="$(SrcDir)include\csri\stream.h" />
<ClInclude Include="$(SrcDir)include\subhelp.h" />
<ClInclude Include="$(SrcDir)include\visibility.h" />
<ClInclude Include="$(SrcDir)lib\csrilib.h" />
<ClInclude Include="$(SrcDir)lib\win32\csrilib_os.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(SrcDir)lib\list.c" />
<ClCompile Include="$(SrcDir)lib\win32\enumerate.c" />
<ClCompile Include="$(SrcDir)lib\wrap.c" />
<ClCompile Include="$(SrcDir)subhelp\logging.c" />
<ClCompile Include="$(SrcDir)subhelp\win32\openfile.c" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(SrcDir)include\csri\csri.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)include\csri\fmtids.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)include\csri\logging.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)include\csri\openerr.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)include\csri\stream.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)include\subhelp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)include\visibility.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)lib\csrilib.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)lib\win32\csrilib_os.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(SrcDir)lib\list.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)lib\win32\enumerate.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)lib\wrap.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)subhelp\logging.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)subhelp\win32\openfile.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

55
build/expat/expat.vcxproj Normal file
View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{D6BA6815-0AAC-48FA-8372-D32CDE8BF07A}</ProjectGuid>
<RootNamespace>expat</RootNamespace>
</PropertyGroup>
<!-- Aegisub project configuration -->
<PropertyGroup Label="AegisubConfiguration">
<AegisubProjectType>lib</AegisubProjectType>
<SrcDir>..\..\vendor\wxWidgets\src\expat\lib</SrcDir>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>COMPILED_FROM_DSP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<InstallHeader>
<HeaderRoot>$(SrcDir)</HeaderRoot>
</InstallHeader>
</ItemDefinitionGroup>
<!-- Source files -->
<ItemGroup>
<InstallHeader Include="$(SrcDir)\expat.h" />
<InstallHeader Include="$(SrcDir)\expat_external.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(SrcDir)\ascii.h" />
<ClInclude Include="$(SrcDir)\asciitab.h" />
<ClInclude Include="$(SrcDir)\expat.h" />
<ClInclude Include="$(SrcDir)\expat_external.h" />
<ClInclude Include="$(SrcDir)\iasciitab.h" />
<ClInclude Include="$(SrcDir)\internal.h" />
<ClInclude Include="$(SrcDir)\latin1tab.h" />
<ClInclude Include="$(SrcDir)\nametab.h" />
<ClInclude Include="$(SrcDir)\utf8tab.h" />
<ClInclude Include="$(SrcDir)\winconfig.h" />
<ClInclude Include="$(SrcDir)\xmlrole.h" />
<ClInclude Include="$(SrcDir)\xmltok.h" />
<ClInclude Include="$(SrcDir)\xmltok_impl.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(SrcDir)\xmlparse.c" />
<ClCompile Include="$(SrcDir)\xmlrole.c" />
<ClCompile Include="$(SrcDir)\xmltok.c" />
<ClCompile Include="$(SrcDir)\xmltok_impl.c" />
<ClCompile Include="$(SrcDir)\xmltok_ns.c" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
</Project>

2460
build/ffmpeg/config-x64.asm Executable file

File diff suppressed because it is too large Load Diff

2476
build/ffmpeg/config-x64.h Executable file

File diff suppressed because it is too large Load Diff

2460
build/ffmpeg/config-x86.asm Executable file

File diff suppressed because it is too large Load Diff

2476
build/ffmpeg/config-x86.h Executable file

File diff suppressed because it is too large Load Diff

5
build/ffmpeg/config.h Normal file
View File

@ -0,0 +1,5 @@
#ifdef _WIN64
#include "config-x64.h"
#else
#include "config-x86.h"
#endif

54
build/ffmpeg/configure.sh Executable file
View File

@ -0,0 +1,54 @@
platform='Win32'
suffix='x86'
if [[ $LIB =~ x64 ]]; then
platform='x64'
suffix='x64'
fi
./configure $@ \
--disable-avfilter \
--disable-avresample \
--disable-bzlib \
--disable-d3d11va \
--disable-dxva2 \
--disable-decoder=atrac3p,indeo2,indeo3,indeo4,indeo5,twinvq \
--disable-devices \
--disable-doc \
--disable-encoders \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-filters \
--disable-hwaccels \
--disable-muxers \
--disable-network \
--disable-postproc \
--disable-pthreads \
--disable-shared \
--enable-gpl \
--enable-runtime-cpudetect \
--enable-static \
--enable-small \
--enable-x86asm \
--x86asmexe=yasm \
--enable-zlib \
--extra-cflags=-D_SYSCRT \
--extra-cflags=-I../../include \
--extra-cflags=-MD \
--extra-cflags=-wd4005 \
--extra-cflags=-wd4189 \
--extra-ldflags=-LIBPATH:../../lib/$platform/Release \
--toolchain=msvc
mv config.asm ../../build/ffmpeg/config-$suffix.asm
mv config.h ../../build/ffmpeg/config-$suffix.h
mv libavcodec/bsf_list.c ../../build/ffmpeg/libavcodec/bsf_list.c
mv libavcodec/codec_list.c ../../build/ffmpeg/libavcodec/codec_list.c
mv libavcodec/parser_list.c ../../build/ffmpeg/libavcodec/parser_list.c
mv libavdevice/indev_list.c ../../build/ffmpeg/libavdevice/indev_list.c
mv libavdevice/outdev_list.c ../../build/ffmpeg/libavdevice/outdev_list.c
mv libavformat/demuxer_list.c ../../build/ffmpeg/libavformat/demuxer_list.c
mv libavformat/muxer_list.c ../../build/ffmpeg/libavformat/muxer_list.c
mv libavformat/protocol_list.c ../../build/ffmpeg/libavformat/protocol_list.c
mv libavutil/avconfig.h ../../build/ffmpeg/libavutil/avconfig.h
mv libavutil/ffversion.h ../../build/ffmpeg/libavutil/ffversion.h

1413
build/ffmpeg/ffmpeg.vcxproj Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

13
build/ffmpeg/get-file-list.sh Executable file
View File

@ -0,0 +1,13 @@
rm -f make-dry
make -n > make-dry
grep '^cl' make-dry \
| sed 's/.*\(lib[^ ]*.c\) .*/\1/' \
| sed 's/\//\\/g' \
| sed 's/\(.*\)/<ClCompile Include="$(FfmpegSrcDir)\\\1" \/>/' \
| sort
echo
grep '^yasm' make-dry \
| sed 's/.*\(lib[^ ]*.asm\) .*/\1/' \
| sed 's/\//\\/g' \
| sed 's/\(.*\)/<Yasm Include="$(FfmpegSrcDir)\\\1" \/>/' \
| sort

View File

@ -0,0 +1,33 @@
static const AVBitStreamFilter * const bitstream_filters[] = {
&ff_aac_adtstoasc_bsf,
&ff_av1_metadata_bsf,
&ff_chomp_bsf,
&ff_dump_extradata_bsf,
&ff_dca_core_bsf,
&ff_eac3_core_bsf,
&ff_extract_extradata_bsf,
&ff_filter_units_bsf,
&ff_h264_metadata_bsf,
&ff_h264_mp4toannexb_bsf,
&ff_h264_redundant_pps_bsf,
&ff_hapqa_extract_bsf,
&ff_hevc_metadata_bsf,
&ff_hevc_mp4toannexb_bsf,
&ff_imx_dump_header_bsf,
&ff_mjpeg2jpeg_bsf,
&ff_mjpega_dump_header_bsf,
&ff_mp3_header_decompress_bsf,
&ff_mpeg2_metadata_bsf,
&ff_mpeg4_unpack_bframes_bsf,
&ff_mov2textsub_bsf,
&ff_noise_bsf,
&ff_null_bsf,
&ff_prores_metadata_bsf,
&ff_remove_extradata_bsf,
&ff_text2movsub_bsf,
&ff_trace_headers_bsf,
&ff_vp9_metadata_bsf,
&ff_vp9_raw_reorder_bsf,
&ff_vp9_superframe_bsf,
&ff_vp9_superframe_split_bsf,
NULL };

View File

@ -0,0 +1,426 @@
static const AVCodec * const codec_list[] = {
&ff_aasc_decoder,
&ff_aic_decoder,
&ff_alias_pix_decoder,
&ff_amv_decoder,
&ff_anm_decoder,
&ff_ansi_decoder,
&ff_apng_decoder,
&ff_asv1_decoder,
&ff_asv2_decoder,
&ff_aura_decoder,
&ff_aura2_decoder,
&ff_avrp_decoder,
&ff_avrn_decoder,
&ff_avs_decoder,
&ff_avui_decoder,
&ff_ayuv_decoder,
&ff_bethsoftvid_decoder,
&ff_bfi_decoder,
&ff_bink_decoder,
&ff_bitpacked_decoder,
&ff_bmp_decoder,
&ff_bmv_video_decoder,
&ff_brender_pix_decoder,
&ff_c93_decoder,
&ff_cavs_decoder,
&ff_cdgraphics_decoder,
&ff_cdxl_decoder,
&ff_cfhd_decoder,
&ff_cinepak_decoder,
&ff_clearvideo_decoder,
&ff_cljr_decoder,
&ff_cllc_decoder,
&ff_comfortnoise_decoder,
&ff_cpia_decoder,
&ff_cscd_decoder,
&ff_cyuv_decoder,
&ff_dds_decoder,
&ff_dfa_decoder,
&ff_dirac_decoder,
&ff_dnxhd_decoder,
&ff_dpx_decoder,
&ff_dsicinvideo_decoder,
&ff_dvaudio_decoder,
&ff_dvvideo_decoder,
&ff_dxa_decoder,
&ff_dxtory_decoder,
&ff_dxv_decoder,
&ff_eacmv_decoder,
&ff_eamad_decoder,
&ff_eatgq_decoder,
&ff_eatgv_decoder,
&ff_eatqi_decoder,
&ff_eightbps_decoder,
&ff_eightsvx_exp_decoder,
&ff_eightsvx_fib_decoder,
&ff_escape124_decoder,
&ff_escape130_decoder,
&ff_exr_decoder,
&ff_ffv1_decoder,
&ff_ffvhuff_decoder,
&ff_fic_decoder,
&ff_fits_decoder,
&ff_flashsv_decoder,
&ff_flashsv2_decoder,
&ff_flic_decoder,
&ff_flv_decoder,
&ff_fmvc_decoder,
&ff_fourxm_decoder,
&ff_fraps_decoder,
&ff_frwu_decoder,
&ff_g2m_decoder,
&ff_gdv_decoder,
&ff_gif_decoder,
&ff_h261_decoder,
&ff_h263_decoder,
&ff_h263i_decoder,
&ff_h263p_decoder,
&ff_h264_decoder,
&ff_hap_decoder,
&ff_hevc_decoder,
&ff_hnm4_video_decoder,
&ff_hq_hqa_decoder,
&ff_hqx_decoder,
&ff_huffyuv_decoder,
&ff_idcin_decoder,
&ff_iff_ilbm_decoder,
&ff_imm4_decoder,
&ff_interplay_video_decoder,
&ff_jpeg2000_decoder,
&ff_jpegls_decoder,
&ff_jv_decoder,
&ff_kgv1_decoder,
&ff_kmvc_decoder,
&ff_lagarith_decoder,
&ff_loco_decoder,
&ff_m101_decoder,
&ff_magicyuv_decoder,
&ff_mdec_decoder,
&ff_mimic_decoder,
&ff_mjpeg_decoder,
&ff_mjpegb_decoder,
&ff_mmvideo_decoder,
&ff_motionpixels_decoder,
&ff_mpeg1video_decoder,
&ff_mpeg2video_decoder,
&ff_mpeg4_decoder,
&ff_mpegvideo_decoder,
&ff_msa1_decoder,
&ff_mscc_decoder,
&ff_msmpeg4v1_decoder,
&ff_msmpeg4v2_decoder,
&ff_msmpeg4v3_decoder,
&ff_msrle_decoder,
&ff_mss1_decoder,
&ff_mss2_decoder,
&ff_msvideo1_decoder,
&ff_mszh_decoder,
&ff_mts2_decoder,
&ff_mvc1_decoder,
&ff_mvc2_decoder,
&ff_mwsc_decoder,
&ff_mxpeg_decoder,
&ff_nuv_decoder,
&ff_paf_video_decoder,
&ff_pam_decoder,
&ff_pbm_decoder,
&ff_pcx_decoder,
&ff_pgm_decoder,
&ff_pgmyuv_decoder,
&ff_pictor_decoder,
&ff_pixlet_decoder,
&ff_png_decoder,
&ff_ppm_decoder,
&ff_prores_decoder,
&ff_prosumer_decoder,
&ff_psd_decoder,
&ff_ptx_decoder,
&ff_qdraw_decoder,
&ff_qpeg_decoder,
&ff_qtrle_decoder,
&ff_r10k_decoder,
&ff_r210_decoder,
&ff_rasc_decoder,
&ff_rawvideo_decoder,
&ff_rl2_decoder,
&ff_roq_decoder,
&ff_rpza_decoder,
&ff_rscc_decoder,
&ff_rv10_decoder,
&ff_rv20_decoder,
&ff_rv30_decoder,
&ff_rv40_decoder,
&ff_s302m_decoder,
&ff_sanm_decoder,
&ff_scpr_decoder,
&ff_screenpresso_decoder,
&ff_sdx2_dpcm_decoder,
&ff_sgi_decoder,
&ff_sgirle_decoder,
&ff_sheervideo_decoder,
&ff_smacker_decoder,
&ff_smc_decoder,
&ff_smvjpeg_decoder,
&ff_snow_decoder,
&ff_sp5x_decoder,
&ff_speedhq_decoder,
&ff_srgc_decoder,
&ff_sunrast_decoder,
&ff_svq1_decoder,
&ff_svq3_decoder,
&ff_targa_decoder,
&ff_targa_y216_decoder,
&ff_tdsc_decoder,
&ff_theora_decoder,
&ff_thp_decoder,
&ff_tiertexseqvideo_decoder,
&ff_tiff_decoder,
&ff_tmv_decoder,
&ff_truemotion1_decoder,
&ff_truemotion2_decoder,
&ff_truemotion2rt_decoder,
&ff_tscc_decoder,
&ff_tscc2_decoder,
&ff_txd_decoder,
&ff_ulti_decoder,
&ff_utvideo_decoder,
&ff_v210_decoder,
&ff_v210x_decoder,
&ff_v308_decoder,
&ff_v408_decoder,
&ff_v410_decoder,
&ff_vb_decoder,
&ff_vble_decoder,
&ff_vc1_decoder,
&ff_vc1image_decoder,
&ff_vcr1_decoder,
&ff_vmdvideo_decoder,
&ff_vmnc_decoder,
&ff_vp3_decoder,
&ff_vp5_decoder,
&ff_vp6_decoder,
&ff_vp6a_decoder,
&ff_vp6f_decoder,
&ff_vp7_decoder,
&ff_vp8_decoder,
&ff_vp9_decoder,
&ff_vqa_decoder,
&ff_webp_decoder,
&ff_wcmv_decoder,
&ff_wrapped_avframe_decoder,
&ff_wmv1_decoder,
&ff_wmv2_decoder,
&ff_wmv3_decoder,
&ff_wmv3image_decoder,
&ff_wnv1_decoder,
&ff_xan_wc3_decoder,
&ff_xan_wc4_decoder,
&ff_xbm_decoder,
&ff_xface_decoder,
&ff_xl_decoder,
&ff_xpm_decoder,
&ff_xwd_decoder,
&ff_y41p_decoder,
&ff_ylc_decoder,
&ff_yop_decoder,
&ff_yuv4_decoder,
&ff_zero12v_decoder,
&ff_zerocodec_decoder,
&ff_zlib_decoder,
&ff_zmbv_decoder,
&ff_aac_decoder,
&ff_aac_fixed_decoder,
&ff_aac_latm_decoder,
&ff_ac3_decoder,
&ff_ac3_fixed_decoder,
&ff_alac_decoder,
&ff_als_decoder,
&ff_amrnb_decoder,
&ff_amrwb_decoder,
&ff_ape_decoder,
&ff_aptx_decoder,
&ff_aptx_hd_decoder,
&ff_atrac1_decoder,
&ff_atrac3_decoder,
&ff_atrac3al_decoder,
&ff_atrac3pal_decoder,
&ff_atrac9_decoder,
&ff_binkaudio_dct_decoder,
&ff_binkaudio_rdft_decoder,
&ff_bmv_audio_decoder,
&ff_cook_decoder,
&ff_dca_decoder,
&ff_dolby_e_decoder,
&ff_dsd_lsbf_decoder,
&ff_dsd_msbf_decoder,
&ff_dsd_lsbf_planar_decoder,
&ff_dsd_msbf_planar_decoder,
&ff_dsicinaudio_decoder,
&ff_dss_sp_decoder,
&ff_dst_decoder,
&ff_eac3_decoder,
&ff_evrc_decoder,
&ff_ffwavesynth_decoder,
&ff_flac_decoder,
&ff_g723_1_decoder,
&ff_g729_decoder,
&ff_gsm_decoder,
&ff_gsm_ms_decoder,
&ff_iac_decoder,
&ff_ilbc_decoder,
&ff_imc_decoder,
&ff_interplay_acm_decoder,
&ff_mace3_decoder,
&ff_mace6_decoder,
&ff_metasound_decoder,
&ff_mlp_decoder,
&ff_mp1_decoder,
&ff_mp1float_decoder,
&ff_mp2_decoder,
&ff_mp2float_decoder,
&ff_mp3float_decoder,
&ff_mp3_decoder,
&ff_mp3adufloat_decoder,
&ff_mp3adu_decoder,
&ff_mp3on4float_decoder,
&ff_mp3on4_decoder,
&ff_mpc7_decoder,
&ff_mpc8_decoder,
&ff_nellymoser_decoder,
&ff_on2avc_decoder,
&ff_opus_decoder,
&ff_paf_audio_decoder,
&ff_qcelp_decoder,
&ff_qdm2_decoder,
&ff_qdmc_decoder,
&ff_ra_144_decoder,
&ff_ra_288_decoder,
&ff_ralf_decoder,
&ff_sbc_decoder,
&ff_shorten_decoder,
&ff_sipr_decoder,
&ff_smackaud_decoder,
&ff_sonic_decoder,
&ff_tak_decoder,
&ff_truehd_decoder,
&ff_truespeech_decoder,
&ff_tta_decoder,
&ff_vmdaudio_decoder,
&ff_vorbis_decoder,
&ff_wavpack_decoder,
&ff_wmalossless_decoder,
&ff_wmapro_decoder,
&ff_wmav1_decoder,
&ff_wmav2_decoder,
&ff_wmavoice_decoder,
&ff_ws_snd1_decoder,
&ff_xma1_decoder,
&ff_xma2_decoder,
&ff_pcm_alaw_decoder,
&ff_pcm_bluray_decoder,
&ff_pcm_dvd_decoder,
&ff_pcm_f16le_decoder,
&ff_pcm_f24le_decoder,
&ff_pcm_f32be_decoder,
&ff_pcm_f32le_decoder,
&ff_pcm_f64be_decoder,
&ff_pcm_f64le_decoder,
&ff_pcm_lxf_decoder,
&ff_pcm_mulaw_decoder,
&ff_pcm_s8_decoder,
&ff_pcm_s8_planar_decoder,
&ff_pcm_s16be_decoder,
&ff_pcm_s16be_planar_decoder,
&ff_pcm_s16le_decoder,
&ff_pcm_s16le_planar_decoder,
&ff_pcm_s24be_decoder,
&ff_pcm_s24daud_decoder,
&ff_pcm_s24le_decoder,
&ff_pcm_s24le_planar_decoder,
&ff_pcm_s32be_decoder,
&ff_pcm_s32le_decoder,
&ff_pcm_s32le_planar_decoder,
&ff_pcm_s64be_decoder,
&ff_pcm_s64le_decoder,
&ff_pcm_u8_decoder,
&ff_pcm_u16be_decoder,
&ff_pcm_u16le_decoder,
&ff_pcm_u24be_decoder,
&ff_pcm_u24le_decoder,
&ff_pcm_u32be_decoder,
&ff_pcm_u32le_decoder,
&ff_pcm_vidc_decoder,
&ff_pcm_zork_decoder,
&ff_gremlin_dpcm_decoder,
&ff_interplay_dpcm_decoder,
&ff_roq_dpcm_decoder,
&ff_sol_dpcm_decoder,
&ff_xan_dpcm_decoder,
&ff_adpcm_4xm_decoder,
&ff_adpcm_adx_decoder,
&ff_adpcm_afc_decoder,
&ff_adpcm_aica_decoder,
&ff_adpcm_ct_decoder,
&ff_adpcm_dtk_decoder,
&ff_adpcm_ea_decoder,
&ff_adpcm_ea_maxis_xa_decoder,
&ff_adpcm_ea_r1_decoder,
&ff_adpcm_ea_r2_decoder,
&ff_adpcm_ea_r3_decoder,
&ff_adpcm_ea_xas_decoder,
&ff_adpcm_g722_decoder,
&ff_adpcm_g726_decoder,
&ff_adpcm_g726le_decoder,
&ff_adpcm_ima_amv_decoder,
&ff_adpcm_ima_apc_decoder,
&ff_adpcm_ima_dat4_decoder,
&ff_adpcm_ima_dk3_decoder,
&ff_adpcm_ima_dk4_decoder,
&ff_adpcm_ima_ea_eacs_decoder,
&ff_adpcm_ima_ea_sead_decoder,
&ff_adpcm_ima_iss_decoder,
&ff_adpcm_ima_oki_decoder,
&ff_adpcm_ima_qt_decoder,
&ff_adpcm_ima_rad_decoder,
&ff_adpcm_ima_smjpeg_decoder,
&ff_adpcm_ima_wav_decoder,
&ff_adpcm_ima_ws_decoder,
&ff_adpcm_ms_decoder,
&ff_adpcm_mtaf_decoder,
&ff_adpcm_psx_decoder,
&ff_adpcm_sbpro_2_decoder,
&ff_adpcm_sbpro_3_decoder,
&ff_adpcm_sbpro_4_decoder,
&ff_adpcm_swf_decoder,
&ff_adpcm_thp_decoder,
&ff_adpcm_thp_le_decoder,
&ff_adpcm_vima_decoder,
&ff_adpcm_xa_decoder,
&ff_adpcm_yamaha_decoder,
&ff_ssa_decoder,
&ff_ass_decoder,
&ff_ccaption_decoder,
&ff_dvbsub_decoder,
&ff_dvdsub_decoder,
&ff_jacosub_decoder,
&ff_microdvd_decoder,
&ff_movtext_decoder,
&ff_mpl2_decoder,
&ff_pgssub_decoder,
&ff_pjs_decoder,
&ff_realtext_decoder,
&ff_sami_decoder,
&ff_srt_decoder,
&ff_stl_decoder,
&ff_subrip_decoder,
&ff_subviewer_decoder,
&ff_subviewer1_decoder,
&ff_text_decoder,
&ff_vplayer_decoder,
&ff_webvtt_decoder,
&ff_xsub_decoder,
&ff_bintext_decoder,
&ff_xbin_decoder,
&ff_idf_decoder,
NULL };

View File

@ -0,0 +1,45 @@
static const AVCodecParser * const parser_list[] = {
&ff_aac_parser,
&ff_aac_latm_parser,
&ff_ac3_parser,
&ff_adx_parser,
&ff_av1_parser,
&ff_avs2_parser,
&ff_bmp_parser,
&ff_cavsvideo_parser,
&ff_cook_parser,
&ff_dca_parser,
&ff_dirac_parser,
&ff_dnxhd_parser,
&ff_dpx_parser,
&ff_dvaudio_parser,
&ff_dvbsub_parser,
&ff_dvdsub_parser,
&ff_dvd_nav_parser,
&ff_flac_parser,
&ff_g729_parser,
&ff_gsm_parser,
&ff_h261_parser,
&ff_h263_parser,
&ff_h264_parser,
&ff_hevc_parser,
&ff_mjpeg_parser,
&ff_mlp_parser,
&ff_mpeg4video_parser,
&ff_mpegaudio_parser,
&ff_mpegvideo_parser,
&ff_opus_parser,
&ff_png_parser,
&ff_pnm_parser,
&ff_rv30_parser,
&ff_rv40_parser,
&ff_sbc_parser,
&ff_sipr_parser,
&ff_tak_parser,
&ff_vc1_parser,
&ff_vorbis_parser,
&ff_vp3_parser,
&ff_vp8_parser,
&ff_vp9_parser,
&ff_xma_parser,
NULL };

View File

@ -0,0 +1,2 @@
static const AVInputFormat * const indev_list[] = {
NULL };

View File

@ -0,0 +1,2 @@
static const AVOutputFormat * const outdev_list[] = {
NULL };

View File

@ -0,0 +1,287 @@
static const AVInputFormat * const demuxer_list[] = {
&ff_aa_demuxer,
&ff_aac_demuxer,
&ff_ac3_demuxer,
&ff_acm_demuxer,
&ff_act_demuxer,
&ff_adf_demuxer,
&ff_adp_demuxer,
&ff_ads_demuxer,
&ff_adx_demuxer,
&ff_aea_demuxer,
&ff_afc_demuxer,
&ff_aiff_demuxer,
&ff_aix_demuxer,
&ff_amr_demuxer,
&ff_amrnb_demuxer,
&ff_amrwb_demuxer,
&ff_anm_demuxer,
&ff_apc_demuxer,
&ff_ape_demuxer,
&ff_apng_demuxer,
&ff_aptx_demuxer,
&ff_aptx_hd_demuxer,
&ff_aqtitle_demuxer,
&ff_asf_demuxer,
&ff_asf_o_demuxer,
&ff_ass_demuxer,
&ff_ast_demuxer,
&ff_au_demuxer,
&ff_avi_demuxer,
&ff_avr_demuxer,
&ff_avs_demuxer,
&ff_avs2_demuxer,
&ff_bethsoftvid_demuxer,
&ff_bfi_demuxer,
&ff_bintext_demuxer,
&ff_bink_demuxer,
&ff_bit_demuxer,
&ff_bmv_demuxer,
&ff_bfstm_demuxer,
&ff_brstm_demuxer,
&ff_boa_demuxer,
&ff_c93_demuxer,
&ff_caf_demuxer,
&ff_cavsvideo_demuxer,
&ff_cdg_demuxer,
&ff_cdxl_demuxer,
&ff_cine_demuxer,
&ff_codec2_demuxer,
&ff_codec2raw_demuxer,
&ff_concat_demuxer,
&ff_data_demuxer,
&ff_daud_demuxer,
&ff_dcstr_demuxer,
&ff_dfa_demuxer,
&ff_dirac_demuxer,
&ff_dnxhd_demuxer,
&ff_dsf_demuxer,
&ff_dsicin_demuxer,
&ff_dss_demuxer,
&ff_dts_demuxer,
&ff_dtshd_demuxer,
&ff_dv_demuxer,
&ff_dvbsub_demuxer,
&ff_dvbtxt_demuxer,
&ff_dxa_demuxer,
&ff_ea_demuxer,
&ff_ea_cdata_demuxer,
&ff_eac3_demuxer,
&ff_epaf_demuxer,
&ff_ffmetadata_demuxer,
&ff_filmstrip_demuxer,
&ff_fits_demuxer,
&ff_flac_demuxer,
&ff_flic_demuxer,
&ff_flv_demuxer,
&ff_live_flv_demuxer,
&ff_fourxm_demuxer,
&ff_frm_demuxer,
&ff_fsb_demuxer,
&ff_g722_demuxer,
&ff_g723_1_demuxer,
&ff_g726_demuxer,
&ff_g726le_demuxer,
&ff_g729_demuxer,
&ff_gdv_demuxer,
&ff_genh_demuxer,
&ff_gif_demuxer,
&ff_gsm_demuxer,
&ff_gxf_demuxer,
&ff_h261_demuxer,
&ff_h263_demuxer,
&ff_h264_demuxer,
&ff_hevc_demuxer,
&ff_hls_demuxer,
&ff_hnm_demuxer,
&ff_ico_demuxer,
&ff_idcin_demuxer,
&ff_idf_demuxer,
&ff_iff_demuxer,
&ff_ilbc_demuxer,
&ff_image2_demuxer,
&ff_image2pipe_demuxer,
&ff_image2_alias_pix_demuxer,
&ff_image2_brender_pix_demuxer,
&ff_ingenient_demuxer,
&ff_ipmovie_demuxer,
&ff_ircam_demuxer,
&ff_iss_demuxer,
&ff_iv8_demuxer,
&ff_ivf_demuxer,
&ff_ivr_demuxer,
&ff_jacosub_demuxer,
&ff_jv_demuxer,
&ff_lmlm4_demuxer,
&ff_loas_demuxer,
&ff_lrc_demuxer,
&ff_lvf_demuxer,
&ff_lxf_demuxer,
&ff_m4v_demuxer,
&ff_matroska_demuxer,
&ff_mgsts_demuxer,
&ff_microdvd_demuxer,
&ff_mjpeg_demuxer,
&ff_mjpeg_2000_demuxer,
&ff_mlp_demuxer,
&ff_mlv_demuxer,
&ff_mm_demuxer,
&ff_mmf_demuxer,
&ff_mov_demuxer,
&ff_mp3_demuxer,
&ff_mpc_demuxer,
&ff_mpc8_demuxer,
&ff_mpegps_demuxer,
&ff_mpegts_demuxer,
&ff_mpegtsraw_demuxer,
&ff_mpegvideo_demuxer,
&ff_mpjpeg_demuxer,
&ff_mpl2_demuxer,
&ff_mpsub_demuxer,
&ff_msf_demuxer,
&ff_msnwc_tcp_demuxer,
&ff_mtaf_demuxer,
&ff_mtv_demuxer,
&ff_musx_demuxer,
&ff_mv_demuxer,
&ff_mvi_demuxer,
&ff_mxf_demuxer,
&ff_mxg_demuxer,
&ff_nc_demuxer,
&ff_nistsphere_demuxer,
&ff_nsp_demuxer,
&ff_nsv_demuxer,
&ff_nut_demuxer,
&ff_nuv_demuxer,
&ff_ogg_demuxer,
&ff_oma_demuxer,
&ff_paf_demuxer,
&ff_pcm_alaw_demuxer,
&ff_pcm_mulaw_demuxer,
&ff_pcm_vidc_demuxer,
&ff_pcm_f64be_demuxer,
&ff_pcm_f64le_demuxer,
&ff_pcm_f32be_demuxer,
&ff_pcm_f32le_demuxer,
&ff_pcm_s32be_demuxer,
&ff_pcm_s32le_demuxer,
&ff_pcm_s24be_demuxer,
&ff_pcm_s24le_demuxer,
&ff_pcm_s16be_demuxer,
&ff_pcm_s16le_demuxer,
&ff_pcm_s8_demuxer,
&ff_pcm_u32be_demuxer,
&ff_pcm_u32le_demuxer,
&ff_pcm_u24be_demuxer,
&ff_pcm_u24le_demuxer,
&ff_pcm_u16be_demuxer,
&ff_pcm_u16le_demuxer,
&ff_pcm_u8_demuxer,
&ff_pjs_demuxer,
&ff_pmp_demuxer,
&ff_pva_demuxer,
&ff_pvf_demuxer,
&ff_qcp_demuxer,
&ff_r3d_demuxer,
&ff_rawvideo_demuxer,
&ff_realtext_demuxer,
&ff_redspark_demuxer,
&ff_rl2_demuxer,
&ff_rm_demuxer,
&ff_roq_demuxer,
&ff_rpl_demuxer,
&ff_rsd_demuxer,
&ff_rso_demuxer,
&ff_s337m_demuxer,
&ff_sami_demuxer,
&ff_sbc_demuxer,
&ff_sbg_demuxer,
&ff_scc_demuxer,
&ff_sdr2_demuxer,
&ff_sds_demuxer,
&ff_sdx_demuxer,
&ff_segafilm_demuxer,
&ff_ser_demuxer,
&ff_shorten_demuxer,
&ff_siff_demuxer,
&ff_sln_demuxer,
&ff_smacker_demuxer,
&ff_smjpeg_demuxer,
&ff_smush_demuxer,
&ff_sol_demuxer,
&ff_sox_demuxer,
&ff_spdif_demuxer,
&ff_srt_demuxer,
&ff_str_demuxer,
&ff_stl_demuxer,
&ff_subviewer1_demuxer,
&ff_subviewer_demuxer,
&ff_sup_demuxer,
&ff_svag_demuxer,
&ff_swf_demuxer,
&ff_tak_demuxer,
&ff_tedcaptions_demuxer,
&ff_thp_demuxer,
&ff_threedostr_demuxer,
&ff_tiertexseq_demuxer,
&ff_tmv_demuxer,
&ff_truehd_demuxer,
&ff_tta_demuxer,
&ff_txd_demuxer,
&ff_tty_demuxer,
&ff_ty_demuxer,
&ff_v210_demuxer,
&ff_v210x_demuxer,
&ff_vag_demuxer,
&ff_vc1_demuxer,
&ff_vc1t_demuxer,
&ff_vivo_demuxer,
&ff_vmd_demuxer,
&ff_vobsub_demuxer,
&ff_voc_demuxer,
&ff_vpk_demuxer,
&ff_vplayer_demuxer,
&ff_vqf_demuxer,
&ff_w64_demuxer,
&ff_wav_demuxer,
&ff_wc3_demuxer,
&ff_webm_dash_manifest_demuxer,
&ff_webvtt_demuxer,
&ff_wsaud_demuxer,
&ff_wsd_demuxer,
&ff_wsvqa_demuxer,
&ff_wtv_demuxer,
&ff_wve_demuxer,
&ff_wv_demuxer,
&ff_xa_demuxer,
&ff_xbin_demuxer,
&ff_xmv_demuxer,
&ff_xvag_demuxer,
&ff_xwma_demuxer,
&ff_yop_demuxer,
&ff_yuv4mpegpipe_demuxer,
&ff_image_bmp_pipe_demuxer,
&ff_image_dds_pipe_demuxer,
&ff_image_dpx_pipe_demuxer,
&ff_image_exr_pipe_demuxer,
&ff_image_j2k_pipe_demuxer,
&ff_image_jpeg_pipe_demuxer,
&ff_image_jpegls_pipe_demuxer,
&ff_image_pam_pipe_demuxer,
&ff_image_pbm_pipe_demuxer,
&ff_image_pcx_pipe_demuxer,
&ff_image_pgmyuv_pipe_demuxer,
&ff_image_pgm_pipe_demuxer,
&ff_image_pictor_pipe_demuxer,
&ff_image_png_pipe_demuxer,
&ff_image_ppm_pipe_demuxer,
&ff_image_psd_pipe_demuxer,
&ff_image_qdraw_pipe_demuxer,
&ff_image_sgi_pipe_demuxer,
&ff_image_svg_pipe_demuxer,
&ff_image_sunrast_pipe_demuxer,
&ff_image_tiff_pipe_demuxer,
&ff_image_webp_pipe_demuxer,
&ff_image_xpm_pipe_demuxer,
&ff_image_xwd_pipe_demuxer,
NULL };

View File

@ -0,0 +1,2 @@
static const AVOutputFormat * const muxer_list[] = {
NULL };

View File

@ -0,0 +1,14 @@
static const URLProtocol * const url_protocols[] = {
&ff_async_protocol,
&ff_cache_protocol,
&ff_concat_protocol,
&ff_crypto_protocol,
&ff_data_protocol,
&ff_file_protocol,
&ff_hls_protocol,
&ff_md5_protocol,
&ff_pipe_protocol,
&ff_prompeg_protocol,
&ff_subfile_protocol,
&ff_tee_protocol,
NULL };

View File

@ -0,0 +1,6 @@
/* Generated by ffmpeg configure */
#ifndef AVUTIL_AVCONFIG_H
#define AVUTIL_AVCONFIG_H
#define AV_HAVE_BIGENDIAN 0
#define AV_HAVE_FAST_UNALIGNED 1
#endif /* AVUTIL_AVCONFIG_H */

View File

@ -0,0 +1,4 @@
#ifndef AVUTIL_FFVERSION_H
#define AVUTIL_FFVERSION_H
#define FFMPEG_VERSION "N-74177-g802e512"
#endif /* AVUTIL_FFVERSION_H */

96
build/ffms2/ffms2.vcxproj Normal file
View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{AA137613-96A1-4388-8905-71345B4F8F87}</ProjectGuid>
<RootNamespace>ffms2</RootNamespace>
</PropertyGroup>
<!-- Aegisub project configuration -->
<PropertyGroup Label="AegisubConfiguration">
<AegisubProjectType>lib</AegisubProjectType>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>
$(FfmsSrcDir)\include;
%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
<PreprocessorDefinitions>
WITH_SWRESAMPLE;
FFMS_EXPORTS;
FFMS_STATIC;
_CRT_SECURE_NO_WARNINGS;
_CRT_NONSTDC_NO_DEPRECATE;
_SCL_SECURE_NO_WARNINGS;
__STDC_CONSTANT_MACROS;
%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<DisableSpecificWarnings>4250;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>$(AegisubLibraryDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<InstallHeader>
<HeaderRoot>$(FfmsSrcDir)\include</HeaderRoot>
</InstallHeader>
</ItemDefinitionGroup>
<!-- Source files -->
<ItemGroup>
<InstallHeader Include="$(FfmsSrcDir)\include\ffms.h" />
<InstallHeader Include="$(FfmsSrcDir)\include\ffmscompat.h" />
</ItemGroup>
<ItemGroup>
<None Include="$(FfmsSrcDir)\src\avisynth\avisynth.cpp" />
<None Include="$(FfmsSrcDir)\src\avisynth\avssources.cpp" />
<None Include="$(FfmsSrcDir)\src\avisynth\avsutils.cpp" />
<None Include="$(FfmsSrcDir)\src\avisynth\ffswscale.cpp" />
<None Include="$(FfmsSrcDir)\src\vapoursynth\vapoursource.cpp" />
<None Include="$(FfmsSrcDir)\src\vapoursynth\vapoursynth.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(FfmsSrcDir)\src\core\audiosource.cpp" />
<ClCompile Include="$(FfmsSrcDir)\src\core\ffms.cpp" />
<ClCompile Include="$(FfmsSrcDir)\src\core\filehandle.cpp" />
<ClCompile Include="$(FfmsSrcDir)\src\core\indexing.cpp" />
<ClCompile Include="$(FfmsSrcDir)\src\core\track.cpp" />
<ClCompile Include="$(FfmsSrcDir)\src\core\utils.cpp" />
<ClCompile Include="$(FfmsSrcDir)\src\core\videosource.cpp" />
<ClCompile Include="$(FfmsSrcDir)\src\core\videoutils.cpp" />
<ClCompile Include="$(FfmsSrcDir)\src\core\zipfile.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(FfmsSrcDir)\include\ffms.h" />
<ClInclude Include="$(FfmsSrcDir)\include\ffmscompat.h" />
<ClInclude Include="$(FfmsSrcDir)\src\avisynth\avisynth.h" />
<ClInclude Include="$(FfmsSrcDir)\src\avisynth\avssources.h" />
<ClInclude Include="$(FfmsSrcDir)\src\avisynth\avsutils.h" />
<ClInclude Include="$(FfmsSrcDir)\src\avisynth\ffswscale.h" />
<ClInclude Include="$(FfmsSrcDir)\src\core\audiosource.h" />
<ClInclude Include="$(FfmsSrcDir)\src\core\filehandle.h" />
<ClInclude Include="$(FfmsSrcDir)\src\core\indexing.h" />
<ClInclude Include="$(FfmsSrcDir)\src\core\track.h" />
<ClInclude Include="$(FfmsSrcDir)\src\core\utils.h" />
<ClInclude Include="$(FfmsSrcDir)\src\core\videosource.h" />
<ClInclude Include="$(FfmsSrcDir)\src\core\videoutils.h" />
<ClInclude Include="$(FfmsSrcDir)\src\core\zipfile.h" />
<ClInclude Include="$(FfmsSrcDir)\src\vapoursynth\VapourSynth.h" />
<ClInclude Include="$(FfmsSrcDir)\src\vapoursynth\vapoursource.h" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ffmpeg\ffmpeg.vcxproj">
<Project>{f934ab7b-186b-4e96-b20c-a58c38c1b819}</Project>
</ProjectReference>
<ProjectReference Include="..\zlib\zlib.vcxproj">
<Project>{10f22a5a-dd9e-44a1-ba2e-2a9a7c78b0ee}</Project>
</ProjectReference>
</ItemGroup>
</Project>

View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Audio">
<UniqueIdentifier>{ed366ac0-ef41-4c15-b40e-4db3c76b17db}</UniqueIdentifier>
</Filter>
<Filter Include="Indexing">
<UniqueIdentifier>{a5f150b5-ae8e-448c-a724-bbdca106ea10}</UniqueIdentifier>
</Filter>
<Filter Include="Video">
<UniqueIdentifier>{14a03221-39fc-4803-b677-e90f2290666b}</UniqueIdentifier>
</Filter>
<Filter Include="API">
<UniqueIdentifier>{132a91ed-71ff-4574-aba8-09d496869832}</UniqueIdentifier>
</Filter>
<Filter Include="Utils">
<UniqueIdentifier>{7e197647-eb8c-44bc-b6d8-6368b242478c}</UniqueIdentifier>
</Filter>
<Filter Include="Avisynth">
<UniqueIdentifier>{fab6c2c7-eeae-4009-a932-fc079402db63}</UniqueIdentifier>
</Filter>
<Filter Include="VapourSynth">
<UniqueIdentifier>{8a87437e-fe04-4b74-a917-f8c108247e3f}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(FfmsSrcDir)\src\core\audiosource.cpp">
<Filter>Audio</Filter>
</ClCompile>
<ClCompile Include="$(FfmsSrcDir)\src\core\indexing.cpp">
<Filter>Indexing</Filter>
</ClCompile>
<ClCompile Include="$(FfmsSrcDir)\src\core\videosource.cpp">
<Filter>Video</Filter>
</ClCompile>
<ClCompile Include="$(FfmsSrcDir)\src\core\ffms.cpp">
<Filter>API</Filter>
</ClCompile>
<ClCompile Include="$(FfmsSrcDir)\src\core\utils.cpp">
<Filter>Utils</Filter>
</ClCompile>
<None Include="$(FfmsSrcDir)\src\avisynth\avisynth.cpp">
<Filter>Avisynth</Filter>
</None>
<None Include="$(FfmsSrcDir)\src\avisynth\avssources.cpp">
<Filter>Avisynth</Filter>
</None>
<None Include="$(FfmsSrcDir)\src\avisynth\avsutils.cpp">
<Filter>Avisynth</Filter>
</None>
<None Include="$(FfmsSrcDir)\src\avisynth\ffswscale.cpp">
<Filter>Avisynth</Filter>
</None>
<ClCompile Include="$(FfmsSrcDir)\src\core\videoutils.cpp">
<Filter>Video</Filter>
</ClCompile>
<None Include="$(FfmsSrcDir)\src\vapoursynth\vapoursource.cpp">
<Filter>VapourSynth</Filter>
</None>
<None Include="$(FfmsSrcDir)\src\vapoursynth\vapoursynth.cpp">
<Filter>VapourSynth</Filter>
</None>
<ClCompile Include="$(FfmsSrcDir)\src\core\matroskareader.cpp">
<Filter>Utils</Filter>
</ClCompile>
<ClCompile Include="$(FfmsSrcDir)\src\core\filehandle.cpp">
<Filter>Utils</Filter>
</ClCompile>
<ClCompile Include="$(FfmsSrcDir)\src\core\zipfile.cpp">
<Filter>Utils</Filter>
</ClCompile>
<ClCompile Include="$(FfmsSrcDir)\src\core\track.cpp">
<Filter>Indexing</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(FfmsSrcDir)\src\core\audiosource.h">
<Filter>Audio</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\core\indexing.h">
<Filter>Indexing</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\core\videosource.h">
<Filter>Video</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\include\ffms.h">
<Filter>API</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\include\ffmscompat.h">
<Filter>Utils</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\core\utils.h">
<Filter>Utils</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\avisynth\avisynth.h">
<Filter>Avisynth</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\avisynth\avssources.h">
<Filter>Avisynth</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\avisynth\avsutils.h">
<Filter>Avisynth</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\avisynth\ffswscale.h">
<Filter>Avisynth</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\core\videoutils.h">
<Filter>Video</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\vapoursynth\vapoursource.h">
<Filter>VapourSynth</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\vapoursynth\VapourSynth.h">
<Filter>VapourSynth</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\core\filehandle.h">
<Filter>Utils</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\core\zipfile.h">
<Filter>Utils</Filter>
</ClInclude>
<ClInclude Include="$(FfmsSrcDir)\src\core\track.h">
<Filter>Indexing</Filter>
</ClInclude>
</ItemGroup>
</Project>

393
build/fftw/config.h Executable file
View File

@ -0,0 +1,393 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to compile in long-double precision. */
#undef BENCHFFT_LDOUBLE
/* Define to compile in quad precision. */
#undef BENCHFFT_QUAD
/* Define to compile in single precision. */
#undef BENCHFFT_SINGLE
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems.
*/
#undef CRAY_STACKSEG_END
/* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA
/* Define to disable Fortran wrappers. */
#define DISABLE_FORTRAN 1
/* Define to dummy `main' function (if any) required to link to the Fortran
libraries. */
#undef F77_DUMMY_MAIN
/* Define to a macro mangling the given C identifier (in lower and upper
case), which must not contain underscores, for linking with Fortran. */
#undef F77_FUNC
/* As F77_FUNC, but for C identifiers containing underscores. */
#undef F77_FUNC_
/* Define if F77_FUNC and F77_FUNC_ are equivalent. */
#undef F77_FUNC_EQUIV
/* Define if F77 and FC dummy `main' functions are identical. */
#undef FC_DUMMY_MAIN_EQ_F77
/* C compiler name and flags */
#define FFTW_CC "cl"
/* Define to enable extra FFTW debugging code. */
#undef FFTW_DEBUG
/* Define to enable alignment debugging hacks. */
#undef FFTW_DEBUG_ALIGNMENT
/* Define to enable debugging malloc. */
#undef FFTW_DEBUG_MALLOC
/* Define to enable the use of alloca(). */
#undef FFTW_ENABLE_ALLOCA
/* Define to compile in long-double precision. */
#undef FFTW_LDOUBLE
/* Define to compile in quad precision. */
#undef FFTW_QUAD
/* Define to enable pseudorandom estimate planning for debugging. */
#undef FFTW_RANDOM_ESTIMATOR
/* Define to compile in single precision. */
#undef FFTW_SINGLE
/* Define to 1 if you have the `abort' function. */
#define HAVE_ABORT 1
/* Define to 1 if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
#undef HAVE_ALLOCA_H
/* Define to enable Altivec optimizations. */
#undef HAVE_ALTIVEC
/* Define to 1 if you have the <altivec.h> header file. */
#undef HAVE_ALTIVEC_H
/* Define to enable AVX optimizations. */
#undef HAVE_AVX
/* Define to 1 if you have the `BSDgettimeofday' function. */
#undef HAVE_BSDGETTIMEOFDAY
/* Define to 1 if you have the `clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME
/* Define to 1 if you have the `cosl' function. */
#define HAVE_COSL 1
/* Define to 1 if you have the <c_asm.h> header file. */
#undef HAVE_C_ASM_H
/* Define to 1 if you have the declaration of `cosl', and to 0 if you don't.
*/
#define HAVE_DECL_COSL 1
/* Define to 1 if you have the declaration of `cosq', and to 0 if you don't. */
#define HAVE_DECL_COSQ 0
/* Define to 1 if you have the declaration of `drand48', and to 0 if you don't. */
#define HAVE_DECL_DRAND48 0
/* Define to 1 if you have the declaration of `memalign', and to 0 if you don't. */
#define HAVE_DECL_MEMALIGN 0
/* Define to 1 if you have the declaration of `posix_memalign', and to 0 if you don't. */
#define HAVE_DECL_POSIX_MEMALIGN 0
/* Define to 1 if you have the declaration of `sinl', and to 0 if you don't. */
#define HAVE_DECL_SINL 1
/* Define to 1 if you have the declaration of `sinq', and to 0 if you don't.
*/
#define HAVE_DECL_SINQ 0
/* Define to 1 if you have the declaration of `srand48', and to 0 if you
don't. */
#define HAVE_DECL_SRAND48 0
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#undef HAVE_DOPRNT
/* Define to 1 if you have the `drand48' function. */
#undef HAVE_DRAND48
/* Define if you have a machine with fused multiply-add */
#undef HAVE_FMA
/* Define to 1 if you have the `gethrtime' function. */
#undef HAVE_GETHRTIME
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
/* Define to 1 if hrtime_t is defined in <sys/time.h> */
#undef HAVE_HRTIME_T
/* Define to 1 if you have the <intrinsics.h> header file. */
#undef HAVE_INTRINSICS_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define if the isnan() function/macro is available. */
#undef HAVE_ISNAN
/* Define to 1 if you have the <libintl.h> header file. */
#undef HAVE_LIBINTL_H
/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM
/* Define to 1 if you have the `quadmath' library (-lquadmath). */
#undef HAVE_LIBQUADMATH
/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1
/* Define to 1 if the compiler supports `long double' */
#define HAVE_LONG_DOUBLE 1
/* Define to 1 if you have the `mach_absolute_time' function. */
#undef HAVE_MACH_ABSOLUTE_TIME
/* Define to 1 if you have the <mach/mach_time.h> header file. */
#undef HAVE_MACH_MACH_TIME_H
/* Define to 1 if you have the <malloc.h> header file. */
#define HAVE_MALLOC_H 1
/* Define to 1 if you have the `memalign' function. */
#undef HAVE_MEMALIGN
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `memset' function. */
#define HAVE_MEMSET 1
/* Define to enable MIPS paired-single optimizations. */
#undef HAVE_MIPS_PS
/* Define to enable use of MIPS ZBus cycle-counter. */
#undef HAVE_MIPS_ZBUS_TIMER
/* Define if you have the MPI library. */
#undef HAVE_MPI
/* Define if OpenMP is enabled */
#define HAVE_OPENMP 1
/* Define to 1 if you have the `posix_memalign' function. */
#undef HAVE_POSIX_MEMALIGN
/* Define if you have POSIX threads libraries and header files. */
#undef HAVE_PTHREAD
/* Define to 1 if you have the `read_real_time' function. */
#undef HAVE_READ_REAL_TIME
/* Define to 1 if you have the `sinl' function. */
#define HAVE_SINL 1
/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF
/* Define to 1 if you have the `sqrt' function. */
#define HAVE_SQRT 1
/* Define to enable SSE/SSE2 optimizations. */
#define HAVE_SSE2 1
/* Define to 1 if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `sysctl' function. */
#undef HAVE_SYSCTL
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/sysctl.h> header file. */
#undef HAVE_SYS_SYSCTL_H
/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the `tanl' function. */
#define HAVE_TANL 1
/* Define if we have a threads library. */
#undef HAVE_THREADS
/* Define to 1 if you have the `time_base_to_time' function. */
#undef HAVE_TIME_BASE_TO_TIME
/* Define to 1 if the system has the type `uintptr_t'. */
#define HAVE_UINTPTR_T 1
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if you have the `vprintf' function. */
#define HAVE_VPRINTF 1
/* Define to 1 if you have the `_mm_free' function. */
#undef HAVE__MM_FREE
/* Define to 1 if you have the `_mm_malloc' function. */
#undef HAVE__MM_MALLOC
/* Define if you have the UNICOS _rtc() intrinsic. */
#undef HAVE__RTC
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
#undef NO_MINUS_C_MINUS_O
/* Name of package */
#define PACKAGE "fftw"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "fftw@fftw.org"
/* Define to the full name of this package. */
#define PACKAGE_NAME "fftw"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "fftw-3.3"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "fftw"
/* Define to the home page for this package. */
#define PACKAGE_URL "http://www.fftw.org"
/* Define to the version of this package. */
#define PACKAGE_VERSION "3.3"
/* Define to necessary symbol if this constant uses a non-standard name on
your system. */
#undef PTHREAD_CREATE_JOINABLE
/* The size of `double', as computed by sizeof. */
#define SIZEOF_DOUBLE 8
/* The size of `fftw_r2r_kind', as computed by sizeof. */
#undef SIZEOF_FFTW_R2R_KIND
/* The size of `float', as computed by sizeof. */
#define SIZEOF_FLOAT 4
/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4
/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4
/* The size of `long long', as computed by sizeof. */
#define SIZEOF_LONG_LONG 8
/* The size of `MPI_Fint', as computed by sizeof. */
#undef SIZEOF_MPI_FINT
/* The size of `ptrdiff_t', as computed by sizeof. */
#define SIZEOF_PTRDIFF_T 4
/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4
/* The size of `unsigned int', as computed by sizeof. */
#define SIZEOF_UNSIGNED_INT 4
/* The size of `unsigned long', as computed by sizeof. */
#define SIZEOF_UNSIGNED_LONG 4
/* The size of `unsigned long long', as computed by sizeof. */
#define SIZEOF_UNSIGNED_LONG_LONG 8
/* The size of `void *', as computed by sizeof. */
#define SIZEOF_VOID_P 4
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at runtime.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Define if we have and are using POSIX threads. */
#undef USING_POSIX_THREADS
/* Version number of package */
#define VERSION "3.3"
/* Use common Windows Fortran mangling styles for the Fortran interfaces. */
#undef WINDOWS_F77_MANGLING
/* Include g77-compatible wrappers in addition to any other Fortran wrappers.
*/
#undef WITH_G77_WRAPPERS
/* Use our own aligned malloc routine; mainly helpful for Windows systems
lacking aligned allocation system-library routines. */
#define WITH_OUR_MALLOC 1
/* Use low-precision timers, making planner very slow */
#undef WITH_SLOW_TIMER
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#define inline __inline
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

677
build/fftw/fftw.vcxproj Normal file
View File

@ -0,0 +1,677 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{EA3DCC95-2423-4EA0-A508-7A427B4C0594}</ProjectGuid>
<RootNamespace>fftw</RootNamespace>
</PropertyGroup>
<!-- Aegisub project configuration -->
<PropertyGroup Label="AegisubConfiguration">
<AegisubProjectType>lib</AegisubProjectType>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>
$(FftwSrcDir)\;
$(FftwSrcDir)\api;
$(FftwSrcDir)\kernel;
$(FftwSrcDir)\dft;
$(FftwSrcDir)\dft\simd;
$(FftwSrcDir)\dft\scalar;
$(FftwSrcDir)\rdft;
$(FftwSrcDir)\rdft\simd;
$(FftwSrcDir)\rdft\scalar;
$(FftwSrcDir)\reodft;
$(FftwSrcDir)\simd-support;
$(FftwSrcDir)\threads;
$(MSBuildThisFileDirectory);
%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<OpenMPSupport>true</OpenMPSupport>
<StructMemberAlignment>Default</StructMemberAlignment>
<InputRelativeSourceDir>$(FftwSrcDir)</InputRelativeSourceDir>
</ClCompile>
<InstallHeader>
<HeaderRoot>$(FftwSrcDir)\api</HeaderRoot>
</InstallHeader>
</ItemDefinitionGroup>
<!-- Source files -->
<ItemGroup>
<InstallHeader Include="$(FftwSrcDir)\api\fftw3.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="config.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(FftwSrcDir)\api\apiplan.c" />
<ClCompile Include="$(FftwSrcDir)\api\configure.c" />
<ClCompile Include="$(FftwSrcDir)\api\execute-dft-c2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\execute-dft-r2c.c" />
<ClCompile Include="$(FftwSrcDir)\api\execute-dft.c" />
<ClCompile Include="$(FftwSrcDir)\api\execute-r2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\execute-split-dft-c2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\execute-split-dft-r2c.c" />
<ClCompile Include="$(FftwSrcDir)\api\execute-split-dft.c" />
<ClCompile Include="$(FftwSrcDir)\api\execute.c" />
<ClCompile Include="$(FftwSrcDir)\api\export-wisdom-to-file.c" />
<ClCompile Include="$(FftwSrcDir)\api\export-wisdom-to-string.c" />
<ClCompile Include="$(FftwSrcDir)\api\export-wisdom.c" />
<ClCompile Include="$(FftwSrcDir)\api\f77api.c" />
<ClCompile Include="$(FftwSrcDir)\api\flops.c" />
<ClCompile Include="$(FftwSrcDir)\api\forget-wisdom.c" />
<ClCompile Include="$(FftwSrcDir)\api\import-system-wisdom.c" />
<ClCompile Include="$(FftwSrcDir)\api\import-wisdom-from-file.c" />
<ClCompile Include="$(FftwSrcDir)\api\import-wisdom-from-string.c" />
<ClCompile Include="$(FftwSrcDir)\api\import-wisdom.c" />
<ClCompile Include="$(FftwSrcDir)\api\malloc.c" />
<ClCompile Include="$(FftwSrcDir)\api\map-r2r-kind.c" />
<ClCompile Include="$(FftwSrcDir)\api\mapflags.c" />
<ClCompile Include="$(FftwSrcDir)\api\mkprinter-file.c" />
<ClCompile Include="$(FftwSrcDir)\api\mktensor-iodims.c" />
<ClCompile Include="$(FftwSrcDir)\api\mktensor-iodims64.c" />
<ClCompile Include="$(FftwSrcDir)\api\mktensor-rowmajor.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-1d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-2d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-3d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-c2r-1d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-c2r-2d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-c2r-3d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-c2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-r2c-1d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-r2c-2d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-r2c-3d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft-r2c.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-dft.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru-dft-c2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru-dft-r2c.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru-dft.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru-r2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru-split-dft-c2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru-split-dft-r2c.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru-split-dft.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru64-dft-c2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru64-dft-r2c.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru64-dft.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru64-r2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru64-split-dft-c2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru64-split-dft-r2c.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-guru64-split-dft.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-many-dft-c2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-many-dft-r2c.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-many-dft.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-many-r2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-r2r-1d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-r2r-2d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-r2r-3d.c" />
<ClCompile Include="$(FftwSrcDir)\api\plan-r2r.c" />
<ClCompile Include="$(FftwSrcDir)\api\print-plan.c" />
<ClCompile Include="$(FftwSrcDir)\api\rdft2-pad.c" />
<ClCompile Include="$(FftwSrcDir)\api\the-planner.c" />
<ClCompile Include="$(FftwSrcDir)\api\version.c" />
<ClCompile Include="$(FftwSrcDir)\dft\bluestein.c" />
<ClCompile Include="$(FftwSrcDir)\dft\buffered.c" />
<ClCompile Include="$(FftwSrcDir)\dft\conf.c" />
<ClCompile Include="$(FftwSrcDir)\dft\ct.c" />
<ClCompile Include="$(FftwSrcDir)\dft\dftw-direct.c" />
<ClCompile Include="$(FftwSrcDir)\dft\dftw-directsq.c" />
<ClCompile Include="$(FftwSrcDir)\dft\dftw-generic.c" />
<ClCompile Include="$(FftwSrcDir)\dft\dftw-genericbuf.c" />
<ClCompile Include="$(FftwSrcDir)\dft\direct.c" />
<ClCompile Include="$(FftwSrcDir)\dft\generic.c" />
<ClCompile Include="$(FftwSrcDir)\dft\indirect-transpose.c" />
<ClCompile Include="$(FftwSrcDir)\dft\indirect.c" />
<ClCompile Include="$(FftwSrcDir)\dft\kdft-dif.c" />
<ClCompile Include="$(FftwSrcDir)\dft\kdft-difsq.c" />
<ClCompile Include="$(FftwSrcDir)\dft\kdft-dit.c" />
<ClCompile Include="$(FftwSrcDir)\dft\kdft.c" />
<ClCompile Include="$(FftwSrcDir)\dft\nop.c" />
<ClCompile Include="$(FftwSrcDir)\dft\plan.c" />
<ClCompile Include="$(FftwSrcDir)\dft\problem.c" />
<ClCompile Include="$(FftwSrcDir)\dft\rader.c" />
<ClCompile Include="$(FftwSrcDir)\dft\rank-geq2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\codlist.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_11.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_12.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_13.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_14.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_15.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_3.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_7.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\n1_9.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\q1_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\q1_3.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\q1_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\q1_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\q1_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\q1_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_12.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_15.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_3.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_7.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t1_9.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t2_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t2_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t2_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t2_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t2_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t2_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t2_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t2_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\codelets\t2_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\n.c" />
<ClCompile Include="$(FftwSrcDir)\dft\scalar\t.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\codlist.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\genus.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_11.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_12.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_128.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_13.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_14.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_15.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_3.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_7.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1bv_9.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_11.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_12.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_128.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_13.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_14.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_15.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_3.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_7.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n1fv_9.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_12.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_14.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2bv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_12.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_14.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2fv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2sv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2sv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2sv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2sv_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\n2sv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\q1bv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\q1bv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\q1bv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\q1bv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\q1fv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\q1fv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\q1fv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\q1fv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1buv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1buv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1buv_3.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1buv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1buv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1buv_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1buv_7.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1buv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1buv_9.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_12.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_15.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_3.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_7.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1bv_9.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fuv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fuv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fuv_3.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fuv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fuv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fuv_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fuv_7.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fuv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fuv_9.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_12.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_15.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_3.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_6.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_7.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1fv_9.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1sv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1sv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1sv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1sv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t1sv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2bv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_2.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_64.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2fv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2sv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2sv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2sv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t2sv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3bv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3bv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3bv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3bv_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3bv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3bv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3bv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3bv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3fv_10.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3fv_16.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3fv_20.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3fv_25.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3fv_32.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3fv_4.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3fv_5.c" />
<ClCompile Include="$(FftwSrcDir)\dft\simd\sse2\t3fv_8.c" />
<ClCompile Include="$(FftwSrcDir)\dft\solve.c" />
<ClCompile Include="$(FftwSrcDir)\dft\vrank-geq1.c" />
<ClCompile Include="$(FftwSrcDir)\dft\zero.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\align.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\alloc.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\assert.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\awake.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\buffered.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\cpy1d.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\cpy2d-pair.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\cpy2d.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\ct.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\debug.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\extract-reim.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\hash.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\iabs.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\kalloc.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\md5-1.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\md5.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\minmax.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\ops.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\pickdim.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\plan.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\planner.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\primes.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\print.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\problem.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\rader.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\scan.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\solver.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\solvtab.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\stride.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tensor.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tensor1.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tensor2.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tensor3.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tensor4.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tensor5.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tensor7.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tensor8.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tensor9.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\tile2d.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\timer.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\transpose.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\trig.c" />
<ClCompile Include="$(FftwSrcDir)\kernel\twiddle.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\buffered.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\buffered2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\conf.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\ct-hc2c-direct.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\ct-hc2c.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\dft-r2hc.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\dht-r2hc.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\dht-rader.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\direct-r2c.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\direct-r2r.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\direct2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\generic.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\hc2hc-direct.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\hc2hc-generic.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\hc2hc.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\indirect.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\khc2c.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\khc2hc.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\kr2c.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\kr2r.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\nop.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\nop2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\plan.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\plan2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\problem.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\problem2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\rank-geq2-rdft2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\rank-geq2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\rank0-rdft2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\rank0.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\rdft-dht.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\rdft2-inplace-strides.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\rdft2-rdft.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\rdft2-strides.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\rdft2-tensor-max-index.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\hc2c.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\hfb.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2c.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\codlist.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb2_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb2_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb2_25.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb2_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb2_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb2_5.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb2_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_15.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_25.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_3.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_5.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_64.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_7.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hb_9.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb2_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb2_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb2_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb2_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb2_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft2_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft2_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft2_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft2_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft2_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cbdft_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\hc2cb_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_15.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_25.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_3.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_5.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_64.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_7.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cbIII_9.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_11.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_128.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_13.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_14.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_15.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_25.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_3.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_5.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_64.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_7.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cb\r2cb_9.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\codlist.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf2_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf2_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf2_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf2_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf2_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft2_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft2_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft2_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft2_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft2_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cfdft_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hc2cf_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf2_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf2_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf2_25.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf2_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf2_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf2_5.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf2_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_15.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_25.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_3.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_5.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_64.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_7.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\hf_9.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_15.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_25.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_3.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_5.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_64.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_7.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cfII_9.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_11.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_128.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_13.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_14.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_15.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_25.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_3.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_5.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_64.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_7.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2cf\r2cf_9.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2r.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2r\codlist.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2r\e01_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\scalar\r2r\e10_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\codlist.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\genus.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cbdftv_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cbdftv_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cbdftv_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cbdftv_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cbdftv_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cbdftv_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cbdftv_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cbdftv_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cbdftv_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cfdftv_10.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cfdftv_12.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cfdftv_16.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cfdftv_2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cfdftv_20.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cfdftv_32.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cfdftv_4.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cfdftv_6.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\simd\sse2\hc2cfdftv_8.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\solve.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\solve2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\vrank-geq1-rdft2.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\vrank-geq1.c" />
<ClCompile Include="$(FftwSrcDir)\rdft\vrank3-transpose.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\conf.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\redft00e-r2hc-pad.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\redft00e-r2hc.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\reodft00e-splitradix.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\reodft010e-r2hc.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\reodft11e-r2hc-odd.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\reodft11e-r2hc.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\reodft11e-radix2.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\rodft00e-r2hc-pad.c" />
<ClCompile Include="$(FftwSrcDir)\reodft\rodft00e-r2hc.c" />
<ClCompile Include="$(FftwSrcDir)\simd-support\sse2-nonportable.c" />
<ClCompile Include="$(FftwSrcDir)\simd-support\sse2.c" />
<ClCompile Include="$(FftwSrcDir)\simd-support\taint.c" />
<ClCompile Include="$(FftwSrcDir)\threads\api.c" />
<ClCompile Include="$(FftwSrcDir)\threads\conf.c" />
<ClCompile Include="$(FftwSrcDir)\threads\ct.c" />
<ClCompile Include="$(FftwSrcDir)\threads\dft-vrank-geq1.c" />
<ClCompile Include="$(FftwSrcDir)\threads\f77api.c" />
<ClCompile Include="$(FftwSrcDir)\threads\hc2hc.c" />
<ClCompile Include="$(FftwSrcDir)\threads\openmp.c" />
<ClCompile Include="$(FftwSrcDir)\threads\rdft-vrank-geq1.c" />
<ClCompile Include="$(FftwSrcDir)\threads\vrank-geq1-rdft2.c" />
</ItemGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}</ProjectGuid>
<RootNamespace>freetype</RootNamespace>
</PropertyGroup>
<!-- Project configuration -->
<PropertyGroup Label="AegisubConfiguration">
<AegisubProjectType>lib</AegisubProjectType>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(Freetype2SrcDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<DisableLanguageExtensions>true</DisableLanguageExtensions>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<Culture>0x0409</Culture>
</ResourceCompile>
<InstallHeader>
<HeaderRoot>$(Freetype2SrcDir)\include</HeaderRoot>
</InstallHeader>
</ItemDefinitionGroup>
<!-- Source files -->
<ItemGroup>
<InstallHeader Include="$(Freetype2SrcDir)\include\**\*.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(MSBuildThisFileDirectory)ftsystem.cpp" />
<ClCompile Include="$(Freetype2SrcDir)\src\autofit\autofit.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftbase.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftbbox.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftbitmap.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftfstype.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftgasp.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftglyph.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftgxval.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftinit.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftlcdfil.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftmm.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftotval.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftpatent.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftpfr.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftstroke.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftsynth.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\fttype1.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftwinfnt.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftfntfmt.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\bdf\bdf.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\cache\ftcache.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\cff\cff.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\cid\type1cid.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\gzip\ftgzip.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\lzw\ftlzw.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\pcf\pcf.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\pfr\pfr.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\psaux\psaux.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\pshinter\pshinter.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\psnames\psmodule.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\raster\raster.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\sfnt\sfnt.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\smooth\smooth.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\truetype\truetype.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\type1\type1.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\type42\type42.c" />
<ClCompile Include="$(Freetype2SrcDir)\src\winfonts\winfnt.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(Freetype2SrcDir)\include\ft2build.h" />
<ClInclude Include="$(Freetype2SrcDir)\include\config\ftconfig.h" />
<ClInclude Include="$(Freetype2SrcDir)\include\config\ftheader.h" />
<ClInclude Include="$(Freetype2SrcDir)\include\config\ftmodule.h" />
<ClInclude Include="$(Freetype2SrcDir)\include\config\ftoption.h" />
<ClInclude Include="$(Freetype2SrcDir)\include\config\ftstdlib.h" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{b4c15893-ec11-491d-9507-0ac184f9cc78}</UniqueIdentifier>
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
</Filter>
<Filter Include="Source Files\FT_MODULES">
<UniqueIdentifier>{4d3e4eff-3fbc-4b20-b413-2743b23b7109}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{e6cf6a0f-0404-4024-8bf8-ff5b29f35657}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(Freetype2SrcDir)\src\autofit\autofit.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftbase.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftbbox.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftbitmap.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftfstype.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftgasp.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftglyph.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftgxval.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftinit.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftlcdfil.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftmm.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftotval.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftpatent.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftpfr.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftstroke.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftsynth.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)ftsystem.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\fttype1.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftwinfnt.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\base\ftfntfmt..c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\bdf\bdf.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\cache\ftcache.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\cff\cff.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\cid\type1cid.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\gzip\ftgzip.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\lzw\ftlzw.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\pcf\pcf.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\pfr\pfr.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\psaux\psaux.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\pshinter\pshinter.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\psnames\psmodule.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\raster\raster.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\sfnt\sfnt.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\smooth\smooth.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\truetype\truetype.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\type1\type1.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\type42\type42.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(Freetype2SrcDir)\src\winfonts\winfnt.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(Freetype2SrcDir)\include\ft2build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(Freetype2SrcDir)\include\freetype\config\ftconfig.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(Freetype2SrcDir)\include\freetype\config\ftheader.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(Freetype2SrcDir)\include\freetype\config\ftmodule.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(Freetype2SrcDir)\include\freetype\config\ftoption.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(Freetype2SrcDir)\include\freetype\config\ftstdlib.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -0,0 +1,75 @@
// Copyright (c) 2014, Thomas Goyne <plorkyeran@aegisub.org>
//
// Permission to use, copy, modify, and distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
//
// Aegisub Project http://www.aegisub.org/
// The non-unix version of ftsystem.c uses stdio functions, but freetype uses
// streams as if they had mmap's performance characteristics (as it uses mmap
// on unix), which results in mind-blowingly poor performance (35%+ of the
// fontconfig caching runtime is spent on fseek).
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
#include FT_SYSTEM_H
#include FT_ERRORS_H
#include <codecvt>
#include <fstream>
extern "C" FT_Error FT_Stream_Open(FT_Stream stream, const char *filepathname) {
if (!stream)
return FT_THROW(Invalid_Stream_Handle);
stream->descriptor.pointer = nullptr;
stream->pathname.pointer = const_cast<char *>(filepathname);
stream->base = nullptr;
stream->pos = 0;
stream->read = nullptr;
stream->close = nullptr;
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
std::ifstream file(converter.from_bytes(filepathname), std::ios::binary);
if (!file.good())
return FT_THROW(Cannot_Open_Resource);
file.seekg(0, std::ios::end);
stream->size = (unsigned long)file.tellg();
if (!stream->size)
return FT_THROW(Cannot_Open_Stream);
file.seekg(0, std::ios::beg);
stream->base = (unsigned char *)malloc(stream->size);
file.read((char *)stream->base, stream->size);
stream->close = [](FT_Stream stream) {
free(stream->base);
stream->size = 0;
stream->base = nullptr;
};
return FT_Err_Ok;
}
extern "C" FT_Memory FT_New_Memory() {
return new FT_MemoryRec_{
nullptr,
[](FT_Memory, long size) { return malloc(size); },
[](FT_Memory, void *ptr) { free(ptr); },
[](FT_Memory, long, long size, void *ptr) { return realloc(ptr, size); }};
}
extern "C" void FT_Done_Memory(FT_Memory memory) {
delete memory;
}

View File

@ -0,0 +1,22 @@
#ifndef FRIBIDI_CONFIG_H
#define FRIBIDI_CONFIG_H
#define FRIBIDI "fribidi"
#define FRIBIDI_NAME "GNU FriBidi"
#define FRIBIDI_BUGREPORT "http://bugs.freedesktop.org/enter_bug.cgi?product=fribidi"
#define FRIBIDI_VERSION "0.19.6"
#define FRIBIDI_MAJOR_VERSION 0
#define FRIBIDI_MINOR_VERSION 19
#define FRIBIDI_MICRO_VERSION 6
#define FRIBIDI_INTERFACE_VERSION 3
#define FRIBIDI_INTERFACE_VERSION_STRING "3"
#define FRIBIDI_CHARSETS 0
#define FRIBIDI_USE_GLIB 0
#define FRIBIDI_SIZEOF_INT 4
#define HAVE_STDLIB_H 1
#define USE_SIMPLE_MALLOC 1
#define HAVE_STRINGIZE 1
#endif

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{FB8E8D19-A4D6-4181-943C-282075F49B41}</ProjectGuid>
<RootNamespace>fribidi</RootNamespace>
<AegisubProjectType>lib</AegisubProjectType>
</PropertyGroup>
<!-- Aegisub project configuration -->
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>
$(FribidiSrcDir)\lib;
$(MSBuildThisFileDirectory);
%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
<PreprocessorDefinitions>
FRIBIDI_ENTRY=;
%(PreprocessorDefinitions)
</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- Download fribidi -->
<UsingTask TaskName="TarballProject" AssemblyFile="$(AegisubBinaryDir)BuildTasks.dll" />
<Target
Name="Download"
BeforeTargets="ClCompile"
Inputs="$(FribidiSrcDir)aegisub.hash"
Outputs="$(FribidiSrcDir)nonexistent-file"
>
<TarballProject
Url="https://github.com/fribidi/fribidi/releases/download/0.19.6/fribidi-0.19.6.tar.bz2"
Hash="cba8b7423c817e5adf50d28ec9079d14eafcec9127b9e8c8f1960c5ad585e17d"
Root="$(FribidiSrcDir)"
/>
</Target>
<!-- Source files -->
<ItemGroup>
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-arabic.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-bidi-types.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-bidi.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-deprecated.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-joining-types.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-joining.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-mem.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-mirroring.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-run.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi-shape.c" />
<ClCompile Include="$(FribidiSrcDir)\lib\fribidi.c" />
<InstallHeader Include="$(FribidiSrcDir)\lib\*.h">
<HeaderRoot>$(FribidiSrcDir)\lib</HeaderRoot>
</InstallHeader>
<InstallHeader Include="$(MSBuildThisFileDirectory)fribidi-config.h">
<HeaderRoot>$(MSBuildThisFileDirectory)</HeaderRoot>
</InstallHeader>
</ItemGroup>
</Project>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}</ProjectGuid>
<RootNamespace>googletest</RootNamespace>
</PropertyGroup>
<!-- Aegisub project configuration -->
<PropertyGroup Label="AegisubConfiguration">
<AegisubProjectType>lib</AegisubProjectType>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>
GTEST_HAS_TR1_TUPLE=0;
%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<AdditionalIncludeDirectories>
$(GtestSrcDir);
%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<!-- Source files -->
<ItemGroup>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-death-test.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-message.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-param-test.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-printers.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-spi.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-test-part.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-typed-test.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest_pred_impl.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest_prod.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-death-test-internal.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-filepath.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-internal.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-linked_ptr.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-param-util-generated.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-param-util.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-port.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-string.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-tuple.h" />
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-type-util.h" />
</ItemGroup>
<ItemGroup>
<None Include="$(GtestSrcDir)\include\gtest\gtest-param-test.h.pump" />
<None Include="$(GtestSrcDir)\include\gtest\internal\gtest-param-util-generated.h.pump" />
<None Include="$(GtestSrcDir)\include\gtest\internal\gtest-tuple.h.pump" />
<None Include="$(GtestSrcDir)\include\gtest\internal\gtest-type-util.h.pump" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(GtestSrcDir)\src\gtest-all.cc" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Header Files\internal">
<UniqueIdentifier>{ad1eaa10-1448-406d-924c-ec1a608cec0b}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest_pred_impl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest_prod.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-death-test.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-message.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-param-test.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-printers.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-spi.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-test-part.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\gtest-typed-test.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-death-test-internal.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-filepath.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-internal.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-linked_ptr.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-param-util.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-param-util-generated.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-port.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-string.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-tuple.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="$(GtestSrcDir)\include\gtest\internal\gtest-type-util.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="$(GtestSrcDir)\include\gtest\gtest-param-test.h.pump">
<Filter>Header Files</Filter>
</None>
<None Include="$(GtestSrcDir)\include\gtest\internal\gtest-param-util-generated.h.pump">
<Filter>Header Files\internal</Filter>
</None>
<None Include="$(GtestSrcDir)\include\gtest\internal\gtest-tuple.h.pump">
<Filter>Header Files\internal</Filter>
</None>
<None Include="$(GtestSrcDir)\include\gtest\internal\gtest-type-util.h.pump">
<Filter>Header Files\internal</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(GtestSrcDir)\src\gtest-all.cc">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{CC791693-6B28-40AC-879D-64A6C16468E3}</ProjectGuid>
<RootNamespace>hunspell</RootNamespace>
</PropertyGroup>
<!-- Aegisub project configuration -->
<PropertyGroup Label="AegisubConfiguration">
<AegisubProjectType>lib</AegisubProjectType>
<SrcDir>..\..\vendor\hunspell\src\</SrcDir>
</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SrcDir)win_api;$(SrcDir)hunspell;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
</ClCompile>
</ItemDefinitionGroup>
<!-- Source files -->
<ItemGroup>
<ClInclude Include="$(SrcDir)hunspell\affentry.hxx" />
<ClInclude Include="$(SrcDir)hunspell\affixmgr.hxx" />
<ClInclude Include="$(SrcDir)hunspell\atypes.hxx" />
<ClInclude Include="$(SrcDir)hunspell\baseaffix.hxx" />
<ClInclude Include="$(SrcDir)hunspell\csutil.hxx" />
<ClInclude Include="$(SrcDir)hunspell\dictmgr.hxx" />
<ClInclude Include="$(SrcDir)hunspell\hashmgr.hxx" />
<ClInclude Include="$(SrcDir)hunspell\htypes.hxx" />
<ClInclude Include="$(SrcDir)hunspell\hunspell.h" />
<ClInclude Include="$(SrcDir)hunspell\hunspell.hxx" />
<ClInclude Include="$(SrcDir)hunspell\langnum.hxx" />
<ClInclude Include="$(SrcDir)hunspell\phonet.hxx" />
<ClInclude Include="$(SrcDir)hunspell\suggestmgr.hxx" />
<ClInclude Include="$(SrcDir)win_api\config.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(SrcDir)hunspell\affentry.cxx" />
<ClCompile Include="$(SrcDir)hunspell\affixmgr.cxx" />
<ClCompile Include="$(SrcDir)hunspell\csutil.cxx" />
<ClCompile Include="$(SrcDir)hunspell\dictmgr.cxx" />
<ClCompile Include="$(SrcDir)hunspell\filemgr.cxx" />
<ClCompile Include="$(SrcDir)hunspell\hashmgr.cxx" />
<ClCompile Include="$(SrcDir)hunspell\hunspell.cxx" />
<ClCompile Include="$(SrcDir)hunspell\hunzip.cxx" />
<ClCompile Include="$(SrcDir)hunspell\phonet.cxx" />
<ClCompile Include="$(SrcDir)hunspell\replist.cxx" />
<ClCompile Include="$(SrcDir)hunspell\suggestmgr.cxx" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(SrcDir)hunspell\affixmgr.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\atypes.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\baseaffix.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\csutil.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\dictmgr.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\hashmgr.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\htypes.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\hunspell.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\hunspell.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\langnum.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\phonet.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\suggestmgr.hxx">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)win_api\config.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(SrcDir)hunspell\affentry.hxx">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(SrcDir)hunspell\affentry.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\affixmgr.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\csutil.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\dictmgr.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\hashmgr.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\hunspell.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\phonet.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\suggestmgr.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\filemgr.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\hunzip.cxx">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(SrcDir)hunspell\replist.cxx">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

703
build/icu/icu.vcxproj Normal file
View File

@ -0,0 +1,703 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{F934AB7B-186B-4E96-B20C-A58C38C1B818}</ProjectGuid>
<RootNamespace>icu</RootNamespace>
<AegisubProjectType>lib</AegisubProjectType>
<AegisubMBCS>true</AegisubMBCS>
</PropertyGroup>
<!-- Aegisub project configuration -->
<ImportGroup Label="PropertySheets">
<Import Project="$(MSBuildThisFileDirectory)..\aegisub.props" />
</ImportGroup>
<!-- Project specific configuration -->
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>
$(IcuSrcDir)\common;
$(IcuSrcDir)\common\unicode;
$(IcuSrcDir)\i18n;
$(IcuSrcDir)\i18n\unicode;
%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
<PreprocessorDefinitions>
U_ENABLE_DYLOAD=0;
U_CHECK_DYLOAD=0;
UCONFIG_NO_FILE_IO=1;
UCONFIG_NO_LEGACY_CONVERSION=1;
U_CHARSET_IS_UTF8=1;
UCONFIG_NO_IDNA=1;
UCONFIG_NO_FORMATTING=1;
UCONFIG_NO_TRANSLITERATION=1;
U_ATTRIBUTE_DEPRECATED=;
_CRT_SECURE_NO_DEPRECATE;
U_COMMON_IMPLEMENTATION;
U_I18N_IMPLEMENTATION;
%(PreprocessorDefinitions)
</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- ICU data table stuff -->
<PropertyGroup>
<MiniLuaCommand>$(AegisubBinaryDir)luajit-minilua$(AegisubPlatformSuffix)</MiniLuaCommand>
<PackCommand>$(MSBuildThisFileDirectory)pack-dt.lua</PackCommand>
<IcuDt>icudt53l</IcuDt>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<UsingTask TaskName="DownloadTgzFile" AssemblyFile="$(AegisubBinaryDir)BuildTasks.dll" />
<Target
Name="DownloadDataTables"
BeforeTargets="PackDataTables"
Inputs="$(IcuSrcDir)data\in\$(IcuDt).dat.gz"
Outputs="$(IcuSrcDir)data\in\$(IcuDt).dat"
>
<!-- Generated with tools/strip-icu.py -->
<DownloadTgzFile
Url="http://www.aegisub.org/~plorkyeran/$(IcuDt)-be995a7e5fe230029e9b1e547b7de8826888c18c.dat.gz"
OutputFile="$(MSBuildThisFileDirectory)..\..\vendor\icu\source\data\in\$(IcuDt).dat"
Hash="be995a7e5fe230029e9b1e547b7de8826888c18c"
/>
</Target>
<Target
Name="PackDataTables"
BeforeTargets="ClCompile"
Inputs="$(IcuSrcDir)\data\in\$(IcuDt).dat;pack-dt.lua"
Outputs="$(AegisubObjectDir)$(IcuDt).c"
>
<Exec
Command="$(MiniLuaCommand) $(PackCommand) &quot;$(IcuSrcDir)&quot; &quot;$(AegisubObjectDir)$(IcuDt).c&quot;"
/>
</Target>
<!-- Source files -->
<ItemGroup>
<InstallHeader Include="$(IcuSrcDir)\i18n\unicode\*.h">
<HeaderRoot>$(IcuSrcDir)\i18n</HeaderRoot>
</InstallHeader>
<InstallHeader Include="$(IcuSrcDir)\common\unicode\*.h">
<HeaderRoot>$(IcuSrcDir)\common</HeaderRoot>
</InstallHeader>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(AegisubObjectDir)\$(IcuDt).c" />
<ClCompile Include="$(IcuSrcDir)\common\ubidi.c" />
<ClCompile Include="$(IcuSrcDir)\common\ubidi_props.c" />
<ClCompile Include="$(IcuSrcDir)\common\ubidiln.c" />
<ClCompile Include="$(IcuSrcDir)\common\ubidiwrt.c" />
<ClCompile Include="$(IcuSrcDir)\common\ushape.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\brkeng.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\brkiter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\dictbe.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\rbbi.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\rbbidata.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\rbbinode.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\rbbirb.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\rbbiscan.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\rbbisetb.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\rbbistbl.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\rbbitblb.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\dictionarydata.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ubrk.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucol_swp.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\propsvec.c" />
<ClCompile Include="$(IcuSrcDir)\common\uarrsort.c" />
<ClCompile Include="$(IcuSrcDir)\common\uenum.c" />
<ClCompile Include="$(IcuSrcDir)\common\uhash.c" />
<ClCompile Include="$(IcuSrcDir)\common\uhash_us.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ulist.c" />
<ClCompile Include="$(IcuSrcDir)\common\ustack.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ustrenum.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\utrie.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\utrie2.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\utrie2_builder.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uvector.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uvectr32.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uvectr64.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\errorcode.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\icudataver.c" />
<ClCompile Include="$(IcuSrcDir)\common\locmap.c">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\common\putil.cpp">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\common\umath.c" />
<ClCompile Include="$(IcuSrcDir)\common\umutex.cpp">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\common\utrace.c" />
<ClCompile Include="$(IcuSrcDir)\common\utypes.c" />
<ClCompile Include="$(IcuSrcDir)\common\wintz.c">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\common\ucnv.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv2022.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_bld.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_cb.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_cnv.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_ct.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_err.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_ext.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_io.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_lmb.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_set.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_u16.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_u32.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_u7.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnv_u8.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnvbocu.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucnvdisp.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnvhz.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnvisci.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnvlat1.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnvmbcs.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnvscsu.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucnvsel.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\cmemory.c" />
<ClCompile Include="$(IcuSrcDir)\common\ucln_cmn.c">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\common\ucmndata.c" />
<ClCompile Include="$(IcuSrcDir)\common\udata.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\udatamem.c" />
<ClCompile Include="$(IcuSrcDir)\common\udataswp.c" />
<ClCompile Include="$(IcuSrcDir)\common\uinit.cpp">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\common\umapfile.c">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\common\uobject.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\dtintrv.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\parsepos.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ustrfmt.c" />
<ClCompile Include="$(IcuSrcDir)\common\util.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\util_props.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\punycode.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uidna.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uts46.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\locavailable.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\locbased.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\locdispnames.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\locid.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\loclikely.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\locresdata.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\locutil.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\lrucache.cpp">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\common\resbund.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\resbund_cnv.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucat.c" />
<ClCompile Include="$(IcuSrcDir)\common\uloc.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uloc_tag.c" />
<ClCompile Include="$(IcuSrcDir)\common\ures_cnv.c" />
<ClCompile Include="$(IcuSrcDir)\common\uresbund.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uresdata.c" />
<ClCompile Include="$(IcuSrcDir)\common\caniter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\filterednormalizer2.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\normalizer2.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\normalizer2impl.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\normlzr.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unorm.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unormcmp.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\bmpset.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\patternprops.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\propname.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ruleiter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucase.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uchar.c" />
<ClCompile Include="$(IcuSrcDir)\common\unames.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unifilt.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unifunct.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uniset.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uniset_closure.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uniset_props.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unisetspan.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uprops.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\usc_impl.c" />
<ClCompile Include="$(IcuSrcDir)\common\uscript.c" />
<ClCompile Include="$(IcuSrcDir)\common\uscript_props.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uset.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uset_props.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\usetiter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\icuplug.c" />
<ClCompile Include="$(IcuSrcDir)\common\serv.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\servlk.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\servlkf.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\servls.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\servnotf.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\servrbf.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\servslkf.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\usprep.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\appendable.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\bytestream.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\bytestrie.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\bytestriebuilder.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\bytestrieiterator.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\chariter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\charstr.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\cstring.c" />
<ClCompile Include="$(IcuSrcDir)\common\cwchar.c" />
<ClCompile Include="$(IcuSrcDir)\common\messagepattern.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\schriter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\stringpiece.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\stringtriebuilder.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\simplepatternformatter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucasemap.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucasemap_titlecase_brkiter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucharstrie.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucharstriebuilder.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ucharstrieiterator.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uchriter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\uinvchar.c" />
<ClCompile Include="$(IcuSrcDir)\common\uiter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unistr.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unistr_case.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unistr_case_locale.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unistr_cnv.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unistr_props.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\unistr_titlecase_brkiter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ustr_cnv.c" />
<ClCompile Include="$(IcuSrcDir)\common\ustr_titlecase_brkiter.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ustr_wcs.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ustrcase.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ustrcase_locale.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ustring.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\ustrtrns.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\utext.cpp" />
<ClCompile Include="$(IcuSrcDir)\common\utf_impl.c" />
<ClCompile Include="$(IcuSrcDir)\common\listformatter.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IcuSrcDir)\common\sharedobject.cpp" />
<ClInclude Include="$(IcuSrcDir)\common\bmpset.h" />
<ClInclude Include="$(IcuSrcDir)\common\brkeng.h" />
<ClInclude Include="$(IcuSrcDir)\common\charstr.h" />
<ClInclude Include="$(IcuSrcDir)\common\cmemory.h" />
<ClInclude Include="$(IcuSrcDir)\common\cpputils.h" />
<ClInclude Include="$(IcuSrcDir)\common\cstring.h" />
<ClInclude Include="$(IcuSrcDir)\common\cwchar.h" />
<ClInclude Include="$(IcuSrcDir)\common\dictbe.h" />
<ClInclude Include="$(IcuSrcDir)\common\dictionarydata.h" />
<ClInclude Include="$(IcuSrcDir)\common\hash.h" />
<ClInclude Include="$(IcuSrcDir)\common\icuplugimp.h" />
<ClInclude Include="$(IcuSrcDir)\common\localsvc.h" />
<ClInclude Include="$(IcuSrcDir)\common\locbased.h" />
<ClInclude Include="$(IcuSrcDir)\common\locmap.h" />
<ClInclude Include="$(IcuSrcDir)\common\locutil.h" />
<ClInclude Include="$(IcuSrcDir)\common\lrucache.h" />
<ClInclude Include="$(IcuSrcDir)\common\messageimpl.h" />
<ClInclude Include="$(IcuSrcDir)\common\msvcres.h" />
<ClInclude Include="$(IcuSrcDir)\common\mutex.h" />
<ClInclude Include="$(IcuSrcDir)\common\normalizer2impl.h" />
<ClInclude Include="$(IcuSrcDir)\common\patternprops.h" />
<ClInclude Include="$(IcuSrcDir)\common\propname.h" />
<ClInclude Include="$(IcuSrcDir)\common\propname_data.h" />
<ClInclude Include="$(IcuSrcDir)\common\propsvec.h" />
<ClInclude Include="$(IcuSrcDir)\common\punycode.h" />
<ClInclude Include="$(IcuSrcDir)\common\putilimp.h" />
<ClInclude Include="$(IcuSrcDir)\common\rbbidata.h" />
<ClInclude Include="$(IcuSrcDir)\common\rbbinode.h" />
<ClInclude Include="$(IcuSrcDir)\common\rbbirb.h" />
<ClInclude Include="$(IcuSrcDir)\common\rbbirpt.h" />
<ClInclude Include="$(IcuSrcDir)\common\rbbiscan.h" />
<ClInclude Include="$(IcuSrcDir)\common\rbbisetb.h" />
<ClInclude Include="$(IcuSrcDir)\common\rbbitblb.h" />
<ClInclude Include="$(IcuSrcDir)\common\ruleiter.h" />
<ClInclude Include="$(IcuSrcDir)\common\serv.h" />
<ClInclude Include="$(IcuSrcDir)\common\servloc.h" />
<ClInclude Include="$(IcuSrcDir)\common\servnotf.h" />
<ClInclude Include="$(IcuSrcDir)\common\sharedobject.h" />
<ClInclude Include="$(IcuSrcDir)\common\sharedptr.h" />
<ClInclude Include="$(IcuSrcDir)\common\simplepatternformatter.h" />
<ClInclude Include="$(IcuSrcDir)\common\sprpimpl.h" />
<ClInclude Include="$(IcuSrcDir)\common\uarrsort.h" />
<ClInclude Include="$(IcuSrcDir)\common\uassert.h" />
<ClInclude Include="$(IcuSrcDir)\common\ubidi_props.h" />
<ClInclude Include="$(IcuSrcDir)\common\ubidi_props_data.h" />
<ClInclude Include="$(IcuSrcDir)\common\ubidiimp.h" />
<ClInclude Include="$(IcuSrcDir)\common\ubrkimpl.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucase.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucase_props_data.h" />
<ClInclude Include="$(IcuSrcDir)\common\uchar_props_data.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucln.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucln_cmn.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucln_imp.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucmndata.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucnv_bld.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucnv_cnv.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucnv_ext.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucnv_imp.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucnv_io.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucnvmbcs.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucol_data.h" />
<ClInclude Include="$(IcuSrcDir)\common\ucol_swp.h" />
<ClInclude Include="$(IcuSrcDir)\common\udatamem.h" />
<ClInclude Include="$(IcuSrcDir)\common\udataswp.h" />
<ClInclude Include="$(IcuSrcDir)\common\uelement.h" />
<ClInclude Include="$(IcuSrcDir)\common\uenumimp.h" />
<ClInclude Include="$(IcuSrcDir)\common\uhash.h" />
<ClInclude Include="$(IcuSrcDir)\common\uinvchar.h" />
<ClInclude Include="$(IcuSrcDir)\common\ulist.h" />
<ClInclude Include="$(IcuSrcDir)\common\ulocimp.h" />
<ClInclude Include="$(IcuSrcDir)\common\umapfile.h" />
<ClInclude Include="$(IcuSrcDir)\common\umutex.h" />
<ClInclude Include="$(IcuSrcDir)\common\unisetspan.h" />
<ClInclude Include="$(IcuSrcDir)\common\unormimp.h" />
<ClInclude Include="$(IcuSrcDir)\common\uposixdefs.h" />
<ClInclude Include="$(IcuSrcDir)\common\uprops.h" />
<ClInclude Include="$(IcuSrcDir)\common\uresdata.h" />
<ClInclude Include="$(IcuSrcDir)\common\uresimp.h" />
<ClInclude Include="$(IcuSrcDir)\common\ureslocs.h" />
<ClInclude Include="$(IcuSrcDir)\common\usc_impl.h" />
<ClInclude Include="$(IcuSrcDir)\common\uset_imp.h" />
<ClInclude Include="$(IcuSrcDir)\common\ustr_cnv.h" />
<ClInclude Include="$(IcuSrcDir)\common\ustr_imp.h" />
<ClInclude Include="$(IcuSrcDir)\common\ustrenum.h" />
<ClInclude Include="$(IcuSrcDir)\common\ustrfmt.h" />
<ClInclude Include="$(IcuSrcDir)\common\util.h" />
<ClInclude Include="$(IcuSrcDir)\common\utracimp.h" />
<ClInclude Include="$(IcuSrcDir)\common\utrie.h" />
<ClInclude Include="$(IcuSrcDir)\common\utrie2.h" />
<ClInclude Include="$(IcuSrcDir)\common\utrie2_impl.h" />
<ClInclude Include="$(IcuSrcDir)\common\utypeinfo.h" />
<ClInclude Include="$(IcuSrcDir)\common\uvector.h" />
<ClInclude Include="$(IcuSrcDir)\common\uvectr32.h" />
<ClInclude Include="$(IcuSrcDir)\common\uvectr64.h" />
<ClInclude Include="$(IcuSrcDir)\common\wintz.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(IcuSrcDir)\i18n\filteredbrk.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\region.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uregion.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\alphaindex.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\bocsu.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\coleitr.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\coll.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collation.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationbasedatabuilder.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationbuilder.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationcompare.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationdata.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationdatabuilder.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationdatareader.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationdatawriter.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationfastlatin.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationfastlatinbuilder.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationfcd.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationiterator.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationkeys.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationroot.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationrootelements.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationruleparser.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationsets.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationsettings.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationtailoring.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\collationweights.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\rulebasedcollator.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\search.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\sortkey.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\stsearch.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tzfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tzgnames.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tznames.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tznames_impl.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ucol.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ucol_res.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ucol_sit.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ucoleitr.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uitercollationiterator.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\usearch.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\astro.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\basictz.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\buddhcal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\calendar.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\cecal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\chnsecal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\choicfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\compactdecimalformat.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\coptccal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\curramt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\currfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\currpinf.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\currunit.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\dangical.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\datefmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\dcfmtsym.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\decContext.c" />
<ClCompile Include="$(IcuSrcDir)\i18n\decfmtst.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\decimalformatpattern.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\decimfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\decNumber.c" />
<ClCompile Include="$(IcuSrcDir)\i18n\digitlst.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\dtfmtsym.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\dtitvfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\dtitvinf.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\dtptngen.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\dtrule.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ethpccal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\fmtable.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\fmtable_cnv.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\format.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\fphdlimp.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\fpositer.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\gender.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\gregocal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\gregoimp.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\hebrwcal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\identifier_info.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\indiancal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\islamcal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\japancal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\locdspnm.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\measfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\measunit.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\measure.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\msgfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\nfrs.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\nfrule.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\nfsubs.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\numfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\numsys.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\olsontz.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\persncal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\plurfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\plurrule.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\quantityformatter.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\rbnf.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\rbtz.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\reldatefmt.cpp">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\i18n\reldtfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\selfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\simpletz.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\scriptset.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\smpdtfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\smpdtfst.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\taiwncal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\timezone.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tmunit.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tmutamt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tmutfmt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tzrule.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tztrans.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ucal.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ucurr.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\udat.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\udateintervalformat.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\udatpg.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ulocdata.c" />
<ClCompile Include="$(IcuSrcDir)\i18n\umsg.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\unum.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\unumsys.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\upluralrules.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\utf16collationiterator.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\utf8collationiterator.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\utmscale.c" />
<ClCompile Include="$(IcuSrcDir)\i18n\vtzone.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\vzone.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\windtfmt.cpp">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\i18n\winnmfmt.cpp">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\i18n\wintzimpl.cpp">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\i18n\zonemeta.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\zrule.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ztrans.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ucln_in.c">
<DisableLanguageExtensions>false</DisableLanguageExtensions>
</ClCompile>
<ClCompile Include="$(IcuSrcDir)\i18n\regexcmp.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\regeximp.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\regexst.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\regextxt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\rematch.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\repattrn.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uregex.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uregexc.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\anytrans.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\brktrans.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\casetrn.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\cpdtrans.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\esctrn.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\funcrepl.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\name2uni.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\nortrans.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\nultrans.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\quant.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\rbt.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\rbt_data.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\rbt_pars.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\rbt_rule.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\rbt_set.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\remtrans.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\strmatch.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\strrepl.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\titletrn.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tolowtrn.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\toupptrn.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\translit.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\transreg.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\tridpars.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\unesctrn.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uni2name.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\utrans.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\csdetect.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\csmatch.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\csr2022.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\csrecog.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\csrmbcs.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\csrsbcs.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\csrucode.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\csrutf8.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\inputext.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\ucsdet.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uspoof.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uspoof_build.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uspoof_conf.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uspoof_impl.cpp" />
<ClCompile Include="$(IcuSrcDir)\i18n\uspoof_wsconf.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IcuSrcDir)\i18n\bocsu.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collation.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationbasedatabuilder.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationbuilder.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationcompare.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationdata.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationdatabuilder.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationdatareader.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationdatawriter.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationfastlatin.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationfastlatinbuilder.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationfcd.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationiterator.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationkeys.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationroot.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationrootelements.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationruleparser.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationsets.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationsettings.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationtailoring.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\collationweights.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\dcfmtimp.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\numsys_impl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\region_impl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\selfmtimpl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\tzgnames.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\tznames_impl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\ucol_imp.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\uitercollationiterator.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\unicode\filteredbrk.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\usrchimp.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\astro.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\buddhcal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\cecal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\chnsecal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\coptccal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\currfmt.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\dangical.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\decContext.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\decfmtst.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\decimalformatpattern.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\decNumber.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\decNumberLocal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\digitlst.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\dtitv_impl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\dtptngen_impl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\ethpccal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\fphdlimp.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\gregoimp.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\hebrwcal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\indiancal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\islamcal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\japancal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\msgfmt_impl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\nfrlist.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\nfrs.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\nfrule.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\nfsubs.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\olsontz.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\persncal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\plurrule_impl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\quantityformatter.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\sharednumberformat.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\sharedpluralrules.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\reldtfmt.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\smpdtfst.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\taiwncal.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\ucurrimp.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\umsg_imp.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\utf16collationiterator.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\utf8collationiterator.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\vzone.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\windtfmt.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\winnmfmt.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\wintzimpl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\zonemeta.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\zrule.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\ztrans.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\ucln_in.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\regexcmp.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\regexcst.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\regeximp.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\regexst.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\regextxt.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\anytrans.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\brktrans.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\casetrn.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\cpdtrans.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\esctrn.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\funcrepl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\name2uni.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\nortrans.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\nultrans.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\quant.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\rbt.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\rbt_data.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\rbt_pars.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\rbt_rule.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\rbt_set.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\remtrans.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\strmatch.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\strrepl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\titletrn.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\tolowtrn.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\toupptrn.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\transreg.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\tridpars.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\unesctrn.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\uni2name.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\csdetect.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\csmatch.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\csr2022.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\csrecog.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\csrmbcs.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\csrsbcs.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\csrucode.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\csrutf8.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\inputext.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\identifier_info.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\scriptset.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\uspoof_conf.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\uspoof_impl.h" />
<ClInclude Include="$(IcuSrcDir)\i18n\uspoof_wsconf.h" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\luajit-minilua\luajit-minilua.vcxproj">
<Project>{fcaed410-90ef-4ef9-916c-4b86dc13a3cf}</Project>
</ProjectReference>
</ItemGroup>
</Project>

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More