.SUFFIXES : .c .o

PROGS= \
      hello \
      hello-printf \
      hello-size \
      ints \
      struct-size \
      struct-pointers \
      union-size \
      squaresum \
      byte-wrap \
      fencepost \
      string-building \
      printf-numbers \
      printf-strings \
      float-specs \
      pointer-intro \
      pointer-math \
      pointer-functions \
      pointer-in-place \
      pointer-pointers \
      malloc \
      float-equality \
      sprintf \
      strcmp \
      qsort \
      argv \
      files \

CC=gcc
CFLAGS=-Wall -pedantic

all : $(PROGS) Makefile

clean:
	rm -f $(PROGS) *.o
	rm -fr *.dSYM/

.c.o :
	$(CC) $(CFLAGS) -o $@ -c $<

hello: hello.c
	$(CC) $(CFLAGS) hello.c -o $@

hello-printf: hello-printf.c
	$(CC) $(CFLAGS) hello-printf.c -o $@

hello-size: hello-size.c
	$(CC) $(CFLAGS) hello-size.c -o $@

ints: ints.c
	$(CC) $(CFLAGS) ints.c -o $@

union-size: union-size.c
	$(CC) $(CFLAGS) union-size.c -o $@

struct-pointers: struct-pointers.c
	$(CC) $(CFLAGS) struct-pointers.c -o $@

struct-size: struct-size.c
	$(CC) $(CFLAGS) struct-size.c -o $@

squaresum: squaresum.c
	$(CC) $(CFLAGS) squaresum.c -O3 -o $@

byte-wrap: byte-wrap.c
	$(CC) $(CFLAGS) byte-wrap.c -o $@

fencepost: fencepost.c
	$(CC) $(CFLAGS) fencepost.c -o $@

string-building: string-building.c
	$(CC) $(CFLAGS) string-building.c -o $@

printf-numbers: printf-numbers.c
	$(CC) $(CFLAGS) printf-numbers.c -o $@

printf-strings: printf-strings.c
	$(CC) $(CFLAGS) printf-strings.c -o $@

float-specs: float-specs.c
	$(CC) $(CFLAGS) float-specs.c -o $@

pointer-intro: pointer-intro.c
	$(CC) $(CFLAGS) pointer-intro.c -o $@

pointer-math: pointer-math.c
	$(CC) $(CFLAGS) pointer-math.c -o $@

pointer-functions: pointer-functions.c
	$(CC) $(CFLAGS) pointer-functions.c -o $@

pointer-pointers: pointer-pointers.c
	$(CC) $(CFLAGS) pointer-pointers.c -o $@

pointer-in-place: pointer-in-place.c
	$(CC) $(CFLAGS) pointer-in-place.c -o $@

float-equality: float-equality.c
	$(CC) $(CFLAGS) float-equality.c -o $@

malloc: malloc.c
	$(CC) $(CFLAGS) malloc.c -o $@

sprintf: sprintf.c
	$(CC) $(CFLAGS) sprintf.c -o $@

strcmp: strcmp.c
	$(CC) $(CFLAGS) strcmp.c -o $@

qsort: qsort.c
	$(CC) $(CFLAGS) qsort.c -o $@

argv: argv.c
	$(CC) $(CFLAGS) argv.c -o $@

files: files.c
	$(CC) $(CFLAGS) files.c -o $@
