Skip to content

merge latest from upstream #1

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 28 commits into from
Feb 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
7587999
don't set pkgconfig path
ardera May 10, 2022
8c1abc2
fixes for flutter 3.0
ardera May 13, 2022
e919e11
resolve asset bundle path to global path
ardera May 17, 2022
bb97f56
Correct locale extraction to exclude delims
DoumanAsh Jun 24, 2022
fb75b55
Update README.md
ardera Jul 4, 2022
c61c10d
Fix unicode symbol length calculation.
laynor Jul 4, 2022
2158102
replace fprintf with DEBUG_ASSERT_MSG.
laynor Jul 4, 2022
e306d1b
Do not filter text field input based on selected keyboard type.
laynor Jul 4, 2022
22f5a00
fix video player input lag
ardera Jul 7, 2022
04ef38a
Libflutter engine rework (#223)
pieter-scholtz Jul 21, 2022
869fa7f
fallback to gbm_surface_create if gbm_surface_create_with_modifiers d…
bojidartonchev Aug 9, 2022
8ddc79a
Update README.md
ardera Aug 19, 2022
cf57b52
Expand icudtl.dat lookup to asset bundle
DoumanAsh Aug 19, 2022
fb8e61b
Add gstreamer based audioplayers plugin (#277)
DoumanAsh Aug 25, 2022
fd17206
Update guides for Flutter 3.3.0
JL-Wilson Sep 2, 2022
bcffe17
skip drm devices that don't have a display connected
ardera Aug 19, 2022
674ff3f
don't throw errors when hardware cursor is not supported
ardera Aug 19, 2022
0aec3cc
meta-flutter filesystem layout (#290)
ardera Oct 26, 2022
d7f2b41
fix filesystem_layout.c
ardera Oct 27, 2022
6c11e1e
Add "close when no response" action
ardera Nov 1, 2022
e629b18
Fix path of kernel_blob.bin
ardera Nov 2, 2022
d130a72
handle tablet input
ardera Aug 26, 2022
7eb6fdf
fix for older libinput
ardera Nov 4, 2022
8244be1
remove debian stretch build job stub
ardera Nov 4, 2022
566db0a
Revert whitespace changes of commit "Correct locale extraction to exc…
ardera Nov 4, 2022
3119648
fixes for flutter-next
ardera Jan 10, 2023
20483a1
Update flutter gallery commit for flutter 3.7
ardera Jan 27, 2023
d9739ed
Merge remote-tracking branch 'upstream/master' into merge_upstream
Feb 18, 2023
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
55 changes: 50 additions & 5 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ env:

jobs:
build:
name: build (raspbian bullseye, pi4)

# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
Expand All @@ -21,14 +23,18 @@ jobs:

steps:
- uses: actions/checkout@v2

- name: Install dependencies
run: sudo apt-get install -y cmake libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev ttf-mscorefonts-installer fontconfig libsystemd-dev libinput-dev libudev-dev libxkbcommon-dev ninja-build
run: |
sudo apt-get install -y \
cmake libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev \
ttf-mscorefonts-installer fontconfig libsystemd-dev libinput-dev libudev-dev \
libxkbcommon-dev ninja-build libgstreamer-plugins-base1.0-dev

- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DBUILD_OMXPLAYER_VIDEO_PLAYER_PLUGIN=On -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -GNinja
run: cmake -B ${{github.workspace}}/build -DBUILD_OMXPLAYER_VIDEO_PLAYER_PLUGIN=On -DBUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN=On -DBUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN=On -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -GNinja

- name: Build
# Build your program with the given configuration
Expand All @@ -37,7 +43,46 @@ jobs:
- name: Test
if: false
working-directory: ${{github.workspace}}/build
# Execute tests defined by the CMake configuration.
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C ${{env.BUILD_TYPE}}


build-buster:
name: build (debian buster, x64)
runs-on: ubuntu-latest
container:
image: debian:buster
env:
DEBIAN_FRONTEND: noninteractive
steps:
- uses: actions/checkout@v2

- name: Install dependencies
run: |
apt-get update && apt-get install -y \
cmake libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev \
fonts-liberation fontconfig libsystemd-dev libinput-dev libudev-dev \
libxkbcommon-dev ninja-build libgstreamer-plugins-base1.0-dev

- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: |
cmake \
-B ${{ github.workspace }}/build \
-DBUILD_OMXPLAYER_VIDEO_PLAYER_PLUGIN=On \
-DBUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN=On \
-DBUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN=On \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-GNinja

- name: Build
# Build your program with the given configuration
run: cmake --build ${{ github.workspace }}/build --config ${{ env.BUILD_TYPE }}

- name: Test
if: false
working-directory: ${{github.workspace}}/build
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C ${{env.BUILD_TYPE}}
36 changes: 36 additions & 0 deletions .github/workflows/no-response.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: No Response

# Both `issue_comment` and `scheduled` event types are required for this Action
# to work properly.
on:
issue_comment:
types: [created]
schedule:
# Schedule for five minutes after the hour, every hour
- cron: '5 * * * *'

# By specifying the access of one of the scopes, all of those that are not
# specified are set to 'none'.
permissions:
issues: write

jobs:
noResponse:
runs-on: ubuntu-latest
steps:
- uses: godofredoc/no-response@0ce2dc0e63e1c7d2b87752ceed091f6d32c9df09
with:
token: ${{ github.token }}
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
closeComment: >
Without additional information, we are unfortunately not sure how to
resolve this issue. We are therefore reluctantly going to close this
bug for now.
If you find this problem please file a new issue with the same description,
what happens and logs. All system setups can be slightly different so it's
always better to open new issues and reference the related ones.
Thanks for your contribution.
# Number of days of inactivity before an issue is closed for lack of response.
daysUntilClose: 21
# Label requiring a response.
responseRequiredLabel: "waiting for response"
95 changes: 83 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ if(NOT CMAKE_BUILD_TYPE)
message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to Release.")
endif()

project(flutter-pi LANGUAGES C CXX VERSION "1.0.0")
project(flutter-pi LANGUAGES C VERSION "1.0.0")

message(STATUS "Generator .............. ${CMAKE_GENERATOR}")
message(STATUS "Build Type ............. ${CMAKE_BUILD_TYPE}")
Expand All @@ -40,13 +40,20 @@ option(BUILD_TEXT_INPUT_PLUGIN "Include the text input plugin in the finished bi
option(BUILD_RAW_KEYBOARD_PLUGIN "Include the raw keyboard plugin in the finished binary. Enables raw keycode listening in flutter via the flutter RawKeyboard interface." ON)
option(BUILD_TEST_PLUGIN "Include the test plugin in the finished binary. Allows testing platform channel communication." OFF)
option(BUILD_OMXPLAYER_VIDEO_PLAYER_PLUGIN "Include the omxplayer_video_player plugin in the finished binary. Allows for hardware accelerated video playback in flutter using omxplayer." ON)
option(BUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN "Include the gstreamer_video_player plugin in the finished binary. Allows for more stable, hardware accelerated video playback in flutter using gstreamer." ON)
option(BUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN "Include the gstreamer based video plugins in the finished binary. Allows for more stable, hardware accelerated video playback in flutter using gstreamer." ON)
option(BUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN "Include the gstreamer based audio plugins in the finished binary." ON)
option(TRY_BUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN "Don't throw an error if the gstreamer libs aren't found, instead just don't build the gstreamer video player plugin in that case." ON)
option(TRY_BUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN "Don't throw an error if the gstreamer libs aren't found, instead just don't build gstreamer audio plugin." ON)
option(DUMP_ENGINE_LAYERS "True if flutter-pi should dump the list of rendering layers that the flutter engine sends to flutter-pi on each draw." OFF)
option(ENABLE_TSAN "True to build & link with -fsanitize=thread" OFF)
option(ENABLE_ASAN "True to build & link with -fsanitize=address" OFF)
option(ENABLE_UBSAN "True to build & link with -fsanitize=undefined" OFF)
option(ENABLE_MTRACE "True if flutter-pi should call GNU mtrace() on startup." OFF)

set(FILESYSTEM_LAYOUTS default meta-flutter)
set(FILESYSTEM_LAYOUT "default" CACHE STRING "Where to look for the icudtl.dat, app.so/libapp.so, flutter asset bundle.")
set_property(CACHE FILESYSTEM_LAYOUT PROPERTY STRINGS ${FILESYSTEM_LAYOUTS})

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

if(NOT FLUTTER_EMBEDDER_HEADER)
Expand Down Expand Up @@ -98,9 +105,6 @@ endif()
include(ExternalProject)
include(CheckCCompilerFlag)

set(ENV{PKG_CONFIG_PATH} ${PKG_CONFIG_PATH})
message(STATUS "PKG_CONFIG_PATH ........ $ENV{PKG_CONFIG_PATH}")

include(FindPkgConfig)
pkg_check_modules(DRM REQUIRED libdrm)
pkg_check_modules(GBM REQUIRED gbm)
Expand All @@ -125,6 +129,7 @@ add_executable(flutter-pi
src/locales.c
src/notifier_listener.c
src/pixel_format.c
src/filesystem_layout.c
src/plugins/services.c
)

Expand All @@ -133,10 +138,11 @@ target_link_libraries(flutter-pi
${GBM_LDFLAGS}
${EGL_LDFLAGS}
${GLESV2_LDFLAGS}
${LIBSYSTEMD_LDFLAGS}
${LIBINPUT_LDFLAGS}
${LIBUDEV_LDFLAGS}
${LIBXKBCOMMON_LDFLAGS}
EGL
systemd #${LIBSYSTEMD_LDFLAGS}
input #${LIBINPUT_LDFLAGS}
xkbcommon #${LIBUDEV_LDFLAGS}
udev #${LIBXKBCOMMON_LDFLAGS}
pthread dl rt m atomic
)

Expand All @@ -155,22 +161,47 @@ target_include_directories(flutter-pi PRIVATE
)

target_compile_options(flutter-pi PRIVATE
${DRM_CFLAGS}
${DRM_CFLAGS}
${GBM_CFLAGS}
${EGL_CFLAGS}
${GLESV2_CFLAGS}
${LIBSYSTEMD_CFLAGS}
${LIBINPUT_CFLAGS}
${LIBUDEV_CFLAGS}
${LIBXKBCOMMON_CFLAGS}
$<$<CONFIG:Debug>:-O0 -Wall -Wextra -Wno-unused-function -Wno-sign-compare -Wno-missing-field-initializers -Werror -ggdb -DDEBUG>
$<$<CONFIG:Debug>:-O0 -Wall -Wextra -Wno-unused-function -Wno-sign-compare -Wno-missing-field-initializers -Werror -ggdb -U_FORTIFY_SOURCE -DDEBUG>
$<$<CONFIG:RelWithDebInfo>:-O2 -Wall -Wextra -Wno-unused-function -Wno-sign-compare -Wno-missing-field-initializers -ggdb>
$<$<CONFIG:Release>:-O2 -Wall -Wextra -Wno-unused-function -Wno-sign-compare -Wno-missing-field-initializers -ggdb>
)

# TODO: Just unconditionally define those, make them optional later
# There's no other way to query the libinput version (in code) somehow.
# So we need to roll our own libinput version macro
string(REPLACE "." ";" LIBINPUT_VERSION_AS_LIST ${LIBINPUT_VERSION})
list(GET LIBINPUT_VERSION_AS_LIST 0 LIBINPUT_VERSION_MAJOR)
list(GET LIBINPUT_VERSION_AS_LIST 1 LIBINPUT_VERSION_MINOR)
list(GET LIBINPUT_VERSION_AS_LIST 2 LIBINPUT_VERSION_PATCH)

target_compile_definitions(flutter-pi PRIVATE
LIBINPUT_VERSION_MAJOR=${LIBINPUT_VERSION_MAJOR}
LIBINPUT_VERSION_MINOR=${LIBINPUT_VERSION_MINOR}
LIBINPUT_VERSION_PATCH=${LIBINPUT_VERSION_PATCH}
)

# TODO: Just unconditionally define those, make them optional later
target_compile_definitions(flutter-pi PRIVATE HAS_KMS HAS_EGL HAS_GBM HAS_FBDEV)

if(NOT FILESYSTEM_LAYOUT IN_LIST FILESYSTEM_LAYOUTS)
message(FATAL_ERROR "FILESYSTEM_LAYOUT must be one of ${FILESYSTEM_LAYOUTS}")
endif()

message(STATUS "Filesystem Layout ...... ${FILESYSTEM_LAYOUT}")

if(FILESYSTEM_LAYOUT STREQUAL default)
target_compile_definitions(flutter-pi PRIVATE "FILESYSTEM_LAYOUT_DEFAULT")
elseif(FILESYSTEM_LAYOUT STREQUAL meta-flutter)
target_compile_definitions(flutter-pi PRIVATE "FILESYSTEM_LAYOUT_METAFLUTTER")
endif()

# TODO: We actually don't need the compile definitions anymore, except for
# text input and raw keyboard plugin (because those have special treatment
# in flutter-pi.c)
Expand Down Expand Up @@ -221,26 +252,66 @@ if (BUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN)
${LIBGSTREAMER_APP_LDFLAGS}
${LIBGSTREAMER_ALLOCATORS_LDFLAGS}
${LIBGSTREAMER_VIDEO_LDFLAGS}
${LIBGSTREAMER_AUDIO_LIBRARY_DIRS}
)
target_include_directories(flutter-pi PRIVATE
${LIBGSTREAMER_INCLUDE_DIRS}
${LIBGSTREAMER_PLUGINS_BASE_INCLUDE_DIRS}
${LIBGSTREAMER_APP_INCLUDE_DIRS}
${LIBGSTREAMER_ALLOCATORS_INCLUDE_DIRS}
${LIBGSTREAMER_VIDEO_INCLUDE_DIRS}
${LIBGSTREAMER_AUDIO_INCLUDE_DIRS}
)
target_compile_options(flutter-pi PRIVATE
${LIBGSTREAMER_CFLAGS}
${LIBGSTREAMER_PLUGINS_BASE_CFLAGS}
${LIBGSTREAMER_APP_CFLAGS}
${LIBGSTREAMER_ALLOCATORS_CFLAGS}
${LIBGSTREAMER_VIDEO_CFLAGS}
${LIBGSTREAMER_AUDIO_CFLAGS}
)
else()
message(NOTICE "Couldn't find gstreamer libraries. Gstreamer video player plugin won't be build.")
endif()
endif()

if (BUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN)
if (TRY_BUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN)
pkg_check_modules(LIBGSTREAMER gstreamer-1.0)
pkg_check_modules(LIBGSTREAMER_APP gstreamer-app-1.0)
pkg_check_modules(LIBGSTREAMER_AUDIO gstreamer-audio-1.0)
else()
pkg_check_modules(LIBGSTREAMER REQUIRED gstreamer-1.0)
pkg_check_modules(LIBGSTREAMER_APP REQUIRED gstreamer-app-1.0)
pkg_check_modules(LIBGSTREAMER_AUDIO REQUIRED gstreamer-audio-1.0)
endif()

if (LIBGSTREAMER_FOUND AND LIBGSTREAMER_APP_FOUND AND LIBGSTREAMER_AUDIO_FOUND)
target_sources(flutter-pi PRIVATE
src/plugins/audioplayers/plugin.c
src/plugins/audioplayers/player.c
)
target_compile_definitions(flutter-pi PRIVATE "BUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN")
target_link_libraries(flutter-pi
${LIBGSTREAMER_LDFLAGS}
${LIBGSTREAMER_APP_LDFLAGS}
${LIBGSTREAMER_AUDIO_LIBRARY_DIRS}
)
target_include_directories(flutter-pi PRIVATE
${LIBGSTREAMER_INCLUDE_DIRS}
${LIBGSTREAMER_APP_INCLUDE_DIRS}
${LIBGSTREAMER_AUDIO_INCLUDE_DIRS}
)
target_compile_options(flutter-pi PRIVATE
${LIBGSTREAMER_CFLAGS}
${LIBGSTREAMER_APP_CFLAGS}
${LIBGSTREAMER_AUDIO_CFLAGS}
)
else()
message(NOTICE "Couldn't find gstreamer libraries. Gstreamer audio player plugin won't be build.")
endif()
endif()

# Needed so dart VM can actually resolve symbols in the same
# executable.
target_link_options(flutter-pi PRIVATE
Expand Down
2 changes: 1 addition & 1 deletion GETTING_STARTED.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ In each step below with Bash commands, the commands start with a set of `export`
--sdk-root ~/dev/flutter-for-pi/bin/cache/artifacts/engine/common/flutter_patched_sdk_product \
--target=flutter \
--aot --tfa -Ddart.vm.product=true \
--packages .packages --output-dill build/kernel_snapshot.dill --depfile build/kernel_snapshot.d \
--packages .dart_tool\package_config.json --output-dill build/kernel_snapshot.dill --depfile build/kernel_snapshot.d \
package:$APPNAME/main.dart
../engine-binaries/$ARM/gen_snapshot_linux_x64_release \
--deterministic --snapshot_kind=app-aot-elf \
Expand Down
22 changes: 14 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## 📰 NEWS
- There's now a new video player based on gstreamer. See [gstreamer video player](#gstreamer-video-player) section.
- The new latest flutter gallery commit for flutter 2.10 is `5da082d`
- The new latest flutter gallery commit for flutter 3.7 is `9776b9fd916635e10a32bd426fcd7a20c3841faf`

# flutter-pi
A light-weight Flutter Engine Embedder for Raspberry Pi. Inspired by https://github.com/chinmaygarde/flutter_from_scratch.
Expand Down Expand Up @@ -109,7 +109,7 @@ If you encounter issues running flutter-pi on any of the supported platforms lis
2. Switch to console mode:
`System Options -> Boot / Auto Login` and select `Console` or `Console (Autologin)`.

3. *Raspbian buster only, skip this if you're on bullseye*
3. *You can skip this if you're on Raspberry Pi 4 with Raspbian Bullseye*
Enable the V3D graphics driver:
`Advanced Options -> GL Driver -> GL (Fake KMS)`

Expand All @@ -123,7 +123,7 @@ If you encounter issues running flutter-pi on any of the supported platforms lis
usermod -a -G render pi
```

5. Finish and reboot.
7. Finish and reboot.

<details>
<summary>More information</summary>
Expand Down Expand Up @@ -164,7 +164,7 @@ If you encounter issues running flutter-pi on any of the supported platforms lis
```bash
git clone https://github.com/flutter/gallery.git flutter_gallery
cd flutter_gallery
git checkout 5da082d
git checkout 9776b9fd916635e10a32bd426fcd7a20c3841faf
flutter build bundle
rsync -a ./build/flutter_assets/ pi@raspberrypi:/home/pi/flutter_gallery/
```
Expand All @@ -173,7 +173,7 @@ rsync -a ./build/flutter_assets/ pi@raspberrypi:/home/pi/flutter_gallery/
<details>
<summary>More information</summary>

- flutter_gallery is developed against flutter master. `5da082d82e2da9f57e396b5a1302dc924c81f83d` is currently the latest flutter gallery
- flutter_gallery is developed against flutter master. `9776b9fd916635e10a32bd426fcd7a20c3841faf` is currently the latest flutter gallery
commit working with flutter stable.
</details>

Expand All @@ -195,13 +195,19 @@ rsync -a ./build/flutter_assets/ pi@raspberrypi:/home/pi/flutter_gallery/
--aot ^
--tfa ^
-Ddart.vm.product=true ^
--packages .packages ^
--packages .dart_tool\package_config.json ^
--output-dill build\kernel_snapshot.dill ^
--verbose ^
--depfile build\kernel_snapshot.d ^
package:my_app_name/main.dart
```

<details>
<summary>More information</summary>

- In versions prior to Flutter 3.3.0 the `--packages` argument should be set to `.packages`. In versions greater than or equal to 3.3.0 the `--packages` argument should be set to `.dart_tool\package_config.json`.
</details>

5. Fetch the latest `gen_snapshot_linux_x64_release` I provide in the [engine binaries repo](https://github.com/ardera/flutter-engine-binaries-for-arm).
6. The following steps must be executed on a linux x64 machine. If you're on windows, you can use [WSL](https://docs.microsoft.com/de-de/windows/wsl/install-win10). If you're on macOS, you can use a linux VM.
7. Build the `app.so`. If you're building for _arm64_, you need to omit the `--sim-use-hardfp` flag.
Expand Down Expand Up @@ -231,7 +237,7 @@ rsync -a ./build/flutter_assets/ pi@raspberrypi:/home/pi/flutter_gallery/
git clone https://github.com/flutter/gallery.git flutter_gallery
git clone --depth 1 https://github.com/ardera/flutter-engine-binaries-for-arm.git engine-binaries
cd flutter_gallery
git checkout 5da082d82e2da9f57e396b5a1302dc924c81f83d
git checkout 9776b9fd916635e10a32bd426fcd7a20c3841faf
flutter build bundle
C:\flutter\bin\cache\dart-sdk\bin\dart.exe ^
C:\flutter\bin\cache\dart-sdk\bin\snapshots\frontend_server.dart.snapshot ^
Expand All @@ -240,7 +246,7 @@ rsync -a ./build/flutter_assets/ pi@raspberrypi:/home/pi/flutter_gallery/
--aot ^
--tfa ^
-Ddart.vm.product=true ^
--packages .packages ^
--packages .dart_tool\package_config.json ^
--output-dill build\kernel_snapshot.dill ^
--verbose ^
--depfile build\kernel_snapshot.d ^
Expand Down
Loading