# Makefile 3: Using built-in macros ################################### # Overriding default macros # For compiling C files CC = gcc CFLAGS = -Wall -g # For compiling C++ files CXX = g++ CXXFLAGS = -Wall -g # For linking LDFLAGS = # For creating a library AR = ar ARFLAGS = rc # End of defaults ################################### ################################### # Let's define sone additional variables RANLIB = ranlib PROGRAMS = main-stack main-queue LIBS = libdata.a STACK_OBJ = main-stack.o stack.o ################################### all: $(PROGRAMS) queue.o: queue.c queue.h $(CC) $(CFLAGS) -c $< stack.o: stack.c stack.h $(CC) $(CFLAGS) -c $< main-queue.o: main-queue.c queue.h $(CC) $(CFLAGS) -c $< main-stack.o: main-stack.c stack.h $(CC) $(CFLAGS) -c $< libdata.a: queue.o stack.o $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ main-stack: $(STACK_OBJ) $(CC) $(LDFLAGS) -o $@ $(STACK_OBJ) main-queue: main-queue.o $(LIBS) $(CC) $(LDFLAGS) -o $@ $< -L. -ldata clean: rm -f *.o $(PROGRAMS) $(LIBS)