1# Makefile for nonstd.h examples
 2
 3CC = clang
 4CFLAGS = -Wall -Wextra -std=c99 -fsanitize=address -g -O0
 5LDFLAGS =
 6
 7# Example targets
 8EXAMPLES = foreach stringv stringb array slice arena files logging ppm
 9
10# Default target
11all: $(EXAMPLES)
12
13# Build individual examples
14foreach: foreach.c
15	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
16
17stringv: stringv.c
18	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
19
20stringb: stringb.c
21	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
22
23array: array.c
24	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
25
26slice: slice.c
27	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
28
29arena: arena.c
30	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
31
32files: files.c
33	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
34
35logging: logging.c
36	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
37
38ppm: ppm.c
39	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
40
41# Run all examples
42run: all
43	@echo "\n=== Running stringv ===\n"
44	@./stringv
45	@echo "\n=== Running stringb ===\n"
46	@./stringb
47	@echo "\n=== Running foreach ===\n"
48	@./foreach
49	@echo "\n=== Running array ===\n"
50	@./array
51	@echo "\n=== Running slice ===\n"
52	@./slice
53	@echo "\n=== Running arena ===\n"
54	@./arena
55	@echo "\n=== Running files ===\n"
56	@./files
57	@echo "\n=== Running logging ===\n"
58	@./logging
59	@echo "\n=== Running ppm ===\n"
60	@./ppm
61
62# Clean build artifacts
63clean:
64	rm -f $(EXAMPLES)
65
66.PHONY: all run clean