Skip to content

Consolidate build configuration under cmake/ - #112

Draft
skilledwolf wants to merge 5 commits into
WIP/remove-lattice-previewfrom
cleanup/root-layout
Draft

Consolidate build configuration under cmake/#112
skilledwolf wants to merge 5 commits into
WIP/remove-lattice-previewfrom
cleanup/root-layout

Conversation

@skilledwolf

Copy link
Copy Markdown
Collaborator

Summary

  • move the project CMake modules and build helpers from config/ to cmake/
  • remove obsolete Debian sid packaging, SVN-era header tooling, and stale root files
  • add a default CMake preset, citation guidance, and refreshed root documentation
  • consistently document CMake 3.18 for normal configuration and 3.21 for presets
  • update standalone tutorial projects to the 3.18 floor
  • keep generated build-tree package files under build/cmake/ and remove a machine-specific tutorial path

Stack

This draft is stacked on #111, which is stacked on #107. Retarget it to master after those PRs merge.

Validation

  • clean CMake configuration with system Boost and a temporary install prefix
  • full alps library build
  • installation of the build component and verification of installed ALPSConfig.cmake
  • CMake preset discovery
  • git diff --check

skilledwolf and others added 2 commits July 24, 2026 11:36
Relocate the CMake modules and build helpers from config/ to cmake/
(git-tracked renames, contents unchanged) and drop dead legacy:

- remove Debian sid packaging (SVN/wheezy-era, unreferenced; superseded
  by the wheel + CPack packaging paths)
- remove SVN-era license-header tooling (preamble*.in, update_preamble*)
- remove stale root files (README.txt, README-package.txt, Welcome.txt,
  CTestConfig.cmake)
- add CITATION.md and CMakePresets.json

The config/ directory is now gone; cmake/ is the single home for build
configuration. No functional/build behavior change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
skilledwolf and others added 2 commits July 24, 2026 19:23
version.h.in declared ALPS_VERSION_MAJOR/MINOR/PATCH with cmakedefine,
which emits "/* #undef NAME */" when the substituted value is false-y.
CMake counts 0 as false-y, so any x.y.0 release generated a header with
that component silently missing. 2.4.0 would have tripped it.

Use a plain #define for every macro the build unconditionally sets.
Keep cmakedefine only for ALPS_XML_ALTERNATE_DIR, which the build never
sets and parser/xslt_path.C guards with #ifdef.

Also add ALPS_VERSION_NUMBER/ALPS_VERSION_NUM() for preprocessor version
comparisons (BOOST_VERSION packing), and drop two macros: ALPS_SVN_REVISION,
which expanded a variable unset since the SVN migration and was always
#undef, and ALPS_SRCDIR, which baked the build machine's source path into
an installed header for one line of pconfig output.

Refs #95

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The version was hardcoded in CMakeLists.txt and had already drifted: CMake
said 2.3.3, the newest tag is v2.3.4, and pyalps' pyproject.toml says 2.3.4b1.

Put the numeric release in ALPS_VERSION.txt, read it in cmake/ALPSVersion.cmake
before project(), and derive ALPS_VERSION_MAJOR/MINOR/PATCH from
PROJECT_VERSION_*. The file holds MAJOR.MINOR.PATCH and nothing else, because
project(VERSION) rejects non-numeric input and neither SOVERSION nor
find_package() matching has any notion of prerelease ordering. A malformed
file is rejected with a message naming the file, rather than CMake's bare
"VERSION format invalid". Corrects the version to 2.3.4 in passing.

ALPS_VERSION_BUILD, which was always empty, becomes the ALPS_VERSION_PRERELEASE
cache variable: it carries "beta.2" into display strings while the numeric
version stays clean. "Prerelease" because a later change adds real build
metadata (a git hash), and two similarly-named slots would confuse.

Generate and install ALPSConfigVersion.cmake. Without it find_package(ALPS
<version>) accepted any version it found and silently discarded the
constraint. SameMinorVersion: within 2.3.x a patch release is drop-in, a minor
bump is not guaranteed to be. Note this is stricter than the SOVERSION of
MAJOR alone advertises; reconciling the soname is a packaging-visible change
and is left alone here.

Derive ALPS_YEAR with string(TIMESTAMP), which honours SOURCE_DATE_EPOCH, so
distro and conda reproducible builds still get a stable year.

ALPS_SRCDIR is dropped from the installed header by the preceding commit, but
two tests use it to locate reference .h5 inputs. Give those two targets a
private compile definition instead: a build-tree path belongs there, not in an
installed public header.

Refs #95

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
build: single-source the ALPS version, add ALPSConfigVersion.cmake
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.

2 participants