Also build "noconsole" binary for Windows
On Windows, an application is either console or gui, it cannot be both. Scrcpy should be both: it outputs important information to console, but we still want to be able to ignore the console and launch it without a visible cmd.exe window. Therefore, build two binaries: - scrcpy.exe - scrcpy-noconsole.exe
This commit is contained in:
parent
106b87a4d2
commit
aedc2c2da9
3 changed files with 39 additions and 4 deletions
|
@ -11,7 +11,8 @@
|
||||||
.PHONY: default clean \
|
.PHONY: default clean \
|
||||||
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 \
|
||||||
sums release
|
sums release
|
||||||
|
@ -20,7 +21,9 @@ GRADLE ?= ./gradlew
|
||||||
|
|
||||||
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
|
||||||
|
@ -55,6 +58,16 @@ build-win32: prepare-deps-win32
|
||||||
-Doverride_server_path=scrcpy-server.jar )
|
-Doverride_server_path=scrcpy-server.jar )
|
||||||
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 \
|
||||||
|
-Dbuild_server=false \
|
||||||
|
-Dwindows_noconsole=true \
|
||||||
|
-Doverride_server_path=scrcpy-server.jar )
|
||||||
|
ninja -C "$(WIN32_NOCONSOLE_BUILD_DIR)"
|
||||||
|
|
||||||
prepare-deps-win64:
|
prepare-deps-win64:
|
||||||
-$(MAKE) -C prebuilt-deps prepare-win64
|
-$(MAKE) -C prebuilt-deps prepare-win64
|
||||||
|
|
||||||
|
@ -67,10 +80,21 @@ build-win64: prepare-deps-win64
|
||||||
-Doverride_server_path=scrcpy-server.jar )
|
-Doverride_server_path=scrcpy-server.jar )
|
||||||
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 \
|
||||||
|
-Dbuild_server=false \
|
||||||
|
-Dwindows_noconsole=true \
|
||||||
|
-Doverride_server_path=scrcpy-server.jar )
|
||||||
|
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.jar "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server.jar "$(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 prebuilt-deps/ffmpeg-4.0-win32-shared/bin/avutil-56.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.0-win32-shared/bin/avutil-56.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
cp prebuilt-deps/ffmpeg-4.0-win32-shared/bin/avcodec-58.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.0-win32-shared/bin/avcodec-58.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
cp prebuilt-deps/ffmpeg-4.0-win32-shared/bin/avformat-58.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.0-win32-shared/bin/avformat-58.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
||||||
|
@ -80,10 +104,11 @@ 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.8/i686-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
|
cp prebuilt-deps/SDL2-2.0.8/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.jar "$(DIST)/$(WIN64_TARGET_DIR)/"
|
cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server.jar "$(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 prebuilt-deps/ffmpeg-4.0-win64-shared/bin/avutil-56.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.0-win64-shared/bin/avutil-56.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
||||||
cp prebuilt-deps/ffmpeg-4.0-win64-shared/bin/avcodec-58.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.0-win64-shared/bin/avcodec-58.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
||||||
cp prebuilt-deps/ffmpeg-4.0-win64-shared/bin/avformat-58.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
cp prebuilt-deps/ffmpeg-4.0-win64-shared/bin/avformat-58.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
|
||||||
|
|
|
@ -129,7 +129,16 @@ conf.set('HIDPI_SUPPORT', get_option('hidpi_support'))
|
||||||
configure_file(configuration: conf, output: 'config.h')
|
configure_file(configuration: conf, output: 'config.h')
|
||||||
|
|
||||||
src_dir = include_directories('src')
|
src_dir = include_directories('src')
|
||||||
executable('scrcpy', src, dependencies: dependencies, include_directories: src_dir, install: true)
|
|
||||||
|
if get_option('windows_noconsole')
|
||||||
|
c_args = [ '-mwindows' ]
|
||||||
|
link_args = [ '-mwindows' ]
|
||||||
|
else
|
||||||
|
c_args = []
|
||||||
|
link_args = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
executable('scrcpy', src, dependencies: dependencies, include_directories: src_dir, install: true, c_args: c_args, link_args: link_args)
|
||||||
|
|
||||||
|
|
||||||
### TESTS
|
### TESTS
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
option('build_app', type: 'boolean', value: true, description: 'Build the client')
|
option('build_app', type: 'boolean', value: true, description: 'Build the client')
|
||||||
option('build_server', type: 'boolean', value: true, description: 'Build the server')
|
option('build_server', type: 'boolean', value: true, description: 'Build the server')
|
||||||
|
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('override_server_path', type: 'string', description: 'Hardcoded path to find the server at runtime')
|
option('override_server_path', type: 'string', description: 'Hardcoded path to find the server at runtime')
|
||||||
option('skip_frames', type: 'boolean', value: true, description: 'Always display the most recent frame')
|
option('skip_frames', type: 'boolean', value: true, description: 'Always display the most recent frame')
|
||||||
|
|
Loading…
Reference in a new issue