CC = gcc
CPP = cpp
CFLAGS = -g -O2 -m32

all: main.s main.d swap.s swap.d prog.d \
	c1-init.E c1-noinit.E c-noinit

main.s: main.c
	$(CC) $(CFLAGS) -S main.c

swap.s: swap.c
	$(CC) $(CFLAGS) -S swap.c

main.d: main.c
	$(CC) $(CFLAGS) -c main.c
	objdump -d -r main.o > main.d

swap.d: swap.c
	$(CC) $(CFLAGS) -c swap.c
	objdump -d -r swap.o > swap.d

prog.d: main.c swap.c
	$(CC) $(CFLAGS) main.c swap.c -o prog
	objdump -d -r prog > prog.d

c1-init.E: c1.c global.h
	$(CPP) -g -m32 -P -DINITIALIZE c1.c -o c1-init.E

c1-noinit.E: c1.c global.h
	$(CPP) -g -m32 -P c1.c -o c1-noinit.E

c-noinit: c1.c c2.c global-init.h global-noinit.h
	$(CC) -g -m32 -o c-noinit c1.c c2.c

# This one should cause a linking error
c-init: c1.c c2.c global-init.h
	$(CC) -g -m32 -DINITIALIZE -o c-init c1.c c2.c

simple: simple.c
	$(CC) $(CFLAGS) -o simple simple.c  -lm

clean:
	rm -f *.o *.s *.d prog c-init c-noinit *.E

