1CC = gcc
2CFLAGS = -Wall -Wextra -std=c11 -pedantic
3
4# Linux needs -lrt for shm_open, -lpthread for sem_open
5UNAME_S := $(shell uname -s)
6ifeq ($(UNAME_S),Linux)
7 LDFLAGS_SHM = -lrt -lpthread
8else
9 LDFLAGS_SHM =
10endif
11
12TARGETS = pipe_demo shm_producer shm_consumer signal_handler
13
14.PHONY: all clean
15
16all: $(TARGETS)
17
18pipe_demo: pipe_demo.c
19 $(CC) $(CFLAGS) -o $@ $<
20
21shm_producer: shm_producer.c
22 $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS_SHM)
23
24shm_consumer: shm_consumer.c
25 $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS_SHM)
26
27signal_handler: signal_handler.c
28 $(CC) $(CFLAGS) -o $@ $<
29
30clean:
31 rm -f $(TARGETS)