Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[openh264] Use meson to build the project #24564

Merged
merged 21 commits into from
Aug 6, 2024

Conversation

uilianries
Copy link
Member

Summary

Changes to recipe: openh264/2.4.1

Motivation

When checking FFMPEG project to be cross-built to Android, OpenH264 failed:

<built-in>:379:9: note: previous definition is here
#define __ANDROID_API__ __ANDROID_MIN_SDK_VERSION__
        ^
1 warning generated.
/usr/bin/as: unrecognized option '-EL'
clang-17: error: assembler command failed with exit code 1 (use -v to see invocation)
make: *** [codec/encoder/targets.mk:137: codec/encoder/core/arm64/intra_pred_aarch64_neon.o] Error 1

Using the native Meson support it works and reduced workaround and patches.

Details

  • The Openh264 is ONLY used by ffmpeg.
  • Removed version 1.7 because does not support Meson. It was introduced in 2.x
  • All current patches are related to previous build using Make only
  • The version 2.1.1 does not support Android.

Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
@uilianries uilianries self-assigned this Jul 9, 2024
@jcar87 jcar87 self-assigned this Jul 9, 2024
@jcar87
Copy link
Contributor

jcar87 commented Jul 9, 2024

Let's double check that the .lib and .dll files on Windows have the same names as before, this sort of migrations tend to cause issues like that

@conan-center-bot

This comment has been minimized.

@uilianries
Copy link
Member Author

Let's double check that the .lib and .dll files on Windows have the same names as before, this sort of migrations tend to cause issues like that

I didn't test on Windows yet, only on Linux and MacOS. For Android is cross-building with success.

$ conan create all --version=2.4.1 -pr:b=default -pr:h=android -o "&:shared=True" -c tools.build:verbosity=verbose -c tools.compilation:verbosity=quiet

======== Exporting recipe to the cache ========
openh264/2.4.1: Exporting package recipe: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/conanfile.py
openh264/2.4.1: exports: File 'conandata.yml' found. Exporting it...
openh264/2.4.1: Calling export_sources()
openh264/2.4.1: export_conandata_patches(): No patches defined in conandata
openh264/2.4.1: Copied 1 '.py' file: conanfile.py
openh264/2.4.1: Copied 1 '.yml' file: conandata.yml
openh264/2.4.1: Exported to cache folder: /home/uilian/.conan2/p/openh107a38cc6e708/e
openh264/2.4.1: Exported: openh264/2.4.1#57044398837b882c848268849685fff5 (2024-07-09 12:10:50 UTC)

======== Input profiles ========
Profile host:
[settings]
arch=armv8
build_type=Release
compiler=clang
compiler.cppstd=17
compiler.libcxx=c++_static
compiler.version=17
os=Android
os.api_level=32
[options]
&:shared=True
[tool_requires]
*: android-ndk/r26d
[replace_requires]
qt/*: qt/5.15.14
[conf]
tools.build:verbosity=verbose
tools.cmake.cmaketoolchain:generator=Ninja
tools.compilation:verbosity=quiet
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=yes

Profile build:
[settings]
arch=x86_64
build_type=Release
compiler=gcc
compiler.cppstd=gnu17
compiler.libcxx=libstdc++11
compiler.version=11
os=Linux
[replace_requires]
qt/*: qt/5.15.14
[conf]
tools.build:verbosity=verbose
tools.cmake.cmaketoolchain:generator=Ninja
tools.compilation:verbosity=verbose
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=yes


======== Computing dependency graph ========
Graph root
    cli
Requirements
    openh264/2.4.1#57044398837b882c848268849685fff5 - Cache
Build requirements
    android-ndk/r26d#0a8a020a2e0ce2edbda6ff226a33a23a - Cache
    meson/1.4.1#edd3ecbcb4b295d2f084be5bb944f1af - Cache
    ninja/1.11.1#77587f8c8318662ac8e5a7867eb4be21 - Cache

======== Computing necessary packages ========
openh264/2.4.1: Forced build from source
Requirements
    openh264/2.4.1#57044398837b882c848268849685fff5:fdff734c937d0b5784d68ea590145644597143d1 - Build
Build requirements
    android-ndk/r26d#0a8a020a2e0ce2edbda6ff226a33a23a:63fead0844576fc02943e16909f08fcdddd6f44b#b049c823c3ef83c1c734cd5760bd11aa - Cache
    meson/1.4.1#edd3ecbcb4b295d2f084be5bb944f1af:da39a3ee5e6b4b0d3255bfef95601890afd80709#4a43a051838fc016591c956c0389e89e - Cache
    ninja/1.11.1#77587f8c8318662ac8e5a7867eb4be21:3593751651824fb813502c69c971267624ced41a#60e6fc0f973babfbed66a66af22a4f02 - Cache

======== Installing packages ========
android-ndk/r26d: Already installed! (1 of 4)
ninja/1.11.1: Already installed! (2 of 4)
meson/1.4.1: Already installed! (3 of 4)

-------- Installing package openh264/2.4.1 (4 of 4) --------
openh264/2.4.1: Building from source
openh264/2.4.1: Package openh264/2.4.1:fdff734c937d0b5784d68ea590145644597143d1
openh264/2.4.1: Copying sources to build folder
openh264/2.4.1: Building your package in /home/uilian/.conan2/p/b/openha5f02f486a70c/b
openh264/2.4.1: Calling generate()
openh264/2.4.1: Generators folder: /home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release/conan
openh264/2.4.1: Generating aggregated env files
openh264/2.4.1: Generated aggregated env files: ['conanbuild.sh', 'conanrun.sh']
openh264/2.4.1: Calling build()
openh264/2.4.1: apply_conandata_patches(): No patches defined in conandata
openh264/2.4.1: Meson configure cmd: meson setup --cross-file "/home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release/conan/conan_meson_cross.ini" "/home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release" "/home/uilian/.conan2/p/b/openha5f02f486a70c/b/src" --prefix=/
openh264/2.4.1: RUN: meson setup --cross-file "/home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release/conan/conan_meson_cross.ini" "/home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release" "/home/uilian/.conan2/p/b/openha5f02f486a70c/b/src" --prefix=/
The Meson build system
Version: 1.4.1
Source dir: /home/uilian/.conan2/p/b/openha5f02f486a70c/b/src
Build dir: /home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release
Build type: cross build
Project name: openh264
Project version: 2.4.1
C compiler for the host machine: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android32-clang (clang 17.0.2 "Android (11349228, +pgo, +bolt, +lto, -mlgo, based on r487747e) clang version 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362)")
C linker for the host machine: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android32-clang ld.lld 17.0.2
C++ compiler for the host machine: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android32-clang++ (clang 17.0.2 "Android (11349228, +pgo, +bolt, +lto, -mlgo, based on r487747e) clang version 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362)")
C++ linker for the host machine: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android32-clang++ ld.lld 17.0.2
C compiler for the build machine: ccache cc (gcc 11.4.0 "cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
C linker for the build machine: cc ld.lld 17.0.2
C++ compiler for the build machine: ccache c++ (gcc 11.4.0 "c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
C++ linker for the build machine: c++ ld.lld 17.0.2
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: aarch64
Host machine cpu: armv8
Target machine cpu family: aarch64
Target machine cpu: armv8
Compiler for C++ supports arguments -Wno-non-virtual-dtor: YES 
Compiler for C++ supports arguments -Wno-class-memaccess: NO 
Compiler for C++ supports arguments -Wno-strict-aliasing: YES 
Run-time dependency threads found: YES
Library m found: YES
Found pkg-config: NO
Run-time dependency GTest found: NO (tried pkgconfig and system)
Not looking for a fallback subproject for the dependency gtest because:
Use of fallback dependencies is disabled.
Run-time dependency GTest found: NO (tried pkgconfig and system)
Not looking for a fallback subproject for the dependency gtest because:
Use of fallback dependencies is disabled.
Build targets in project: 5

openh264 2.4.1

  User defined options
    Cross files: /home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release/conan/conan_meson_cross.ini
    prefix     : /

Found ninja-1.11.1 at /home/uilian/.conan2/p/ninja6fed3c8400c5b/p/bin/ninja
                                                                                                                                                                                                                                              
openh264/2.4.1: Meson build cmd: meson compile -C "/home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release" -j12
openh264/2.4.1: RUN: meson compile -C "/home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release" -j12
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /home/uilian/.conan2/p/ninja6fed3c8400c5b/p/bin/ninja -j 12
[108/108] Linking target libopenh264.so

openh264/2.4.1: Package 'fdff734c937d0b5784d68ea590145644597143d1' built
openh264/2.4.1: Build folder /home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release
openh264/2.4.1: Generating the package
openh264/2.4.1: Packaging in folder /home/uilian/.conan2/p/b/openha5f02f486a70c/p
openh264/2.4.1: Calling package()
openh264/2.4.1: RUN: meson install -C "/home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release" --destdir "/home/uilian/.conan2/p/b/openha5f02f486a70c/p" --quiet
ninja: Entering directory `/home/uilian/.conan2/p/b/openha5f02f486a70c/b/build-release'
ninja: no work to do.

openh264/2.4.1: package(): Packaged 1 file: LICENSE
openh264/2.4.1: package(): Packaged 1 '.so' file: libopenh264.so
openh264/2.4.1: package(): Packaged 4 '.h' files: codec_def.h, codec_api.h, codec_ver.h, codec_app_def.h
openh264/2.4.1: Created package revision 3222f5cdff1326dd010b6520c91ae2eb
openh264/2.4.1: Package 'fdff734c937d0b5784d68ea590145644597143d1' created
openh264/2.4.1: Full package reference: openh264/2.4.1#57044398837b882c848268849685fff5:fdff734c937d0b5784d68ea590145644597143d1#3222f5cdff1326dd010b6520c91ae2eb
openh264/2.4.1: Package folder /home/uilian/.conan2/p/b/openh52c19bb1e4bbf/p

======== Launching test_package ========

======== Computing dependency graph ========
Graph root
    openh264/2.4.1 (test package): /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/conanfile.py
Requirements
    openh264/2.4.1#57044398837b882c848268849685fff5 - Cache
Build requirements
    android-ndk/r26d#0a8a020a2e0ce2edbda6ff226a33a23a - Cache
    meson/1.4.1#edd3ecbcb4b295d2f084be5bb944f1af - Cache
    ninja/1.11.1#77587f8c8318662ac8e5a7867eb4be21 - Cache

======== Computing necessary packages ========
Requirements
    openh264/2.4.1#57044398837b882c848268849685fff5:fdff734c937d0b5784d68ea590145644597143d1#3222f5cdff1326dd010b6520c91ae2eb - Cache
Build requirements
    android-ndk/r26d#0a8a020a2e0ce2edbda6ff226a33a23a:63fead0844576fc02943e16909f08fcdddd6f44b#b049c823c3ef83c1c734cd5760bd11aa - Cache
Skipped binaries
    meson/1.4.1, ninja/1.11.1

======== Installing packages ========
android-ndk/r26d: Already installed! (1 of 2)
openh264/2.4.1: Already installed! (2 of 2)

======== Testing the package ========
Removing previously existing 'test_package' build folder: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release
openh264/2.4.1 (test package): Test package build: build/clang-17-armv8-17-release
openh264/2.4.1 (test package): Test package build folder: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release
openh264/2.4.1 (test package): Writing generators to /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release/generators
openh264/2.4.1 (test package): Generator 'CMakeDeps' calling 'generate()'
openh264/2.4.1 (test package): CMakeDeps necessary find_package() and targets for your CMakeLists.txt
    find_package(openh264)
    target_link_libraries(... openh264::openh264)
openh264/2.4.1 (test package): Generator 'CMakeToolchain' calling 'generate()'
openh264/2.4.1 (test package): CMakeToolchain generated: conan_toolchain.cmake
openh264/2.4.1 (test package): CMakeToolchain generated: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release/generators/CMakePresets.json
openh264/2.4.1 (test package): CMakeToolchain generated: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/CMakeUserPresets.json
openh264/2.4.1 (test package): Generator 'VirtualRunEnv' calling 'generate()'
openh264/2.4.1 (test package): Generating aggregated env files
openh264/2.4.1 (test package): Generated aggregated env files: ['conanrun.sh', 'conanbuild.sh']

======== Testing the package: Building ========
openh264/2.4.1 (test package): Calling build()
openh264/2.4.1 (test package): Running CMake.configure()
openh264/2.4.1 (test package): RUN: cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="generators/conan_toolchain.cmake" -DCMAKE_INSTALL_PREFIX="/home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package" -DCMAKE_POLICY_DEFAULT_CMP0091="NEW" -DCMAKE_BUILD_TYPE="Release" "/home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package" --loglevel=VERBOSE
-- Using Conan toolchain: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release/generators/conan_toolchain.cmake
-- Conan toolchain: C++ Standard 17 with extensions OFF
-- The C compiler identification is Clang 17.0.2
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Conan: Target declared 'openh264::openh264'
-- Conan: Library openh264 found /home/uilian/.conan2/p/b/openh52c19bb1e4bbf/p/lib/libopenh264.so
-- Conan: Found: /home/uilian/.conan2/p/b/openh52c19bb1e4bbf/p/lib/libopenh264.so
-- Configuring done (0.2s)
-- Generating done (0.0s)
-- Build files have been written to: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release

openh264/2.4.1 (test package): Running CMake.build()
openh264/2.4.1 (test package): RUN: cmake --build "/home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release" -- -j12
[2/2] Linking C executable test_package


======== Testing the package: Executing test ========
openh264/2.4.1 (test package): Running test()

$ file /home/uilian/.conan2/p/b/openh52c19bb1e4bbf/p/lib/libopenh264.so
/home/uilian/.conan2/p/b/openh52c19bb1e4bbf/p/lib/libopenh264.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, not stripped

Signed-off-by: Uilian Ries <uilianries@gmail.com>
@conan-center-bot

This comment has been minimized.

@uilianries uilianries linked an issue Jul 9, 2024 that may be closed by this pull request
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
@uilianries uilianries marked this pull request as draft July 9, 2024 14:00
@conan-center-bot

This comment has been minimized.

Signed-off-by: Uilian Ries <uilianries@gmail.com>
@conan-center-bot

This comment has been minimized.

@uilianries
Copy link
Member Author

Checked current names for Windows libraries in Conan Center using RREV a6f1b46152f2077f89c2899fe006d5f6:

https://conan.io/center/recipes/openh264?version=2.4.1

MSVC Shared=True:

λ conan cache path openh264/2.4.1#a6f1b46152f2077f89c2899fe006d5f6:79c7c02f38aba9a2251f4091daf91ea3b11c0234#6e231671620c1123e95d34b786c23f95
C:\Users\uilia\.conan2\p\openh60c9cd47b01cc\p

λ ls C:\Users\uilia\.conan2\p\openh60c9cd47b01cc\p
bin/  conaninfo.txt  conanmanifest.txt  include/  lib/  licenses/

λ ls C:\Users\uilia\.conan2\p\openh60c9cd47b01cc\p\bin
openh264.dll*

λ ls C:\Users\uilia\.conan2\p\openh60c9cd47b01cc\p\lib\
openh264_dll.lib

MSVC Shared=False

conan cache path  openh264/2.4.1#a6f1b46152f2077f89c2899fe006d5f6:9bdee485ef71c14ac5f8a657202632bdb8b4482b#74f6504c3ff4dcf31ca3bdb7ac8e0e2f 
C:\Users\uilia\.conan2\p\openh8c5029361661e\p

λ ls C:\Users\uilia\.conan2\p\openh8c5029361661e\p
conaninfo.txt  conanmanifest.txt  include/  lib/  licenses/

λ ls C:\Users\uilia\.conan2\p\openh8c5029361661e\p\lib
openh264.lib

When building shared=False, it's expected openh264.lib. But, when building shared=True, it's expected openh264.dll and openh264_dll.lib

Signed-off-by: Uilian Ries <uilianries@gmail.com>
@conan-center-bot

This comment has been minimized.

Signed-off-by: Uilian Ries <uilianries@gmail.com>
@conan-center-bot

This comment has been minimized.

Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
@uilianries
Copy link
Member Author

@elvisdukaj I'm capable to reproduce your error on Linux! Indeed there is a linkage error when using static library:

conan create all --version=2.4.1 -pr:b=default -pr:h=android -o "*/*:shared=False" -c tools.compilation:verbosity=quiet -c tools.build:verbosity=quiet

======== Exporting recipe to the cache ========
openh264/2.4.1: Exporting package recipe: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/conanfile.py
openh264/2.4.1: exports: File 'conandata.yml' found. Exporting it...
openh264/2.4.1: Copied 1 '.py' file: conanfile.py
openh264/2.4.1: Copied 1 '.yml' file: conandata.yml
openh264/2.4.1: Exported to cache folder: /home/uilian/.conan2/p/openh0308501ac4607/e
openh264/2.4.1: Exported: openh264/2.4.1#51935ebc1ed5c75278c1fbf42d8a0d1a (2024-07-11 09:37:09 UTC)

======== Input profiles ========
Profile host:
[settings]
arch=armv8
build_type=Release
compiler=clang
compiler.cppstd=17
compiler.libcxx=c++_static
compiler.version=17
os=Android
os.api_level=32
[options]
*/*:shared=False
[tool_requires]
*: android-ndk/r26d
[replace_requires]
qt/*: qt/5.15.14
[conf]
tools.build:verbosity=quiet
tools.cmake.cmaketoolchain:generator=Ninja
tools.compilation:verbosity=quiet
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=yes

Profile build:
[settings]
arch=x86_64
build_type=Release
compiler=gcc
compiler.cppstd=gnu17
compiler.libcxx=libstdc++11
compiler.version=11
os=Linux
[replace_requires]
qt/*: qt/5.15.14
[conf]
tools.build:verbosity=verbose
tools.cmake.cmaketoolchain:generator=Ninja
tools.compilation:verbosity=verbose
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=yes


======== Computing dependency graph ========
Graph root
    cli
Requirements
    openh264/2.4.1#51935ebc1ed5c75278c1fbf42d8a0d1a - Cache
Build requirements
    android-ndk/r26d#0a8a020a2e0ce2edbda6ff226a33a23a - Cache
    meson/1.2.2#04bdfb85d665c82b08a3510aee3ffd19 - Cache
    meson/1.4.1#edd3ecbcb4b295d2f084be5bb944f1af - Cache
    ninja/1.11.1#d19fe59ab95409ef22c0c2128ac547c8 - Cache
    pkgconf/2.2.0#6462942a22803086372db44689ba825f - Cache

======== Computing necessary packages ========
openh264/2.4.1: Forced build from source
Requirements
    openh264/2.4.1#51935ebc1ed5c75278c1fbf42d8a0d1a:95a7e226fcbeb24c7e4ac76563c634e2b273281a - Build
Build requirements
    android-ndk/r26d#0a8a020a2e0ce2edbda6ff226a33a23a:63fead0844576fc02943e16909f08fcdddd6f44b#b049c823c3ef83c1c734cd5760bd11aa - Cache
    meson/1.4.1#edd3ecbcb4b295d2f084be5bb944f1af:da39a3ee5e6b4b0d3255bfef95601890afd80709#4a43a051838fc016591c956c0389e89e - Cache
    ninja/1.11.1#d19fe59ab95409ef22c0c2128ac547c8:3593751651824fb813502c69c971267624ced41a#1376e89206dc79cb4020fc0e858ecf71 - Cache
    pkgconf/2.2.0#6462942a22803086372db44689ba825f:c0b621fd4b3199fe05075171573398833dba85f4#35e5163b1cf42becef616e6b7873202e - Cache
Skipped binaries
    meson/1.2.2

======== Installing packages ========
android-ndk/r26d: Already installed! (1 of 5)
ninja/1.11.1: Already installed! (2 of 5)
pkgconf/2.2.0: Already installed! (3 of 5)
pkgconf/2.2.0: WARN: The use of 'unix_path_legacy_compat' is deprecated in Conan 2.0 and does not perform path conversions. This is retained for compatibility with Conan 1.x and will be removed in a future version.
meson/1.4.1: Already installed! (4 of 5)

-------- Installing package openh264/2.4.1 (5 of 5) --------
openh264/2.4.1: Building from source
openh264/2.4.1: Package openh264/2.4.1:95a7e226fcbeb24c7e4ac76563c634e2b273281a
openh264/2.4.1: Copying sources to build folder
openh264/2.4.1: Building your package in /home/uilian/.conan2/p/b/openhe93cfb198b2c1/b
openh264/2.4.1: Calling generate()
openh264/2.4.1: Generators folder: /home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release/conan
openh264/2.4.1: Generating aggregated env files
openh264/2.4.1: Generated aggregated env files: ['conanbuild.sh', 'conanrun.sh']
openh264/2.4.1: Calling build()
openh264/2.4.1: Meson configure cmd: meson setup --cross-file "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release/conan/conan_meson_cross.ini" "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release" "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/src" --prefix=/
openh264/2.4.1: RUN: meson setup --cross-file "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release/conan/conan_meson_cross.ini" "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release" "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/src" --prefix=/
The Meson build system
Version: 1.4.1
Source dir: /home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/src
Build dir: /home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release
Build type: cross build
Project name: openh264
Project version: 2.4.1
C compiler for the host machine: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android32-clang (clang 17.0.2 "Android (11349228, +pgo, +bolt, +lto, -mlgo, based on r487747e) clang version 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362)")
C linker for the host machine: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android32-clang ld.lld 17.0.2
C++ compiler for the host machine: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android32-clang++ (clang 17.0.2 "Android (11349228, +pgo, +bolt, +lto, -mlgo, based on r487747e) clang version 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362)")
C++ linker for the host machine: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android32-clang++ ld.lld 17.0.2
C compiler for the build machine: ccache cc (gcc 11.4.0 "cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
C linker for the build machine: cc ld.lld 17.0.2
C++ compiler for the build machine: ccache c++ (gcc 11.4.0 "c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
C++ linker for the build machine: c++ ld.lld 17.0.2
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: aarch64
Host machine cpu: armv8
Target machine cpu family: aarch64
Target machine cpu: armv8
Compiler for C++ supports arguments -Wno-non-virtual-dtor: YES 
Compiler for C++ supports arguments -Wno-class-memaccess: NO 
Compiler for C++ supports arguments -Wno-strict-aliasing: YES 
Run-time dependency threads found: YES
Library m found: YES
Found pkg-config: YES (/home/uilian/.conan2/p/pkgcobe94b5aebe034/p/bin/pkgconf) 2.2.0
Build targets in project: 5

openh264 2.4.1

  User defined options
    Cross files: /home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release/conan/conan_meson_cross.ini
    prefix     : /

Found ninja-1.11.1 at /home/uilian/.conan2/p/b/ninja596f94fba2ecf/p/bin/ninja
                                                                                                                                                                                                                                              
openh264/2.4.1: Meson build cmd: meson compile -C "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release" -j12
openh264/2.4.1: RUN: meson compile -C "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release" -j12
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /home/uilian/.conan2/p/b/ninja596f94fba2ecf/p/bin/ninja -j 12

[108/108] Linking static target libopenh264.a

openh264/2.4.1: Package '95a7e226fcbeb24c7e4ac76563c634e2b273281a' built
openh264/2.4.1: Build folder /home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release
openh264/2.4.1: Generating the package
openh264/2.4.1: Packaging in folder /home/uilian/.conan2/p/b/openhe93cfb198b2c1/p
openh264/2.4.1: Calling package()
openh264/2.4.1: RUN: meson install -C "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release" --destdir "/home/uilian/.conan2/p/b/openhe93cfb198b2c1/p" --quiet
ninja: Entering directory `/home/uilian/.conan2/p/b/openhe93cfb198b2c1/b/build-release'
ninja: no work to do.

openh264/2.4.1: package(): Packaged 1 file: LICENSE
openh264/2.4.1: package(): Packaged 1 '.a' file: libopenh264.a
openh264/2.4.1: package(): Packaged 4 '.h' files: codec_def.h, codec_api.h, codec_ver.h, codec_app_def.h
openh264/2.4.1: Created package revision 71782bba26c209de5cbffaf835e15b5d
openh264/2.4.1: Package '95a7e226fcbeb24c7e4ac76563c634e2b273281a' created
openh264/2.4.1: Full package reference: openh264/2.4.1#51935ebc1ed5c75278c1fbf42d8a0d1a:95a7e226fcbeb24c7e4ac76563c634e2b273281a#71782bba26c209de5cbffaf835e15b5d
openh264/2.4.1: Package folder /home/uilian/.conan2/p/b/openh8f87361185007/p
WARN: deprecated: Usage of deprecated Conan 1.X features that will be removed in Conan 2.X:
WARN: deprecated:     'env_info' used in: pkgconf/2.2.0

======== Launching test_package ========

======== Computing dependency graph ========
Graph root
    openh264/2.4.1 (test package): /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/conanfile.py
Requirements
    openh264/2.4.1#51935ebc1ed5c75278c1fbf42d8a0d1a - Cache
Build requirements
    android-ndk/r26d#0a8a020a2e0ce2edbda6ff226a33a23a - Cache
    meson/1.2.2#04bdfb85d665c82b08a3510aee3ffd19 - Cache
    meson/1.4.1#edd3ecbcb4b295d2f084be5bb944f1af - Cache
    ninja/1.11.1#d19fe59ab95409ef22c0c2128ac547c8 - Cache
    pkgconf/2.2.0#6462942a22803086372db44689ba825f - Cache

======== Computing necessary packages ========
Requirements
    openh264/2.4.1#51935ebc1ed5c75278c1fbf42d8a0d1a:95a7e226fcbeb24c7e4ac76563c634e2b273281a#71782bba26c209de5cbffaf835e15b5d - Cache
Build requirements
    android-ndk/r26d#0a8a020a2e0ce2edbda6ff226a33a23a:63fead0844576fc02943e16909f08fcdddd6f44b#b049c823c3ef83c1c734cd5760bd11aa - Cache
Skipped binaries
    meson/1.2.2, meson/1.4.1, ninja/1.11.1, pkgconf/2.2.0

======== Installing packages ========
android-ndk/r26d: Already installed! (1 of 2)
openh264/2.4.1: Already installed! (2 of 2)

======== Testing the package ========
Removing previously existing 'test_package' build folder: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release
openh264/2.4.1 (test package): Test package build: build/clang-17-armv8-17-release
openh264/2.4.1 (test package): Test package build folder: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release
openh264/2.4.1 (test package): Writing generators to /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release/generators
openh264/2.4.1 (test package): Generator 'CMakeDeps' calling 'generate()'
openh264/2.4.1 (test package): CMakeDeps necessary find_package() and targets for your CMakeLists.txt
    find_package(openh264)
    target_link_libraries(... openh264::openh264)
openh264/2.4.1 (test package): Generator 'CMakeToolchain' calling 'generate()'
openh264/2.4.1 (test package): CMakeToolchain generated: conan_toolchain.cmake
openh264/2.4.1 (test package): CMakeToolchain generated: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release/generators/CMakePresets.json
openh264/2.4.1 (test package): CMakeToolchain generated: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/CMakeUserPresets.json
openh264/2.4.1 (test package): Generator 'VirtualRunEnv' calling 'generate()'
openh264/2.4.1 (test package): Generating aggregated env files
openh264/2.4.1 (test package): Generated aggregated env files: ['conanrun.sh', 'conanbuild.sh']

======== Testing the package: Building ========
openh264/2.4.1 (test package): Calling build()
openh264/2.4.1 (test package): Running CMake.configure()
openh264/2.4.1 (test package): RUN: cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="generators/conan_toolchain.cmake" -DCMAKE_INSTALL_PREFIX="/home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package" -DCMAKE_POLICY_DEFAULT_CMP0091="NEW" -DCMAKE_BUILD_TYPE="Release" "/home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package" --loglevel=ERROR
-- Configuring done (0.2s)
-- Generating done (0.0s)
-- Build files have been written to: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release

openh264/2.4.1 (test package): Running CMake.build()
openh264/2.4.1 (test package): RUN: cmake --build "/home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release" -- -j12
[2/2] Linking C executable test_package
FAILED: test_package 
: && /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android32 --sysroot=/home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -O3 -DNDEBUG -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments   -Wl,--gc-sections CMakeFiles/test_package.dir/test_package.c.o -o test_package -L/home/uilian/.conan2/p/b/openh8f87361185007/p/lib /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a  -lm  -lc++_static  -latomic -lm && :
ld.lld: error: undefined symbol: operator new(unsigned long)
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(WelsEnc::CWelsH264SVCEncoder::CWelsH264SVCEncoder()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(WelsEnc::CWelsH264SVCEncoder::InitEncoder()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(WelsCreateSVCEncoder) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced 45 more times

ld.lld: error: undefined symbol: operator delete(void*)
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(WelsEnc::CWelsH264SVCEncoder::CWelsH264SVCEncoder()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(WelsEnc::CWelsH264SVCEncoder::InitEncoder()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(WelsEnc::CWelsH264SVCEncoder::~CWelsH264SVCEncoder()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced 62 more times

ld.lld: error: undefined symbol: __cxa_begin_catch
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(__clang_call_terminate) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a

ld.lld: error: undefined symbol: std::terminate()
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(__clang_call_terminate) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a

ld.lld: error: undefined symbol: vtable for __cxxabiv1::__si_class_type_info
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(typeinfo for WelsEnc::CWelsH264SVCEncoder) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by WelsTaskThread.cpp
>>>               src_WelsTaskThread.cpp.o:(typeinfo for WelsCommon::CWelsTaskThread) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by wels_task_base.cpp
>>>               core_src_wels_task_base.cpp.o:(typeinfo for WelsEnc::CWelsBaseTask) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced 29 more times
>>> the vtable symbol may be undefined because the class is missing its key function (see https://lld.llvm.org/missingkeyfunction)

ld.lld: error: undefined symbol: vtable for __cxxabiv1::__class_type_info
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(typeinfo for ISVCEncoder) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by memory_align.cpp
>>>               src_memory_align.cpp.o:(typeinfo for WelsCommon::CMemoryAlign) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by wels_task_management.cpp
>>>               core_src_wels_task_management.cpp.o:(typeinfo for WelsEnc::IWelsTaskManage) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced 10 more times
>>> the vtable symbol may be undefined because the class is missing its key function (see https://lld.llvm.org/missingkeyfunction)

ld.lld: error: undefined symbol: __gxx_personality_v0
>>> referenced by welsEncoderExt.cpp
>>>               plus_src_welsEncoderExt.cpp.o:(DW.ref.__gxx_personality_v0) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a

ld.lld: error: undefined symbol: __cxa_guard_acquire
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(WelsCommon::CWelsThreadPool::SetThreadNum(int)) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(WelsCommon::CWelsThreadPool::AddReference()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(WelsCommon::CWelsThreadPool::RemoveInstance()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced 1 more times

ld.lld: error: undefined symbol: vtable for __cxxabiv1::__vmi_class_type_info
>>> referenced by wels_task_management.cpp
>>>               core_src_wels_task_management.cpp.o:(typeinfo for WelsEnc::CWelsTaskManageBase) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(typeinfo for WelsCommon::CWelsThreadPool) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> the vtable symbol may be undefined because the class is missing its key function (see https://lld.llvm.org/missingkeyfunction)

ld.lld: error: undefined symbol: __cxa_guard_release
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(WelsCommon::CWelsThreadPool::SetThreadNum(int)) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(WelsCommon::CWelsThreadPool::AddReference()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(WelsCommon::CWelsThreadPool::RemoveInstance()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced 1 more times

ld.lld: error: undefined symbol: __cxa_pure_virtual
>>> referenced by WelsThread.cpp
>>>               src_WelsThread.cpp.o:(vtable for WelsCommon::CWelsThread) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by wels_task_base.cpp
>>>               core_src_wels_task_base.cpp.o:(vtable for WelsEnc::CWelsBaseTask) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by wels_task_base.cpp
>>>               core_src_wels_task_base.cpp.o:(vtable for WelsEnc::CWelsBaseTask) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced 2 more times

ld.lld: error: undefined symbol: __cxa_guard_abort
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(WelsCommon::CWelsThreadPool::SetThreadNum(int)) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(WelsCommon::CWelsThreadPool::AddReference()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced by WelsThreadPool.cpp
>>>               src_WelsThreadPool.cpp.o:(WelsCommon::CWelsThreadPool::RemoveInstance()) in archive /home/uilian/.conan2/p/b/openh8f87361185007/p/lib/libopenh264.a
>>> referenced 1 more times
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

ERROR: openh264/2.4.1 (test package): Error in build() method, line 21
	cmake.build()
	ConanException: Error 1 while executing

It's clear some library is missing and c++_static is not enough in this case. The commit bc31539 adds c++abi, linked from Android NDK too, which fixes the current error:

======== Testing the package: Building ========
openh264/2.4.1 (test package): Calling build()
openh264/2.4.1 (test package): Running CMake.configure()
openh264/2.4.1 (test package): RUN: cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="generators/conan_toolchain.cmake" -DCMAKE_INSTALL_PREFIX="/home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package" -DCMAKE_POLICY_DEFAULT_CMP0091="NEW" -DCMAKE_BUILD_TYPE="Release" "/home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package" --loglevel=VERBOSE
-- Using Conan toolchain: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release/generators/conan_toolchain.cmake
-- Conan toolchain: C++ Standard 17 with extensions OFF
-- The C compiler identification is Clang 17.0.2
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Conan: Target declared 'openh264::openh264'
-- Conan: Library openh264 found /home/uilian/.conan2/p/b/openh058136a786cba/p/lib/libopenh264.a
-- Conan: Found: /home/uilian/.conan2/p/b/openh058136a786cba/p/lib/libopenh264.a
-- Configuring done (0.1s)
-- Generating done (0.0s)
-- Build files have been written to: /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release

openh264/2.4.1 (test package): Running CMake.build()
openh264/2.4.1 (test package): RUN: cmake --build "/home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/build/clang-17-armv8-17-release" --verbose -- -j12
[1/2] /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android32 --sysroot=/home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/sysroot  -isystem /home/uilian/.conan2/p/b/openh058136a786cba/p/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -O3 -DNDEBUG  -fPIE -MD -MT CMakeFiles/test_package.dir/test_package.c.o -MF CMakeFiles/test_package.dir/test_package.c.o.d -o CMakeFiles/test_package.dir/test_package.c.o -c /home/uilian/Development/conan/conan-center-index/recipes/openh264/all/test_package/test_package.c
[2/2] : && /home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android32 --sysroot=/home/uilian/.conan2/p/androc80020a02a776/p/bin/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -O3 -DNDEBUG -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments   -Wl,--gc-sections CMakeFiles/test_package.dir/test_package.c.o -o test_package -L/home/uilian/.conan2/p/b/openh058136a786cba/p/lib /home/uilian/.conan2/p/b/openh058136a786cba/p/lib/libopenh264.a  -lm  -lc++abi  -lc++_static  -latomic -lm && :


======== Testing the package: Executing test ========
openh264/2.4.1 (test package): Running test()

@uilianries uilianries requested a review from AbrilRBS July 11, 2024 09:42
@conan-center-bot

This comment has been minimized.

AbrilRBS
AbrilRBS previously approved these changes Jul 11, 2024
jcar87
jcar87 previously requested changes Jul 23, 2024
Copy link
Contributor

@jcar87 jcar87 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this PR, the windows package for the shared variant contains the following:

(see log)

openh264/2.4.1 package(): Packaged 1 '.dll' file: openh264-7.dll

in the remote, the currently published package contains

openh264.dll

Merging this PR as is would break consumers that expect openh264.dll to exist.

From what I can see, the .lib file is the same in both cases, although I can see it is being renamed:

  • Installing openh264.lib
    vs
  • openh264/2.4.1 package(): Packaged 1 '.lib' file: openh264_dll.lib

The DLL cannot be renamed (the name for it is embedded in the .lib file) - either we cause the build system to emit the previous names, or we need to duplicate the DLL and have both. I'd prefer the former, if possible, and note in the recipe why this is done.

These "meson" migrations make me uncomfortable because it is quite the breaking change to produce a differently named DLL...

Signed-off-by: Uilian Ries <uilianries@gmail.com>
@conan-center-bot

This comment has been minimized.

@conan-center-bot

This comment has been minimized.

Signed-off-by: Uilian Ries <uilianries@gmail.com>
@conan-center-bot

This comment has been minimized.

@conan-center-bot
Copy link
Collaborator

Conan v1 pipeline ✔️

All green in build 20 (437b9e20b2795f8bfd86f77d1d1e568a812f16c2):

  • openh264/2.3.1:
    All packages built successfully! (All logs)

  • openh264/2.1.1:
    All packages built successfully! (All logs)

  • openh264/2.4.1:
    All packages built successfully! (All logs)


Conan v2 pipeline ✔️

Note: Conan v2 builds are now mandatory. Please read our discussion about it.

All green in build 20 (437b9e20b2795f8bfd86f77d1d1e568a812f16c2):

  • openh264/2.4.1:
    All packages built successfully! (All logs)

  • openh264/2.3.1:
    All packages built successfully! (All logs)

  • openh264/2.1.1:
    All packages built successfully! (All logs)

@jcar87
Copy link
Contributor

jcar87 commented Aug 6, 2024

Windows and Linux are now producing the same files as before, good job!

on macOS there is slight difference -

before we have these;

macos shared
lib/libopenh264.2.4.1.dylib:
lib/libopenh264.7.dylib
lib/libopenh264.dylib

now with this PR we'd have these two:

lib/libopenh264.7.dylib
lib/libopenh264.dylib

This may be fine - an executable linked against the current available package would look for @rpath/libopenh264.7.dylib

Load command 13
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name @rpath/libopenh264.7.dylib (offset 24)
   time stamp 2 Thu Jan  1 01:00:02 1970
      current version 2.4.1
compatibility version 2.4.0

I think it should be fine, but I would double check if the files in the new package have the correct version info, otherwise it shouldn't be a problem

@jcar87 jcar87 dismissed their stale review August 6, 2024 13:42

addressed

@jcar87
Copy link
Contributor

jcar87 commented Aug 6, 2024

Update

the new files have

Load command 4
          cmd LC_ID_DYLIB
      cmdsize 56
         name @rpath/libopenh264.7.dylib (offset 24)
   time stamp 1 Thu Jan  1 01:00:01 1970
      current version 7.0.0
compatibility version 7.0.0

which is a different version scheme than before (2.4.1/ 2.4.0) - however, I can see that a package linked against the old one still works with the new one - so I think that will be good enough too merge!

@conan-center-bot conan-center-bot merged commit 17f6cdb into conan-io:master Aug 6, 2024
21 checks passed
uilianries added a commit to uilianries/conan-center-index that referenced this pull request Aug 7, 2024
* Use meson to build openh264

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Do not support Android

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Disable tests

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Honor windows lib names

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Remove extra libraries

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Remove extra libraries

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Add nasm as tool requirement

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* use nasm only when building x86

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* use nasm only when building x86

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Disable Macos for 2.1.1

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Build on Windows

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Honor windows lib names

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Trigger CI

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Rename library

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Remove pdb for any version

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Fix apple rpath

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Fix static linkage for Android

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Preserve .dll names

Signed-off-by: Uilian Ries <uilianries@gmail.com>

* Fix preserve condition

Signed-off-by: Uilian Ries <uilianries@gmail.com>

---------

Signed-off-by: Uilian Ries <uilianries@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[package] openh264/2.3.1: Failed to build for Android
5 participants