From b5c82783d63f4103c8f4ae7ecd644570a4082120 Mon Sep 17 00:00:00 2001 From: froejdh_e Date: Fri, 28 Mar 2025 09:26:55 +0100 Subject: [PATCH] patching libzmq and cleaned up cmake --- CMakeLists.txt | 37 ++++++++++++++++++++++---- libs/libzmq/libzmq_cmake_version.patch | 17 ++++++++++++ pyproject.toml | 9 ++++--- 3 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 libs/libzmq/libzmq_cmake_version.patch diff --git a/CMakeLists.txt b/CMakeLists.txt index 0aa6dcd5d..2861c4546 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,20 +30,41 @@ option(SLS_FETCH_ZMQ_FROM_GITHUB "Fetch zmq from github" OFF) option(SLS_FETCH_PYBIND11_FROM_GITHUB "Fetch pybind11 from github" OFF) + + + + +# Allow FetchContent_Populate to be called with a single argument +# otherwise deprecated warning is issued +# Note: From cmake 3.28 we can pass EXCLUDE_FROM_ALL to FetchContent_Declare +# and avoid direct use of Populate +if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.30") + cmake_policy(SET CMP0169 OLD) +endif() + +# Patch libzmq to set minimum cmake version to 3.15 to avoid warnings +# with newer cmake versions +set(zmq_patch_version git apply ${CMAKE_CURRENT_SOURCE_DIR}/libs/libzmq/libzmq_cmake_version.patch) + +set(SLS_LIBZMQ_VERSION "4.3.4") + + if(SLS_FETCH_ZMQ_FROM_GITHUB) # Opt in to pull down a zmq version from github instead of # using the bundled verison FetchContent_Declare( libzmq GIT_REPOSITORY https://github.com/zeromq/libzmq.git - GIT_TAG v4.3.4 + GIT_TAG v${SLS_LIBZMQ_VERSION} + PATCH_COMMAND ${zmq_patch_version} ) else() # Standard behaviour use libzmq included in this repo (libs/libzmq) FetchContent_Declare( libzmq - URL ${CMAKE_CURRENT_SOURCE_DIR}/libs/libzmq/libzmq-4.3.4.tar.gz + URL ${CMAKE_CURRENT_SOURCE_DIR}/libs/libzmq/libzmq-${SLS_LIBZMQ_VERSION}.tar.gz URL_HASH MD5=cc20b769ac10afa352e5ed2769bb23b3 + PATCH_COMMAND ${zmq_patch_version} ) endif() @@ -335,9 +356,15 @@ if (SLS_USE_CTBGUI) add_subdirectory(pyctbgui) endif(SLS_USE_CTBGUI) -configure_file( .clang-tidy - ${CMAKE_BINARY_DIR}/.clang-tidy -) +# Workaround for file note being copied to build directory +# when issuing a python -m build +# TODO! Proper fix +if(EXISTS ".clang-tidy") + configure_file(.clang-tidy + ${CMAKE_BINARY_DIR}/.clang-tidy + ) +endif() + if (SLS_BUILD_EXAMPLES) add_subdirectory(sample) diff --git a/libs/libzmq/libzmq_cmake_version.patch b/libs/libzmq/libzmq_cmake_version.patch new file mode 100644 index 000000000..901078fe8 --- /dev/null +++ b/libs/libzmq/libzmq_cmake_version.patch @@ -0,0 +1,17 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index dd3d8eb9..75c321fd 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,11 +1,7 @@ + # CMake build script for ZeroMQ + project(ZeroMQ) + +-if(${CMAKE_SYSTEM_NAME} STREQUAL Darwin) +- cmake_minimum_required(VERSION 3.0.2) +-else() +- cmake_minimum_required(VERSION 2.8.12) +-endif() ++cmake_minimum_required(VERSION 3.15) + + include(CheckIncludeFiles) + include(CheckCCompilerFlag) diff --git a/pyproject.toml b/pyproject.toml index 35709dae1..eafffa9f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,13 +7,16 @@ name = "slsdet" version = "2025.3.19" -[tool.scikit-build] -cmake.verbose = true +[tool.cibuildwheel] +before-all = "uname -a" + +[tool.scikit-build-core] +build.verbose = true cmake.build-type = "Release" install.components = ["python"] -[tool.scikit-build.cmake.define] +[tool.scikit-build-core.cmake.define] #Only build the control software and python ext SLS_USE_RECEIVER = "OFF" SLS_USE_RECEIVER_BINARIES = "OFF"