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 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++ $(CFLAGS) -DWIN_GLX -DCON_GL1 $(COMMON_SRC) glutil_gl1.cpp glxbackend.cpp -lGL $(COMMON_LD) -o $@

egltest: $(COMMON_SRC) $(COMMON_HDR) glutil_gl1.cpp eglbackend.cpp eglbackend.h
	g++ $(CFLAGS) -DWIN_EGL -DCON_GL1 $(COMMON_SRC) glutil_gl1.cpp eglbackend.cpp -lEGL -lGL $(COMMON_LD) -o $@

glx2test: $(COMMON_SRC) $(COMMON_HDR) glutil_gl2.cpp glxbackend.cpp glxbackend.h
	g++ $(CFLAGS) -DWIN_GLX -DCON_GL1 $(COMMON_SRC) glutil_gl2.cpp glxbackend.cpp -lGL $(COMMON_LD) -o $@

egl2test: $(COMMON_SRC) $(COMMON_HDR) glutil_gl2.cpp eglbackend.cpp eglbackend.h
	g++ $(CFLAGS) -DWIN_EGL -DCON_GL1 $(COMMON_SRC) glutil_gl2.cpp eglbackend.cpp -lEGL -lGL $(COMMON_LD) -o $@

glestest: $(COMMON_SRC) $(COMMON_HDR) glutil_gl2.cpp eglbackend.cpp eglbackend.h
	g++ $(CFLAGS) -DWIN_EGL -DCON_GLES2 $(COMMON_SRC) glutil_gl2.cpp eglbackend.cpp -lEGL -lGLESv2 $(COMMON_LD) -o $@

eglinfo: eglinfo.c
	gcc $(CFLAGS) eglinfo.c -lEGL -lGL -lX11 -o $@

clean:
	rm -f $(BINARIES)