From af5d5a0de5b2f6afa5cde8eeadbd0322752e172d Mon Sep 17 00:00:00 2001 From: vlazzarini Date: Mon, 12 Oct 2026 20:51:06 +0100 Subject: [PATCH] Enforce Csound 7.0 minimum in FindCSOUND --- 7.x/CMakeLists.txt | 6 +++--- 7.x/cmake/Modules/FindCSOUND.cmake | 32 ++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/7.x/CMakeLists.txt b/7.x/CMakeLists.txt index ff9f79be..80b11815 100644 --- a/7.x/CMakeLists.txt +++ b/7.x/CMakeLists.txt @@ -45,10 +45,10 @@ set(CMAKE_MACOSX_RPATH 1) set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") -find_package(CSOUND) +find_package(CSOUND 7.0) -if(NOT CSOUND_INCLUDE_DIRS) - message(FATAL_ERROR "Csound header files are required") +if(NOT CSOUND_FOUND) + message(FATAL_ERROR "Csound 7.0 or newer is required") endif() include(TestBigEndian) diff --git a/7.x/cmake/Modules/FindCSOUND.cmake b/7.x/cmake/Modules/FindCSOUND.cmake index d83c0c05..66232fee 100644 --- a/7.x/cmake/Modules/FindCSOUND.cmake +++ b/7.x/cmake/Modules/FindCSOUND.cmake @@ -51,12 +51,40 @@ else() ) endif() +if(CSOUND_INCLUDE_DIR AND EXISTS "${CSOUND_INCLUDE_DIR}/version.h") + file(STRINGS "${CSOUND_INCLUDE_DIR}/version.h" _csound_major + REGEX "^#define[ \t]+CS_VERSION[ \t]+") + file(STRINGS "${CSOUND_INCLUDE_DIR}/version.h" _csound_minor + REGEX "^#define[ \t]+CS_SUBVER[ \t]+") + file(STRINGS "${CSOUND_INCLUDE_DIR}/version.h" _csound_patch + REGEX "^#define[ \t]+CS_PATCHLEVEL[ \t]+") + + string(REGEX REPLACE "^#define[ \t]+CS_VERSION[ \t]+\\(?([0-9]+)\\)?.*" "\\1" + CSOUND_VERSION_MAJOR "${_csound_major}") + string(REGEX REPLACE "^#define[ \t]+CS_SUBVER[ \t]+\\(?([0-9]+)\\)?.*" "\\1" + CSOUND_VERSION_MINOR "${_csound_minor}") + string(REGEX REPLACE "^#define[ \t]+CS_PATCHLEVEL[ \t]+\\(?([0-9]+)\\)?.*" "\\1" + CSOUND_VERSION_PATCH "${_csound_patch}") + + if(CSOUND_VERSION_MAJOR MATCHES "^[0-9]+$") + if(NOT CSOUND_VERSION_MINOR MATCHES "^[0-9]+$") + set(CSOUND_VERSION_MINOR 0) + endif() + if(NOT CSOUND_VERSION_PATCH MATCHES "^[0-9]+$") + set(CSOUND_VERSION_PATCH 0) + endif() + set(CSOUND_VERSION + "${CSOUND_VERSION_MAJOR}.${CSOUND_VERSION_MINOR}.${CSOUND_VERSION_PATCH}") + endif() +endif() + include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set CSOUND_FOUND to TRUE -# if all listed variables are TRUE +# if all listed variables are TRUE and the version satisfies the request find_package_handle_standard_args(CSOUND - CSOUND_LIBRARY CSOUND_INCLUDE_DIR + REQUIRED_VARS CSOUND_LIBRARY CSOUND_INCLUDE_DIR + VERSION_VAR CSOUND_VERSION ) mark_as_advanced(CSOUND_INCLUDE_DIR CSOUND_LIBRARY)