aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorfuzzard <fuzzard@kodi.tv>2024-05-12 17:42:09 +1000
committerfuzzard <fuzzard@kodi.tv>2024-06-22 13:17:14 +1000
commit15cd71aff10b3949100b2fad7286de61b99b6487 (patch)
treeb7cced29aa173fb457535d2d866757c0ff138a33 /cmake
parent7ba52133d5b73b9a360e81c68cc349e5f86e4664 (diff)
[cmake][modules] FindAtomic update to target usage
Diffstat (limited to 'cmake')
-rw-r--r--cmake/modules/FindAtomic.cmake75
1 files changed, 33 insertions, 42 deletions
diff --git a/cmake/modules/FindAtomic.cmake b/cmake/modules/FindAtomic.cmake
index 8ea3c815d7..91e0b39c13 100644
--- a/cmake/modules/FindAtomic.cmake
+++ b/cmake/modules/FindAtomic.cmake
@@ -3,54 +3,45 @@
# -----
# Finds the ATOMIC library
#
-# This will define the following variables::
+# This will define the following target:
#
-# ATOMIC_FOUND - system has ATOMIC
-# ATOMIC_LIBRARIES - the ATOMIC libraries
-#
-# and the following imported targets::
-#
-# ATOMIC::ATOMIC - The ATOMIC library
-
+# ${APP_NAME_LC}::ATOMIC - The ATOMIC library
-include(CheckCXXSourceCompiles)
+if(NOT TARGET ${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME})
+ include(CheckCXXSourceCompiles)
+ include(FindPackageMessage)
-set(atomic_code
- "
- #include <atomic>
- #include <cstdint>
- std::atomic<uint8_t> n8 (0); // riscv64
- std::atomic<uint64_t> n64 (0); // armel, mipsel, powerpc
- int main() {
- ++n8;
- ++n64;
- return 0;
- }")
+ set(atomic_code
+ "
+ #include <atomic>
+ #include <cstdint>
+ std::atomic<uint8_t> n8 (0); // riscv64
+ std::atomic<uint64_t> n64 (0); // armel, mipsel, powerpc
+ int main() {
+ ++n8;
+ ++n64;
+ return 0;
+ }")
-check_cxx_source_compiles("${atomic_code}" ATOMIC_LOCK_FREE_INSTRUCTIONS)
+ check_cxx_source_compiles("${atomic_code}" ATOMIC_LOCK_FREE_INSTRUCTIONS)
-if(ATOMIC_LOCK_FREE_INSTRUCTIONS)
- set(ATOMIC_FOUND TRUE)
- set(ATOMIC_LIBRARIES)
-else()
- set(CMAKE_REQUIRED_LIBRARIES "-latomic")
- check_cxx_source_compiles("${atomic_code}" ATOMIC_IN_LIBRARY)
- set(CMAKE_REQUIRED_LIBRARIES)
- if(ATOMIC_IN_LIBRARY)
- set(ATOMIC_LIBRARY atomic)
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(Atomic DEFAULT_MSG ATOMIC_LIBRARY)
- set(ATOMIC_LIBRARIES ${ATOMIC_LIBRARY})
- if(NOT TARGET ATOMIC::ATOMIC)
- add_library(ATOMIC::ATOMIC UNKNOWN IMPORTED)
- set_target_properties(ATOMIC::ATOMIC PROPERTIES
- IMPORTED_LOCATION "${ATOMIC_LIBRARY}")
- endif()
- unset(ATOMIC_LIBRARY)
+ if(ATOMIC_LOCK_FREE_INSTRUCTIONS)
+ find_package_message(Atomic "Found Atomic: Lock Free" "")
else()
- if(Atomic_FIND_REQUIRED)
- message(FATAL_ERROR "Neither lock free instructions nor -latomic found.")
+ set(CMAKE_REQUIRED_LIBRARIES "-latomic")
+ check_cxx_source_compiles("${atomic_code}" ATOMIC_IN_LIBRARY)
+ set(CMAKE_REQUIRED_LIBRARIES)
+ if(ATOMIC_IN_LIBRARY)
+ find_package_message(Atomic "Found Atomic library: -latomic" "")
+
+ add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} UNKNOWN IMPORTED)
+ set_target_properties(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} PROPERTIES
+ IMPORTED_LOCATION "-latomic")
+ else()
+ if(Atomic_FIND_REQUIRED)
+ message(FATAL_ERROR "Neither lock free instructions nor -latomic found.")
+ endif()
endif()
endif()
+ unset(atomic_code)
endif()
-unset(atomic_code)