CC = gcc
CFLAGS = -O2 -Wall

PROGS = forks execs internal external restart shellex signaldeadlock loop

all: $(PROGS)

signaldeadlock: signaldeadlock.c safe_printf.c safe_printf.h
	$(CC) $(CFLAGS) -o signaldeadlock signaldeadlock.c safe_printf.c

shellex: shellex.c 
	$(CC) $(CFLAGS) -o shellex shellex.c csapp.c -lpthread

forks: forks.c safe_printf.c
	$(CC) $(CFLAGS) -o forks forks.c safe_printf.c

execs: execs.c
	$(CC) $(CFLAGS) -o execs execs.c

internal: internal.c safe_printf.c
	$(CC) $(CFLAGS) -o internal internal.c safe_printf.c

external: external.c safe_printf.c
	$(CC) $(CFLAGS) -o external external.c safe_printf.c

restart: restart.c safe_printf.c
	$(CC) $(CFLAGS) -o restart restart.c safe_printf.c

loop: loop.c
	$(CC) $(CFLAGS) -o loop loop.c

clean:
	rm -rf *~ $(PROGS)

