Skip to content

[windows] Switch to GN for library build #262

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Feb 7, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ install:
# of FDE, so for now clone master instead.
#- ps: build\ci\install_flutter.ps1 $env:APPVEYOR_BUILD_FOLDER\..
- git clone -b master https://github.com/flutter/flutter.git %APPVEYOR_BUILD_FOLDER%\..\flutter
- ps: build\ci\windows\install_gn.ps1 "$env:APPVEYOR_BUILD_FOLDER\bin"
- tools\run_dart_tool.bat fetch_jsoncpp %APPVEYOR_BUILD_FOLDER%\third_party\jsoncpp\src

build_script:
- set "PATH=%APPVEYOR_BUILD_FOLDER%\bin;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\;%PATH%"
# With the GN build done, build the example.
- msbuild "example\windows_fde\Example Embedder.sln"
34 changes: 34 additions & 0 deletions build/ci/windows/install_gn.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

$GN_URI = 'https://chrome-infra-packages.appspot.com/dl/gn/gn/windows-amd64/+/latest'
$NINJA_URI = 'https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip'
$TEMP_LOCATION = '{0}\tool.zip' -f $env:temp

if (!(Test-Path $env:temp)) {
New-Item -ItemType Directory -Path $env:temp | Out-Null
}

Write-Output ('Installing GN tools to {0}' -f $args[0])

# Ninja download requires TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Write-Output ('Downloading {0}' -f $GN_URI)
(New-Object System.Net.WebClient).DownloadFile($GN_URI, $TEMP_LOCATION)
Expand-Archive $TEMP_LOCATION -DestinationPath $args[0]

Write-Output ('Downloading {0}' -f $NINJA_URI)
(New-Object System.Net.WebClient).DownloadFile($NINJA_URI, $TEMP_LOCATION)
Expand-Archive $TEMP_LOCATION -DestinationPath $args[0]
21 changes: 7 additions & 14 deletions example/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,21 +66,14 @@ to a XIB in your own project:

### Windows

Open the `Example Embedder` Visual Studio solution file under `windows_fde\` and
build the GLFW Example project.
Open the `Example Embedder` Visual Studio solution file under `windows_fde\` to
build and run the GLFW Example project.

The resulting binary will be in `bin\x64\$(Configuration)\GLFW Example\`. It
currently uses relative paths so must be run from the `windows_fde\` directory:
The resulting binary will be in
`example\build\windows_fde\x64\$(Configuration)\GLFW Example\`. It currently
uses relative paths so if you run it manually it must be run from the
`example\windows_fde\` directory. E.g.:

```
> ".\bin\x64\$(Configuration)\GLFW Example\GLFW Example.exe"
> "..\build\windows_fde\x64\Debug\GLFW Example\GLFW Example.exe"
```

e.g.:

```
> ".\bin\x64\Debug Dynamic Library\GLFW Example\GLFW Example.exe"
```

Or you can use Visual Studio's inbuilt debugger to build and run the
example application automatically.
59 changes: 25 additions & 34 deletions example/windows_fde/Example Embedder.sln
Original file line number Diff line number Diff line change
@@ -1,34 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2026
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLFW Example", "GLFW Example.vcxproj", "{5A827760-CF8B-408A-99A3-B6C0AD2271E7}"
ProjectSection(ProjectDependencies) = postProject
{90057FD8-9460-43A6-8CDF-3AAC1C4255E5} = {90057FD8-9460-43A6-8CDF-3AAC1C4255E5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLFW Library", "..\..\library\windows\GLFW Library.vcxproj", "{90057FD8-9460-43A6-8CDF-3AAC1C4255E5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug Dynamic Library|x64 = Debug Dynamic Library|x64
Release Dynamic Library|x64 = Release Dynamic Library|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{90057FD8-9460-43A6-8CDF-3AAC1C4255E5}.Debug Dynamic Library|x64.ActiveCfg = Debug Dynamic Library|x64
{90057FD8-9460-43A6-8CDF-3AAC1C4255E5}.Debug Dynamic Library|x64.Build.0 = Debug Dynamic Library|x64
{90057FD8-9460-43A6-8CDF-3AAC1C4255E5}.Release Dynamic Library|x64.ActiveCfg = Release Dynamic Library|x64
{90057FD8-9460-43A6-8CDF-3AAC1C4255E5}.Release Dynamic Library|x64.Build.0 = Release Dynamic Library|x64
{5A827760-CF8B-408A-99A3-B6C0AD2271E7}.Debug Dynamic Library|x64.ActiveCfg = Debug Dynamic Library|x64
{5A827760-CF8B-408A-99A3-B6C0AD2271E7}.Debug Dynamic Library|x64.Build.0 = Debug Dynamic Library|x64
{5A827760-CF8B-408A-99A3-B6C0AD2271E7}.Release Dynamic Library|x64.ActiveCfg = Release Dynamic Library|x64
{5A827760-CF8B-408A-99A3-B6C0AD2271E7}.Release Dynamic Library|x64.Build.0 = Release Dynamic Library|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6C8A8041-10D8-4BEB-B73D-C02BCE62120B}
EndGlobalSection
EndGlobal

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2026
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLFW Example", "GLFW Example.vcxproj", "{5A827760-CF8B-408A-99A3-B6C0AD2271E7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5A827760-CF8B-408A-99A3-B6C0AD2271E7}.Debug|x64.ActiveCfg = Debug|x64
{5A827760-CF8B-408A-99A3-B6C0AD2271E7}.Debug|x64.Build.0 = Debug|x64
{5A827760-CF8B-408A-99A3-B6C0AD2271E7}.Release|x64.ActiveCfg = Release|x64
{5A827760-CF8B-408A-99A3-B6C0AD2271E7}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6C8A8041-10D8-4BEB-B73D-C02BCE62120B}
EndGlobalSection
EndGlobal
87 changes: 43 additions & 44 deletions example/windows_fde/GLFW Example.vcxproj
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug Dynamic Library|x64">
<Configuration>Debug Dynamic Library</Configuration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release Dynamic Library|x64">
<Configuration>Release Dynamic Library</Configuration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
Expand All @@ -17,13 +17,13 @@
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic Library|x64'" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic Library|x64'" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
Expand All @@ -35,54 +35,56 @@
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic Library|x64'">
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release Dynamic Library|x64'">
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic Library|x64'">
<OutDir>$(SolutionDir)bin\$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<IncludePath>$(ProjectDir)..\..\library\windows\dependencies\;$(ProjectDir)..\..\;$(IncludePath);$(ProjectDir)..\..\library\windows\;$(ProjectDir)..\..\library\include\;$(ProjectDir)..\..\library\common\client_wrapper\include\</IncludePath>
<LibraryPath>$(ProjectDir)..\..\library\windows\dependencies\GLFW\;$(SolutionDir)bin\$(Platform)\$(Configuration)\GLFW Library\;$(LibraryPath)</LibraryPath>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)..\build\windows_fde\$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(ProjectDir)..\build\windows_fde\intermediates\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<IncludePath>$(ProjectDir)..\..\;$(IncludePath);$(ProjectDir)..\..\out\include\;$(ProjectDir)..\..\out\fde_cpp_wrapper\include</IncludePath>
<LibraryPath>$(ProjectDir)..\..\out;$(ProjectDir)..\..\out\gen\glfw\GLFW\;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic Library|x64'">
<OutDir>$(SolutionDir)bin\$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<IncludePath>$(ProjectDir)..\..\library\windows\dependencies\;$(ProjectDir)..\..\;$(IncludePath);$(ProjectDir)..\..\library\windows\;$(ProjectDir)..\..\library\include\;$(ProjectDir)..\..\library\common\client_wrapper\include\</IncludePath>
<LibraryPath>$(ProjectDir)..\..\library\windows\dependencies\GLFW\;$(SolutionDir)bin\$(Platform)\$(Configuration)\GLFW Library\;$(LibraryPath)</LibraryPath>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)..\build\windows_fde\$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(ProjectDir)..\build\windows_fde\intermediates\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
<IncludePath>$(ProjectDir)..\..\;$(IncludePath);$(ProjectDir)..\..\out\include\;$(ProjectDir)..\..\out\fde_cpp_wrapper\include</IncludePath>
<LibraryPath>$(ProjectDir)..\..\out;$(ProjectDir)..\..\out\gen\glfw\GLFW\;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Dynamic Library|x64'">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>
</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);USE_FDE_TREE_PATHS</PreprocessorDefinitions>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>flutter_embedder.lib;glfw3.lib;opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>flutter_embedder.dll.lib;glfw3.lib;opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PreBuildEvent>
<Command>$(ProjectDir)scripts\build_example_app</Command>
<Message>Build the example app</Message>
<Command>$(ProjectDir)scripts\run_gn_build</Command>
<Message>Run the embedder library's GN build</Message>
</PreBuildEvent>
<PreLinkEvent>
<Command>xcopy /y /d /q "$(OutputPath)..\GLFW Library\flutter_engine.dll" "$(OutputPath)"</Command>
<Message>Get the flutter_engine.dll file from GLFW Library bin folder</Message>
<Command>
</Command>
<Message>
</Message>
</PreLinkEvent>
<PostBuildEvent>
<Command>xcopy /y /d /q "$(OutputPath)..\GLFW Library\flutter_embedder.dll" "$(OutputPath)"</Command>
<Command>$(ProjectDir)scripts\build_example_app "$(OutputPath)"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copy flutter_embedder.dll from library out to example out dir</Message>
<Message>Construct a runnable example from the various outputs</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Dynamic Library|x64'">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
Expand All @@ -92,39 +94,36 @@
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>
</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);USE_FDE_TREE_PATHS</PreprocessorDefinitions>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>flutter_embedder.lib;glfw3.lib;opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>flutter_embedder.dll.lib;glfw3.lib;opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PreBuildEvent>
<Command>$(ProjectDir)scripts\build_example_app</Command>
<Message>Build the example app</Message>
<Command>$(ProjectDir)scripts\run_gn_build</Command>
<Message>Run the embedder library's GN build</Message>
</PreBuildEvent>
<PreLinkEvent>
<Command>xcopy /y /d /q "$(OutputPath)..\GLFW Library\flutter_engine.dll" "$(OutputPath)"</Command>
<Message>Get the flutter_engine.dll file from GLFW Library bin folder</Message>
<Command>
</Command>
<Message>
</Message>
</PreLinkEvent>
<PostBuildEvent>
<Command>xcopy /y /d /q "$(OutputPath)..\GLFW Library\flutter_embedder.dll" "$(OutputPath)"</Command>
<Command>$(ProjectDir)scripts\build_example_app "$(OutputPath)"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copy flutter_embedder.dll from library out to example out dir</Message>
<Message>Construct a runnable example from the various outputs</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\library\common\client_wrapper\src\engine_method_result.cc" />
<ClCompile Include="..\..\library\common\client_wrapper\src\glfw\flutter_window_controller.cc" />
<ClCompile Include="..\..\library\common\client_wrapper\src\plugin_handler.cc" />
<ClCompile Include="..\..\out\fde_cpp_wrapper\engine_method_result.cc" />
<ClCompile Include="..\..\out\fde_cpp_wrapper\flutter_window_controller.cc" />
<ClCompile Include="..\..\out\fde_cpp_wrapper\plugin_handler.cc" />
<ClCompile Include="flutter_embedder_example.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\library\windows\GLFW Library.vcxproj">
<Project>{90057fd8-9460-43a6-8cdf-3aac1c4255e5}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
Expand Down
14 changes: 4 additions & 10 deletions example/windows_fde/GLFW Example.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,14 @@
<ClCompile Include="flutter_embedder_example.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\library\common\client_wrapper\src\engine_method_result.cc">
<ClCompile Include="..\..\out\fde_cpp_wrapper\engine_method_result.cc">
<Filter>Source Files\Client Wrapper</Filter>
</ClCompile>
<ClCompile Include="..\..\library\common\client_wrapper\src\glfw\flutter_window_controller.cc">
<ClCompile Include="..\..\out\fde_cpp_wrapper\flutter_window_controller.cc">
<Filter>Source Files\Client Wrapper</Filter>
</ClCompile>
<ClCompile Include="..\..\library\common\client_wrapper\src\json_message_codec.cc">
<Filter>Source Files\Client Wrapper</Filter>
</ClCompile>
<ClCompile Include="..\..\library\common\client_wrapper\src\json_method_codec.cc">
<Filter>Source Files\Client Wrapper</Filter>
</ClCompile>
<ClCompile Include="..\..\library\common\client_wrapper\src\plugin_handler.cc">
<ClCompile Include="..\..\out\fde_cpp_wrapper\plugin_handler.cc">
<Filter>Source Files\Client Wrapper</Filter>
</ClCompile>
</ItemGroup>
</Project>
</Project>
5 changes: 2 additions & 3 deletions example/windows_fde/flutter_embedder_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@
#include <string>
#include <vector>

#include "flutter_desktop_embedding/glfw/flutter_window_controller.h"
#include "flutter_desktop_embedding/flutter_window_controller.h"

int main(int argc, char **argv) {
// TODO: Make paths relative to the executable so it can be run from anywhere.
std::string assets_path = "..\\build\\flutter_assets";
std::string icu_data_path =
"..\\..\\library\\windows\\dependencies\\engine\\icudtl.dat";
std::string icu_data_path = "..\\build\\windows_fde\\icudtl.dat";

// Arguments for the Flutter Engine.
std::vector<std::string> arguments;
Expand Down
26 changes: 25 additions & 1 deletion example/windows_fde/scripts/build_example_app.bat
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,28 @@
:: See the License for the specific language governing permissions and
:: limitations under the License.
@echo off
%~dp0..\..\..\tools\build_flutter_assets %~dp0..\..

set FDE_ROOT=%~dp0..\..\..
set FLUTTER_APP_DIR=%~dp0..\..
set RUNNER_OUT_DIR=%FLUTTER_APP_DIR%\build\windows_fde
set TOOLS_DIR=%FDE_ROOT%\tools
set GN_OUT_DIR=%FDE_ROOT%\out
for /f "delims=" %%i in ('%TOOLS_DIR%\flutter_location') do set FLUTTER_DIR=%%i

:: Build the Flutter assets.
call %TOOLS_DIR%\build_flutter_assets %FLUTTER_APP_DIR%
if %errorlevel% neq 0 exit /b %errorlevel%

:: TODO: Change the paths below, and add the exe, to make a self-contained bundle,
:: as is done on Linux.

:: Copy the icudtl.dat file from the Flutter tree to the runner directory.
call xcopy /y /d /q %FLUTTER_DIR%\bin\cache\artifacts\engine\windows-x64\icudtl.dat %RUNNER_OUT_DIR%
if %errorlevel% neq 0 exit /b %errorlevel%

:: Copy the embedder DLLs to the target location provided to the script.
call xcopy /y /d /q %GN_OUT_DIR%\flutter_engine.dll %*
if %errorlevel% neq 0 exit /b %errorlevel%
call xcopy /y /d /q %GN_OUT_DIR%\flutter_embedder.dll %*
if %errorlevel% neq 0 exit /b %errorlevel%

Loading