mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-05-19 01:37:54 +00:00
libcereal: Use -idirafter instead of -isystem
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
parent
02fa3ea1af
commit
611f2921dc
@ -0,0 +1,52 @@
|
||||
From ac70933783a70d5387a2bb2849c568e33ba52558 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 21 Jan 2023 01:41:32 -0800
|
||||
Subject: [PATCH] cmake: Use -idirafter instead of -isystem
|
||||
|
||||
isystem dirs are searched before the regular system dirs
|
||||
this exposes an interesting include ordering problem when using
|
||||
clang + libc++, when including C++ headers like <cstdlib>
|
||||
|
||||
cstdlib includes stdlib.h and in case of libc++, this should be coming
|
||||
from libc++ as well, which is then eventually including system stdlib.h
|
||||
|
||||
libc++ has added a check for checking this order recently, which means
|
||||
if cstlib ends up including system stdlib.h before libc++ provided
|
||||
stdlib.h it errors out
|
||||
|
||||
| /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/libcereal/1.3.2+gitAUTOINC+ebef1e9298-r0/recipe-sysroot/usr/include/c++/v1/cwchar:113:5: error: <cwchar> tried including <wchar.h> but didn't find libc++'s <wcha
|
||||
r.h> header. This usually means that your header search paths are not configured properly. The header search paths should contain the C++ Standard Library headers before any C Standard
|
||||
Library, and you are probably using compiler flags that make that not be the case. | # error <cwchar> tried including <wchar.h> but didn't find libc++'s <wchar.h> header. \
|
||||
| ^
|
||||
|
||||
The reason is that include_directories with SYSTEM property adds the
|
||||
directory via -system and some of these directories point to sysroot
|
||||
e.g. OPENSSL_INCLUDE_DIR which ends up adding -isystem
|
||||
<sysroot>/usr/include and causes the system stdlib.h to included before
|
||||
libc++ stdlib.h
|
||||
|
||||
A fix is to use -idirafter which preserved the effects of system headers
|
||||
but instead of prepending, it will append to system headers and the
|
||||
issue is addressed
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/USCiLab/cereal/pull/777]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
unittests/boost/CMakeLists.txt | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/unittests/boost/CMakeLists.txt b/unittests/boost/CMakeLists.txt
|
||||
index 1d733bc7..08e6a169 100644
|
||||
--- a/unittests/boost/CMakeLists.txt
|
||||
+++ b/unittests/boost/CMakeLists.txt
|
||||
@@ -1,6 +1,6 @@
|
||||
file(GLOB TESTS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp)
|
||||
|
||||
-include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
|
||||
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -idirafter ${Boost_INCLUDE_DIRS}")
|
||||
|
||||
# Build all of the non-special tests
|
||||
foreach(TEST_SOURCE ${TESTS})
|
||||
--
|
||||
2.39.1
|
||||
|
||||
@ -20,6 +20,7 @@ PV .= "+git${SRCPV}"
|
||||
SRCREV = "ebef1e929807629befafbb2918ea1a08c7194554"
|
||||
SRC_URI = "git://github.com/USCiLab/cereal.git;branch=master;protocol=https \
|
||||
file://0001-sandbox-Do-not-use-int8_t-in-std-uniform_int_distrib.patch \
|
||||
file://0001-cmake-Use-idirafter-instead-of-isystem.patch \
|
||||
file://run-ptest \
|
||||
"
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user