From c3892ba502f140e41ab93e3a52e0aed8afd277e1 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Wed, 26 Nov 2025 07:41:25 +0300 Subject: [PATCH 01/12] Travis CI: Update autotools for release tarball (am-1.18.1, m4-1.4.20) --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3012488a..a9c0849c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -515,9 +515,9 @@ jobs: - env: - MAKEFILE_TARGET=distcheck - AUTOCONF_VER=2.72 - - AUTOMAKE_VER=1.17 + - AUTOMAKE_VER=1.18.1 - LIBTOOL_VER=2.5.4 - - M4_VER=1.4.19 + - M4_VER=1.4.20 - if: type != pull_request addons: coverity_scan: From 221f791808e945fdf86a6f6bdfd342260758d778 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 13:57:27 +0300 Subject: [PATCH 02/12] Build tests by default in CMake script * CMakeLists.txt (build_tests): Change default value to ON. * README_details.txt (USAGE): Do not pass `-Dbuild_tests=ON` to cmake. --- CMakeLists.txt | 2 +- README_details.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c7cec0e..40f720ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,7 +50,7 @@ endif() # Customize the build by passing "-D=ON|OFF" in the command line. option(BUILD_SHARED_LIBS "Build shared libraries" OFF) -option(build_tests "Build tests" OFF) +option(build_tests "Build tests" ON) option(enable_assertions "Enable assertion checking" OFF) option(enable_werror "Treat warnings as errors" OFF) option(enable_atomic_intrinsics "Use GCC atomic intrinsics" ON) diff --git a/README_details.txt b/README_details.txt index 83b7c280..9ec2fb4b 100644 --- a/README_details.txt +++ b/README_details.txt @@ -14,7 +14,7 @@ Alternatively, the libraries could be built with CMake, even for Windows, like this: > mkdir out > cd out -> cmake -Dbuild_tests=ON .. +> cmake .. > cmake --build . --config Release > ctest --build-config Release From a441221d9edf83d9dbf7fcaa7ced8c69f25ed4b4 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 13:58:41 +0300 Subject: [PATCH 03/12] AppVeyor CI: Update after changing CMake script to build tests by default --- .appveyor.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index c39c30fe..d76d61d7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -10,18 +10,18 @@ environment: TEST_TARGET: check matrix: - TARGET: cmake - CMAKE_OPTIONS: -DBUILD_SHARED_LIBS=ON -Dbuild_tests=ON -Werror=deprecated + CMAKE_OPTIONS: -DBUILD_SHARED_LIBS=ON -Werror=deprecated - TARGET: cmake CFLAGS_EXTRA: -DAO_CMPXCHG16B_AVAILABLE - CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_assertions=ON -Dinstall_headers=OFF + CMAKE_OPTIONS: -Denable_assertions=ON -Dinstall_headers=OFF - TARGET: cmake CMAKE_CONFIG: Release - CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Release -Dbuild_tests=ON -Denable_gpl=OFF + CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Release -Denable_gpl=OFF - TARGET: cmake - CMAKE_OPTIONS: -A Win32 -Dbuild_tests=ON -Denable_assertions=ON -Denable_docs=OFF + CMAKE_OPTIONS: -A Win32 -Denable_assertions=ON -Denable_docs=OFF - TARGET: cmake CMAKE_CONFIG: Release - CMAKE_OPTIONS: -A ARM64 -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=ON + CMAKE_OPTIONS: -A ARM64 -Dbuild_tests=OFF -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=ON - TARGET: nmake ARCH: x86 CFLAGS_EXTRA: /J From 6f88acdfab2b962c875b284725897aa3f7ad2d24 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 14:01:50 +0300 Subject: [PATCH 04/12] Travis CI: Update after changing CMake script to build tests by default --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a9c0849c..15fa1177 100644 --- a/.travis.yml +++ b/.travis.yml @@ -603,7 +603,7 @@ script: LDFLAGS="$LDFLAGS"; fi - if [[ "$CMAKE_OPTIONS" != "" ]]; then - cmake $CMAKE_OPTIONS -Dbuild_tests=ON -Denable_werror=ON -Werror=dev . && + cmake $CMAKE_OPTIONS -Denable_werror=ON -Werror=dev . && cmake --build . $CMAKE_BUILD_OPTIONS --parallel; fi - if [[ "$CMAKE_OPTIONS" != "" ]]; then From 0372d08d7164314933feeaf0d5de43be0fe02cbd Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 14:03:01 +0300 Subject: [PATCH 05/12] GH Actions: Update after changing CMake script to build tests by default --- .github/workflows/cmake-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/cmake-build.yml b/.github/workflows/cmake-build.yml index 3d3211b4..6fb0ff61 100644 --- a/.github/workflows/cmake-build.yml +++ b/.github/workflows/cmake-build.yml @@ -86,7 +86,6 @@ jobs: ${{ matrix.cmake_generator_opt }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - -Dbuild_tests=ON -Denable_werror=ON -DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} -Denable_assertions=${{ matrix.assertions }} From dbe8f45db744433b94c11279c38bd214926fc81b Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 14:29:07 +0300 Subject: [PATCH 06/12] Replace CMake build_tests option to standard BUILD_TESTING one `BUILD_TESTING` is the "standard" on-by-default variable provided by `CTest` module. * CMakeLists.txt (build_tests): Rename option to `BUILD_TESTING`; comment out `option()` command for `BUILD_TESTING`. --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 40f720ae..487760f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,7 +50,7 @@ endif() # Customize the build by passing "-D=ON|OFF" in the command line. option(BUILD_SHARED_LIBS "Build shared libraries" OFF) -option(build_tests "Build tests" ON) +# option(BUILD_TESTING "Build tests" ON) - the standard one option(enable_assertions "Enable assertion checking" OFF) option(enable_werror "Treat warnings as errors" OFF) option(enable_atomic_intrinsics "Use GCC atomic intrinsics" ON) @@ -315,7 +315,7 @@ if (install_headers) # TODO: handle atomic_ops-uninstalled.pc.in endif(install_headers) -if (build_tests) +if (BUILD_TESTING) add_executable(test_atomic tests/test_atomic.c) target_link_libraries(test_atomic PRIVATE atomic_ops ${THREADDLLIBS_LIST}) add_test(NAME test_atomic COMMAND test_atomic) @@ -346,8 +346,8 @@ if (build_tests) target_link_libraries(test_malloc PRIVATE atomic_ops atomic_ops_gpl ${THREADDLLIBS_LIST}) add_test(NAME test_malloc COMMAND test_malloc) - endif() -endif(build_tests) + endif(enable_gpl) +endif() if (enable_docs) install(FILES AUTHORS ChangeLog LICENSE README.md From 417d6bc5b9b0781fa4f126c650daa612652467a9 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 14:32:10 +0300 Subject: [PATCH 07/12] AppVeyor CI: Update after CMake build_tests option rename to BUILD_TESTING --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index d76d61d7..c38d851d 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -21,7 +21,7 @@ environment: CMAKE_OPTIONS: -A Win32 -Denable_assertions=ON -Denable_docs=OFF - TARGET: cmake CMAKE_CONFIG: Release - CMAKE_OPTIONS: -A ARM64 -Dbuild_tests=OFF -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=ON + CMAKE_OPTIONS: -A ARM64 -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=ON - TARGET: nmake ARCH: x86 CFLAGS_EXTRA: /J From f6ea6f83bd26605f517a3d42239fda8090ac508d Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 19:56:22 +0300 Subject: [PATCH 08/12] GH Actions: Upgrade macos-13 to macos-15-intel in cmake build --- .github/workflows/cmake-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake-build.yml b/.github/workflows/cmake-build.yml index 6fb0ff61..62db0f8d 100644 --- a/.github/workflows/cmake-build.yml +++ b/.github/workflows/cmake-build.yml @@ -14,7 +14,7 @@ jobs: fail-fast: false matrix: - os: [ macos-13, macos-latest, ubuntu-24.04-arm, ubuntu-latest, windows-11-arm, windows-latest ] + os: [ macos-15-intel, macos-latest, ubuntu-24.04-arm, ubuntu-latest, windows-11-arm, windows-latest ] c_compiler: [ cl, clang, gcc ] build_type: [ Release, Debug, MinSizeRel ] shared_libs: [ off, on ] @@ -22,11 +22,11 @@ jobs: atomic_intrinsics: [ on, off ] exclude: - c_compiler: gcc - os: macos-13 + os: macos-15-intel - c_compiler: gcc os: macos-latest - c_compiler: cl - os: macos-13 + os: macos-15-intel - c_compiler: cl os: macos-latest - c_compiler: cl From a72cced78e9f6ea5e377ef5451f37a60c246e7c5 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 22:52:22 +0300 Subject: [PATCH 09/12] Rename CMake BUILD_SHARED_LIBS option to AO_BUILD_SHARED_LIBS This is to avoid usage/redefinition of `BUILD_SHARED_LIBS` standard cmake variable as the project might be included as a subdirectory. * CMakeLists.txt (BUILD_SHARED_LIBS): Rename option to `AO_BUILD_SHARED_LIBS`. * CMakeLists.txt [AO_BUILD_SHARED_LIBS] (atomic_ops): Pass `SHARED` to `add_library()`. * CMakeLists.txt [enable_gpl && AO_BUILD_SHARED_LIBS] (atomic_ops_gpl): Likewise. * CMakeLists.txt [!AO_BUILD_SHARED_LIBS] (atomic_ops): Pass `STATIC` to `add_library()`. * CMakeLists.txt [enable_gpl && !AO_BUILD_SHARED_LIBS] (atomic_ops_gpl): Likewise. --- CMakeLists.txt | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 487760f3..43b4005c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ if (NOT (${CMAKE_VERSION} VERSION_LESS "3.18.0")) endif() # Customize the build by passing "-D=ON|OFF" in the command line. -option(BUILD_SHARED_LIBS "Build shared libraries" OFF) +option(AO_BUILD_SHARED_LIBS "Build shared libraries" OFF) # option(BUILD_TESTING "Build tests" ON) - the standard one option(enable_assertions "Enable assertion checking" OFF) option(enable_werror "Treat warnings as errors" OFF) @@ -68,7 +68,7 @@ if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) endif() # Convert VER_INFO values to [SO]VERSION ones. -if (BUILD_SHARED_LIBS) +if (AO_BUILD_SHARED_LIBS) # atomic_ops: string(REGEX REPLACE "(.+):.+:.+" "\\1" ao_cur ${LIBATOMIC_OPS_VER_INFO}) string(REGEX REPLACE ".+:(.+):.+" "\\1" ao_rev ${LIBATOMIC_OPS_VER_INFO}) @@ -86,7 +86,7 @@ if (BUILD_SHARED_LIBS) math(EXPR AO_GPL_SOVERSION "${ao_gpl_cur} - ${ao_gpl_age}") set(AO_GPL_VERSION_PROP "${AO_GPL_SOVERSION}.${ao_gpl_age}.${ao_gpl_rev}") message(STATUS "AO_GPL_VERSION_PROP = ${AO_GPL_VERSION_PROP}") -endif(BUILD_SHARED_LIBS) +endif(AO_BUILD_SHARED_LIBS) # Output all warnings. if (MSVC) @@ -124,7 +124,7 @@ if (NOT enable_atomic_intrinsics) endif() # AO API symbols export control. -if (BUILD_SHARED_LIBS) +if (AO_BUILD_SHARED_LIBS) add_compile_options(-DAO_DLL) endif() @@ -150,7 +150,11 @@ if (CMAKE_C_COMPILER_ID STREQUAL "SunPro") set(SRC ${SRC} src/atomic_ops_sysdeps.S) endif() -add_library(atomic_ops ${SRC}) +if (AO_BUILD_SHARED_LIBS) + add_library(atomic_ops SHARED ${SRC}) +else() + add_library(atomic_ops STATIC ${SRC}) +endif() target_link_libraries(atomic_ops PRIVATE ${THREADDLLIBS_LIST}) target_include_directories(atomic_ops PUBLIC "$" @@ -158,7 +162,11 @@ target_include_directories(atomic_ops if (enable_gpl) set(AO_GPL_SRC src/atomic_ops_malloc.c src/atomic_ops_stack.c) - add_library(atomic_ops_gpl ${AO_GPL_SRC}) + if (AO_BUILD_SHARED_LIBS) + add_library(atomic_ops_gpl SHARED ${AO_GPL_SRC}) + else() + add_library(atomic_ops_gpl STATIC ${AO_GPL_SRC}) + endif() check_function_exists(mmap HAVE_MMAP) if (HAVE_MMAP) target_compile_definitions(atomic_ops_gpl PRIVATE HAVE_MMAP) @@ -167,7 +175,7 @@ if (enable_gpl) target_include_directories(atomic_ops_gpl PUBLIC "$" INTERFACE "$") - if (BUILD_SHARED_LIBS) + if (AO_BUILD_SHARED_LIBS) set_property(TARGET atomic_ops_gpl PROPERTY VERSION ${AO_GPL_VERSION_PROP}) set_property(TARGET atomic_ops_gpl PROPERTY SOVERSION ${AO_GPL_SOVERSION}) endif() @@ -178,7 +186,7 @@ if (enable_gpl) INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") endif(enable_gpl) -if (BUILD_SHARED_LIBS) +if (AO_BUILD_SHARED_LIBS) if (NOT (${CMAKE_SYSTEM_NAME} MATCHES "BSD")) if (${CMAKE_VERSION} VERSION_LESS "3.18.0") set(WL_NO_UNDEFINED_OPT "-Wl,--no-undefined") @@ -204,7 +212,7 @@ if (BUILD_SHARED_LIBS) endif() set_property(TARGET atomic_ops PROPERTY VERSION ${AO_VERSION_PROP}) set_property(TARGET atomic_ops PROPERTY SOVERSION ${AO_SOVERSION}) -endif(BUILD_SHARED_LIBS) +endif(AO_BUILD_SHARED_LIBS) install(TARGETS atomic_ops EXPORT Atomic_opsTargets LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" From cfff4d34a9ff7bd8615ea94b8010c1d73899ad64 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 22:57:07 +0300 Subject: [PATCH 10/12] AppVeyor CI: Update after CMake BUILD_SHARED_LIBS option renaming --- .appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index c38d851d..29dd644f 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -10,7 +10,7 @@ environment: TEST_TARGET: check matrix: - TARGET: cmake - CMAKE_OPTIONS: -DBUILD_SHARED_LIBS=ON -Werror=deprecated + CMAKE_OPTIONS: -DAO_BUILD_SHARED_LIBS=ON -Werror=deprecated - TARGET: cmake CFLAGS_EXTRA: -DAO_CMPXCHG16B_AVAILABLE CMAKE_OPTIONS: -Denable_assertions=ON -Dinstall_headers=OFF @@ -21,7 +21,7 @@ environment: CMAKE_OPTIONS: -A Win32 -Denable_assertions=ON -Denable_docs=OFF - TARGET: cmake CMAKE_CONFIG: Release - CMAKE_OPTIONS: -A ARM64 -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=ON + CMAKE_OPTIONS: -A ARM64 -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=MinSizeRel -DAO_BUILD_SHARED_LIBS=ON - TARGET: nmake ARCH: x86 CFLAGS_EXTRA: /J From f998cd20839bef949d4dae39daecc1b3eebed9d5 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 23:01:22 +0300 Subject: [PATCH 11/12] Travis CI: Update after CMake BUILD_SHARED_LIBS option renaming --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 15fa1177..08468165 100644 --- a/.travis.yml +++ b/.travis.yml @@ -117,7 +117,7 @@ jobs: - arch: ppc64le compiler: clang env: - - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -Denable_assertions=ON -Denable_docs=OFF" + - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -DAO_BUILD_SHARED_LIBS=ON -Denable_assertions=ON -Denable_docs=OFF" - arch: ppc64le compiler: gcc env: @@ -146,7 +146,7 @@ jobs: - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -Denable_atomic_intrinsics=OFF" - compiler: gcc env: - - CMAKE_OPTIONS="-DBUILD_SHARED_LIBS=ON -Dinstall_headers=OFF" + - CMAKE_OPTIONS="-DAO_BUILD_SHARED_LIBS=ON -Dinstall_headers=OFF" - compiler: clang env: - CFLAGS_EXTRA="-O3 -march=native -funsigned-char" From f56c775c167234c83b646616cf272bf48a3b3c96 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 27 Nov 2025 23:04:20 +0300 Subject: [PATCH 12/12] GH Actions: Update after CMake BUILD_SHARED_LIBS option renaming --- .github/workflows/cmake-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake-build.yml b/.github/workflows/cmake-build.yml index 62db0f8d..ea33043a 100644 --- a/.github/workflows/cmake-build.yml +++ b/.github/workflows/cmake-build.yml @@ -87,7 +87,7 @@ jobs: -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -Denable_werror=ON - -DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} + -DAO_BUILD_SHARED_LIBS=${{ matrix.shared_libs }} -Denable_assertions=${{ matrix.assertions }} -Denable_atomic_intrinsics=${{ matrix.atomic_intrinsics }} ${{ matrix.disable_docs_opt }}