89f6a3cfe7
Accept a parameter to limit the video size. For instance, with "-m 960", the great side of the video will be scaled down to 960 (if necessary), while the other side will be scaled down so that the aspect ratio is preserved. Both dimensions must be a multiple of 8, so black bands might be added, and the mouse positions must be computed accordingly.
92 lines
2.8 KiB
Makefile
92 lines
2.8 KiB
Makefile
.PHONY: jar push run clean compile compiletests test
|
|
|
|
SRC_DIR := src
|
|
GEN_DIR := gen
|
|
CLS_DIR := classes
|
|
CLS_DEX := classes.dex
|
|
TEST_SRC_DIR := tests
|
|
TEST_CLS_DIR := test_classes
|
|
TEST_LIBS := /usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar
|
|
|
|
BUILD_TOOLS := $(ANDROID_HOME)/build-tools/26.0.2
|
|
AIDL := $(BUILD_TOOLS)/aidl
|
|
ifeq ($(OS),Windows_NT)
|
|
DX := $(BUILD_TOOLS)/dx.bat
|
|
else
|
|
DX := $(BUILD_TOOLS)/dx
|
|
endif
|
|
|
|
ANDROID_JAR := $(ANDROID_HOME)/platforms/android-26/android.jar
|
|
|
|
AIDL_SRC := android/view/IRotationWatcher.aidl
|
|
SRC := com/genymobile/scrcpy/ScrCpyServer.java \
|
|
com/genymobile/scrcpy/ControlEvent.java \
|
|
com/genymobile/scrcpy/ControlEventReader.java \
|
|
com/genymobile/scrcpy/DesktopConnection.java \
|
|
com/genymobile/scrcpy/Device.java \
|
|
com/genymobile/scrcpy/DisplayInfo.java \
|
|
com/genymobile/scrcpy/EventController.java \
|
|
com/genymobile/scrcpy/Ln.java \
|
|
com/genymobile/scrcpy/Options.java \
|
|
com/genymobile/scrcpy/Point.java \
|
|
com/genymobile/scrcpy/Position.java \
|
|
com/genymobile/scrcpy/ScreenInfo.java \
|
|
com/genymobile/scrcpy/ScreenStreamer.java \
|
|
com/genymobile/scrcpy/ScreenStreamerSession.java \
|
|
com/genymobile/scrcpy/Size.java \
|
|
com/genymobile/scrcpy/wrappers/DisplayManager.java \
|
|
com/genymobile/scrcpy/wrappers/InputManager.java \
|
|
com/genymobile/scrcpy/wrappers/ServiceManager.java \
|
|
com/genymobile/scrcpy/wrappers/WindowManager.java \
|
|
|
|
TEST_SRC := com/genymobile/scrcpy/ControlEventReaderTest.java \
|
|
|
|
# generate classnames from filepath
|
|
TEST_CLS := $(subst /,.,$(basename $(TEST_SRC)))
|
|
|
|
JAR := scrcpy-server.jar
|
|
MAIN := com.genymobile.scrcpy.ScrCpyServer
|
|
|
|
AIDL_GEN := $(AIDL_SRC:%.aidl=$(GEN_DIR)/%.java)
|
|
AIDL_CLS := $(AIDL_SRC:%.aidl=$(CLS_DIR)/%.class)
|
|
SRC_CLS := $(SRC:%.java=$(CLS_DIR)/%.class)
|
|
CLS := $(AIDL_CLS) $(SRC_CLS)
|
|
|
|
ALL_JAVA := $(AIDL_GEN) $(addprefix $(SRC_DIR)/,$(SRC))
|
|
ALL_TESTS := $(addprefix $(TEST_SRC_DIR)/,$(TEST_SRC))
|
|
|
|
jar: $(JAR)
|
|
|
|
$(AIDL_GEN): $(GEN_DIR)/%.java : $(SRC_DIR)/%.aidl
|
|
mkdir -p $(GEN_DIR)
|
|
"$(AIDL)" -o$(GEN_DIR) $(SRC_DIR)/$(AIDL_SRC)
|
|
|
|
compile: $(ALL_JAVA)
|
|
@mkdir -p "$(CLS_DIR)"
|
|
javac -source 1.7 -target 1.7 \
|
|
-cp "$(ANDROID_JAR)" \
|
|
-d "$(CLS_DIR)" -sourcepath $(SRC_DIR):$(GEN_DIR) \
|
|
$(ALL_JAVA)
|
|
|
|
$(JAR): $(ALL_JAVA)
|
|
# we cannot track easily class dependencies, so execute compile only when jar is outdated
|
|
+$(MAKE) compile
|
|
"$(DX)" --dex --output=$(CLS_DEX) $(CLS_DIR)
|
|
jar cvf $(JAR) classes.dex
|
|
|
|
push: jar
|
|
adb push $(JAR) /data/local/tmp/
|
|
|
|
run: push
|
|
adb shell "CLASSPATH=/data/local/tmp/$(JAR) app_process /system/bin $(MAIN)"
|
|
|
|
clean:
|
|
rm -rf $(CLS_DEX) $(CLS_DIR) $(GEN_DIR) $(JAR) $(TEST_CLS_DIR)
|
|
|
|
compiletests: compile $(ALL_TESTS)
|
|
@mkdir -p "$(TEST_CLS_DIR)"
|
|
javac -cp "$(TEST_LIBS):$(ANDROID_JAR):$(CLS_DIR)" -d "$(TEST_CLS_DIR)" -sourcepath "$(TEST_SRC_DIR)" $(ALL_TESTS)
|
|
|
|
test:
|
|
+$(MAKE) compiletests
|
|
java -cp "$(TEST_LIBS):$(ANDROID_JAR):$(CLS_DIR):$(TEST_CLS_DIR)" org.junit.runner.JUnitCore $(TEST_CLS)
|