# Standalone makefile for C++ OpenGL program

# Linux libraries:
SYSLIBS= -L/usr/local/lib -L/usr/X11R6/lib \
	-lglut -lGLU -lGL  -lXxf86vm  -lXmu -lX11 -lXext -lXi -ldl -lpthread -lm

# For MacOS X, use this set of libraries instead:
# SYSLIBS= -framework GLUT -framework OpenGL -lobjc 

# Compiler and flags
CCC=g++
CC=gcc
CFLAGS=-I.

# Program pieces
DEST=main
OBJS=main.o \
	ogl/glew.o \
	glui/algebra3.o \
	glui/arcball.o \
	glui/glui_add_controls.o \
	glui/glui_bitmap_img_data.o \
	glui/glui_bitmaps.o \
	glui/glui_button.o \
	glui/glui_checkbox.o \
	glui/glui_column.o \
	glui/glui_commandline.o \
	glui/glui_control.o \
	glui/glui.o \
	glui/glui_edittext.o \
	glui/glui_filebrowser.o \
	glui/glui_listbox.o \
	glui/glui_list.o \
	glui/glui_mouse_iaction.o \
	glui/glui_node.o \
	glui/glui_panel.o \
	glui/glui_radio.o \
	glui/glui_rollout.o \
	glui/glui_rotation.o \
	glui/glui_scrollbar.o \
	glui/glui_separator.o \
	glui/glui_spinner.o \
	glui/glui_statictext.o \
	glui/glui_string.o \
	glui/glui_textbox.o \
	glui/glui_translation.o \
	glui/glui_tree.o \
	glui/glui_treepanel.o \
	glui/glui_window.o \
	glui/quaternion.o \
	glui/viewmodel.o

all: $(DEST)

# Build main from object files
$(DEST): $(OBJS)
	$(CCC) $(CFLAGS) $(OBJS) $(SYSLIBS) -o $(DEST)

clean:
	-rm $(OBJS) $(DEST)

# Trick gmake into compiling .cpp into .o
o=o
OUTFLAG=-o
%.$o: %.cpp 
	$(CCC) $(CFLAGS) -c $< $(OUTFLAG)$@

%.$o: %.C
	$(CCC) $(CFLAGS) -c $< $(OUTFLAG)$@

%.$o: %.c
	$(CC) $(CFLAGS) -c $< $(OUTFLAG)$@

# Trick other makes into compiling .cpp's into .o's.
.SUFFIXES: .cpp .C .c

.cpp.$o:
	$(CCC) $(CFLAGS) -c $< $(OUTFLAG)$@

.C.$o:
	$(CCC) $(CFLAGS) -c $< $(OUTFLAG)$@

.c.$o:
	$(CC) $(CFLAGS) -c $< $(OUTFLAG)$@
