blob: 14f1cab4b0110effa45e275e33d642bd6d343010 [file] [log] [blame]
# This beginning section is used to setup the environment for running with mojo_shell.
ETHER_DIR := $(V23_ROOT)/release/mojo/syncbase
CROUPIER_DIR := $(shell pwd)
SHELL := /bin/bash -euo pipefail
# Sky wants us to use a later version of pub, so just in case, use theirs when getting packages.
# TODO(alexfandrianto): How do I update my actual pub and my sublime pub?
PATH := $(SKY_DIR)/src/third_party/dart-sdk/dart-sdk/bin:$(PATH)
ifdef ANDROID
MOJO_ANDROID_FLAGS := --android
MOJO_BUILD_DIR := $(MOJO_DIR)/src/out/android_Debug
SKY_BUILD_DIR := $(SKY_DIR)/src/out/android_Debug
ETHER_BUILD_DIR := $(ETHER_DIR)/gen/mojo/android
SYNCBASE_DATA_DIR := /data/data/org.chromium.mojo.shell/app_home/syncbase_data
else
MOJO_BUILD_DIR := $(MOJO_DIR)/src/out/Debug
SKY_BUILD_DIR := $(SKY_DIR)/src/out/Debug
ETHER_BUILD_DIR := $(ETHER_DIR)/gen/mojo/linux_amd64
SYNCBASE_DATA_DIR := /tmp/syncbase_data
endif
# NOTE(nlacasse): Running Go Mojo services requires passing the
# --enable-multiprocess flag to mojo_shell. This is because the Go runtime is
# very large, and can interfere with C++ memory if they are in the same
# process.
MOJO_SHELL_FLAGS := -v --enable-multiprocess \
--config-alias SKY_DIR=$(SKY_DIR) \
--config-alias SKY_BUILD_DIR=$(SKY_BUILD_DIR) \
--config-alias ETHER_DIR=$(ETHER_DIR) \
--config-alias ETHER_BUILD_DIR=$(ETHER_BUILD_DIR) \
--config-alias CROUPIER_DIR=$(CROUPIER_DIR)
.DELETE_ON_ERROR:
# Get the packages used by the dart project, according to pubspec.yaml
# Can also use `pub get`, but Sublime occasionally reverts me to an ealier version.
# Only `pub upgrade` can escape such a thing.
packages: pubspec.yaml
pub upgrade
DART_LIB_FILES := $(shell find lib -name *.dart ! -name *.part.dart)
DART_TEST_FILES := $(shell find test -name *.dart ! -name *.part.dart)
.PHONY: dartfmt
dartfmt:
dartfmt -w $(DART_LIB_FILES) $(DART_TEST_FILES)
.PHONY: lint
lint: packages
dartanalyzer lib/main.dart | grep -v "\[warning\] The imported libraries"
dartanalyzer $(DART_TEST_FILES) | grep -v "\[warning\] The imported libraries"
.PHONY: start
start: packages
./packages/sky/sky_tool start --checked
.PHONY: mock
mock:
mv lib/src/syncbase/log_writer.dart lib/src/syncbase/log_writer.dart.backup
cp lib/src/mocks/log_writer.dart lib/src/syncbase/
.PHONY: unmock
unmock:
mv lib/src/syncbase/log_writer.dart.backup lib/src/syncbase/log_writer.dart
.PHONY: install
install: packages
./packages/sky/sky_tool start --install --checked
.PHONY: env-check
env-check:
ifndef MOJO_DIR
$(error MOJO_DIR is not set)
endif
ifndef SKY_DIR
$(error SKY_DIR is not set)
endif
ifndef V23_ROOT
$(error V23_ROOT is not set)
endif
ifeq ($(wildcard $(MOJO_BUILD_DIR)),)
$(error ERROR: $(MOJO_BUILD_DIR) does not exist. Please see README.md for instructions on compiling Mojo resources.)
endif
# Run the Sky program with mojo shell. This allows use of Syncbase and Mojo.
# If syncbase doesn't load, it could be that port 4002 is still in use; try fuser 4002/tcp.
.PHONY: start-with-mojo
start-with-mojo: env-check packages
$(MOJO_DIR)/src/mojo/devtools/common/mojo_run --config-file $(PWD)/mojoconfig $(MOJO_SHELL_FLAGS) $(MOJO_ANDROID_FLAGS) 'https://core.mojoapps.io/kiosk_wm.mojo https://croupier.v.io/lib/main.dart'
# TODO(alexfandrianto): I split off the syncbase logic from game.dart because it
# would not run in a stand-alone VM. We will need to add mojo_test eventually.
.PHONY: test
test: packages
# Protect src/syncbase/log_writer.dart
mv lib/src/syncbase/log_writer.dart lib/src/syncbase/log_writer.dart.backup
cp lib/src/mocks/log_writer.dart lib/src/syncbase/
pub run test -r expanded $(DART_TEST_FILES) || (mv lib/src/syncbase/log_writer.dart.backup lib/src/syncbase/log_writer.dart && exit 1)
mv lib/src/syncbase/log_writer.dart.backup lib/src/syncbase/log_writer.dart
.PHONY: clean
clean:
rm -rf .packages packages .pubspec.lock