# .WAIT and .JOBS examples — native mode
#
# Usage:
#   antelope                      Build all targets
#   antelope -j4                  Build with 4 parallel jobs
#   antelope clean                Clean build artifacts
#
# .WAIT splits prerequisites into sequential groups:
#   target: group1 .WAIT group2
#   → group1 completes first, then group2 starts
#
# .JOBS limits concurrency for named targets:
#   .JOBS: N target1 target2 ...
#   → target1 and target2 run at most N jobs concurrently

# ── Example 1: .WAIT barrier ───────────────────────────────────────
#
#   pipeline: fetch .WAIT build .WAIT test
#   → fetch runs, then build after fetch, then test after build
#   Within each group, targets can run in parallel.

pipeline: fetch build test
	@echo "Pipeline complete"

fetch:
	@echo "Fetching dependencies..."
	@sleep 0.2
	@echo "Fetch done"

build: compile_a compile_b
	@echo "Build complete"

compile_a:
	@echo "Compiling module A..."
	@sleep 0.3
	@echo "Module A done"

compile_b:
	@echo "Compiling module B..."
	@sleep 0.3
	@echo "Module B done"

# .WAIT ensures test runs only after build completes
test: build .WAIT
	@echo "Running tests..."
	@sleep 0.1
	@echo "All tests passed"

# ── Example 2: .JOBS throttle ──────────────────────────────────────
#
#   .JOBS: 2 heavy_a heavy_b heavy_c
#   → Only 2 of {heavy_a, heavy_b, heavy_c} run concurrently
#   Light targets (light_x, light_y) use the global -j limit.

.JOBS: 2 heavy_a heavy_b heavy_c

heavy_jobs: heavy_a heavy_b heavy_c light_x light_y
	@echo "All heavy and light jobs done"

heavy_a:
	@echo "[heavy_a] starting..."
	@sleep 0.5
	@echo "[heavy_a] done"

heavy_b:
	@echo "[heavy_b] starting..."
	@sleep 0.5
	@echo "[heavy_b] done"

heavy_c:
	@echo "[heavy_c] starting..."
	@sleep 0.5
	@echo "[heavy_c] done"

light_x:
	@echo "[light_x] done instantly"

light_y:
	@echo "[light_y] done instantly"

# ── Housekeeping ────────────────────────────────────────────────────

.PHONY: pipeline fetch build compile_a compile_b test
.PHONY: heavy_jobs heavy_a heavy_b heavy_c light_x light_y
.PHONY: clean

clean:
	@echo "Cleaning..."
