aboutsummaryrefslogtreecommitdiff
path: root/ports/magnum
diff options
context:
space:
mode:
authorJonathan Hale <Squareys@googlemail.com>2018-04-19 04:33:12 +0200
committerRobert Schumacher <roschuma@microsoft.com>2018-04-18 19:33:12 -0700
commit3a3fa5cd8f02dde78b00c12273b338e293edcd51 (patch)
tree68ed6e05289fbfb2ffa9393777cd946b039d776c /ports/magnum
parent08438e581c3818932f5bc66c744b4d49b2734b62 (diff)
downloadvcpkg-3a3fa5cd8f02dde78b00c12273b338e293edcd51.tar.gz
vcpkg-3a3fa5cd8f02dde78b00c12273b338e293edcd51.zip
[magnum] Properly deploy plugins (#3191)
* [magnum] Properly deploy magnum plugins Signed-off-by: Squareys <squareys@googlemail.com> * [magnum-plugins] Add tinygltfimporter feature Signed-off-by: Squareys <squareys@googlemail.com> * [magnum][magnum-plugins] Add features: trade and any* Prepares upcoming move of those sublibraries and allows building --head immediately. For current release this only adds some unused cmake flags that will be ignored. Signed-off-by: Squareys <squareys@googlemail.com> * [magnum] Add gl feature, cleanup dependencies, mark upcoming features And sort features alphabetically. Signed-off-by: Squareys <squareys@googlemail.com> * [magnum-plugins] Prepare renaming of static flag for --head installs Signed-off-by: Squareys <squareys@googlemail.com> * [magnum] Add two missing feature dependencies Signed-off-by: Squareys <squareys@googlemail.com> * [magnum] Enable magnum[any*] features by default Signed-off-by: Squareys <squareys@googlemail.com>
Diffstat (limited to 'ports/magnum')
-rw-r--r--ports/magnum/CONTROL102
-rw-r--r--ports/magnum/magnumdeploy.ps138
-rw-r--r--ports/magnum/portfile.cmake3
3 files changed, 109 insertions, 34 deletions
diff --git a/ports/magnum/CONTROL b/ports/magnum/CONTROL
index dcf86f079..6f3aebadc 100644
--- a/ports/magnum/CONTROL
+++ b/ports/magnum/CONTROL
@@ -1,42 +1,65 @@
Source: magnum
-Version: 2018.02-1
+Version: 2018.02-2
Build-Depends: corrade[pluginmanager], corrade[utility]
Description: C++11/C++14 graphics middleware for games and data visualization http://magnum.graphics/
-Default-Features: debugtools, meshtools, primitives, scenegraph, shaders, shapes, text, texturetools, sdl2application, windowlesswglapplication
+Default-Features: anyimageimporter, anyaudioimporter, anyimageconverter, anysceneimporter, debugtools, gl, meshtools, primitives, scenegraph, shaders, shapes, text, texturetools, trade, sdl2application, windowlesswglapplication
-Feature: sdl2application
-Description: Sdl2Application library
-Build-Depends: sdl2
+Feature: al-info
+Description: magnum-al-info utility
+Build-Depends: magnum[audio]
-Feature: glfwapplication
-Description: GlfwApplication library
-Build-Depends: glfw3
+Feature: anyimageimporter
+Description: (Upcoming) AnyImageImporter plugin
+Build-Depends: magnum[trade]
-Feature: glutapplication
-Description: GlutApplication library
-Build-Depends: freeglut
+Feature: anyaudioimporter
+Description: (Upcoming) AnyAudioImporter plugin
+Build-Depends: magnum[audio]
+
+Feature: anyimageconverter
+Description: (Upcoming) AnyImageConverter plugin
+Build-Depends: magnum[trade]
+
+Feature: anysceneimporter
+Description: (Upcoming) AnySceneImporter plugin
+Build-Depends: magnum[trade]
Feature: audio
Description: Audio library
Build-Depends: openal-soft
-Feature: magnuminfo
-Description: magnum-info utility
+Feature: debugtools
+Description: DebugTools library
+
+Feature: distancefieldconverter
+Description: magnum-distancefieldconverter utility
+Build-Depends: magnum[texturetools], magnum[gl]
Feature: fontconverter
Description: magnum-fontconverter utility
-Build-Depends: magnum[text]
+Build-Depends: magnum[text], magnum[gl]
-Feature: distancefieldconverter
-Description: magnum-distancefieldconverter utility
-Build-Depends: magnum[texturetools]
+Feature: gl
+Description: (Upcoming) GL library
+
+Feature: gl-info
+Description: (Upcoming) gl-info utility
+Build-Depends: magnum[gl]
+
+Feature: glfwapplication
+Description: GlfwApplication library
+Build-Depends: glfw3
+
+Feature: glutapplication
+Description: GlutApplication library
+Build-Depends: freeglut, magnum[gl]
Feature: imageconverter
Description: magnum-imageconverter utility
+Build-Depends: magnum[trade]
-Feature: wavaudioimporter
-Description: WavAudioImporter plugin
-Build-Depends: magnum[audio]
+Feature: magnuminfo
+Description: magnum-info utility
Feature: magnumfont
Description: MagnumFont plugin
@@ -46,23 +69,29 @@ Feature: magnumfontconverter
Description: MagnumFontConverter plugin
Build-Depends: magnum[text], magnum[tgaimageconverter]
+Feature: meshtools
+Description: MeshTools library
+Build-Depends: magnum[trade]
+
Feature: objimporter
Description: ObjImporter plugin
+Build-Depends: magnum[trade]
Feature: tgaimageconverter
Description: TgaImageConverter plugin
+Build-Depends: magnum[trade]
-Feature: tgaimporter
-Description: TgaImporter plugin
-
-Feature: debugtools
-Description: DebugTools library
-
-Feature: meshtools
-Description: MeshTools library
+Feature: opengltester
+Description: OpenGLTester library
+Build-Depends: corrade[testsuite], magnum[gl]
Feature: primitives
Description: Primitives library
+Build-Depends: magnum[trade]
+
+Feature: sdl2application
+Description: Sdl2Application library
+Build-Depends: sdl2
Feature: shapes
Description: Shapes library
@@ -80,16 +109,21 @@ Build-Depends: magnum[texturetools]
Feature: texturetools
Description: TextureTools library
-Feature: al-info
-Description: magnum-al-info utility
+Feature: tgaimporter
+Description: TgaImporter plugin
+Build-Depends: magnum[trade]
+
+Feature: trade
+Description: (Upcoming) Trade library
+
+Feature: wavaudioimporter
+Description: WavAudioImporter plugin
Build-Depends: magnum[audio]
Feature: windowlesswglapplication
Description: WindowlessWglApplication library
+Build-Depends: magnum[gl]
Feature: wglcontext
Description: WglContext library
-
-Feature: opengltester
-Description: OpenGLTester library
-Build-Depends: corrade[testsuite]
+Build-Depends: magnum[gl]
diff --git a/ports/magnum/magnumdeploy.ps1 b/ports/magnum/magnumdeploy.ps1
new file mode 100644
index 000000000..203f2bac3
--- /dev/null
+++ b/ports/magnum/magnumdeploy.ps1
@@ -0,0 +1,38 @@
+# 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 themselves.
+ # Rather than checking for Magnum*.dll, we check for Magnum.dll and
+ # Magnum-d.dll to avoid falsly matching MagnumTextureTools.dll for example.
+ 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 "Magnum.dll" -or $targetBinaryName -like "Magnum-d.dll") {
+ deployPlugins "importers"
+ deployPlugins "imageconverters"
+ }
+}
diff --git a/ports/magnum/portfile.cmake b/ports/magnum/portfile.cmake
index 10d7f02fc..af22fbb60 100644
--- a/ports/magnum/portfile.cmake
+++ b/ports/magnum/portfile.cmake
@@ -94,6 +94,9 @@ else()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/MagnumPlugins)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/magnum)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/magnum-d)
+
+ file(COPY ${CMAKE_CURRENT_LIST_DIR}/magnumdeploy.ps1 DESTINATION ${CURRENT_PACKAGES_DIR}/bin/magnum)
+ file(COPY ${CMAKE_CURRENT_LIST_DIR}/magnumdeploy.ps1 DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin/magnum-d)
endif()
# Handle copyright