From 098f58a143cd456a5785b25b58d77e4125c39291 Mon Sep 17 00:00:00 2001 From: Joey Parrish Date: Tue, 15 Jun 2021 15:34:02 -0700 Subject: [PATCH] Fix shared library test runs on Windows Shared library builds worked, but failed tests because they were made with the wrong CRT linker settings. Strings allocated within the library could not be freed outside the library because the dynamic CRT was not used. This sets necessary gyp variables to link with a dynamic CRT on Windows, thereby fixing tests running in shared library mode that otherwise hung in a GitHub Actions environment. Related to #318 (shared_library builds on Windows) Issue #336 (progress toward GitHub Actions workflow to replace Travis and Appveyor, where we need to build and test shared_library on all platforms) b/190743862 (internal; tracking replacement of Travis) Change-Id: Iffefd27c2aa4ec479ce1d10b099483e417d2231f --- packager/common.gypi | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packager/common.gypi b/packager/common.gypi index 04824c2781..f3f27e3447 100644 --- a/packager/common.gypi +++ b/packager/common.gypi @@ -13,14 +13,30 @@ # musl is a lightweight C standard library used in Alpine Linux. 'musl%': 0, }, + 'shaka_code%': '<(shaka_code)', 'musl%': '<(musl)', 'libpackager_type%': 'static_library', + 'conditions': [ ['shaka_code==1', { # This enable warnings and warnings-as-errors. 'chromium_code': 1, }], + # These are some Chromium build settings that are normally keyed off of + # component=="shared_library". We don't use component=="shared_library" + # because it would result in a shared lib for every single component, but + # we still need these settings for a shared library build of libpackager + # on Windows. + ['libpackager_type=="shared_library"', { + # Make sure we use a dynamic CRT to avoid issues with std::string in + # the library API on Windows. + 'win_release_RuntimeLibrary': '2', # 2 = /MD (nondebug DLL) + 'win_debug_RuntimeLibrary': '3', # 3 = /MDd (debug DLL) + # Skip the Windows allocator shim on Windows. Using this with a shared + # library results in build errors. + 'win_use_allocator_shim': 0, + }], ], }, 'target_defaults': {