diff options
Diffstat (limited to 'vcpkg/ports/magnum/magnumdeploy.ps1')
| -rw-r--r-- | vcpkg/ports/magnum/magnumdeploy.ps1 | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/vcpkg/ports/magnum/magnumdeploy.ps1 b/vcpkg/ports/magnum/magnumdeploy.ps1 new file mode 100644 index 0000000..c32ed03 --- /dev/null +++ b/vcpkg/ports/magnum/magnumdeploy.ps1 @@ -0,0 +1,40 @@ +# Magnum's plugin deployment strategy is that each Magnum module has a hardcoded
+# set of plugin directories. Each of these directories is deployed in
+# full if that Module is referenced.
+#
+# Note: this function signature and behavior is depended upon by applocal.ps1
+function deployPluginsIfMagnum([string]$targetBinaryDir, [string]$MagnumPluginsDir, [string]$targetBinaryName) {
+ Write-Verbose "Deploying magnum plugins"
+
+ $baseDir = Split-Path $MagnumPluginsDir -parent
+ $pluginsBase = Split-Path $MagnumPluginsDir -Leaf
+ $binDir = "$baseDir\bin"
+
+ function deployPlugins([string]$pluginSubdirName) {
+ if (Test-Path "$MagnumPluginsDir\$pluginSubdirName") {
+ Write-Verbose " Deploying plugins directory '$pluginSubdirName'"
+ New-Item "$targetBinaryDir\$pluginsBase\$pluginSubdirName" -ItemType Directory -ErrorAction SilentlyContinue | Out-Null
+ Get-ChildItem -Path "$MagnumPluginsDir\$pluginSubdirName\*" -Include "*.dll", "*.conf", "*.pdb" | % {
+ deployBinary "$targetBinaryDir\$pluginsBase\$pluginSubdirName" "$MagnumPluginsDir\$pluginSubdirName" $_.Name
+ resolve $_
+ }
+ } else {
+ Write-Verbose " Skipping plugins directory '$pluginSubdirName': doesn't exist"
+ }
+ }
+
+ # We detect Magnum modules in use via the DLLs that contain their
+ # plugin interfaces.
+ if ($targetBinaryName -like "MagnumAudio.dll" -or $targetBinaryName -like "MagnumAudio-d.dll") {
+ deployPlugins "audioimporters"
+ } elseif ($targetBinaryName -like "MagnumText.dll" -or $targetBinaryName -like "MagnumText-d.dll") {
+ deployPlugins "fonts"
+ deployPlugins "fontconverters"
+ } elseif ($targetBinaryName -like "MagnumTrade.dll" -or $targetBinaryName -like "MagnumTrade-d.dll") {
+ deployPlugins "importers"
+ deployPlugins "imageconverters"
+ deployPlugins "sceneconverters"
+ } elseif ($targetBinaryName -like "MagnumShaderTools.dll" -or $targetBinaryName -like "MagnumShaderTools-d.dll") {
+ deployPlugins "shaderconverters"
+ }
+}
|