android: Fix file system library usage on gcc 7 and 8
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. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
bdee8833e2
commit
9fd172f496
2 changed files with 15 additions and 0 deletions
|
@ -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.
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue