#!/bin/csh # # $Id: Makefile,v 1.1 2011/10/19 03:24:40 jlang Exp $ # # $Log: Makefile,v $ # Revision 1.1 2011/10/19 03:24:40 jlang # Added code for lecture 7 # # CXX = g++ ifndef OSTYPE OSTYPE=cygnus # OSTYPE=linux-gnu endif ifeq ($(OSTYPE),linux-gnu) INCDIR = LDLIBDIR = # -L/usr/X11R6/lib LDLIBS = # -lglut -lGLU -lGL -lm # -lglui else LDLIBS = # -lglut32 -lglu32 -lopengl32 -lm # -lglui endif .PHONY: all virtual_prog dynamic_prog clean SRC = example.cpp bounds.cpp aa_box.cpp circle.cpp obbox.cpp point2d.cpp vector2d.cpp SRC_VIRTUAL = virtual.cpp bounds.cpp aa_box.cpp circle.cpp obbox.cpp point2d.cpp vector2d.cpp SRC_DYNAMIC = dynamic_cast.cpp bounds.cpp aa_box.cpp circle.cpp obbox.cpp point2d.cpp vector2d.cpp # Default build : all: dependencies example virtual_prog: virtual_dependencies virtual dynamic_prog: dynamic_dependencies dynamic dependencies: $(SRC:%.cpp=%.d) $(SRC:%.c=%.d) virtual_dependencies: $(SRC_VIRTUAL:%.cpp=%.d) $(SRC_VIRTUAL:%.c=%.d) dynamic_dependencies: $(SRC_DYNAMIC:%.cpp=%.d) $(SRC_DYNAMIC:%.c=%.d) # sed line based on John Graham-Cumming, Dependency Management, # Dr.Dobb's Portal, Apr 01, 2006. %.d:%.cpp $(CXX) $(INCDIR) -MG -MM $< | sed 's,\($*\.o\)[ :]*\(.*\), $@ : $$\(wildcard \2\)\n\1 : \2,g' > $@ -include $(SRC:.cpp=.d) -include $(SRC_VIRTUAL:.cpp=.d) -include $(SRC_DYNAMIC:.cpp=.d) example: $(SRC:%.cpp=%.o) $(CXX) $(LDLIBDIR) -o $@ $^ $(LDLIBS) virtual: $(SRC_VIRTUAL:%.cpp=%.o) $(CXX) $(LDLIBDIR) -o $@ $^ $(LDLIBS) dynamic: $(SRC_DYNAMIC:%.cpp=%.o) $(CXX) $(LDLIBDIR) -o $@ $^ $(LDLIBS) %.o:%.c $(CC) $(INCDIR) -c $*.c -o $@ %.o:%.cpp $(CXX) $(INCDIR) -c $*.cpp -o $@ clean: rm -f *~ *.o *.d