.PHONY: default release clean build build-app build-server run dist dist-zip sums test GRADLE ?= ./gradlew APP_BUILD_DIR := app-build APP_BUILD_DEBUG_DIR := app-build-debug DIST := dist TARGET_DIR := scrcpy VERSION := $(shell git describe --tags --always) TARGET := $(TARGET_DIR)-$(VERSION).zip default: @echo 'You must specify a target. Try: make release' release: clean dist-zip sums clean: $(GRADLE) clean rm -rf "$(APP_BUILD_DIR)" "$(APP_BUILD_DEBUG_DIR)" "$(DIST)" build-app-debug: [ -d "$(APP_BUILD_DEBUG_DIR)" ] || ( mkdir "$(APP_BUILD_DEBUG_DIR)" && \ CFLAGS=-fsanitize=address,undefined meson app "$(APP_BUILD_DEBUG_DIR)" --buildtype debug ) ninja -C "$(APP_BUILD_DEBUG_DIR)" build-server-debug: $(GRADLE) assembleDebug build-debug: build-app-debug build-server-debug run-debug: SCRCPY_SERVER_JAR=server/build/outputs/apk/debug/server-debug.apk $(APP_BUILD_DEBUG_DIR)/scrcpy $(ARGS) build-app: [ -d "$(APP_BUILD_DIR)" ] || ( mkdir "$(APP_BUILD_DIR)" && meson app "$(APP_BUILD_DIR)" --buildtype release ) ninja -C "$(APP_BUILD_DIR)" build-server: $(GRADLE) assembleRelease build: build-app build-server run: SCRCPY_SERVER_JAR=server/build/outputs/apk/release/server-release-unsigned.apk $(APP_BUILD_DIR)/scrcpy $(ARGS) dist: build mkdir -p "$(DIST)/$(TARGET_DIR)" # no need to sign the APK, we dont "install" it, this is in fact a simple jar cp server/build/outputs/apk/release/server-release-unsigned.apk "$(DIST)/$(TARGET_DIR)/scrcpy-server.jar" cp $(APP_BUILD_DIR)/scrcpy "$(DIST)/$(TARGET_DIR)/" dist-zip: dist cd "$(DIST)"; \ zip -r "$(TARGET)" "$(TARGET_DIR)" sums: cd "$(DIST)"; \ sha256sum *.zip > SHA256SUM.txt test: $(GRADLE) test ninja -C "$(APP_BUILD_DIR)" test