We use glXGetProcAddress to load glXCreateContextAttribsARB ourselves,
so GLX_GLXEXT_PROTOTYPES is not needed.
| ... | ... | @@ -9,6 +9,7 @@ else ifeq ($(shell uname),Darwin) | 
| 9 | 9 | MICROGLUT = MicroGlut.m | 
| 10 | 10 | endif | 
| 11 | 11 |  | 
| 12 | +PROG = tsbk07 | |
| 12 | 13 | COMMON = \ | 
| 13 | 14 | common/GL_utilities.c \ | 
| 14 | 15 | common/LoadTGA.c \ | 
| ... | ... | @@ -35,9 +36,9 @@ LDLIBS += \ | 
| 35 | 36 | $(LDLIBS_$(OS)) | 
| 36 | 37 |  | 
| 37 | 38 | # The below is equivalent to the GNU Make implicit rule for | 
| 38 | -# tsbk07: $(COMMON) | |
| 39 | -tsbk07: tsbk07.cpp $(COMMON) | |
| 40 | - g++ $(CXXFLAGS) $(CPPFLAGS) tsbk07.cpp $(COMMON) $(LDLIBS) -o tsbk07 | |
| 39 | +# $(PROG): $(COMMON) | |
| 40 | +$(PROG): $(PROG).cpp $(COMMON) | |
| 41 | + g++ $(CXXFLAGS) $(CPPFLAGS) $(PROG).cpp $(COMMON) $(LDLIBS) -o $(PROG) | |
| 41 | 42 |  | 
| 42 | 43 | clean: | 
| 43 | - rm tsbk07 | |
| 44 | + rm $(PROG) | 
The main rule is now equivalent to a GNU Make implicit rule which is a
good indication that it follows best practices.
| ... | ... | @@ -28,12 +28,12 @@ LDLIBS_Mac += \ | 
| 28 | 28 | -framework Cocoa \ | 
| 29 | 29 | -framework OpenGL | 
| 30 | 30 | LDLIBS += \ | 
| 31 | - $(LDLIBS_$(OS)) \ | |
| 32 | - -lm \ | |
| 33 | - -lstdc++ | |
| 31 | + $(LDLIBS_$(OS)) | |
| 34 | 32 |  | 
| 33 | +# The below is equivalent to the GNU Make implicit rule for | |
| 34 | +# tsbk07: $(COMMON) | |
| 35 | 35 | tsbk07: tsbk07.cpp $(COMMON) | 
| 36 | - gcc $(CXXFLAGS) -o tsbk07 $(CPPFLAGS) tsbk07.cpp $(COMMON) $(LDLIBS) | |
| 36 | + g++ $(CXXFLAGS) $(CPPFLAGS) tsbk07.cpp $(COMMON) $(LDLIBS) -o tsbk07 | |
| 37 | 37 |  | 
| 38 | 38 | clean: | 
| 39 | 39 | rm tsbk07 | 
| ... | ... | @@ -1,17 +1,35 @@ | 
| 1 | +ifeq ($(OS),Windows_NT) | |
| 2 | + OS = Windows | |
| 3 | + MICROGLUT = MicroGlut.c | |
| 4 | +else ifeq ($(shell uname),Linux) | |
| 5 | + OS = Linux | |
| 6 | + MICROGLUT = MicroGlut.c | |
| 7 | +else ifeq ($(shell uname),Darwin) | |
| 8 | + OS = Mac | |
| 9 | + MICROGLUT = MicroGlut.m | |
| 10 | +endif | |
| 11 | + | |
| 1 | 12 | COMMON = \ | 
| 2 | 13 | common/GL_utilities.c \ | 
| 3 | 14 | common/LoadTGA.c \ | 
| 4 | - common/Linux/MicroGlut.c | |
| 15 | + common/$(OS)/$(MICROGLUT) | |
| 5 | 16 | CPPFLAGS += \ | 
| 6 | 17 | -Icommon \ | 
| 7 | - -Icommon/Linux \ | |
| 18 | + -Icommon/$(OS) \ | |
| 8 | 19 | -DGL_GLEXT_PROTOTYPES | 
| 9 | 20 | CXXFLAGS += \ | 
| 10 | 21 | -Wall | 
| 11 | -LDLIBS += \ | |
| 22 | +LDLIBS_Windows += \ | |
| 23 | + -lopengl32 | |
| 24 | +LDLIBS_Linux += \ | |
| 12 | 25 | -lXt \ | 
| 13 | 26 | -lX11 \ | 
| 14 | - -lGL \ | |
| 27 | + -lGL | |
| 28 | +LDLIBS_Mac += \ | |
| 29 | + -framework Cocoa \ | |
| 30 | + -framework OpenGL | |
| 31 | +LDLIBS += \ | |
| 32 | + $(LDLIBS_$(OS)) \ | |
| 15 | 33 | -lm \ | 
| 16 | 34 | -lstdc++ | 
| 17 | 35 |  | 
| ... | ... | @@ -1,11 +1,22 @@ | 
| 1 | -# set this variable to the director in which you saved the common files | |
| 2 | -commondir = common/ | |
| 1 | +COMMON = \ | |
| 2 | + common/GL_utilities.c \ | |
| 3 | + common/LoadTGA.c \ | |
| 4 | + common/Linux/MicroGlut.c | |
| 5 | +CPPFLAGS += \ | |
| 6 | + -Icommon \ | |
| 7 | + -Icommon/Linux \ | |
| 8 | + -DGL_GLEXT_PROTOTYPES | |
| 9 | +CXXFLAGS += \ | |
| 10 | + -Wall | |
| 11 | +LDLIBS += \ | |
| 12 | + -lXt \ | |
| 13 | + -lX11 \ | |
| 14 | + -lGL \ | |
| 15 | + -lm \ | |
| 16 | + -lstdc++ | |
| 3 | 17 |  | 
| 4 | -all : tsbk07 | |
| 18 | +tsbk07: tsbk07.cpp $(COMMON) | |
| 19 | + gcc $(CXXFLAGS) -o tsbk07 $(CPPFLAGS) tsbk07.cpp $(COMMON) $(LDLIBS) | |
| 5 | 20 |  | 
| 6 | -tsbk07 : tsbk07.cpp $(commondir)GL_utilities.c $(commondir)LoadTGA.c $(commondir)Linux/MicroGlut.c | |
| 7 | - gcc -Wall -o tsbk07 -I$(commondir) -Icommon/Linux -DGL_GLEXT_PROTOTYPES tsbk07.cpp $(commondir)GL_utilities.c $(commondir)LoadTGA.c $(commondir)Linux/MicroGlut.c -lXt -lX11 -lGL -lm -lstdc++ | |
| 8 | - | |
| 9 | -clean : | |
| 21 | +clean: | |
| 10 | 22 | rm tsbk07 | 
| 11 | - | 
This is the most common traditional name.
| 1 | 1 | new file mode 100644 | 
| ... | ... | @@ -0,0 +1,11 @@ | 
| 1 | +# set this variable to the director in which you saved the common files | |
| 2 | +commondir = common/ | |
| 3 | + | |
| 4 | +all : tsbk07 | |
| 5 | + | |
| 6 | +tsbk07 : tsbk07.cpp $(commondir)GL_utilities.c $(commondir)LoadTGA.c $(commondir)Linux/MicroGlut.c | |
| 7 | + gcc -Wall -o tsbk07 -I$(commondir) -Icommon/Linux -DGL_GLEXT_PROTOTYPES tsbk07.cpp $(commondir)GL_utilities.c $(commondir)LoadTGA.c $(commondir)Linux/MicroGlut.c -lXt -lX11 -lGL -lm -lstdc++ | |
| 8 | + | |
| 9 | +clean : | |
| 10 | + rm tsbk07 | |
| 11 | + |