Default to the optimized -O3 build; DEBUG=1 for a debug build

Bare 'make -C com' now builds -O3 (optimize.env default flip); the install guides drop OPTIMIZE=1 and document DEBUG=1 for an AddressSanitizer build.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-18 20:03:40 +02:00
parent 2ba7ceee7a
commit 2024f8059d
3 changed files with 27 additions and 18 deletions

View File

@@ -88,14 +88,16 @@ If `python3-config` is missing, install your distribution's `python3-dev`
Build the shared library, the SKS components, and the three commands with a Build the shared library, the SKS components, and the three commands with a
single command: `make -C com` builds its prerequisites in `mac/` and `sks/` single command: `make -C com` builds its prerequisites in `mac/` and `sks/`
first, then the commands. `OPTIMIZE=1` selects an optimized `-O3` build (what first, then the commands. The build is optimized (`-O3`) by default — the build
you want to install and run); without it you get a slower `-O0` debug build you want to install and run:
with AddressSanitizer, intended for development:
```bash ```bash
make -C com -j OPTIMIZE=1 # lib/libklammertext.so + sks/*.so + bin/{ktext,kdesc,kdiag} make -C com -j # lib/libklammertext.so + sks/*.so + bin/{ktext,kdesc,kdiag}
``` ```
(For a slower `-O0` debug build with AddressSanitizer, intended for development,
prefix `DEBUG=1`: `DEBUG=1 make -C com -j`.)
Verify the build: Verify the build:
```bash ```bash
@@ -243,7 +245,7 @@ To update an existing source installation to the latest version:
```bash ```bash
cd $KLAMMERTEXT_HOME cd $KLAMMERTEXT_HOME
git pull git pull
make -C com -j OPTIMIZE=1 # rebuild library, SKS components, and commands make -C com -j # rebuild library, SKS components, and commands (optimized)
``` ```
The TeX Live tree only needs rebuilding if the SKS's package requirements The TeX Live tree only needs rebuilding if the SKS's package requirements

View File

@@ -81,10 +81,13 @@ then the commands:
```sh ```sh
cd "$KLAMMERTEXT_HOME" cd "$KLAMMERTEXT_HOME"
make -C com -j OPTIMIZE=1 # libklammertext.so + sks/*.so + bin/{ktext,kdesc,kdiag} make -C com -j # optimized (-O3) by default; libklammertext.so + sks/*.so + bin/{ktext,kdesc,kdiag}
ktext -s '@eval 1 + 1 @' -d # smoke test — prints 2 ktext -s '@eval 1 + 1 @' -d # smoke test — prints 2
``` ```
(For a debug build with AddressSanitizer, intended for development, prefix
`DEBUG=1`: `DEBUG=1 make -C com -j`.)
For a document smoke test, create a small file and render it to HTML: For a document smoke test, create a small file and render it to HTML:
```sh ```sh
@@ -149,7 +152,7 @@ To update an existing source installation to the latest version:
```sh ```sh
cd "$KLAMMERTEXT_HOME" cd "$KLAMMERTEXT_HOME"
git pull git pull
make -C com -j OPTIMIZE=1 # rebuild library, SKS components, and commands make -C com -j # rebuild library, SKS components, and commands (optimized)
``` ```
Rebuild the TeX Live tree only if the SKS's package requirements changed (rare); Rebuild the TeX Live tree only if the SKS's package requirements changed (rare);

26
mac/env/optimize.env vendored
View File

@@ -1,16 +1,20 @@
ifdef OPTIMIZE # Build mode. The DEFAULT is an optimized -O3 build (what installs and releases
# Performance build: make OPTIMIZE=1 # use). Opt into other modes explicitly:
# `override` so a command-line `make OPTIMIZE=1` is remapped to -O3 too; # DEBUG=1 -> debug build: -O0 -g + AddressSanitizer (development)
# without it, a command-line assignment wins over this `:=` and the literal # NOPYTHON=1 -> -O0 -g -DNOPYTHON, no ASan (build without the interpreter)
# `1` leaks into CXXFLAGS (g++ then treats `1` as an input file). # `override` is used throughout so that a stray command-line or environment
override OPTIMIZE := -O3 # `OPTIMIZE=...` cannot leak into CXXFLAGS: OPTIMIZE is an internal flag string
SANITIZE := # here, no longer a trigger. (A legacy `make OPTIMIZE=1` still yields -O3, since
# it falls through to the optimized default below.)
ifdef DEBUG
override OPTIMIZE := -O0 -g
SANITIZE := -fsanitize=address -fno-omit-frame-pointer
else ifdef NOPYTHON else ifdef NOPYTHON
OPTIMIZE := -O0 -g -DNOPYTHON override OPTIMIZE := -O0 -g -DNOPYTHON
SANITIZE := SANITIZE :=
else else
# Debug build (default): includes AddressSanitizer # Performance build (default).
OPTIMIZE := -O0 -g override OPTIMIZE := -O3
SANITIZE := -fsanitize=address -fno-omit-frame-pointer SANITIZE :=
endif endif