# ======================================================================
# Makefile - Copyright (C) 2005-2006 Varol Kaptan
# see LICENSE for more information
# ======================================================================
# vim: set ts=3:

ARCH = $(shell uname -p)
OS   = $(shell uname -s)

GLUT_LIBS = -lglut
GL_LIBS = -lGL

LUAGL = luagl.so
LUAGLUT = luaglut.so
MEMARRAY = memarray.so

CC = gcc -Wall $(CFLAGS)
GCC_OPT_SHARED = -shared
LDSO = gcc $(LFLAGS) $(GCC_OPT_SHARED)

ifeq ($(OS),Darwin)
	LUAGL = luagl.bundle
	LUAGLUT = luaglut.bundle
	MEMARRAY = memarray.bundle
	GCC_OPT_SHARED = -bundle -undefined dynamic_lookup
	GL_LIBS = -framework OpenGL
	# Default to Apple GLUT on Mac OS X (you can still use the others)
	GLUT_LIBS = -framework GLUT
endif

ifeq ($(OS),MINGW32_NT-5.1)
	LUAGL = luagl.dll
	LUAGLUT = luaglut.dll
	MEMARRAY = memarray.dll
	GL_LIBS = -lopengl32
	GLUT_LIBS = -lglu32 -lglut32
	LIBS += -Wl,--export-all-symbols
endif

ifdef USE_FREEGLUT
GLUT_DEFS = -DUSE_FREEGLUT
GLUT_LIBS = -lglut
endif

ifdef USE_OPENGLUT
GLUT_DEFS = -DUSE_OPENGLUT
GLUT_LIBS = -lopenglut
endif

ifdef USE_OPENGLEAN
GLUT_DEFS = -DUSE_OPENGLEAN
GLUT_LIBS = -lopenglean
endif

TARGETS = $(LUAGL) $(LUAGLUT) $(MEMARRAY)

all: $(TARGETS)

#install: $(TARGETS)
#	mkdir -p $(HOME)/lib/lua
#	cp $^ $(HOME)/lib/lua

$(LUAGLUT): luaglut.o
	$(LDSO) -o $@ $< $(LIBS) $(GL_LIBS) $(GLUT_LIBS)

$(LUAGL): luagl.o
	$(LDSO) -o $@ $< $(LIBS) $(GL_LIBS)

$(MEMARRAY): memarray.o
	$(LDSO) -o $@ $< $(LIBS)

menus.h: menus.lua
	xxd -i menus.lua | sed 's/^unsigned/static const unsigned/' >menus.h

luaglut.o: luaglut.c macros.h menus.h
	$(CC) $(DEFS) $(GLUT_DEFS) -c $<

luagl.o: luagl.c macros.h
	$(CC) $(DEFS) -c $<

memarray.o: memarray.c
	$(CC) $(DEFS) -DMEMARRAY_USE_OPENGL -c $<

macros.h: macros.lua
	lua macros.lua >macros.h

clean:
	rm -f *.o $(TARGETS)

devclean: clean
	rm -f macros.h menus.h
