[libcamera-devel] [PATCH 2/2] android: Fix file system library usage on gcc 7 and 8
Jacopo Mondi
jacopo at jmondi.org
Wed May 26 09:58:38 CEST 2021
Hi Laurent,
On Wed, May 26, 2021 at 03:08:55AM +0300, Laurent Pinchart wrote:
> On gcc versions older than 9, the file system library, used by the
> Android camera HAL configuration file parser, is implemented in a
> separate static library. Furthermore, on gcc 7, it's provided in the
> std::experimental namespace. This breaks compilation of the HAL on gcc
> 7, and linking on gcc 8.
>
> Fix the compilation issue by conditionally including
> <experimental/filesystem> and creating a namespace alias in std, and the
> link issue by linking to libstdc++fs on gcc versions older than 9.
>
> The inclusion of <experimental/filesystem> is a bit of a hack, and when
> we'll start using the file system library in another compilation unit,
> we should then move all this to an internal helper to abstract the
> compiler version.
Unfortunate, but there are not many ways around it
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Thanks
j
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> meson.build | 8 ++++++++
> src/android/camera_hal_config.cpp | 7 +++++++
> 2 files changed, 15 insertions(+)
>
> diff --git a/meson.build b/meson.build
> index 6626fa7ed154..2e7dffb70acc 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -76,6 +76,14 @@ if cc.get_id() == 'gcc'
> error('gcc version is too old, libcamera requires 7.0 or newer')
> endif
>
> + # On gcc 7 and 8, the file system library is provided in a separate static
> + # library.
> + if cc.version().version_compare('<9')
> + cpp_arguments += [
> + '-lstdc++fs',
> + ]
> + endif
> +
> # gcc 7.1 introduced processor-specific ABI breakages related to parameter
> # passing on ARM platforms. This generates a large number of messages
> # during compilation with gcc >=7.1. Silence them.
> diff --git a/src/android/camera_hal_config.cpp b/src/android/camera_hal_config.cpp
> index d15df2e30c2c..f33ba26935da 100644
> --- a/src/android/camera_hal_config.cpp
> +++ b/src/android/camera_hal_config.cpp
> @@ -6,7 +6,14 @@
> */
> #include "camera_hal_config.h"
>
> +#if defined(_GLIBCXX_RELEASE) && _GLIBCXX_RELEASE < 8
> +#include <experimental/filesystem>
> +namespace std {
> +namespace filesystem = std::experimental::filesystem;
> +}
> +#else
> #include <filesystem>
> +#endif
> #include <stdio.h>
> #include <stdlib.h>
> #include <string>
> --
> Regards,
>
> Laurent Pinchart
>
More information about the libcamera-devel
mailing list