diff options
Diffstat (limited to 'poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-support-link-against-libatomic-if-no-built-in-atomic.patch')
-rw-r--r-- | poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-support-link-against-libatomic-if-no-built-in-atomic.patch | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-support-link-against-libatomic-if-no-built-in-atomic.patch b/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-support-link-against-libatomic-if-no-built-in-atomic.patch deleted file mode 100644 index 6c0fb6086..000000000 --- a/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-support-link-against-libatomic-if-no-built-in-atomic.patch +++ /dev/null @@ -1,117 +0,0 @@ -From e20a5d13935a41a856e8f71c49f2cc9d81b1d92c Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Fri, 13 Nov 2020 17:07:00 +0800 -Subject: [PATCH] support link against libatomic if no built-in atomic exist - -fix error: -| framework/lib/ppc/libframework.a(device.cpp.o): in function `std::__atomic_base<unsigned long long>::load(std::memory_order) const': -| /usr/include/c++/10.2.0/bits/atomic_base.h:426: undefined reference to `__atomic_load_8' - -Upstream-Status: Submitted [https://github.com/KhronosGroup/Vulkan-Samples/pull/212] - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - CMakeLists.txt | 1 + - bldsys/cmake/check_atomic.cmake | 62 +++++++++++++++++++++++++++++++++ - framework/CMakeLists.txt | 4 +++ - 3 files changed, 67 insertions(+) - create mode 100644 bldsys/cmake/check_atomic.cmake - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index e72e829..466f51d 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -42,6 +42,7 @@ endmacro(vulkan_samples_pch) - include(utils) - include(global_options) - include(sample_helper) -+include(check_atomic) - - # Add third party libraries - add_subdirectory(third_party) -diff --git a/bldsys/cmake/check_atomic.cmake b/bldsys/cmake/check_atomic.cmake -new file mode 100644 -index 0000000..6b47a7a ---- /dev/null -+++ b/bldsys/cmake/check_atomic.cmake -@@ -0,0 +1,62 @@ -+# check weither need to link atomic library explicitly -+INCLUDE(CheckCXXSourceCompiles) -+INCLUDE(CheckLibraryExists) -+ -+if(NOT DEFINED VULKAN_COMPILER_IS_GCC_COMPATIBLE) -+ if(CMAKE_COMPILER_IS_GNUCXX) -+ set(VULKAN_COMPILER_IS_GCC_COMPATIBLE ON) -+ elseif( MSVC ) -+ set(VULKAN_COMPILER_IS_GCC_COMPATIBLE OFF) -+ elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" ) -+ set(VULKAN_COMPILER_IS_GCC_COMPATIBLE ON) -+ elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel" ) -+ set(VULKAN_COMPILER_IS_GCC_COMPATIBLE ON) -+ endif() -+endif() -+ -+# Sometimes linking against libatomic is required for atomic ops, if -+# the platform doesn't support lock-free atomics. -+ -+function(check_working_cxx_atomics varname) -+ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) -+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11") -+ CHECK_CXX_SOURCE_COMPILES(" -+#include <atomic> -+std::atomic<int> x; -+std::atomic<short> y; -+std::atomic<char> z; -+int main() { -+ ++z; -+ ++y; -+ return ++x; -+} -+" ${varname}) -+ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) -+endfunction(check_working_cxx_atomics) -+ -+function(check_working_cxx_atomics64 varname) -+ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) -+ set(CMAKE_REQUIRED_FLAGS "-std=c++11 ${CMAKE_REQUIRED_FLAGS}") -+ CHECK_CXX_SOURCE_COMPILES(" -+#include <atomic> -+#include <cstdint> -+std::atomic<uint64_t> x (0); -+int main() { -+ uint64_t i = x.load(std::memory_order_relaxed); -+ (void)i; -+ return 0; -+} -+" ${varname}) -+ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) -+endfunction(check_working_cxx_atomics64) -+ -+set(NEED_LINK_ATOMIC OFF CACHE BOOL "weither need to link against atomic library") -+if(VULKAN_COMPILER_IS_GCC_COMPATIBLE) -+ # check if non-64-bit atomics work without the library. -+ check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB) -+ # check 64-bit atomics work without the library. -+ check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB) -+ if (NOT HAVE_CXX_ATOMICS_WITHOUT_LIB OR NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB) -+ set(NEED_LINK_ATOMIC ON CACHE BOOL "weither need to link to atomic library" FORCE) -+ endif() -+endif() -diff --git a/framework/CMakeLists.txt b/framework/CMakeLists.txt -index bf26786..322526e 100644 ---- a/framework/CMakeLists.txt -+++ b/framework/CMakeLists.txt -@@ -412,6 +412,10 @@ target_link_libraries(${PROJECT_NAME} - ctpl - docopt) - -+if(${NEED_LINK_ATOMIC}) -+ target_link_libraries(${PROJECT_NAME} atomic) -+endif() -+ - # Link platform specific libraries - if(ANDROID) - target_link_libraries(${PROJECT_NAME} log android native_app_glue) --- -2.17.1 - |