[meta-oe][PATCHv4] perfetto: build libperfetto
Markus Volk
- Mesa has support for perfetto, but the libperfetto library is needed
- Only v27 seems to be supported for now. Update perfetto accordingly - Make sure perfetto and libperfetto share the same codebase - Patch meson.build to allow shared build - Add a version number to avoid having a non symlink so file packaged i= nto dev package - Create a PC file for libperfetto to allow mesa to find it using pkgco= nfig - Install needed header file - Add -latomic to LDFLAGS for some arch where the compiler doesn't provid= e it Signed-off-by: Markus Volk <f_l_k@...> --- ...1-meson-add-pc-file-for-lib_perfetto.patch | 52 +++++++++++++++++++ .../recipes-devtools/perfetto/libperfetto.bb | 14 +++++ meta-oe/recipes-devtools/perfetto/perfetto.bb | 6 +-- .../recipes-devtools/perfetto/perfetto.inc | 9 ++++ 4 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 meta-oe/recipes-devtools/perfetto/files/0001-meson-ad= d-pc-file-for-lib_perfetto.patch create mode 100644 meta-oe/recipes-devtools/perfetto/libperfetto.bb create mode 100644 meta-oe/recipes-devtools/perfetto/perfetto.inc diff --git a/meta-oe/recipes-devtools/perfetto/files/0001-meson-add-pc-fi= le-for-lib_perfetto.patch b/meta-oe/recipes-devtools/perfetto/files/0001-= meson-add-pc-file-for-lib_perfetto.patch new file mode 100644 index 000000000..70de44173 --- /dev/null +++ b/meta-oe/recipes-devtools/perfetto/files/0001-meson-add-pc-file-for-= lib_perfetto.patch @@ -0,0 +1,52 @@ +From 027f90dc9386ec08f2a5107025683e5fed6f3444 Mon Sep 17 00:00:00 2001 +From: Markus Volk <f_l_k@...> +Date: Mon, 17 Oct 2022 19:20:53 +0200 +Subject: [PATCH] meson: add PC file for lib_perfetto + +--- + meson.build | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index 06015141c..752b4d928 100644 +--- a/meson.build ++++ b/meson.build +@@ -19,9 +19,12 @@ + project( + 'perfetto', + ['c','cpp'], +- default_options: ['c_std=3Dc99', 'cpp_std=3Dc++11'] ++ default_options: ['c_std=3Dc99', 'cpp_std=3Dc++11'], ++ version: '27.1' + ) +=20 ++soversion =3D meson.project_version() ++ + fs =3D import('fs') +=20 + if not fs.is_dir('sdk') +@@ -30,8 +33,9 @@ endif +=20 + dep_threads =3D dependency('threads') +=20 +-lib_perfetto =3D static_library( ++lib_perfetto =3D shared_library( + 'perfetto', ++ version: soversion, + sources: 'sdk/perfetto.cc', + dependencies: dep_threads, + install: true, +@@ -39,6 +43,10 @@ lib_perfetto =3D static_library( +=20 + inc_perfetto =3D include_directories('sdk') +=20 ++install_headers('sdk/perfetto.h') ++pkg =3D import('pkgconfig') ++pkg.generate(lib_perfetto) ++ + dep_perfetto =3D declare_dependency( + link_with: lib_perfetto, + include_directories: inc_perfetto, +--=20 +2.34.1 + diff --git a/meta-oe/recipes-devtools/perfetto/libperfetto.bb b/meta-oe/r= ecipes-devtools/perfetto/libperfetto.bb new file mode 100644 index 000000000..c8f56fd52 --- /dev/null +++ b/meta-oe/recipes-devtools/perfetto/libperfetto.bb @@ -0,0 +1,14 @@ +LICENSE =3D "Apache-2.0" +LIC_FILES_CHKSUM =3D "file://LICENSE;md5=3Df87516e0b698007e9e75a1fe1012b= 390" + +require perfetto.inc + +inherit meson + +SRC_URI:append =3D " file://0001-meson-add-pc-file-for-lib_perfetto.patc= h" + +LDFLAGS +=3D "-Wl,--as-needed -latomic -Wl,--no-as-needed" + +FILES:${PN} +=3D "${datadir}" + +BBCLASSEXTEND =3D "native nativesdk" diff --git a/meta-oe/recipes-devtools/perfetto/perfetto.bb b/meta-oe/reci= pes-devtools/perfetto/perfetto.bb index 143445c14..98e39f068 100644 --- a/meta-oe/recipes-devtools/perfetto/perfetto.bb +++ b/meta-oe/recipes-devtools/perfetto/perfetto.bb @@ -10,7 +10,7 @@ LIC_FILES_CHKSUM =3D "file://LICENSE;md5=3Df87516e0b698= 007e9e75a1fe1012b390 \ file://debian/copyright;md5=3D4e08364c82141f181de69d= 0a2b89d612 \ file://python/LICENSE;md5=3Dc602a632c34ade9c78a97673= 4077bce7" =20 -SRC_URI =3D "git://github.com/google/perfetto.git;branch=3Dmaster;protoc= ol=3Dhttps;name=3Dperfetto \ +SRC_URI:append =3D " \ git://github.com/protocolbuffers/protobuf.git;branch=3D3.9.x;= protocol=3Dhttps;destsuffix=3Dgit/buildtools/protobuf;name=3Dprotobuf \ git://chromium.googlesource.com/external/github.com/llvm/llvm= -project/libcxx.git;protocol=3Dhttps;destsuffix=3Dgit/buildtools/libcxx;b= ranch=3Dmain;name=3Dlibcxx \ git://chromium.googlesource.com/external/github.com/llvm/llvm= -project/libcxxabi.git;protocol=3Dhttps;destsuffix=3Dgit/buildtools/libcx= xabi;branch=3Dmain;name=3Dlibcxxabi \ @@ -19,7 +19,6 @@ SRC_URI =3D "git://github.com/google/perfetto.git;branc= h=3Dmaster;protocol=3Dhttps;nam https://storage.googleapis.com/perfetto/gn-linux64-1968-0725d= 782;subdir=3Dgit/buildtools/;name=3Dgn \ file://0001-Remove-check_build_deps-build-steps.patch " =20 -SRCREV_perfetto =3D "5bd3f582c075d0d026c5fe0b5e291d34dee0d976" SRCREV_protobuf =3D "6a59a2ad1f61d9696092f79b6d74368b4d7970a3" SRCREV_libcxx =3D "d9040c75cfea5928c804ab7c235fed06a63f743a" SRCREV_libcxxabi =3D "196ba1aaa8ac285d94f4ea8d9836390a45360533" @@ -27,6 +26,8 @@ SRCREV_libunwind =3D "d999d54f4bca789543a2eb6c995af2d9b= 5a1f3ed" SRCREV_zlib =3D "5c85a2da4c13eda07f69d81a1579a5afddd35f59" SRC_URI[gn.sha256sum] =3D "f706aaa0676e3e22f5fc9ca482295d7caee8535d1869f= 99efa2358177b64f5cd" =20 +require perfetto.inc + DEPENDS +=3D " ninja-native" =20 COMPATIBLE_HOST =3D "(i.86|x86_64|aarch64|arm).*-linux*" @@ -35,7 +36,6 @@ FILES:${PN}:append =3D " \ ${bindir}/tracebox \ " =20 -S =3D "${WORKDIR}/git" B =3D "${WORKDIR}/build" =20 # Run the GN (Generate Ninja) script, and replace the compiler flags whe= re applicable diff --git a/meta-oe/recipes-devtools/perfetto/perfetto.inc b/meta-oe/rec= ipes-devtools/perfetto/perfetto.inc new file mode 100644 index 000000000..5cb6f8bb3 --- /dev/null +++ b/meta-oe/recipes-devtools/perfetto/perfetto.inc @@ -0,0 +1,9 @@ +SUMMARY =3D "Perfetto - System profiling, app tracing and trace analysis= ." +HOMEPAGE =3D "https://github.com/google/perfetto" + +SRC_URI =3D "git://github.com/google/perfetto.git;protocol=3Dhttps;name=3D= perfetto;nobranch=3D1" + +SRCREV_perfetto =3D "1c52b5e132312aeb007ed180d4ba1d8d66227923" +PV =3D "27.1" + +S =3D "${WORKDIR}/git" --=20 2.34.1 |
|