Skip to content

Conversation

@vtjnash
Copy link
Contributor

@vtjnash vtjnash commented Dec 23, 2025

Claude analyzed the Makefiles and CMakeList and found the list of options that needed to be implemented in cmake to lead to exact feature parity

This is built upon #5581 documentation, since it adds documentation for the new options also.

Changes:

  • Add THREAD_TIMEOUT option for thread spin-wait timeout configuration
  • Prevent in-tree builds with clear error message (protects source Makefiles from overwrite)
  • Fix ARCH variable to not redundantly re-set when user provides it
  • Remove experimental warning (CMake now has full Makefile.rule parity)

All Makefile.rule options are now supported in CMake:

Makefile.rule Option CMake Equivalent
LIBNAMEPREFIX LIBNAMEPREFIX
LIBNAMESUFFIX LIBNAMESUFFIX
TARGET TARGET
DYNAMIC_ARCH DYNAMIC_ARCH
DYNAMIC_OLDER DYNAMIC_OLDER
BINARY BINARY
USE_THREAD USE_THREAD
USE_LOCKING USE_LOCKING
USE_OPENMP USE_OPENMP
OMP_SCHED OMP_SCHED
NUM_THREADS NUM_THREADS
NUM_PARALLEL NUM_PARALLEL
BUFFERSIZE BUFFERSIZE
NO_STATIC / NO_SHARED BUILD_STATIC_LIBS / BUILD_SHARED_LIBS
NO_CBLAS BUILD_WITHOUT_CBLAS
ONLY_CBLAS ONLY_CBLAS
NO_LAPACK BUILD_WITHOUT_LAPACK
NO_LAPACKE BUILD_WITHOUT_LAPACKE
BUILD_LAPACK_DEPRECATED BUILD_LAPACK_DEPRECATED
LAPACK_STRLEN LAPACK_STRLEN
BUILD_RELAPACK BUILD_RELAPACK
RELAPACK_REPLACE RELAPACK_REPLACE
USE_SIMPLE_THREADED_LEVEL3 USE_SIMPLE_THREADED_LEVEL3
USE_TLS USE_TLS
INTERFACE64 INTERFACE64
NO_WARMUP NO_WARMUP
NO_AFFINITY NO_AFFINITY
BIGNUMA BIGNUMA
EMBEDDED EMBEDDED
NO_AVX / NO_AVX2 / NO_AVX512 NO_AVX / NO_AVX2 / NO_AVX512
FUNCTION_PROFILE FUNCTION_PROFILE
QUAD_PRECISION QUAD_PRECISION
THREAD_TIMEOUT THREAD_TIMEOUT
DEVICEDRIVER_ALLOCATION DEVICEDRIVER_ALLOCATION
HUGETLB_ALLOCATION HUGETLB_ALLOCATION
HUGETLBFILE_ALLOCATION HUGETLBFILE_ALLOCATION
CONSISTENT_FPCSR CONSISTENT_FPCSR
GEMM_MULTITHREAD_THRESHOLD GEMM_MULTITHREAD_THRESHOLD
SANITY_CHECK SANITY_CHECK
MAX_STACK_ALLOC MAX_STACK_ALLOC
SYMBOLPREFIX / SYMBOLSUFFIX SYMBOLPREFIX / SYMBOLSUFFIX
CPP_THREAD_SAFETY_TEST CPP_THREAD_SAFETY_TEST
CPP_THREAD_SAFETY_GEMV CPP_THREAD_SAFETY_GEMV
BUILD_BFLOAT16 / BUILD_HFLOAT16 BUILD_BFLOAT16 / BUILD_HFLOAT16
BLAS3_MEM_ALLOC_THRESHOLD BLAS3_MEM_ALLOC_THRESHOLD
BUILD_SINGLE/DOUBLE/COMPLEX/COMPLEX16 BUILD_SINGLE/DOUBLE/COMPLEX/COMPLEX16
ARM_SOFTFP_ABI ARM_SOFTFP_ABI
DEBUG CMAKE_BUILD_TYPE=Debug
PREFIX CMAKE_INSTALL_PREFIX
HOSTCC CMake toolchain files

vtjnash and others added 2 commits December 23, 2025 11:04
Add documentation strings and defaults for CMake cache variables
including TARGET, BINARY, threading options, vector extensions, memory
tuning, and precision types. Treat empty string values as "not set" to
allow auto-detection while keeping options visible in ccmake.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changes:
- Add THREAD_TIMEOUT option for thread spin-wait timeout configuration
- Prevent in-tree builds with clear error message (protects Makefiles)
- Fix ARCH variable to not redundantly re-set when user provides it
- Remove experimental warning (CMake now has full Makefile.rule parity)

All Makefile.rule options are now supported in CMake:

| Makefile.rule Option          | CMake Equivalent                    |
|-------------------------------|-------------------------------------|
| LIBNAMEPREFIX                 | LIBNAMEPREFIX                       |
| LIBNAMESUFFIX                 | LIBNAMESUFFIX                       |
| TARGET                        | TARGET                              |
| DYNAMIC_ARCH                  | DYNAMIC_ARCH                        |
| DYNAMIC_OLDER                 | DYNAMIC_OLDER                       |
| BINARY                        | BINARY                              |
| USE_THREAD                    | USE_THREAD                          |
| USE_LOCKING                   | USE_LOCKING                         |
| USE_OPENMP                    | USE_OPENMP                          |
| OMP_SCHED                     | OMP_SCHED                           |
| NUM_THREADS                   | NUM_THREADS                         |
| NUM_PARALLEL                  | NUM_PARALLEL                        |
| BUFFERSIZE                    | BUFFERSIZE                          |
| NO_STATIC / NO_SHARED         | BUILD_STATIC_LIBS / BUILD_SHARED_LIBS |
| NO_CBLAS                      | BUILD_WITHOUT_CBLAS                 |
| ONLY_CBLAS                    | ONLY_CBLAS                          |
| NO_LAPACK                     | BUILD_WITHOUT_LAPACK                |
| NO_LAPACKE                    | BUILD_WITHOUT_LAPACKE               |
| BUILD_LAPACK_DEPRECATED       | BUILD_LAPACK_DEPRECATED             |
| LAPACK_STRLEN                 | LAPACK_STRLEN                       |
| BUILD_RELAPACK                | BUILD_RELAPACK                      |
| RELAPACK_REPLACE              | RELAPACK_REPLACE                    |
| USE_SIMPLE_THREADED_LEVEL3    | USE_SIMPLE_THREADED_LEVEL3          |
| USE_TLS                       | USE_TLS                             |
| INTERFACE64                   | INTERFACE64                         |
| NO_WARMUP                     | NO_WARMUP                           |
| NO_AFFINITY                   | NO_AFFINITY                         |
| BIGNUMA                       | BIGNUMA                             |
| EMBEDDED                      | EMBEDDED                            |
| NO_AVX / NO_AVX2 / NO_AVX512  | NO_AVX / NO_AVX2 / NO_AVX512        |
| FUNCTION_PROFILE              | FUNCTION_PROFILE                    |
| QUAD_PRECISION                | QUAD_PRECISION                      |
| THREAD_TIMEOUT                | THREAD_TIMEOUT                      |
| DEVICEDRIVER_ALLOCATION       | DEVICEDRIVER_ALLOCATION             |
| HUGETLB_ALLOCATION            | HUGETLB_ALLOCATION                  |
| HUGETLBFILE_ALLOCATION        | HUGETLBFILE_ALLOCATION              |
| CONSISTENT_FPCSR              | CONSISTENT_FPCSR                    |
| GEMM_MULTITHREAD_THRESHOLD    | GEMM_MULTITHREAD_THRESHOLD          |
| SANITY_CHECK                  | SANITY_CHECK                        |
| MAX_STACK_ALLOC               | MAX_STACK_ALLOC                     |
| SYMBOLPREFIX / SYMBOLSUFFIX   | SYMBOLPREFIX / SYMBOLSUFFIX         |
| CPP_THREAD_SAFETY_TEST        | CPP_THREAD_SAFETY_TEST              |
| CPP_THREAD_SAFETY_GEMV        | CPP_THREAD_SAFETY_GEMV              |
| BUILD_BFLOAT16 / BUILD_HFLOAT16 | BUILD_BFLOAT16 / BUILD_HFLOAT16   |
| BLAS3_MEM_ALLOC_THRESHOLD     | BLAS3_MEM_ALLOC_THRESHOLD           |
| BUILD_SINGLE/DOUBLE/COMPLEX/COMPLEX16 | BUILD_SINGLE/DOUBLE/COMPLEX/COMPLEX16 |
| ARM_SOFTFP_ABI                | ARM_SOFTFP_ABI                      |
| DEBUG                         | CMAKE_BUILD_TYPE=Debug              |
| PREFIX                        | CMAKE_INSTALL_PREFIX                |
| HOSTCC                        | CMake toolchain files               |

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant