From 5dde4d95344b9016fa21851a0227295a5d197954 Mon Sep 17 00:00:00 2001 From: Frank Leon Rose Date: Mon, 12 Apr 2021 16:34:21 +0100 Subject: [PATCH] Fix build mechanics and handle meson error --- app/meson.build | 37 +++++++++++++++++++++++-------------- mobot.mk | 18 +++++++++++------- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/app/meson.build b/app/meson.build index ccc5d9e1..89328326 100644 --- a/app/meson.build +++ b/app/meson.build @@ -29,25 +29,34 @@ 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) + avdir = get_option('local_libav') + if avdir != '' + message('Using local libav at ' + avdir) + libdir = meson.current_source_dir() + '/../' + avdir + '/lib' + incdir = '../' + avdir + '/include' + ffmpeg = declare_dependency( + dependencies: [ + cc.find_library('avformat', dirs : libdir), + cc.find_library('avcodec', dirs : libdir), + cc.find_library('avutil', dirs : libdir), + cc.find_library('swscale', dirs : libdir) + ], + include_directories: include_directories(incdir) + ) else - lib_avformat = dependency('avformat') - lib_avcodec = dependency('avcodec') - lib_avutil = dependency('avutil') - lib_swscale = dependency('swscale') + ffmpeg = declare_dependency( + dependencies: [ + dependency('avformat'), + dependency('avcodec'), + dependency('avutil'), + dependency('swscale') + ] + ) endif # native build dependencies = [ - lib_avformat, - lib_avcodec, - lib_avutil, - lib_swscale, + ffmpeg, dependency('libpng'), dependency('sdl2'), ] diff --git a/mobot.mk b/mobot.mk index 05351f60..da36b3bd 100644 --- a/mobot.mk +++ b/mobot.mk @@ -4,17 +4,19 @@ .DEFAULT_GOAL := scrcpy +AVDIR:=build-libav +AVLIBDIR:=$(AVDIR)/lib +AVLIBS:=$(AVLIBDIR)/libavformat.a $(AVLIBDIR)/libavcodec.a $(AVLIBDIR)/libavutil.a $(AVLIBDIR)/libswscale.a + 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 \ @@ -22,11 +24,13 @@ $(AVLIBS): build-ffmpeg --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 +build-app: $(AVLIBS) + LDFLAGS="-Wl,-lm -Wl,-lpthread" \ + meson build-app --buildtype release --strip -Db_lto=true \ + -Dlocal_libav=$(AVDIR) \ + -Dprebuilt_server=/usr/local/share/scrcpy/scrcpy-server \ + || (ret=$$?; rm -rf $@ && exit $$ret) -scrcpy: build-app $(AVLIBS) +scrcpy: build-app ninja -Cbuild-app cp build-app/app/scrcpy .