Migrated from Make to CMake.

This commit is contained in:
Johannes Findeisen 2026-11-06 19:05:14 +01:00
commit b6ba093000
52 changed files with 1276 additions and 1210 deletions

View file

@ -4,7 +4,6 @@ import argparse
import hashlib
import os
from pathlib import Path
import shlex
import subprocess
import tarfile
import tempfile
@ -18,6 +17,7 @@ def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('archive', type=Path)
parser.add_argument('--gui', action='store_true')
parser.add_argument('--generator', default=os.environ.get('CMAKE_GENERATOR'))
args = parser.parse_args()
archive = args.archive.resolve()
assert archive.with_name(archive.name + '.sha256').read_text().split()[0] == digest(archive)
@ -33,16 +33,23 @@ def main():
assert all('__pycache__' not in Path(n).parts and '.git' not in Path(n).parts for n in names)
for name in ('first', 'different-path'):
source.extractall(root / name, filter='data')
env = dict(os.environ, SOURCE_DATE_EPOCH=str(epoch), MAKEFLAGS='', MFLAGS='')
env = dict(os.environ, SOURCE_DATE_EPOCH=str(epoch))
if args.generator:
env['CMAKE_GENERATOR'] = args.generator
builds = []
for name in ('first', 'different-path'):
project = root / name / top
log = root / (name + '.log')
make = shlex.split(env.get('MAKE', 'make'))
with log.open('w') as output:
try:
subprocess.run(make + ['BUILD_DIR=build', 'release'], cwd=project, env=env, stdout=output,
stderr=subprocess.STDOUT, check=True)
subprocess.run(['cmake', '-S', '.', '-B', 'build/release',
'-DCMAKE_BUILD_TYPE=Release', '-DXTC_REPRODUCIBLE=ON',
f'-DXTC_BUILD_GUI={"ON" if args.gui else "OFF"}'],
cwd=project, env=env, stdout=output, stderr=subprocess.STDOUT, check=True)
subprocess.run(['cmake', '--build', 'build/release', '--parallel', '3'],
cwd=project, env=env, stdout=output, stderr=subprocess.STDOUT, check=True)
subprocess.run(['ctest', '--test-dir', 'build/release', '--output-on-failure'],
cwd=project, env=env, stdout=output, stderr=subprocess.STDOUT, check=True)
except subprocess.CalledProcessError:
print(log.read_text()[-12000:])
raise