Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/CI.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:
- os: ubuntu-latest
BUILD_TYPE: cmake
DRAFT: enabled
PACKAGES: cmake clang-format-11
PACKAGES: cmake clang-format-18
DO_CLANG_FORMAT_CHECK: 1
- os: ubuntu-latest
BUILD_TYPE: default
Expand Down Expand Up @@ -223,7 +223,7 @@ jobs:
CLANG_TIDY: clang-tidy
steps:
- name: Add debian packages
run: apt-get install --yes clang-tidy clang-tools
run: sudo apt-get install --yes clang-tidy clang-tools
- name: build
shell: bash
working-directory: libzmq
Expand Down
12 changes: 9 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# CMake build script for ZeroMQ

if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL Darwin)
cmake_minimum_required(VERSION 3.0.2)
cmake_minimum_required(VERSION 3.0.2...3.31)
else()
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 2.8.12...3.31)
endif()

project(ZeroMQ)
Expand Down Expand Up @@ -1756,7 +1756,7 @@ if(WITH_DOC)
endif()
endif()

if(WIN32)
if(WIN32 AND NOT MINGW)
set(ZEROMQ_CMAKECONFIG_INSTALL_DIR
"CMake"
CACHE STRING "install path for ZeroMQConfig.cmake")
Expand Down Expand Up @@ -1915,3 +1915,9 @@ if(ENABLE_NO_EXPORT)
message(STATUS "Building with empty ZMQ_EXPORT macro")
add_definitions(-DZMQ_NO_EXPORT)
endif()

if (ENABLE_CURVE)
add_executable(curve_keygen tools/curve_keygen.cpp)
target_link_libraries(curve_keygen libzmq)
install(TARGETS curve_keygen RUNTIME DESTINATION bin)
endif()
7 changes: 5 additions & 2 deletions builds/android/android_build_helper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -355,8 +355,11 @@ function android_build_opts {

_android_build_opts_process_binaries

# Since NDK r23 we don't need -lgcc due to LLVM being now the default
if [ ! -x "${TOOLCHAIN_PATH}/${TOOLCHAIN_HOST}-ar" ]; then
if [ ${NDK_NUMBER} -ge 2700 ] ; then
# Since NDK r27 symbols like '__aeabi_xxx' are no more exported in the dynamic lib.
export ANDROID_BUILD_LIBS="-lc -ldl -lm -llog -static-libstdc++"
elif [ ${NDK_NUMBER} -ge 2300 ] ; then
# Since NDK r23 we don't need -lgcc due to LLVM being now the default.
export ANDROID_BUILD_LIBS="-lc -ldl -lm -llog -lc++_shared"
else
export ANDROID_BUILD_LIBS="-lc -lgcc -ldl -lm -llog -lc++_shared"
Expand Down
4 changes: 2 additions & 2 deletions builds/cmake/NSIS.template32.in
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ Var AR_RegFlags
"exit_${SecName}:"
!macroend

!macro RemoveSection SecName
!macro RemoveSection_CPack SecName
; This macro is used to call section's Remove_... macro
;from the uninstaller.
;Input: section index constant name specified in Section command.
Expand Down Expand Up @@ -843,7 +843,7 @@ Section "Uninstall"
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"

; Removes all optional components
!insertmacro SectionList "RemoveSection"
!insertmacro SectionList "RemoveSection_CPack"

!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP

Expand Down
4 changes: 2 additions & 2 deletions builds/cmake/NSIS.template64.in
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ Var AR_RegFlags
"exit_${SecName}:"
!macroend

!macro RemoveSection SecName
!macro RemoveSection_CPack SecName
; This macro is used to call section's Remove_... macro
;from the uninstaller.
;Input: section index constant name specified in Section command.
Expand Down Expand Up @@ -846,7 +846,7 @@ Section "Uninstall"
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"

; Removes all optional components
!insertmacro SectionList "RemoveSection"
!insertmacro SectionList "RemoveSection_CPack"

!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP

Expand Down
1 change: 1 addition & 0 deletions builds/cmake/ci_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ mkdir build_cmake
cd build_cmake
if [ "$DO_CLANG_FORMAT_CHECK" = "1" ] ; then
if ! ( PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig cmake "${CMAKE_OPTS[@]}" .. && make clang-format-check) ; then
echo "clang-format version is: $(clang-format --version)"
make clang-format-diff
exit 1
fi
Expand Down
10 changes: 5 additions & 5 deletions include/zmq.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#define ZMQ_VERSION_PATCH 6

#define ZMQ_MAKE_VERSION(major, minor, patch) \
((major) *10000 + (minor) *100 + (patch))
((major) * 10000 + (minor) * 100 + (patch))
#define ZMQ_VERSION \
ZMQ_MAKE_VERSION (ZMQ_VERSION_MAJOR, ZMQ_VERSION_MINOR, ZMQ_VERSION_PATCH)

Expand All @@ -39,9 +39,9 @@ extern "C" {
#if defined ZMQ_STATIC
#define ZMQ_EXPORT
#elif defined DLL_EXPORT
#define ZMQ_EXPORT __declspec(dllexport)
#define ZMQ_EXPORT __declspec (dllexport)
#else
#define ZMQ_EXPORT __declspec(dllimport)
#define ZMQ_EXPORT __declspec (dllimport)
#endif
#else
#if defined __SUNPRO_C || defined __SUNPRO_CC
Expand Down Expand Up @@ -218,10 +218,10 @@ ZMQ_EXPORT int zmq_ctx_destroy (void *context_);
typedef struct zmq_msg_t
{
#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
__declspec(align (8)) unsigned char _[64];
__declspec (align (8)) unsigned char _[64];
#elif defined(_MSC_VER) \
&& (defined(_M_IX86) || defined(_M_ARM_ARMV7VE) || defined(_M_ARM))
__declspec(align (4)) unsigned char _[64];
__declspec (align (4)) unsigned char _[64];
#elif defined(__GNUC__) || defined(__INTEL_COMPILER) \
|| (defined(__SUNPRO_C) && __SUNPRO_C >= 0x590) \
|| (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x590)
Expand Down
6 changes: 3 additions & 3 deletions m4/ax_code_coverage.m4
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ AC_DEFUN([AX_CODE_COVERAGE],[
dnl Build the code coverage flags
dnl Define CODE_COVERAGE_LDFLAGS for backwards compatibility
CODE_COVERAGE_CPPFLAGS="-DNDEBUG"
CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -fprofile-update=atomic -ftest-coverage"
CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -fprofile-update=atomic -ftest-coverage"
CODE_COVERAGE_LIBS="-lgcov"
CODE_COVERAGE_LDFLAGS="$CODE_COVERAGE_LIBS"

Expand All @@ -142,7 +142,7 @@ AC_DEFUN([AX_CODE_COVERAGE],[
']
[CODE_COVERAGE_RULES_CAPTURE='
$(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS)
$(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS)
$(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --ignore-errors unused --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS)
-@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
$(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
@echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
Expand Down
69 changes: 33 additions & 36 deletions src/atomic_counter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ namespace zmq
// mutexes).

#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
class __declspec(align (8)) atomic_counter_t
class __declspec (align (8)) atomic_counter_t
#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_ARM_ARMV7VE))
class __declspec(align (4)) atomic_counter_t
class __declspec (align (4)) atomic_counter_t
#else
class atomic_counter_t
#endif
Expand Down Expand Up @@ -86,23 +86,23 @@ class atomic_counter_t
#elif defined ZMQ_ATOMIC_COUNTER_TILE
old_value = arch_atomic_add (&_value, increment_);
#elif defined ZMQ_ATOMIC_COUNTER_X86
__asm__ volatile("lock; xadd %0, %1 \n\t"
: "=r"(old_value), "=m"(_value)
: "0"(increment_), "m"(_value)
: "cc", "memory");
__asm__ volatile ("lock; xadd %0, %1 \n\t"
: "=r"(old_value), "=m"(_value)
: "0"(increment_), "m"(_value)
: "cc", "memory");
#elif defined ZMQ_ATOMIC_COUNTER_ARM
integer_t flag, tmp;
__asm__ volatile(" dmb sy\n\t"
"1: ldrex %0, [%5]\n\t"
" add %2, %0, %4\n\t"
" strex %1, %2, [%5]\n\t"
" teq %1, #0\n\t"
" bne 1b\n\t"
" dmb sy\n\t"
: "=&r"(old_value), "=&r"(flag), "=&r"(tmp),
"+Qo"(_value)
: "Ir"(increment_), "r"(&_value)
: "cc");
__asm__ volatile (" dmb sy\n\t"
"1: ldrex %0, [%5]\n\t"
" add %2, %0, %4\n\t"
" strex %1, %2, [%5]\n\t"
" teq %1, #0\n\t"
" bne 1b\n\t"
" dmb sy\n\t"
: "=&r"(old_value), "=&r"(flag), "=&r"(tmp),
"+Qo"(_value)
: "Ir"(increment_), "r"(&_value)
: "cc");
#elif defined ZMQ_ATOMIC_COUNTER_MUTEX
sync.lock ();
old_value = _value;
Expand Down Expand Up @@ -140,24 +140,24 @@ class atomic_counter_t
#elif defined ZMQ_ATOMIC_COUNTER_X86
integer_t oldval = -decrement_;
volatile integer_t *val = &_value;
__asm__ volatile("lock; xaddl %0,%1"
: "=r"(oldval), "=m"(*val)
: "0"(oldval), "m"(*val)
: "cc", "memory");
__asm__ volatile ("lock; xaddl %0,%1"
: "=r"(oldval), "=m"(*val)
: "0"(oldval), "m"(*val)
: "cc", "memory");
return oldval != decrement_;
#elif defined ZMQ_ATOMIC_COUNTER_ARM
integer_t old_value, flag, tmp;
__asm__ volatile(" dmb sy\n\t"
"1: ldrex %0, [%5]\n\t"
" sub %2, %0, %4\n\t"
" strex %1, %2, [%5]\n\t"
" teq %1, #0\n\t"
" bne 1b\n\t"
" dmb sy\n\t"
: "=&r"(old_value), "=&r"(flag), "=&r"(tmp),
"+Qo"(_value)
: "Ir"(decrement_), "r"(&_value)
: "cc");
__asm__ volatile (" dmb sy\n\t"
"1: ldrex %0, [%5]\n\t"
" sub %2, %0, %4\n\t"
" strex %1, %2, [%5]\n\t"
" teq %1, #0\n\t"
" bne 1b\n\t"
" dmb sy\n\t"
: "=&r"(old_value), "=&r"(flag), "=&r"(tmp),
"+Qo"(_value)
: "Ir"(decrement_), "r"(&_value)
: "cc");
return old_value - decrement_ != 0;
#elif defined ZMQ_ATOMIC_COUNTER_MUTEX
sync.lock ();
Expand All @@ -170,10 +170,7 @@ class atomic_counter_t
#endif
}

integer_t get () const ZMQ_NOEXCEPT
{
return _value;
}
integer_t get () const ZMQ_NOEXCEPT { return _value; }

private:
#if defined ZMQ_ATOMIC_COUNTER_CXX11
Expand Down
56 changes: 28 additions & 28 deletions src/atomic_ptr.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,22 +60,22 @@ inline void *atomic_xchg_ptr (void **ptr_,
return arch_atomic_exchange (ptr_, val_);
#elif defined ZMQ_ATOMIC_PTR_X86
void *old;
__asm__ volatile("lock; xchg %0, %2"
: "=r"(old), "=m"(*ptr_)
: "m"(*ptr_), "0"(val_));
__asm__ volatile ("lock; xchg %0, %2"
: "=r"(old), "=m"(*ptr_)
: "m"(*ptr_), "0"(val_));
return old;
#elif defined ZMQ_ATOMIC_PTR_ARM
void *old;
unsigned int flag;
__asm__ volatile(" dmb sy\n\t"
"1: ldrex %1, [%3]\n\t"
" strex %0, %4, [%3]\n\t"
" teq %0, #0\n\t"
" bne 1b\n\t"
" dmb sy\n\t"
: "=&r"(flag), "=&r"(old), "+Qo"(*ptr_)
: "r"(ptr_), "r"(val_)
: "cc");
__asm__ volatile (" dmb sy\n\t"
"1: ldrex %1, [%3]\n\t"
" strex %0, %4, [%3]\n\t"
" teq %0, #0\n\t"
" bne 1b\n\t"
" dmb sy\n\t"
: "=&r"(flag), "=&r"(old), "+Qo"(*ptr_)
: "r"(ptr_), "r"(val_)
: "cc");
return old;
#elif defined ZMQ_ATOMIC_PTR_MUTEX
_sync.lock ();
Expand Down Expand Up @@ -111,26 +111,26 @@ inline void *atomic_cas (void *volatile *ptr_,
return arch_atomic_val_compare_and_exchange (ptr_, cmp_, val_);
#elif defined ZMQ_ATOMIC_PTR_X86
void *old;
__asm__ volatile("lock; cmpxchg %2, %3"
: "=a"(old), "=m"(*ptr_)
: "r"(val_), "m"(*ptr_), "0"(cmp_)
: "cc");
__asm__ volatile ("lock; cmpxchg %2, %3"
: "=a"(old), "=m"(*ptr_)
: "r"(val_), "m"(*ptr_), "0"(cmp_)
: "cc");
return old;
#elif defined ZMQ_ATOMIC_PTR_ARM
void *old;
unsigned int flag;
__asm__ volatile(" dmb sy\n\t"
"1: ldrex %1, [%3]\n\t"
" mov %0, #0\n\t"
" teq %1, %4\n\t"
" it eq\n\t"
" strexeq %0, %5, [%3]\n\t"
" teq %0, #0\n\t"
" bne 1b\n\t"
" dmb sy\n\t"
: "=&r"(flag), "=&r"(old), "+Qo"(*ptr_)
: "r"(ptr_), "r"(cmp_), "r"(val_)
: "cc");
__asm__ volatile (" dmb sy\n\t"
"1: ldrex %1, [%3]\n\t"
" mov %0, #0\n\t"
" teq %1, %4\n\t"
" it eq\n\t"
" strexeq %0, %5, [%3]\n\t"
" teq %0, #0\n\t"
" bne 1b\n\t"
" dmb sy\n\t"
: "=&r"(flag), "=&r"(old), "+Qo"(*ptr_)
: "r"(ptr_), "r"(cmp_), "r"(val_)
: "cc");
return old;
#elif defined ZMQ_ATOMIC_PTR_MUTEX
_sync.lock ();
Expand Down
7 changes: 2 additions & 5 deletions src/blob.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ struct blob_t
unsigned char *data () { return _data; }

// Defines an order relationship on blob_t.
bool operator<(blob_t const &other_) const
bool operator< (blob_t const &other_) const
{
const int cmpres =
memcmp (_data, other_._data, std::min (_size, other_._size));
Expand Down Expand Up @@ -161,10 +161,7 @@ struct blob_t
return *this;
}
#else
blob_t (const blob_t &other) : _owned (false)
{
set_deep_copy (other);
}
blob_t (const blob_t &other) : _owned (false) { set_deep_copy (other); }
blob_t &operator= (const blob_t &other)
{
if (this != &other) {
Expand Down
8 changes: 4 additions & 4 deletions src/clock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,11 +225,11 @@ uint64_t zmq::clock_t::rdtsc ()
return _ReadStatusReg (pmccntr_el0);
#elif (defined(_WIN32) && defined(__GNUC__) && defined(__aarch64__))
uint64_t val;
__asm__ volatile("mrs %0, pmccntr_el0" : "=r"(val));
__asm__ volatile ("mrs %0, pmccntr_el0" : "=r"(val));
return val;
#elif (defined __GNUC__ && (defined __i386__ || defined __x86_64__))
uint32_t low, high;
__asm__ volatile("rdtsc" : "=a"(low), "=d"(high));
__asm__ volatile ("rdtsc" : "=a"(low), "=d"(high));
return static_cast<uint64_t> (high) << 32 | low;
#elif (defined __SUNPRO_CC && (__SUNPRO_CC >= 0x5100) \
&& (defined __i386 || defined __amd64 || defined __x86_64))
Expand All @@ -238,11 +238,11 @@ uint64_t zmq::clock_t::rdtsc ()
uint64_t u64val;
uint32_t u32val[2];
} tsc;
asm("rdtsc" : "=a"(tsc.u32val[0]), "=d"(tsc.u32val[1]));
asm ("rdtsc" : "=a"(tsc.u32val[0]), "=d"(tsc.u32val[1]));
return tsc.u64val;
#elif defined(__s390__)
uint64_t tsc;
asm("\tstck\t%0\n" : "=Q"(tsc) : : "cc");
asm ("\tstck\t%0\n" : "=Q"(tsc) : : "cc");
return tsc;
#else
struct timespec ts;
Expand Down
2 changes: 1 addition & 1 deletion src/err.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void zmq_abort (const char *errmsg_) __attribute__ ((analyzer_noreturn));
void zmq_abort (const char *errmsg_);
#endif
#elif defined __MSCVER__
__declspec(noreturn) void zmq_abort (const char *errmsg_);
__declspec (noreturn) void zmq_abort (const char *errmsg_);
#else
void zmq_abort (const char *errmsg_);
#endif
Expand Down
Loading