diff options
| author | Jonathan Hale <Squareys@googlemail.com> | 2018-04-19 04:33:12 +0200 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2018-04-18 19:33:12 -0700 |
| commit | 3a3fa5cd8f02dde78b00c12273b338e293edcd51 (patch) | |
| tree | 68ed6e05289fbfb2ffa9393777cd946b039d776c | |
| parent | 08438e581c3818932f5bc66c744b4d49b2734b62 (diff) | |
| download | vcpkg-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>
| -rw-r--r-- | ports/magnum-plugins/CONTROL | 26 | ||||
| -rw-r--r-- | ports/magnum-plugins/portfile.cmake | 7 | ||||
| -rw-r--r-- | ports/magnum/CONTROL | 102 | ||||
| -rw-r--r-- | ports/magnum/magnumdeploy.ps1 | 38 | ||||
| -rw-r--r-- | ports/magnum/portfile.cmake | 3 | ||||
| -rw-r--r-- | scripts/buildsystems/msbuild/applocal.ps1 | 17 |
6 files changed, 148 insertions, 45 deletions
diff --git a/ports/magnum-plugins/CONTROL b/ports/magnum-plugins/CONTROL index 12a444e2d..98e7e606d 100644 --- a/ports/magnum-plugins/CONTROL +++ b/ports/magnum-plugins/CONTROL @@ -1,31 +1,36 @@ Source: magnum-plugins -Version: 2018.02-1 +Version: 2018.02-2 Build-Depends: magnum Description: Plugins for magnum, C++11/C++14 graphics middleware for games and data visualization http://magnum.graphics/ Default-Features: anyimageimporter, anysceneimporter, anyimageconverter, ddsimporter, miniexrimageconverter, opengeximporter, stanfordimporter, stbimageconverter, stbimageimporter Feature: anyimageimporter Description: AnyImageImporter plugin +Build-Depends: magnum[trade] Feature: anyaudioimporter Description: AnyAudioImporter plugin +Build-Depends: magnum[audio] Feature: anyimageconverter Description: AnyImageConverter plugin +Build-Depends: magnum[trade] Feature: anysceneimporter Description: AnySceneImporter plugin +Build-Depends: magnum[trade] Feature: assimpimporter Description: AssimpImporter plugin -Build-Depends: assimp, magnum-plugins[anyimageimporter] +Build-Depends: assimp, magnum-plugins[anyimageimporter], magnum[anyimageimporter], magnum[trade] Feature: ddsimporter Description: DdsImporter plugin +Build-Depends: magnum[trade] Feature: devilimageimporter Description: DevIlImageImporter plugin -Build-Depends: devil +Build-Depends: devil, magnum[trade] Feature: drflacaudioimporter Description: DrFlacAudioImporter plugin @@ -45,31 +50,35 @@ Build-Depends: harfbuzz, magnum-plugins[freetypefont] Feature: jpegimporter Description: JpegImporter plugin -Build-Depends: libjpeg-turbo +Build-Depends: libjpeg-turbo, magnum[trade] Feature: miniexrimageconverter Description: MiniExrImageConverter plugin +Build-Depends: magnum[trade] Feature: opengeximporter Description: OpenGexImporter plugin -Build-Depends: magnum-plugins[anyimageimporter] +Build-Depends: magnum-plugins[anyimageimporter], magnum[anyimageimporter], magnum[trade] Feature: pngimageconverter Description: PngImageConverter plugin -Build-Depends: libpng +Build-Depends: libpng, magnum[trade] Feature: pngimporter Description: PngImporter plugin -Build-Depends: libpng +Build-Depends: libpng, magnum[trade] Feature: stanfordimporter Description: StanfordImporter plugin +Build-Depends: magnum[trade] Feature: stbimageconverter Description: StbImageConverter plugin +Build-Depends: magnum[trade] Feature: stbimageimporter Description: StbImageImporter plugin +Build-Depends: magnum[trade] Feature: stbtruetypefont Description: StbTrueTypeFont plugin @@ -79,3 +88,6 @@ Feature: stbvorbisaudioimporter Description: StbVorbisAudioImporter plugin Build-Depends: magnum[audio] +Feature: tinygltfimporter +Description: (Upcoming) TinyGltfImporter plugin +Build-Depends: magnum-plugins[anyimageimporter], magnum[anyimageimporter], magnum-plugins[stbimageimporter], magnum[trade] diff --git a/ports/magnum-plugins/portfile.cmake b/ports/magnum-plugins/portfile.cmake index 86e5622d5..bedf9e395 100644 --- a/ports/magnum-plugins/portfile.cmake +++ b/ports/magnum-plugins/portfile.cmake @@ -14,9 +14,9 @@ vcpkg_apply_patches( ) if(VCPKG_LIBRARY_LINKAGE STREQUAL static) - set(BUILD_STATIC 1) + set(BUILD_PLUGINS_STATIC 1) else() - set(BUILD_STATIC 0) + set(BUILD_PLUGINS_STATIC 0) endif() # Handle features @@ -40,7 +40,8 @@ vcpkg_configure_cmake( PREFER_NINJA # Disable this option if project cannot be built with Ninja OPTIONS ${_COMPONENT_FLAGS} - -DBUILD_STATIC=${BUILD_STATIC} + -DBUILD_STATIC=${BUILD_PLUGINS_STATIC} + -DBUILD_PLUGINS_STATIC=${BUILD_PLUGINS_STATIC} -DMAGNUM_PLUGINS_DEBUG_DIR=${CURRENT_INSTALLED_DIR}/debug/bin/magnum-d -DMAGNUM_PLUGINS_RELEASE_DIR=${CURRENT_INSTALLED_DIR}/bin/magnum ) 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 diff --git a/scripts/buildsystems/msbuild/applocal.ps1 b/scripts/buildsystems/msbuild/applocal.ps1 index 3f0f2ef37..e5f3c3dd0 100644 --- a/scripts/buildsystems/msbuild/applocal.ps1 +++ b/scripts/buildsystems/msbuild/applocal.ps1 @@ -4,6 +4,7 @@ param([string]$targetBinary, [string]$installedDir, [string]$tlogFile, [string]$ $g_searched = @{} # Note: installedDir is actually the bin\ directory. $g_install_root = Split-Path $installedDir -parent +$g_is_debug = $g_install_root -match '(.*\\)?debug(\\)?$' # Ensure we create the copied files log, even if we don't end up copying any files if ($copiedFilesLog) @@ -63,6 +64,13 @@ function resolve([string]$targetBinary) { deployBinary $baseTargetBinaryDir $installedDir "$_" if (Test-Path function:\deployPluginsIfQt) { deployPluginsIfQt $targetBinaryDir "$g_install_root\plugins" "$_" } if (Test-Path function:\deployOpenNI2) { deployOpenNI2 $targetBinaryDir "$g_install_root" "$_" } + if (Test-Path function:\deployPluginsIfMagnum) { + if ($g_is_debug) { + deployPluginsIfMagnum $targetBinaryDir "$g_install_root\bin\magnum-d" "$_" + } else { + deployPluginsIfMagnum $targetBinaryDir "$g_install_root\bin\magnum" "$_" + } + } resolve "$baseTargetBinaryDir\$_" } elseif (Test-Path "$targetBinaryDir\$_") { Write-Verbose " ${_}: $_ not found in vcpkg; locally deployed" @@ -85,5 +93,12 @@ if (Test-Path "$g_install_root\bin\OpenNI2\openni2deploy.ps1") { . "$g_install_root\bin\OpenNI2\openni2deploy.ps1" } +# Note: This is a hack to make Magnum work. +if (Test-Path "$g_install_root\bin\magnum\magnumdeploy.ps1") { + . "$g_install_root\bin\magnum\magnumdeploy.ps1" +} elseif (Test-Path "$g_install_root\bin\magnum-d\magnumdeploy.ps1") { + . "$g_install_root\bin\magnum-d\magnumdeploy.ps1" +} + resolve($targetBinary) -Write-Verbose $($g_searched | out-string)
\ No newline at end of file +Write-Verbose $($g_searched | out-string) |
