From aee5ef8906978314f30d3a4c02c90ecedee5a43a Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 11 Sep 2018 18:29:49 -0700 Subject: opencv: Fix build with clang Signed-off-by: Khem Raj --- ...0001-Check-for-clang-before-using-isystem.patch | 32 ++++++++++++++++++++++ .../opencv/opencv/0001-Dont-use-isystem.patch | 30 ++++++++++++++++++++ meta-oe/recipes-support/opencv/opencv_3.4.3.bb | 2 ++ 3 files changed, 64 insertions(+) create mode 100644 meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch create mode 100644 meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch diff --git a/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch b/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch new file mode 100644 index 0000000000..319071a311 --- /dev/null +++ b/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch @@ -0,0 +1,32 @@ +From fa76d8646bb2b9b514728eeef41afed7c43a36f2 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 11 Sep 2018 18:18:33 -0700 +Subject: [PATCH] Check for clang before using -isystem + +When cross compiling with clang, the internal C++ headers are not found +when adding sysroot to -isystem, that is redundant anyway because it +will look for headers insider --sysroot path with same quality as it +would do with -isystem otherwise + +Upstream-Status: Submitted [https://github.com/opencv/opencv/pull/12504] +Signed-off-by: Khem Raj +--- + cmake/OpenCVUtils.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake +index fae91c165f..60c20192dc 100644 +--- a/cmake/OpenCVUtils.cmake ++++ b/cmake/OpenCVUtils.cmake +@@ -259,7 +259,7 @@ function(ocv_include_directories) + ocv_is_opencv_directory(__is_opencv_dir "${dir}") + if(__is_opencv_dir) + list(APPEND __add_before "${dir}") +- elseif(CV_GCC AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0" AND ++ elseif(((CV_GCC AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0") OR CV_CLANG) AND + dir MATCHES "/usr/include$") + # workaround for GCC 6.x bug + else() +-- +2.18.0 + diff --git a/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch b/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch new file mode 100644 index 0000000000..bf0b80a30b --- /dev/null +++ b/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch @@ -0,0 +1,30 @@ +From 7144c44ec70dee73a628463b99ffeed74b1a8ef6 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 11 Sep 2018 00:21:18 -0700 +Subject: [PATCH] Dont use isystem + +clang really does not like it + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +--- + cmake/OpenCVPCHSupport.cmake | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake +index f9b1b48b65..fe27a136f5 100644 +--- a/cmake/OpenCVPCHSupport.cmake ++++ b/cmake/OpenCVPCHSupport.cmake +@@ -18,6 +18,8 @@ IF(CV_GCC) + SET(PCHSupport_FOUND TRUE) + ENDIF() + ++ SET(CMAKE_INCLUDE_SYSTEM_FLAG_C "-I") ++ SET(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-I") + SET(_PCH_include_prefix "-I") + SET(_PCH_isystem_prefix "-isystem") + SET(_PCH_define_prefix "-D") +-- +2.18.0 + diff --git a/meta-oe/recipes-support/opencv/opencv_3.4.3.bb b/meta-oe/recipes-support/opencv/opencv_3.4.3.bb index 403146e7cd..0a99700b4a 100644 --- a/meta-oe/recipes-support/opencv/opencv_3.4.3.bb +++ b/meta-oe/recipes-support/opencv/opencv_3.4.3.bb @@ -51,6 +51,8 @@ SRC_URI = "git://github.com/opencv/opencv.git;name=opencv \ file://0003-To-fix-errors-as-following.patch \ file://fixpkgconfig.patch \ file://0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch \ + file://0001-Dont-use-isystem.patch \ + file://0001-Check-for-clang-before-using-isystem.patch \ " PV = "3.4.3+git${SRCPV}" -- cgit 1.2.3-korg