diff --git a/app/meson.build b/app/meson.build index b182e443..ccc5d9e1 100644 --- a/app/meson.build +++ b/app/meson.build @@ -25,14 +25,29 @@ src = [ 'src/util/str_util.c' ] +cc = meson.get_compiler('c') + if not get_option('crossbuild_windows') + libdir = get_option('local_libav') + if libdir != '' + lib_avformat = cc.find_library('avformat', dirs : libdir) + lib_avcodec = cc.find_library('avcodec', dirs : libdir) + lib_avutil = cc.find_library('avutil', dirs : libdir) + lib_swscale = cc.find_library('swscale', dirs : libdir) + else + lib_avformat = dependency('avformat') + lib_avcodec = dependency('avcodec') + lib_avutil = dependency('avutil') + lib_swscale = dependency('swscale') + endif + # native build dependencies = [ - dependency('libavformat'), - dependency('libavcodec'), - dependency('libavutil'), - dependency('libswscale'), + lib_avformat, + lib_avcodec, + lib_avutil, + lib_swscale, dependency('libpng'), dependency('sdl2'), ] @@ -76,8 +91,6 @@ else endif -cc = meson.get_compiler('c') - if host_machine.system() == 'windows' src += [ 'src/sys/win/command.c' ] dependencies += cc.find_library('ws2_32') diff --git a/meson_options.txt b/meson_options.txt index b962380c..3b4d5cef 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -6,3 +6,4 @@ option('portable', type: 'boolean', value: false, description: 'Use scrcpy-serve option('hidpi_support', type: 'boolean', value: true, description: 'Enable High DPI support') option('server_debugger', type: 'boolean', value: false, description: 'Run a server debugger and wait for a client to be attached') option('server_debugger_method', type: 'combo', choices: ['old', 'new'], value: 'new', description: 'Select the debugger method (Android < 9: "old", Android >= 9: "new")') +option('local_libav', type: 'string', value: '', description: 'Path to local installation of libav (ffmpeg)') diff --git a/mobot.mk b/mobot.mk new file mode 100644 index 00000000..05351f60 --- /dev/null +++ b/mobot.mk @@ -0,0 +1,32 @@ +# Mobot makefile +# Build the Mobot version of scrcpy with Mobot's FFmpeg +# make -f mobot.mk + +.DEFAULT_GOAL := scrcpy + +build-ffmpeg: + git clone https://github.com/team-mobot/FFmpeg.git build-ffmpeg + +AVLIBS:=build-libav/lib/libavformat.a build-libav/lib/libavcodec.a build-libav/lib/libavutil.a build-libav/lib/libswscale.a +$(AVLIBS): build-ffmpeg + # Build Mobot version of FFmpeg and install in subdir libav + cd build-ffmpeg && \ + git checkout encode-png-metadata && \ + ./configure --prefix="../build-libav" \ + --pkg-config-flags="--static" \ + --extra-libs="-lpthread -lm" \ + --enable-gpl --enable-nonfree \ + --disable-bsfs --disable-filters \ + --disable-encoders --enable-encoder=png \ + --disable-decoders --enable-decoder=h264 \ + --enable-libx264 && \ + make install-libs install-headers + +build-app: + meson build-app --buildtype release --strip -Db_lto=true \ + -Dlocal_libav=${PWD}/build-libav/lib \ + -Dprebuilt_server=/usr/local/share/scrcpy/scrcpy-server + +scrcpy: build-app $(AVLIBS) + ninja -Cbuild-app + cp build-app/app/scrcpy .