aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorLukas Rusak <lorusak@gmail.com>2020-09-07 18:03:12 -0700
committerGitHub <noreply@github.com>2020-09-07 18:03:12 -0700
commit062ab1cf9d99d1beed2e558a440d3ee372a7df24 (patch)
tree188e29bceabc35e11462e5273af646f9f656eb6f /tools
parent0f186b7f53e24a3ec914741b146a161b5fcec0e9 (diff)
parentaf94505a84a12f98d910c14d8a2797aa932570f9 (diff)
Merge pull request #18369 from lrusak/arm-build
[depends] add linux-arm-gbm build
Diffstat (limited to 'tools')
-rw-r--r--tools/buildsteps/linux-arm-gbm/configure-depends9
-rw-r--r--tools/buildsteps/linux-arm-gbm/configure-xbmc5
-rw-r--r--tools/buildsteps/linux-arm-gbm/make-binary-addons28
-rw-r--r--tools/buildsteps/linux-arm-gbm/make-depends8
-rw-r--r--tools/buildsteps/linux-arm-gbm/make-native-depends9
-rw-r--r--tools/buildsteps/linux-arm-gbm/make-xbmc5
-rw-r--r--tools/buildsteps/linux-arm-gbm/package5
-rw-r--r--tools/buildsteps/linux-arm-gbm/prepare-depends15
-rw-r--r--tools/buildsteps/linux-arm-gbm/prepare-xbmc9
-rw-r--r--tools/buildsteps/linux-arm-gbm/run-tests14
-rw-r--r--tools/depends/native/Makefile12
-rw-r--r--tools/depends/native/Mako/Makefile29
-rw-r--r--tools/depends/native/MarkupSafe/Makefile29
-rw-r--r--tools/depends/native/meson/Makefile2
-rw-r--r--tools/depends/target/Makefile16
-rw-r--r--tools/depends/target/libdrm/Makefile76
-rw-r--r--tools/depends/target/libva/Makefile64
-rw-r--r--tools/depends/target/mesa/Makefile93
-rwxr-xr-xtools/depends/target/meson-cross-setup.sh4
19 files changed, 425 insertions, 7 deletions
diff --git a/tools/buildsteps/linux-arm-gbm/configure-depends b/tools/buildsteps/linux-arm-gbm/configure-depends
new file mode 100644
index 0000000000..8ffc695d80
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/configure-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ cd $WORKSPACE/tools/depends;./configure \
+ --with-toolchain=/usr --prefix=$XBMC_DEPENDS_ROOT --host=arm-linux-gnueabihf --with-platform=gbm --with-tarballs=$TARBALLS $DEBUG_SWITCH
+fi
diff --git a/tools/buildsteps/linux-arm-gbm/configure-xbmc b/tools/buildsteps/linux-arm-gbm/configure-xbmc
new file mode 100644
index 0000000000..72f3c3a7dc
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/configure-xbmc
@@ -0,0 +1,5 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+make -C $WORKSPACE/tools/depends/target/cmakebuildsys
diff --git a/tools/buildsteps/linux-arm-gbm/make-binary-addons b/tools/buildsteps/linux-arm-gbm/make-binary-addons
new file mode 100644
index 0000000000..fbc9822d53
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/make-binary-addons
@@ -0,0 +1,28 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+#clear the build failed file
+rm -f $WORKSPACE/cmake/$FAILED_BUILD_FILENAME
+
+ALL_BINARY_ADDONS_BUILT="1"
+#only build binary addons when requested by env/jenkins
+if [ "$BUILD_BINARY_ADDONS" == "true" ]
+then
+ for addon in $BINARY_ADDONS
+ do
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS V=99 VERBOSE=1 || ALL_BINARY_ADDONS_BUILT="0"
+ done
+fi
+
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/cmake
+else
+ #mark the build failure in the filesystem but leave jenkins running
+ tagFailedBuild $WORKSPACE/cmake
+fi
diff --git a/tools/buildsteps/linux-arm-gbm/make-depends b/tools/buildsteps/linux-arm-gbm/make-depends
new file mode 100644
index 0000000000..004eed0738
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/make-depends
@@ -0,0 +1,8 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS || make && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi
diff --git a/tools/buildsteps/linux-arm-gbm/make-native-depends b/tools/buildsteps/linux-arm-gbm/make-native-depends
new file mode 100644
index 0000000000..d15bfd4f8b
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ] && [ "$BINARY_ADDONS_CLEAN_NATIVETOOLS" != "0" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi
diff --git a/tools/buildsteps/linux-arm-gbm/make-xbmc b/tools/buildsteps/linux-arm-gbm/make-xbmc
new file mode 100644
index 0000000000..089d88d026
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/make-xbmc
@@ -0,0 +1,5 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+cd $WORKSPACE/build;make -j$BUILDTHREADS || make
diff --git a/tools/buildsteps/linux-arm-gbm/package b/tools/buildsteps/linux-arm-gbm/package
new file mode 100644
index 0000000000..5032c912e0
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/package
@@ -0,0 +1,5 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+#nothing for linux atm
diff --git a/tools/buildsteps/linux-arm-gbm/prepare-depends b/tools/buildsteps/linux-arm-gbm/prepare-depends
new file mode 100644
index 0000000000..dc62bbe2a5
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/prepare-depends
@@ -0,0 +1,15 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+#clean without depends for skipping depends build if possible
+#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
+cd $WORKSPACE;git clean -xfd -e "cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
+
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ #clean up the rest too
+ cd $WORKSPACE;git clean -xffd
+ cd $WORKSPACE/tools/depends/;./bootstrap
+fi
diff --git a/tools/buildsteps/linux-arm-gbm/prepare-xbmc b/tools/buildsteps/linux-arm-gbm/prepare-xbmc
new file mode 100644
index 0000000000..73c1b53056
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/prepare-xbmc
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+#build binary addons before building xbmc...
+#make sure that binary_addons don't clean the native tools
+#here
+BINARY_ADDONS_CLEAN_NATIVETOOLS="0"
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons
diff --git a/tools/buildsteps/linux-arm-gbm/run-tests b/tools/buildsteps/linux-arm-gbm/run-tests
new file mode 100644
index 0000000000..b76ec0e0fb
--- /dev/null
+++ b/tools/buildsteps/linux-arm-gbm/run-tests
@@ -0,0 +1,14 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux-arm-gbm
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+cd $WORKSPACE/build;make -j$BUILDTHREADS kodi-test
+if [ "$Configuration" != "Coverage" ]; then
+ cd $WORKSPACE;build/kodi-test --gtest_output=xml:gtestresults.xml
+else
+ cd $WORKSPACE/build;GTEST_OUTPUT="xml:$WORKSPACE/gtestresults.xml" make coverage
+fi
+
+awk '{ if ($1 == "<testcase" && match($0, "notrun")) print substr($0,0,length($0)-2) "><skipped/></testcase>"; else print $0;}' gtestresults.xml > gtestresults-skipped.xml
+rm gtestresults.xml
+mv gtestresults-skipped.xml gtestresults.xml
diff --git a/tools/depends/native/Makefile b/tools/depends/native/Makefile
index 4e012d9b22..7a3966a206 100644
--- a/tools/depends/native/Makefile
+++ b/tools/depends/native/Makefile
@@ -23,6 +23,10 @@ ifeq ($(TARGET_PLATFORM),wayland)
EXPAT = expat
endif
+ifeq ($(TARGET_PLATFORM),gbm)
+ NATIVE += MarkupSafe Mako
+endif
+
.PHONY: $(NATIVE) native
all: native
@@ -38,7 +42,7 @@ libtool: automake
libjpeg-turbo: cmake yasm
libpng: zlib
meson: python3 setuptools
-ninja: python3
+ninja: meson
swig: pcre
distutilscross: python3
tar: xz automake
@@ -47,6 +51,12 @@ setuptools: python3
wayland-scanner: expat
waylandpp-scanner: cmake
+# python installs are not thread safe when using easy_install method.
+# MarkupSafe doesn't really depend on ninja but we need to make the
+# build sequential
+MarkupSafe: ninja
+Mako: MarkupSafe
+
#liblzo2 has stale packaged automake files that cause borked host/build detection
liblzo2: automake
JsonSchemaBuilder: automake
diff --git a/tools/depends/native/Mako/Makefile b/tools/depends/native/Mako/Makefile
new file mode 100644
index 0000000000..6bb675f5ae
--- /dev/null
+++ b/tools/depends/native/Mako/Makefile
@@ -0,0 +1,29 @@
+include ../../Makefile.include
+PREFIX=$(NATIVEPREFIX)
+PLATFORM=$(NATIVEPLATFORM)
+DEPS= ../../Makefile.include Makefile
+
+# lib name, version
+LIBNAME=Mako
+VERSION=1.1.3
+ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz
+
+all: .installed-$(PLATFORM)
+
+$(TARBALLS_LOCATION)/$(ARCHIVE):
+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
+ cd $(TARBALLS_LOCATION); chmod +x $(ARCHIVE)
+
+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
+ -rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
+
+.installed-$(PLATFORM): $(PLATFORM)
+ cd $(PLATFORM); $(PREFIX)/bin/python3 setup.py install --prefix=$(PREFIX)
+ touch $@
+
+clean:
+ rm -f .installed-$(PLATFORM)
+
+distclean::
+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
diff --git a/tools/depends/native/MarkupSafe/Makefile b/tools/depends/native/MarkupSafe/Makefile
new file mode 100644
index 0000000000..ef7b8cec1c
--- /dev/null
+++ b/tools/depends/native/MarkupSafe/Makefile
@@ -0,0 +1,29 @@
+include ../../Makefile.include
+PREFIX=$(NATIVEPREFIX)
+PLATFORM=$(NATIVEPLATFORM)
+DEPS= ../../Makefile.include Makefile
+
+# lib name, version
+LIBNAME=MarkupSafe
+VERSION=1.1.1
+ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz
+
+all: .installed-$(PLATFORM)
+
+$(TARBALLS_LOCATION)/$(ARCHIVE):
+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
+ cd $(TARBALLS_LOCATION); chmod +x $(ARCHIVE)
+
+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
+ -rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
+
+.installed-$(PLATFORM): $(PLATFORM)
+ cd $(PLATFORM); $(PREFIX)/bin/python3 setup.py install --prefix=$(PREFIX)
+ touch $@
+
+clean:
+ rm -f .installed-$(PLATFORM)
+
+distclean::
+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
diff --git a/tools/depends/native/meson/Makefile b/tools/depends/native/meson/Makefile
index 832f1a9f43..842201c184 100644
--- a/tools/depends/native/meson/Makefile
+++ b/tools/depends/native/meson/Makefile
@@ -4,7 +4,7 @@ DEPS=../../Makefile.include Makefile
# lib name, version
LIBNAME=meson
-VERSION=0.51.0
+VERSION=0.55.1
SOURCE=$(LIBNAME)-$(VERSION)
ARCHIVE=$(SOURCE).tar.gz
diff --git a/tools/depends/target/Makefile b/tools/depends/target/Makefile
index 74734b3d83..405690ceab 100644
--- a/tools/depends/target/Makefile
+++ b/tools/depends/target/Makefile
@@ -62,8 +62,8 @@ WAYLANDPP_DEPS=
ALSA_LIB=
ifeq ($(OS),linux)
DEPENDS += dbus libuuid
- #not for raspberry pi
- ifneq ($(TARGET_PLATFORM),raspberry-pi)
+ # not for raspberry pi or gbm
+ ifeq (,$(filter $(TARGET_PLATFORM),raspberry-pi gbm))
DEPENDS += linux-system-libs
WAYLANDPP_DEPS += linux-system-libs
endif
@@ -73,6 +73,13 @@ ifeq ($(OS),linux)
ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),raspberry-pi gbm))
DEPENDS += libxkbcommon libinput libudev libevdev mtdev
endif
+ ifeq ($(TARGET_PLATFORM),gbm)
+ DEPENDS += libdrm mesa
+ ifeq ($(CPU),x86_64)
+ DEPENDS += libva
+ LIBVA = libva
+ endif
+ endif
endif
ifeq ($(TARGET_PLATFORM),wayland)
@@ -104,7 +111,7 @@ pythonmodule-pycryptodome: $(PYMODULE_DEPS) python3 pythonmodule-setuptools
pythonmodule-pil: bzip2 $(PYMODULE_DEPS) $(ZLIB) libjpeg-turbo libpng freetype2 python3 pythonmodule-setuptools
pythonmodule-setuptools: $(PYMODULE_DEPS) python3
libxslt: libgcrypt libxml2
-ffmpeg: $(ICONV) $(ZLIB) bzip2 gnutls dav1d
+ffmpeg: $(ICONV) $(ZLIB) bzip2 gnutls dav1d $(LIBVA)
libcec: p8-platform
crossguid: $(LIBUUID)
libdvdnav: libdvdread
@@ -119,6 +126,9 @@ taglib: $(ZLIB)
dav1d: meson-cross-file
fribidi: meson-cross-file
libspdlog: libfmt
+libdrm: meson-cross-file
+mesa: libdrm meson-cross-file
+libva: libdrm
.installed-$(PLATFORM): $(DEPENDS)
touch $@
diff --git a/tools/depends/target/libdrm/Makefile b/tools/depends/target/libdrm/Makefile
new file mode 100644
index 0000000000..7aa8d4120c
--- /dev/null
+++ b/tools/depends/target/libdrm/Makefile
@@ -0,0 +1,76 @@
+include ../../Makefile.include
+DEPS=../../Makefile.include Makefile
+
+LIBNAME=libdrm
+VERSION=2.4.102
+ARCHIVE=$(LIBNAME)-$(VERSION).tar.xz
+
+MESON_BUILD_TYPE=release
+
+ifeq ($(DEBUG_BUILD), yes)
+ MESON_BUILD_TYPE=debug
+endif
+
+# configuration settings
+CONFIGURE = $(NATIVEPREFIX)/bin/python3 $(NATIVEPREFIX)/bin/meson \
+ --prefix=$(PREFIX) \
+ --libdir=lib \
+ --buildtype=$(MESON_BUILD_TYPE) \
+ -Dlibkms=false \
+ -Dnouveau=false \
+ -Domap=false \
+ -Dexynos=false \
+ -Dtegra=false \
+ -Dintel=false \
+ -Dradeon=false \
+ -Damdgpu=false \
+ -Dvmwgfx=false \
+ -Dvc4=false \
+ -Dfreedreno=false \
+ -Detnaviv=false \
+ -Dcairo-tests=false \
+ -Dman-pages=false \
+ -Dvalgrind=false \
+ -Dfreedreno-kgsl=false \
+ -Dinstall-test-programs=false \
+ -Dudev=false
+
+ifeq ($(CROSS_COMPILING), yes)
+CONFIGURE += --cross-file $(PREFIX)/share/cross-file.meson
+export CC=$(CC_FOR_BUILD)
+export CXX=$(CXX_FOR_BUILD)
+export CFLAGS=$(CFLAGS_FOR_BUILD)
+export CXXFLAGS=$(CXXFLAGS_FOR_BUILD)
+else
+export CC CXX CFLAGS CXXFLAGS
+endif
+export PKG_CONFIG_LIBDIR=$(PREFIX)/lib/pkgconfig
+
+LIBDYLIB=$(PLATFORM)/build/$(LIBNAME).so
+
+all: .installed-$(PLATFORM)
+
+download: $(TARBALLS_LOCATION)/$(ARCHIVE)
+
+$(TARBALLS_LOCATION)/$(ARCHIVE):
+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
+
+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
+ rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
+ cd $(PLATFORM); rm -rf build; mkdir -p build
+ cd $(PLATFORM); $(CONFIGURE) . build
+
+$(LIBDYLIB): $(PLATFORM)
+ cd $(PLATFORM)/build; $(NATIVEPREFIX)/bin/ninja -v
+
+.installed-$(PLATFORM): $(LIBDYLIB)
+ cd $(PLATFORM)/build; $(NATIVEPREFIX)/bin/ninja -v install
+ touch $@
+
+clean:
+ $(MAKE) -C $(PLATFORM) clean
+ rm -f .installed-$(PLATFORM)
+
+distclean:
+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
diff --git a/tools/depends/target/libva/Makefile b/tools/depends/target/libva/Makefile
new file mode 100644
index 0000000000..dd1f586297
--- /dev/null
+++ b/tools/depends/target/libva/Makefile
@@ -0,0 +1,64 @@
+include ../../Makefile.include
+DEPS=../../Makefile.include Makefile
+
+LIBNAME=libva
+VERSION=2.8.0
+ARCHIVE=$(LIBNAME)-$(VERSION).tar.bz2
+
+MESON_BUILD_TYPE=release
+
+ifeq ($(DEBUG_BUILD), yes)
+ MESON_BUILD_TYPE=debug
+endif
+
+# configuration settings
+CONFIGURE = $(NATIVEPREFIX)/bin/python3 $(NATIVEPREFIX)/bin/meson \
+ --prefix=$(PREFIX) \
+ --libdir=lib \
+ --buildtype=$(MESON_BUILD_TYPE) \
+ -Ddisable_drm=false \
+ -Denable_docs=false \
+ -Denable_va_messaging=true \
+ -Dwith_x11=no \
+ -Dwith_glx=no \
+ -Dwith_wayland=no
+
+ifeq ($(CROSS_COMPILING), yes)
+CONFIGURE += --cross-file $(PREFIX)/share/cross-file.meson
+export CC=$(CC_FOR_BUILD)
+export CXX=$(CXX_FOR_BUILD)
+export CFLAGS=$(CFLAGS_FOR_BUILD)
+export CXXFLAGS=$(CXXFLAGS_FOR_BUILD)
+else
+export CC CXX CFLAGS CXXFLAGS
+endif
+export PKG_CONFIG_LIBDIR=$(PREFIX)/lib/pkgconfig
+
+LIBDYLIB=$(PLATFORM)/build/$(LIBNAME).so
+
+all: .installed-$(PLATFORM)
+
+download: $(TARBALLS_LOCATION)/$(ARCHIVE)
+
+$(TARBALLS_LOCATION)/$(ARCHIVE):
+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
+
+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
+ rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
+ cd $(PLATFORM); rm -rf build; mkdir -p build
+ cd $(PLATFORM); $(CONFIGURE) . build
+
+$(LIBDYLIB): $(PLATFORM)
+ cd $(PLATFORM)/build; $(NATIVEPREFIX)/bin/ninja -v
+
+.installed-$(PLATFORM): $(LIBDYLIB)
+ cd $(PLATFORM)/build; $(NATIVEPREFIX)/bin/ninja -v install
+ touch $@
+
+clean:
+ $(MAKE) -C $(PLATFORM) clean
+ rm -f .installed-$(PLATFORM)
+
+distclean:
+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
diff --git a/tools/depends/target/mesa/Makefile b/tools/depends/target/mesa/Makefile
new file mode 100644
index 0000000000..c9d3b72b81
--- /dev/null
+++ b/tools/depends/target/mesa/Makefile
@@ -0,0 +1,93 @@
+include ../../Makefile.include
+DEPS=../../Makefile.include Makefile
+
+LIBNAME=mesa
+VERSION=20.1.7
+ARCHIVE=$(LIBNAME)-$(VERSION).tar.xz
+
+MESON_BUILD_TYPE=release
+
+ifeq ($(DEBUG_BUILD), yes)
+ MESON_BUILD_TYPE=debug
+endif
+
+ifeq ($(CPU), x86_64)
+ MESA_GALLIUM_DRIVERS=iris
+else ifeq ($(CPU), arm)
+ MESA_GALLIUM_DRIVERS=kmsro,vc4
+endif
+
+# configuration settings
+CONFIGURE = $(NATIVEPREFIX)/bin/python3 $(NATIVEPREFIX)/bin/meson \
+ --prefix=$(PREFIX) \
+ --libdir=lib \
+ --buildtype=$(MESON_BUILD_TYPE) \
+ -Ddri-drivers= \
+ -Dgallium-drivers="$(MESA_GALLIUM_DRIVERS)" \
+ -Dgallium-extra-hud=false \
+ -Dgallium-xvmc=false \
+ -Dgallium-omx=disabled \
+ -Dgallium-nine=false \
+ -Dgallium-opencl=disabled \
+ -Dvulkan-drivers= \
+ -Dshader-cache=true \
+ -Dshared-glapi=true \
+ -Dopengl=true \
+ -Dgbm=true \
+ -Degl=true \
+ -Dvalgrind=false \
+ -Dlibunwind=false \
+ -Dlmsensors=false \
+ -Dbuild-tests=false \
+ -Dselinux=false \
+ -Dosmesa=none \
+ -Dplatforms="drm" \
+ -Ddri3=false \
+ -Dglx=disabled \
+ -Dglvnd=false \
+ -Dllvm=false \
+ -Dgallium-vdpau=false \
+ -Dgallium-va=false \
+ -Dgallium-xa=false \
+ -Dgles1=false \
+ -Dgles2=true
+
+ifeq ($(CROSS_COMPILING), yes)
+CONFIGURE += --cross-file $(PREFIX)/share/cross-file.meson
+export CC=$(CC_FOR_BUILD)
+export CXX=$(CXX_FOR_BUILD)
+export CFLAGS=$(CFLAGS_FOR_BUILD)
+export CXXFLAGS=$(CXXFLAGS_FOR_BUILD)
+else
+export CC CXX CFLAGS CXXFLAGS
+endif
+export PKG_CONFIG_LIBDIR=$(PREFIX)/lib/pkgconfig
+
+LIBDYLIB=$(PLATFORM)/build/src/egl/libEGL.so
+
+all: .installed-$(PLATFORM)
+
+download: $(TARBALLS_LOCATION)/$(ARCHIVE)
+
+$(TARBALLS_LOCATION)/$(ARCHIVE):
+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
+
+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
+ rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
+ cd $(PLATFORM); rm -rf build; mkdir -p build
+ cd $(PLATFORM); $(CONFIGURE) . build
+
+$(LIBDYLIB): $(PLATFORM)
+ cd $(PLATFORM)/build; $(NATIVEPREFIX)/bin/ninja -v
+
+.installed-$(PLATFORM): $(LIBDYLIB)
+ cd $(PLATFORM)/build; $(NATIVEPREFIX)/bin/ninja -v install
+ touch $@
+
+clean:
+ $(MAKE) -C $(PLATFORM) clean
+ rm -f .installed-$(PLATFORM)
+
+distclean:
+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
diff --git a/tools/depends/target/meson-cross-setup.sh b/tools/depends/target/meson-cross-setup.sh
index dad98d24ae..a912034b5f 100755
--- a/tools/depends/target/meson-cross-setup.sh
+++ b/tools/depends/target/meson-cross-setup.sh
@@ -15,9 +15,9 @@ cpu = '$CPU'
endian = 'little'
[properties]
-$($NATIVEPREFIX/bin/python3 -c "print('c_args = {}'.format([x for x in '$CFLAGS'.split()]))")
+$($NATIVEPREFIX/bin/python3 -c "print('c_args = {}'.format([x for x in '$CFLAGS'.split() if x not in ['-g', '-gdwarf-2']]))")
$($NATIVEPREFIX/bin/python3 -c "print('c_link_args = {}'.format([x for x in '$LDFLAGS'.split()]))")
-$($NATIVEPREFIX/bin/python3 -c "print('cpp_args = {}'.format([x for x in '$CXXFLAGS'.split()]))")
+$($NATIVEPREFIX/bin/python3 -c "print('cpp_args = {}'.format([x for x in '$CXXFLAGS'.split() if x not in ['-g', '-gdwarf-2']]))")
$($NATIVEPREFIX/bin/python3 -c "print('cpp_link_args = {}'.format([x for x in '$LDFLAGS'.split()]))")
[paths]