Compare commits
1 Commits
makefile
...
doc-rotate
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f23bb81fe8 |
@@ -9,20 +9,21 @@
|
|||||||
# the server to the device.
|
# the server to the device.
|
||||||
|
|
||||||
.PHONY: default clean \
|
.PHONY: default clean \
|
||||||
test \
|
|
||||||
build-server \
|
build-server \
|
||||||
prepare-deps-win32 prepare-deps-win64 \
|
prepare-deps-win32 prepare-deps-win64 \
|
||||||
build-win32 build-win64 \
|
build-win32 build-win32-noconsole \
|
||||||
|
build-win64 build-win64-noconsole \
|
||||||
dist-win32 dist-win64 \
|
dist-win32 dist-win64 \
|
||||||
zip-win32 zip-win64 \
|
zip-win32 zip-win64 \
|
||||||
release
|
sums release
|
||||||
|
|
||||||
GRADLE ?= ./gradlew
|
GRADLE ?= ./gradlew
|
||||||
|
|
||||||
TEST_BUILD_DIR := build-test
|
|
||||||
SERVER_BUILD_DIR := build-server
|
SERVER_BUILD_DIR := build-server
|
||||||
WIN32_BUILD_DIR := build-win32
|
WIN32_BUILD_DIR := build-win32
|
||||||
|
WIN32_NOCONSOLE_BUILD_DIR := build-win32-noconsole
|
||||||
WIN64_BUILD_DIR := build-win64
|
WIN64_BUILD_DIR := build-win64
|
||||||
|
WIN64_NOCONSOLE_BUILD_DIR := build-win64-noconsole
|
||||||
|
|
||||||
DIST := dist
|
DIST := dist
|
||||||
WIN32_TARGET_DIR := scrcpy-win32
|
WIN32_TARGET_DIR := scrcpy-win32
|
||||||
@@ -32,35 +33,19 @@ VERSION := $(shell git describe --tags --always)
|
|||||||
WIN32_TARGET := $(WIN32_TARGET_DIR)-$(VERSION).zip
|
WIN32_TARGET := $(WIN32_TARGET_DIR)-$(VERSION).zip
|
||||||
WIN64_TARGET := $(WIN64_TARGET_DIR)-$(VERSION).zip
|
WIN64_TARGET := $(WIN64_TARGET_DIR)-$(VERSION).zip
|
||||||
|
|
||||||
RELEASE_DIR := release-$(VERSION)
|
release: clean zip-win32 zip-win64 sums
|
||||||
|
@echo "Windows archives generated in $(DIST)/"
|
||||||
release: clean test build-server zip-win32 zip-win64
|
|
||||||
mkdir -p "$(RELEASE_DIR)"
|
|
||||||
cp "$(SERVER_BUILD_DIR)/server/scrcpy-server" \
|
|
||||||
"$(RELEASE_DIR)/scrcpy-server-$(VERSION)"
|
|
||||||
cp "$(DIST)/$(WIN32_TARGET)" "$(RELEASE_DIR)"
|
|
||||||
cp "$(DIST)/$(WIN64_TARGET)" "$(RELEASE_DIR)"
|
|
||||||
cd "$(RELEASE_DIR)" && \
|
|
||||||
sha256sum "scrcpy-server-$(VERSION)" \
|
|
||||||
"scrcpy-win32-$(VERSION).zip" \
|
|
||||||
"scrcpy-win64-$(VERSION).zip" > SHA256SUMS.txt
|
|
||||||
@echo "Release generated in $(RELEASE_DIR)/"
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(GRADLE) clean
|
$(GRADLE) clean
|
||||||
rm -rf "$(DIST)" "$(TEST_BUILD_DIR)" "$(SERVER_BUILD_DIR)" \
|
rm -rf "$(SERVER_BUILD_DIR)" "$(WIN32_BUILD_DIR)" "$(WIN64_BUILD_DIR)" \
|
||||||
"$(WIN32_BUILD_DIR)" "$(WIN64_BUILD_DIR)"
|
"$(WIN32_NOCONSOLE_BUILD_DIR)" "$(WIN64_NOCONSOLE_BUILD_DIR)" "$(DIST)"
|
||||||
|
|
||||||
test:
|
|
||||||
[ -d "$(TEST_BUILD_DIR)" ] || ( mkdir "$(TEST_BUILD_DIR)" && \
|
|
||||||
meson "$(TEST_BUILD_DIR)" -Db_sanitize=address )
|
|
||||||
ninja -C "$(TEST_BUILD_DIR)"
|
|
||||||
$(GRADLE) -p server check
|
|
||||||
|
|
||||||
build-server:
|
build-server:
|
||||||
[ -d "$(SERVER_BUILD_DIR)" ] || ( mkdir "$(SERVER_BUILD_DIR)" && \
|
[ -d "$(SERVER_BUILD_DIR)" ] || ( mkdir "$(SERVER_BUILD_DIR)" && \
|
||||||
meson "$(SERVER_BUILD_DIR)" --buildtype release -Dcompile_app=false )
|
meson "$(SERVER_BUILD_DIR)" \
|
||||||
ninja -C "$(SERVER_BUILD_DIR)"
|
--buildtype release -Dcompile_app=false )
|
||||||
|
ninja -C "$(SERVER_BUILD_DIR)"
|
||||||
|
|
||||||
prepare-deps-win32:
|
prepare-deps-win32:
|
||||||
-$(MAKE) -C prebuilt-deps prepare-win32
|
-$(MAKE) -C prebuilt-deps prepare-win32
|
||||||
@@ -75,6 +60,17 @@ build-win32: prepare-deps-win32
|
|||||||
-Dportable=true )
|
-Dportable=true )
|
||||||
ninja -C "$(WIN32_BUILD_DIR)"
|
ninja -C "$(WIN32_BUILD_DIR)"
|
||||||
|
|
||||||
|
build-win32-noconsole: prepare-deps-win32
|
||||||
|
[ -d "$(WIN32_NOCONSOLE_BUILD_DIR)" ] || ( mkdir "$(WIN32_NOCONSOLE_BUILD_DIR)" && \
|
||||||
|
meson "$(WIN32_NOCONSOLE_BUILD_DIR)" \
|
||||||
|
--cross-file cross_win32.txt \
|
||||||
|
--buildtype release --strip -Db_lto=true \
|
||||||
|
-Dcrossbuild_windows=true \
|
||||||
|
-Dcompile_server=false \
|
||||||
|
-Dwindows_noconsole=true \
|
||||||
|
-Dportable=true )
|
||||||
|
ninja -C "$(WIN32_NOCONSOLE_BUILD_DIR)"
|
||||||
|
|
||||||
prepare-deps-win64:
|
prepare-deps-win64:
|
||||||
-$(MAKE) -C prebuilt-deps prepare-win64
|
-$(MAKE) -C prebuilt-deps prepare-win64
|
||||||
|
|
||||||
@@ -88,12 +84,23 @@ build-win64: prepare-deps-win64
|
|||||||
-Dportable=true )
|
-Dportable=true )
|
||||||
ninja -C "$(WIN64_BUILD_DIR)"
|
ninja -C "$(WIN64_BUILD_DIR)"
|
||||||
|
|
||||||
dist-win32: build-server build-win32
|
build-win64-noconsole: prepare-deps-win64
|
||||||
|
[ -d "$(WIN64_NOCONSOLE_BUILD_DIR)" ] || ( mkdir "$(WIN64_NOCONSOLE_BUILD_DIR)" && \
|
||||||
|
meson "$(WIN64_NOCONSOLE_BUILD_DIR)" \
|
||||||
|
--cross-file cross_win64.txt \
|
||||||
|
--buildtype release --strip -Db_lto=true \
|
||||||
|
-Dcrossbuild_windows=true \
|
||||||
|
-Dcompile_server=false \
|
||||||
|
-Dwindows_noconsole=true \
|
||||||
|
-Dportable=true )
|
||||||
|
ninja -C "$(WIN64_NOCONSOLE_BUILD_DIR)"
|
||||||
|
|
||||||
|
dist-win32: build-server build-win32 build-win32-noconsole
|
||||||
mkdir -p "$(DIST)/$(WIN32_TARGET_DIR)"
|
mkdir -p "$(DIST)/$(WIN32_TARGET_DIR)"
|
||||||
cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
cp "$(WIN32_BUILD_DIR)"/app/scrcpy.exe "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp "$(WIN32_BUILD_DIR)"/app/scrcpy.exe "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
|
cp "$(WIN32_NOCONSOLE_BUILD_DIR)"/app/scrcpy.exe "$(DIST)/$(WIN32_TARGET_DIR)/scrcpy-noconsole.exe"
|
||||||
cp data/scrcpy-console.bat "$(DIST)/$(WIN32_TARGET_DIR)"
|
cp data/scrcpy-console.bat "$(DIST)/$(WIN32_TARGET_DIR)"
|
||||||
cp data/scrcpy-noconsole.vbs "$(DIST)/$(WIN32_TARGET_DIR)"
|
|
||||||
cp prebuilt-deps/ffmpeg-4.3.1-win32-shared/bin/avutil-56.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.3.1-win32-shared/bin/avutil-56.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
cp prebuilt-deps/ffmpeg-4.3.1-win32-shared/bin/avcodec-58.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.3.1-win32-shared/bin/avcodec-58.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
cp prebuilt-deps/ffmpeg-4.3.1-win32-shared/bin/avformat-58.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.3.1-win32-shared/bin/avformat-58.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
@@ -104,12 +111,12 @@ dist-win32: build-server build-win32
|
|||||||
cp prebuilt-deps/platform-tools/AdbWinUsbApi.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp prebuilt-deps/platform-tools/AdbWinUsbApi.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
cp prebuilt-deps/SDL2-2.0.12/i686-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp prebuilt-deps/SDL2-2.0.12/i686-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
|
|
||||||
dist-win64: build-server build-win64
|
dist-win64: build-server build-win64 build-win64-noconsole
|
||||||
mkdir -p "$(DIST)/$(WIN64_TARGET_DIR)"
|
mkdir -p "$(DIST)/$(WIN64_TARGET_DIR)"
|
||||||
cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(DIST)/$(WIN64_TARGET_DIR)/"
|
cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(DIST)/$(WIN64_TARGET_DIR)/"
|
||||||
cp "$(WIN64_BUILD_DIR)"/app/scrcpy.exe "$(DIST)/$(WIN64_TARGET_DIR)/"
|
cp "$(WIN64_BUILD_DIR)"/app/scrcpy.exe "$(DIST)/$(WIN64_TARGET_DIR)/"
|
||||||
|
cp "$(WIN64_NOCONSOLE_BUILD_DIR)"/app/scrcpy.exe "$(DIST)/$(WIN64_TARGET_DIR)/scrcpy-noconsole.exe"
|
||||||
cp data/scrcpy-console.bat "$(DIST)/$(WIN64_TARGET_DIR)"
|
cp data/scrcpy-console.bat "$(DIST)/$(WIN64_TARGET_DIR)"
|
||||||
cp data/scrcpy-noconsole.vbs "$(DIST)/$(WIN64_TARGET_DIR)"
|
|
||||||
cp prebuilt-deps/ffmpeg-4.3.1-win64-shared/bin/avutil-56.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.3.1-win64-shared/bin/avutil-56.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
||||||
cp prebuilt-deps/ffmpeg-4.3.1-win64-shared/bin/avcodec-58.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.3.1-win64-shared/bin/avcodec-58.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
||||||
cp prebuilt-deps/ffmpeg-4.3.1-win64-shared/bin/avformat-58.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.3.1-win64-shared/bin/avformat-58.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
||||||
@@ -127,3 +134,7 @@ zip-win32: dist-win32
|
|||||||
zip-win64: dist-win64
|
zip-win64: dist-win64
|
||||||
cd "$(DIST)/$(WIN64_TARGET_DIR)"; \
|
cd "$(DIST)/$(WIN64_TARGET_DIR)"; \
|
||||||
zip -r "../$(WIN64_TARGET)" .
|
zip -r "../$(WIN64_TARGET)" .
|
||||||
|
|
||||||
|
sums:
|
||||||
|
cd "$(DIST)"; \
|
||||||
|
sha256sum *.zip > SHA256SUMS.txt
|
||||||
@@ -202,6 +202,8 @@ scrcpy --lock-video-orientation 3 # 90° clockwise
|
|||||||
|
|
||||||
This affects recording orientation.
|
This affects recording orientation.
|
||||||
|
|
||||||
|
The [window may also be rotated](#rotation) independently.
|
||||||
|
|
||||||
|
|
||||||
#### Encoder
|
#### Encoder
|
||||||
|
|
||||||
@@ -407,9 +409,9 @@ Note that _scrcpy_ manages 3 different rotations:
|
|||||||
- <kbd>MOD</kbd>+<kbd>r</kbd> requests the device to switch between portrait
|
- <kbd>MOD</kbd>+<kbd>r</kbd> requests the device to switch between portrait
|
||||||
and landscape (the current running app may refuse, if it does support the
|
and landscape (the current running app may refuse, if it does support the
|
||||||
requested orientation).
|
requested orientation).
|
||||||
- `--lock-video-orientation` changes the mirroring orientation (the orientation
|
- [`--lock-video-orientation`](#lock-video-orientation) changes the mirroring
|
||||||
of the video sent from the device to the computer). This affects the
|
orientation (the orientation of the video sent from the device to the
|
||||||
recording.
|
computer). This affects the recording.
|
||||||
- `--rotation` (or <kbd>MOD</kbd>+<kbd>←</kbd>/<kbd>MOD</kbd>+<kbd>→</kbd>)
|
- `--rotation` (or <kbd>MOD</kbd>+<kbd>←</kbd>/<kbd>MOD</kbd>+<kbd>→</kbd>)
|
||||||
rotates only the window content. This affects only the display, not the
|
rotates only the window content. This affects only the display, not the
|
||||||
recording.
|
recording.
|
||||||
|
|||||||
@@ -119,6 +119,9 @@ conf.set('DEFAULT_BIT_RATE', '8000000') # 8Mbps
|
|||||||
# enable High DPI support
|
# enable High DPI support
|
||||||
conf.set('HIDPI_SUPPORT', get_option('hidpi_support'))
|
conf.set('HIDPI_SUPPORT', get_option('hidpi_support'))
|
||||||
|
|
||||||
|
# disable console on Windows
|
||||||
|
conf.set('WINDOWS_NOCONSOLE', get_option('windows_noconsole'))
|
||||||
|
|
||||||
# run a server debugger and wait for a client to be attached
|
# run a server debugger and wait for a client to be attached
|
||||||
conf.set('SERVER_DEBUGGER', get_option('server_debugger'))
|
conf.set('SERVER_DEBUGGER', get_option('server_debugger'))
|
||||||
|
|
||||||
@@ -129,11 +132,18 @@ configure_file(configuration: conf, output: 'config.h')
|
|||||||
|
|
||||||
src_dir = include_directories('src')
|
src_dir = include_directories('src')
|
||||||
|
|
||||||
|
if get_option('windows_noconsole')
|
||||||
|
link_args = [ '-Wl,--subsystem,windows' ]
|
||||||
|
else
|
||||||
|
link_args = []
|
||||||
|
endif
|
||||||
|
|
||||||
executable('scrcpy', src,
|
executable('scrcpy', src,
|
||||||
dependencies: dependencies,
|
dependencies: dependencies,
|
||||||
include_directories: src_dir,
|
include_directories: src_dir,
|
||||||
install: true,
|
install: true,
|
||||||
c_args: [])
|
c_args: [],
|
||||||
|
link_args: link_args)
|
||||||
|
|
||||||
install_man('scrcpy.1')
|
install_man('scrcpy.1')
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,12 @@ cmd_execute(const char *const argv[], HANDLE *handle) {
|
|||||||
return PROCESS_ERROR_GENERIC;
|
return PROCESS_ERROR_GENERIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!CreateProcessW(NULL, wide, NULL, NULL, FALSE, 0, NULL, NULL, &si,
|
#ifdef WINDOWS_NOCONSOLE
|
||||||
|
int flags = CREATE_NO_WINDOW;
|
||||||
|
#else
|
||||||
|
int flags = 0;
|
||||||
|
#endif
|
||||||
|
if (!CreateProcessW(NULL, wide, NULL, NULL, FALSE, flags, NULL, NULL, &si,
|
||||||
&pi)) {
|
&pi)) {
|
||||||
SDL_free(wide);
|
SDL_free(wide);
|
||||||
*handle = NULL;
|
*handle = NULL;
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
CreateObject("Wscript.Shell").Run "cmd /c scrcpy.exe", 0, false
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
option('compile_app', type: 'boolean', value: true, description: 'Build the client')
|
option('compile_app', type: 'boolean', value: true, description: 'Build the client')
|
||||||
option('compile_server', type: 'boolean', value: true, description: 'Build the server')
|
option('compile_server', type: 'boolean', value: true, description: 'Build the server')
|
||||||
option('crossbuild_windows', type: 'boolean', value: false, description: 'Build for Windows from Linux')
|
option('crossbuild_windows', type: 'boolean', value: false, description: 'Build for Windows from Linux')
|
||||||
|
option('windows_noconsole', type: 'boolean', value: false, description: 'Disable console on Windows (pass -mwindows flag)')
|
||||||
option('prebuilt_server', type: 'string', description: 'Path of the prebuilt server')
|
option('prebuilt_server', type: 'string', description: 'Path of the prebuilt server')
|
||||||
option('portable', type: 'boolean', value: false, description: 'Use scrcpy-server from the same directory as the scrcpy executable')
|
option('portable', type: 'boolean', value: false, description: 'Use scrcpy-server from the same directory as the scrcpy executable')
|
||||||
option('hidpi_support', type: 'boolean', value: true, description: 'Enable High DPI support')
|
option('hidpi_support', type: 'boolean', value: true, description: 'Enable High DPI support')
|
||||||
|
|||||||
44
release.sh
44
release.sh
@@ -1,2 +1,44 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
make -f release.make
|
set -e
|
||||||
|
|
||||||
|
# test locally
|
||||||
|
TESTDIR=build_test
|
||||||
|
rm -rf "$TESTDIR"
|
||||||
|
# run client tests with ASAN enabled
|
||||||
|
meson "$TESTDIR" -Db_sanitize=address
|
||||||
|
ninja -C"$TESTDIR" test
|
||||||
|
|
||||||
|
# test server
|
||||||
|
GRADLE=${GRADLE:-./gradlew}
|
||||||
|
$GRADLE -p server check
|
||||||
|
|
||||||
|
BUILDDIR=build_release
|
||||||
|
rm -rf "$BUILDDIR"
|
||||||
|
meson "$BUILDDIR" --buildtype release --strip -Db_lto=true
|
||||||
|
cd "$BUILDDIR"
|
||||||
|
ninja
|
||||||
|
cd -
|
||||||
|
|
||||||
|
# build Windows releases
|
||||||
|
make -f Makefile.CrossWindows
|
||||||
|
|
||||||
|
# the generated server must be the same everywhere
|
||||||
|
cmp "$BUILDDIR/server/scrcpy-server" dist/scrcpy-win32/scrcpy-server
|
||||||
|
cmp "$BUILDDIR/server/scrcpy-server" dist/scrcpy-win64/scrcpy-server
|
||||||
|
|
||||||
|
# get version name
|
||||||
|
TAG=$(git describe --tags --always)
|
||||||
|
|
||||||
|
# create release directory
|
||||||
|
mkdir -p "release-$TAG"
|
||||||
|
cp "$BUILDDIR/server/scrcpy-server" "release-$TAG/scrcpy-server-$TAG"
|
||||||
|
cp "dist/scrcpy-win32-$TAG.zip" "release-$TAG/"
|
||||||
|
cp "dist/scrcpy-win64-$TAG.zip" "release-$TAG/"
|
||||||
|
|
||||||
|
# generate checksums
|
||||||
|
cd "release-$TAG"
|
||||||
|
sha256sum "scrcpy-server-$TAG" \
|
||||||
|
"scrcpy-win32-$TAG.zip" \
|
||||||
|
"scrcpy-win64-$TAG.zip" > SHA256SUMS.txt
|
||||||
|
|
||||||
|
echo "Release generated in release-$TAG/"
|
||||||
|
|||||||
Reference in New Issue
Block a user