CC = g++
CFLAGS = -Wall

all:  letterpointer yearpointer shortpointer intpointer voidpointer \
	array dynamic_array string_and_array \
	array_of_strings array_of_pointers \
	pointeraccess returning_values functionparameters \
	pointer_to_object functionpointer typecast


letterpointer: letterpointer.o
	$(CC) -o $@ $(CFLAGS) letterpointer.o

yearpointer: yearpointer.o
	$(CC) -o $@ $(CFLAGS) yearpointer.o

shortpointer: shortpointer.o
	$(CC) -o $@ $(CFLAGS) shortpointer.o

intpointer: intpointer.o
	$(CC) -o $@ $(CFLAGS) intpointer.o

voidpointer: voidpointer.o
	$(CC) -o $@ $(CFLAGS) voidpointer.o

array: array.o
	$(CC) -o $@ $(CFLAGS) array.o

dynamic_array: dynamic_array.o
	$(CC) -o $@ $(CFLAGS) dynamic_array.o

string_and_array: string_and_array.o
	$(CC) -o $@ $(CFLAGS) string_and_array.o

pointeraccess: pointeraccess.o
	$(CC) -o $@ $(CFLAGS) pointeraccess.o

returning_values: returning_values.o
	$(CC) -o $@ $(CFLAGS) returning_values.o

array_of_pointers: array_of_pointers.o
	$(CC) -o $@ $(CFLAGS) array_of_pointers.o

array_of_strings: array_of_strings.o
	$(CC) -o $@ $(CFLAGS) array_of_strings.o

pointer_to_object: pointer_to_object.o
	$(CC) -o $@ $(CFLAGS) pointer_to_object.o

functionparameters: functionparameters.o
	$(CC) -o $@ $(CFLAGS) functionparameters.o

functionpointer: functionpointer.o
	$(CC) -o $@ $(CFLAGS) functionpointer.o

typecast: typecast.o
	$(CC) -o $@ $(CFLAGS) typecast.o


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

clean:
	rm -f *.o
	rm -f `find . -perm /111 -type f`

