1################################################################################
2#
3# host-flutter-sdk-bin
4#
5################################################################################
6
7FLUTTER_SDK_BIN_VERSION = 3.19.5
8FLUTTER_SDK_BIN_SITE = https://storage.googleapis.com/flutter_infra_release/releases/stable/linux
9FLUTTER_SDK_BIN_SOURCE = flutter_linux_$(FLUTTER_SDK_BIN_VERSION)-stable.tar.xz
10FLUTTER_SDK_BIN_LICENSE = BSD-3-Clause
11FLUTTER_SDK_BIN_LICENSE_FILES = LICENSE
12
13HOST_FLUTTER_SDK_BIN_SDK = $(HOST_DIR)/share/flutter/sdk
14HOST_FLUTTER_SDK_BIN_DART_SDK = $(HOST_FLUTTER_SDK_BIN_SDK)/bin/cache/dart-sdk
15HOST_FLUTTER_SDK_BIN_SDK_ENGINE = $(HOST_FLUTTER_SDK_BIN_SDK)/bin/cache/artifacts/engine
16
17# We must set the home directory to the sdk directory or else flutter will
18# place .dart, .dart-sdk, and .flutter in ~/.
19HOST_FLUTTER_SDK_BIN_ENV = \
20	HOME=$(HOST_FLUTTER_SDK_BIN_SDK) \
21	PATH=$(BR_PATH):$(HOST_FLUTTER_SDK_BIN_SDK):$(HOST_FLUTTER_SDK_BIN_SDK)/bin \
22	PUB_CACHE=$(FLUTTER_SDK_BIN_PUB_CACHE)
23
24# The following config options must be ran one at a time.
25HOST_FLUTTER_SDK_BIN_CONF_OPTS = \
26	--clear-features \
27	--no-analytics \
28	--disable-analytics \
29	--enable-custom-devices \
30	--enable-linux-desktop \
31	--no-enable-android \
32	--no-enable-fuchsia \
33	--no-enable-ios \
34	--no-enable-macos-desktop \
35	--no-enable-windows-desktop
36
37define HOST_FLUTTER_SDK_BIN_CONFIGURE_CMDS
38	$(foreach i,$(HOST_FLUTTER_SDK_BIN_CONF_OPTS),
39		$(HOST_FLUTTER_SDK_BIN_ENV) $(@D)/bin/flutter config $(i); \
40	)
41	$(HOST_FLUTTER_SDK_BIN_ENV) $(@D)/bin/dart --disable-analytics
42endef
43
44define HOST_FLUTTER_SDK_BIN_BUILD_CMDS
45	mkdir -p $(HOST_FLUTTER_SDK_BIN_SDK)
46	cd $(@D) && \
47		$(HOST_FLUTTER_SDK_BIN_ENV) $(@D)/bin/flutter precache;
48endef
49
50define HOST_FLUTTER_SDK_BIN_INSTALL_CMDS
51	cp -rpdT $(@D)/. $(HOST_FLUTTER_SDK_BIN_SDK)/
52endef
53
54ifeq ($(FLUTTER_ENGINE_RUNTIME_MODE_PROFILE),y)
55HOST_FLUTTER_SDK_BIN_PROFILE_FLAGS = --track-widget-creation
56HOST_FLUTTER_SDK_BIN_SDK_PRODUCT = false
57HOST_FLUTTER_SDK_BIN_SDK_ROOT = $(HOST_FLUTTER_SDK_BIN_SDK_ENGINE)/common/flutter_patched_sdk
58HOST_FLUTTER_SDK_BIN_SDK_VM_PROFILE = true
59else ifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y)
60HOST_FLUTTER_SDK_BIN_DEBUG_FLAGS = --enable-asserts
61HOST_FLUTTER_SDK_BIN_SDK_PRODUCT = false
62HOST_FLUTTER_SDK_BIN_SDK_ROOT = $(HOST_FLUTTER_SDK_BIN_SDK_ENGINE)/common/flutter_patched_sdk
63HOST_FLUTTER_SDK_BIN_SDK_VM_PROFILE = false
64else
65HOST_FLUTTER_SDK_BIN_SDK_PRODUCT = true
66HOST_FLUTTER_SDK_BIN_SDK_ROOT = $(HOST_FLUTTER_SDK_BIN_SDK_ENGINE)/common/flutter_patched_sdk_product
67HOST_FLUTTER_SDK_BIN_SDK_VM_PROFILE = false
68endif
69
70# The Order matters.Taken from:
71# https://github.com/meta-flutter/meta-flutter/blob/kirkstone/classes/flutter-app.inc
72HOST_FLUTTER_SDK_BIN_DART_ARGS = \
73	--verbose \
74	--disable-analytics \
75	--disable-dart-dev $(HOST_FLUTTER_SDK_BIN_SDK_ENGINE)/linux-x64/frontend_server.dart.snapshot \
76	--sdk-root $(HOST_FLUTTER_SDK_BIN_SDK_ROOT) \
77	--target=flutter \
78	--no-print-incremental-dependencies \
79	-Ddart.vm.profile=$(HOST_FLUTTER_SDK_BIN_SDK_VM_PROFILE) \
80	-Ddart.vm.product=$(HOST_FLUTTER_SDK_BIN_SDK_PRODUCT) \
81	$(HOST_FLUTTER_SDK_BIN_DEBUG_FLAGS) \
82	$(HOST_FLUTTER_SDK_BIN_PROFILE_FLAGS) \
83	--aot \
84	--tfa \
85	--target-os linux \
86	--packages .dart_tool/package_config.json \
87	--output-dill .dart_tool/flutter_build/*/app.dill \
88	--depfile .dart_tool/flutter_build/*/kernel_snapshot.d
89
90# Helper wrapper to run flutter when building flutter applications.
91HOST_FLUTTER_SDK_BIN_FLUTTER = \
92	$(HOST_FLUTTER_SDK_BIN_ENV) \
93	$(HOST_FLUTTER_SDK_BIN_SDK)/bin/flutter
94
95# Helper wrapper to run dart when building flutter applications.
96HOST_FLUTTER_SDK_BIN_DART_BIN = \
97	$(HOST_FLUTTER_SDK_BIN_ENV) \
98	$(HOST_FLUTTER_SDK_BIN_DART_SDK)/bin/dart \
99	$(HOST_FLUTTER_SDK_BIN_DART_ARGS)
100
101$(eval $(host-generic-package))
102
103# For target packages to locate said pub-cache
104FLUTTER_SDK_BIN_PUB_CACHE = $(DL_DIR)/br-flutter-pub-cache
105