Unverified Commit 7313254a authored by Dominik Charousset's avatar Dominik Charousset Committed by GitHub

Merge branch 'master' into issue/1157

parents 20d53a7a a0808914
...@@ -35,6 +35,10 @@ is based on [Keep a Changelog](https://keepachangelog.com). ...@@ -35,6 +35,10 @@ is based on [Keep a Changelog](https://keepachangelog.com).
case or do unexpected things in the latter case. The stringification inspector case or do unexpected things in the latter case. The stringification inspector
now matches precisely on pointer types to stop the compiler from doing now matches precisely on pointer types to stop the compiler from doing
implicit conversions in the first place. implicit conversions in the first place.
- Building executables that link to CAF on 32-bit Linux versions using GCC
failed due to undefined references to `__atomic_fetch` symbols. Adding a CMake
dependency for `caf_core` to libatomic gets executables to compile and link as
expected (#1153).
- Fixed a regression for remote groups introduced in 0.18.0-rc.1 (#1157). - Fixed a regression for remote groups introduced in 0.18.0-rc.1 (#1157).
## [0.18.0-rc.1] - 2020-09-09 ## [0.18.0-rc.1] - 2020-09-09
......
...@@ -5,6 +5,7 @@ project(CAF CXX) ...@@ -5,6 +5,7 @@ project(CAF CXX)
include(CMakeDependentOption) # Conditional default values include(CMakeDependentOption) # Conditional default values
include(CMakePackageConfigHelpers) # For creating .cmake files include(CMakePackageConfigHelpers) # For creating .cmake files
include(CheckCXXSourceCompiles) # For checking whether some C++ features work
include(GNUInstallDirs) # Sets default install paths include(GNUInstallDirs) # Sets default install paths
include(GenerateExportHeader) # Auto-generates dllexport macros include(GenerateExportHeader) # Auto-generates dllexport macros
......
...@@ -198,6 +198,25 @@ caf_export_and_install_lib(core) ...@@ -198,6 +198,25 @@ caf_export_and_install_lib(core)
install(FILES "${CMAKE_BINARY_DIR}/caf/detail/build_config.hpp" install(FILES "${CMAKE_BINARY_DIR}/caf/detail/build_config.hpp"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/caf/detail") DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/caf/detail")
# Check whether we need to link against libatomic.
if(NOT CMAKE_CROSSCOMPILING)
set(snippet "#include <cstdint>
#include <atomic>
std::atomic<uint64_t> x;
int main(int, char**) { return static_cast<int>(x.load()); }")
check_cxx_source_compiles("${snippet}" has_64bit_atomic)
if(NOT has_64bit_atomic)
set(required_libs_backup "${CMAKE_REQUIRED_LIBRARIES}")
list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
check_cxx_source_compiles("${snippet}" has_64bit_atomic_with_libatomic)
set(CMAKE_REQUIRED_LIBRARIES "${required_libs_backup}")
if(NOT has_64bit_atomic_with_libatomic)
message(FATAL_ERROR "Unable to compile code with std::atomic<uint64_t>")
endif()
target_link_libraries(libcaf_core INTERFACE atomic)
endif()
endif()
# -- build unit tests ---------------------------------------------------------- # -- build unit tests ----------------------------------------------------------
if(NOT CAF_ENABLE_TESTING) if(NOT CAF_ENABLE_TESTING)
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <cstddef> #include <cstddef>
#include <cstring> #include <cstring>
#include <limits>
#include <memory> #include <memory>
#include "caf/allowed_unsafe_message_type.hpp" #include "caf/allowed_unsafe_message_type.hpp"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment