diff --git a/app/meson.build b/app/meson.build index b1233c6b..88e2df9a 100644 --- a/app/meson.build +++ b/app/meson.build @@ -98,77 +98,24 @@ endif cc = meson.get_compiler('c') -crossbuild_windows = meson.is_cross_build() and host_machine.system() == 'windows' - -if not crossbuild_windows - - # native build - dependencies = [ - dependency('libavformat', version: '>= 57.33'), - dependency('libavcodec', version: '>= 57.37'), - dependency('libavutil'), - dependency('libswresample'), - dependency('sdl2', version: '>= 2.0.5'), - ] - - if v4l2_support - dependencies += dependency('libavdevice') - endif - - if usb_support - dependencies += dependency('libusb-1.0') - endif - -else - # cross-compile mingw32 build (from Linux to Windows) - prebuilt_sdl2 = meson.get_cross_property('prebuilt_sdl2') - sdl2_bin_dir = meson.current_source_dir() + '/prebuilt-deps/data/' + prebuilt_sdl2 + '/bin' - sdl2_lib_dir = meson.current_source_dir() + '/prebuilt-deps/data/' + prebuilt_sdl2 + '/lib' - sdl2_include_dir = 'prebuilt-deps/data/' + prebuilt_sdl2 + '/include' - - sdl2 = declare_dependency( - dependencies: [ - cc.find_library('SDL2', dirs: sdl2_bin_dir), - cc.find_library('SDL2main', dirs: sdl2_lib_dir), - ], - include_directories: include_directories(sdl2_include_dir) - ) - - prebuilt_ffmpeg = meson.get_cross_property('prebuilt_ffmpeg') - ffmpeg_bin_dir = meson.current_source_dir() + '/prebuilt-deps/data/' + prebuilt_ffmpeg + '/bin' - ffmpeg_include_dir = 'prebuilt-deps/data/' + prebuilt_ffmpeg + '/include' - - ffmpeg = declare_dependency( - dependencies: [ - cc.find_library('avcodec-60', dirs: ffmpeg_bin_dir), - cc.find_library('avformat-60', dirs: ffmpeg_bin_dir), - cc.find_library('avutil-58', dirs: ffmpeg_bin_dir), - cc.find_library('swresample-4', dirs: ffmpeg_bin_dir), - ], - include_directories: include_directories(ffmpeg_include_dir) - ) - - prebuilt_libusb = meson.get_cross_property('prebuilt_libusb') - libusb_bin_dir = meson.current_source_dir() + '/prebuilt-deps/data/' + prebuilt_libusb + '/bin' - libusb_include_dir = 'prebuilt-deps/data/' + prebuilt_libusb + '/include' - - libusb = declare_dependency( - dependencies: [ - cc.find_library('msys-usb-1.0', dirs: libusb_bin_dir), - ], - include_directories: include_directories(libusb_include_dir) - ) +dependencies = [ + dependency('libavformat', version: '>= 57.33'), + dependency('libavcodec', version: '>= 57.37'), + dependency('libavutil'), + dependency('libswresample'), + dependency('sdl2', version: '>= 2.0.5'), +] - dependencies = [ - ffmpeg, - sdl2, - libusb, - cc.find_library('mingw32') - ] +if v4l2_support + dependencies += dependency('libavdevice') +endif +if usb_support + dependencies += dependency('libusb-1.0') endif if host_machine.system() == 'windows' + dependencies += cc.find_library('mingw32') dependencies += cc.find_library('ws2_32') endif diff --git a/app/prebuilt-deps/prepare-ffmpeg.sh b/app/prebuilt-deps/prepare-ffmpeg.sh index 96ea3ee7..19840afb 100755 --- a/app/prebuilt-deps/prepare-ffmpeg.sh +++ b/app/prebuilt-deps/prepare-ffmpeg.sh @@ -6,11 +6,11 @@ cd "$DIR" mkdir -p "$PREBUILT_DATA_DIR" cd "$PREBUILT_DATA_DIR" -VERSION=6.1-scrcpy-2 +VERSION=6.1-scrcpy-3 DEP_DIR="ffmpeg-$VERSION" FILENAME="$DEP_DIR".7z -SHA256SUM=7f25f638dc24a0f5d4af07a088b6a604cf33548900bbfd2f6ce0bae050b7664d +SHA256SUM=b646d18a3d543a4e4c46881568213499f22e4454a464e1552f03f2ac9cc3a05a if [[ -d "$DEP_DIR" ]] then diff --git a/app/prebuilt-deps/prepare-libusb.sh b/app/prebuilt-deps/prepare-libusb.sh index 47cf1df4..6a052f0d 100755 --- a/app/prebuilt-deps/prepare-libusb.sh +++ b/app/prebuilt-deps/prepare-libusb.sh @@ -23,11 +23,15 @@ mkdir "$DEP_DIR" cd "$DEP_DIR" 7z x "../$FILENAME" \ - libusb-1.0.26-binaries/libusb-MinGW-Win32/bin/msys-usb-1.0.dll \ - libusb-1.0.26-binaries/libusb-MinGW-Win32/include/ \ - libusb-1.0.26-binaries/libusb-MinGW-x64/bin/msys-usb-1.0.dll \ - libusb-1.0.26-binaries/libusb-MinGW-x64/include/ + libusb-1.0.26-binaries/libusb-MinGW-Win32/ \ + libusb-1.0.26-binaries/libusb-MinGW-Win32/ \ + libusb-1.0.26-binaries/libusb-MinGW-x64/ \ + libusb-1.0.26-binaries/libusb-MinGW-x64/ mv libusb-1.0.26-binaries/libusb-MinGW-Win32 . mv libusb-1.0.26-binaries/libusb-MinGW-x64 . rm -rf libusb-1.0.26-binaries + +# Rename the dll to get the same library name on all platforms +mv libusb-MinGW-Win32/bin/msys-usb-1.0.dll libusb-MinGW-Win32/bin/libusb-1.0.dll +mv libusb-MinGW-x64/bin/msys-usb-1.0.dll libusb-MinGW-x64/bin/libusb-1.0.dll diff --git a/cross_win32.txt b/cross_win32.txt index bf3c118e..05f9a86b 100644 --- a/cross_win32.txt +++ b/cross_win32.txt @@ -14,8 +14,3 @@ system = 'windows' cpu_family = 'x86' cpu = 'i686' endian = 'little' - -[properties] -prebuilt_ffmpeg = 'ffmpeg-6.1-scrcpy-2/win32' -prebuilt_sdl2 = 'SDL2-2.28.4/i686-w64-mingw32' -prebuilt_libusb = 'libusb-1.0.26/libusb-MinGW-Win32' diff --git a/cross_win64.txt b/cross_win64.txt index 81bb0309..86364ad6 100644 --- a/cross_win64.txt +++ b/cross_win64.txt @@ -14,8 +14,3 @@ system = 'windows' cpu_family = 'x86' cpu = 'x86_64' endian = 'little' - -[properties] -prebuilt_ffmpeg = 'ffmpeg-6.1-scrcpy-2/win64' -prebuilt_sdl2 = 'SDL2-2.28.4/x86_64-w64-mingw32' -prebuilt_libusb = 'libusb-1.0.26/libusb-MinGW-x64' diff --git a/release.mk b/release.mk index 57fa994e..7a686f49 100644 --- a/release.mk +++ b/release.mk @@ -69,58 +69,62 @@ prepare-deps: @app/prebuilt-deps/prepare-libusb.sh build-win32: prepare-deps - [ -d "$(WIN32_BUILD_DIR)" ] || ( mkdir "$(WIN32_BUILD_DIR)" && \ - meson setup "$(WIN32_BUILD_DIR)" \ - --cross-file cross_win32.txt \ - --buildtype release --strip -Db_lto=true \ - -Dcompile_server=false \ - -Dportable=true ) + rm -rf "$(WIN32_BUILD_DIR)" + mkdir -p "$(WIN32_BUILD_DIR)/local" + cp -r app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-3/win32/. "$(WIN32_BUILD_DIR)/local/" + cp -r app/prebuilt-deps/data/SDL2-2.28.4/i686-w64-mingw32/. "$(WIN32_BUILD_DIR)/local/" + cp -r app/prebuilt-deps/data/libusb-1.0.26/libusb-MinGW-Win32/. "$(WIN32_BUILD_DIR)/local/" + meson setup "$(WIN32_BUILD_DIR)" \ + --pkg-config-path="$(WIN32_BUILD_DIR)/local/lib/pkgconfig" \ + -Dc_args="-I$(PWD)/$(WIN32_BUILD_DIR)/local/include" \ + -Dc_link_args="-L$(PWD)/$(WIN32_BUILD_DIR)/local/lib" \ + --cross-file=cross_win32.txt \ + --buildtype=release --strip -Db_lto=true \ + -Dcompile_server=false \ + -Dportable=true ninja -C "$(WIN32_BUILD_DIR)" build-win64: prepare-deps - [ -d "$(WIN64_BUILD_DIR)" ] || ( mkdir "$(WIN64_BUILD_DIR)" && \ - meson setup "$(WIN64_BUILD_DIR)" \ - --cross-file cross_win64.txt \ - --buildtype release --strip -Db_lto=true \ - -Dcompile_server=false \ - -Dportable=true ) + rm -rf "$(WIN64_BUILD_DIR)" + mkdir -p "$(WIN64_BUILD_DIR)/local" + cp -r app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-3/win64/. "$(WIN64_BUILD_DIR)/local/" + cp -r app/prebuilt-deps/data/SDL2-2.28.4/x86_64-w64-mingw32/. "$(WIN64_BUILD_DIR)/local/" + cp -r app/prebuilt-deps/data/libusb-1.0.26/libusb-MinGW-x64/. "$(WIN64_BUILD_DIR)/local/" + meson setup "$(WIN64_BUILD_DIR)" \ + --pkg-config-path="$(WIN64_BUILD_DIR)/local/lib/pkgconfig" \ + -Dc_args="-I$(PWD)/$(WIN64_BUILD_DIR)/local/include" \ + -Dc_link_args="-L$(PWD)/$(WIN64_BUILD_DIR)/local/lib" \ + --cross-file=cross_win64.txt \ + --buildtype=release --strip -Db_lto=true \ + -Dcompile_server=false \ + -Dportable=true ninja -C "$(WIN64_BUILD_DIR)" dist-win32: build-server build-win32 mkdir -p "$(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 app/data/scrcpy-console.bat "$(DIST)/$(WIN32_TARGET_DIR)" - cp app/data/scrcpy-noconsole.vbs "$(DIST)/$(WIN32_TARGET_DIR)" - cp app/data/icon.png "$(DIST)/$(WIN32_TARGET_DIR)" - cp app/data/open_a_terminal_here.bat "$(DIST)/$(WIN32_TARGET_DIR)" - cp app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-2/win32/bin/avutil-58.dll "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-2/win32/bin/avcodec-60.dll "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-2/win32/bin/avformat-60.dll "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-2/win32/bin/swresample-4.dll "$(DIST)/$(WIN32_TARGET_DIR)/" + cp app/data/scrcpy-console.bat "$(DIST)/$(WIN32_TARGET_DIR)/" + cp app/data/scrcpy-noconsole.vbs "$(DIST)/$(WIN32_TARGET_DIR)/" + cp app/data/icon.png "$(DIST)/$(WIN32_TARGET_DIR)/" + cp app/data/open_a_terminal_here.bat "$(DIST)/$(WIN32_TARGET_DIR)/" cp app/prebuilt-deps/data/platform-tools-34.0.5/adb.exe "$(DIST)/$(WIN32_TARGET_DIR)/" cp app/prebuilt-deps/data/platform-tools-34.0.5/AdbWinApi.dll "$(DIST)/$(WIN32_TARGET_DIR)/" cp app/prebuilt-deps/data/platform-tools-34.0.5/AdbWinUsbApi.dll "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/prebuilt-deps/data/SDL2-2.28.4/i686-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN32_TARGET_DIR)/" - cp app/prebuilt-deps/data/libusb-1.0.26/libusb-MinGW-Win32/bin/msys-usb-1.0.dll "$(DIST)/$(WIN32_TARGET_DIR)/" + cp "$(WIN32_BUILD_DIR)"/local/bin/*.dll "$(DIST)/$(WIN32_TARGET_DIR)/" dist-win64: build-server build-win64 mkdir -p "$(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 app/data/scrcpy-console.bat "$(DIST)/$(WIN64_TARGET_DIR)" - cp app/data/scrcpy-noconsole.vbs "$(DIST)/$(WIN64_TARGET_DIR)" - cp app/data/icon.png "$(DIST)/$(WIN64_TARGET_DIR)" - cp app/data/open_a_terminal_here.bat "$(DIST)/$(WIN64_TARGET_DIR)" - cp app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-2/win64/bin/avutil-58.dll "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-2/win64/bin/avcodec-60.dll "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-2/win64/bin/avformat-60.dll "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/prebuilt-deps/data/ffmpeg-6.1-scrcpy-2/win64/bin/swresample-4.dll "$(DIST)/$(WIN64_TARGET_DIR)/" + cp app/data/scrcpy-console.bat "$(DIST)/$(WIN64_TARGET_DIR)/" + cp app/data/scrcpy-noconsole.vbs "$(DIST)/$(WIN64_TARGET_DIR)/" + cp app/data/icon.png "$(DIST)/$(WIN64_TARGET_DIR)/" + cp app/data/open_a_terminal_here.bat "$(DIST)/$(WIN64_TARGET_DIR)/" cp app/prebuilt-deps/data/platform-tools-34.0.5/adb.exe "$(DIST)/$(WIN64_TARGET_DIR)/" cp app/prebuilt-deps/data/platform-tools-34.0.5/AdbWinApi.dll "$(DIST)/$(WIN64_TARGET_DIR)/" cp app/prebuilt-deps/data/platform-tools-34.0.5/AdbWinUsbApi.dll "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/prebuilt-deps/data/SDL2-2.28.4/x86_64-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN64_TARGET_DIR)/" - cp app/prebuilt-deps/data/libusb-1.0.26/libusb-MinGW-x64/bin/msys-usb-1.0.dll "$(DIST)/$(WIN64_TARGET_DIR)/" + cp "$(WIN64_BUILD_DIR)"/local/bin/*.dll "$(DIST)/$(WIN64_TARGET_DIR)/" zip-win32: dist-win32 cd "$(DIST)"; \