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