* Wire CrossSection to the boolean2 backend Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Simplify CrossSection via vertex decimation, not merge-tolerance snap Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Address wiring review: Hull/finite guards, inline mutex, signpost, asserts Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Migrate CrossSection wiring to ApplyFillRule; Simplify decimates only Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Defer transform tolerance scaling to GetPaths; fix Simplify comment Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Tidy wiring comments to house style; use la::isfinite for guards Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Cut over CrossSection from Clipper2 to boolean2 Replace the Clipper2-backed CrossSection implementation with the in-tree boolean2 one and drop the Clipper2 dependency, the MANIFOLD_CROSS_SECTION_BACKEND selector, and its CI and packaging plumbing. The public CrossSection API is unchanged: the FillRule argument is kept but only Positive construction is supported. Samples.Sponge4's degenerate-triangle bound is raised, since boolean2's Simplify leaves more near-collinear vertices (more benign zero-area tris; topology unchanged). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Delegate single-contour CrossSection ctor to the Polygons one Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Always build CrossSection; drop the MANIFOLD_CROSS_SECTION option Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Flatten manifold::boolean2 into manifold; unify JoinType Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Make SimplifyRing O(n log n) via min-heap with lazy invalidation Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Drop stale MANIFOLD_CROSS_SECTION flag from the PR perf guard script Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Scrub Clipper2 and the removed option from the new sanitizer CI script Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
41 lines
761 B
Bash
41 lines
761 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [ "$#" -ne 3 ]; then
|
|
echo "Usage: $0 <source-dir> <output-dir> <repeats>"
|
|
exit 2
|
|
fi
|
|
|
|
SRC_DIR="$1"
|
|
OUT_DIR="$2"
|
|
REPEATS="$3"
|
|
BUILD_DIR="${OUT_DIR}/build"
|
|
|
|
cmake \
|
|
-S "$SRC_DIR" \
|
|
-B "$BUILD_DIR" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DMANIFOLD_STRICT=ON \
|
|
-DMANIFOLD_PYBIND=OFF \
|
|
-DMANIFOLD_TEST=ON \
|
|
-DMANIFOLD_PAR=ON
|
|
|
|
cmake --build "$BUILD_DIR" --target perfTest
|
|
|
|
BIN=""
|
|
for candidate in "${BUILD_DIR}/extras/perfTest" "${BUILD_DIR}/bin/perfTest"; do
|
|
if [ -x "$candidate" ]; then
|
|
BIN="$candidate"
|
|
break
|
|
fi
|
|
done
|
|
if [ -z "$BIN" ]; then
|
|
echo "perfTest binary not found in expected paths."
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
for i in $(seq 1 "$REPEATS"); do
|
|
"$BIN" > "${OUT_DIR}/run${i}.txt"
|
|
done
|