Some more Makefile magic to avoid repeating the source files which make up a binary
[gltest.git] / Makefile
index 52a6495d67aa3a1fc1876fc81fb14e0afdb39637..d9c3030e00eaba39f569752ea9670bfe19a252db 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,23 +1,35 @@
-FLAGS := -Wall -g -O1
+CFLAGS := -Wall -g -O1
 
 COMMON_SRC = gltest.cpp glwindow.cpp
 COMMON_HDR = glwindow.h glutil.h
+COMMON_LD  = -lX11 -lboost_program_options
 
-BINARIES := glxtest egltest glestest eglinfo
+BINARIES := glxtest egltest glx2test egl2test glestest eglinfo
 
 all: $(BINARIES)
 
+# choices (not all combinations are valid)
+# windowing system: WIN_{GLX,EGL}
+# the kind of context: CON_{GL1,GLES2}
+# the API used to draw: compile in glutil_gl1.cpp or glutil_gl2.cpp
+
 glxtest: $(COMMON_SRC) $(COMMON_HDR) glutil_gl1.cpp glxbackend.cpp glxbackend.h
-       g++ $(FLAGS) -DUSE_GLX $(COMMON_SRC) glutil_gl1.cpp glxbackend.cpp -lGL -lX11 -lboost_program_options -o glxtest
+       g++ $(CFLAGS) -DWIN_GLX -DCON_GL1 $^ -lGL $(COMMON_LD) -o $@
 
 egltest: $(COMMON_SRC) $(COMMON_HDR) glutil_gl1.cpp eglbackend.cpp eglbackend.h
-       g++ $(FLAGS) -DUSE_EGL $(COMMON_SRC) glutil_gl1.cpp eglbackend.cpp -lEGL -lGL -lX11 -lboost_program_options -o egltest
+       g++ $(CFLAGS) -DWIN_EGL -DCON_GL1 $^ -lEGL -lGL $(COMMON_LD) -o $@
+
+glx2test: $(COMMON_SRC) $(COMMON_HDR) glutil_gl2.cpp glxbackend.cpp glxbackend.h
+       g++ $(CFLAGS) -DWIN_GLX -DCON_GL1 $^ -lGL $(COMMON_LD) -o $@
+
+egl2test: $(COMMON_SRC) $(COMMON_HDR) glutil_gl2.cpp eglbackend.cpp eglbackend.h
+       g++ $(CFLAGS) -DWIN_EGL -DCON_GL1 $^ -lEGL -lGL $(COMMON_LD) -o $@
 
 glestest: $(COMMON_SRC) $(COMMON_HDR) glutil_gl2.cpp eglbackend.cpp eglbackend.h
-       g++ $(FLAGS) -DUSE_EGL -DUSE_GLES $(COMMON_SRC) glutil_gl2.cpp eglbackend.cpp -lEGL -lGLESv2 -lX11 -lboost_program_options -o glestest
+       g++ $(CFLAGS) -DWIN_EGL -DCON_GLES2 $^ -lEGL -lGLESv2 $(COMMON_LD) -o $@
 
 eglinfo: eglinfo.c
-       gcc $(FLAGS) eglinfo.c -lEGL -lGL -lX11 -o eglinfo
+       gcc $(CFLAGS) $^ -lEGL -lGL -lX11 -o $@
 
 clean:
        rm -f $(BINARIES)