
TARGETS = combine_program combine_info

UNAME := $(shell uname)

COMBINE_PROGRAM_SRCS = combine_program.c
COMBINE_PROGRAM_OBJS = $(COMBINE_PROGRAM_SRCS:.c=.o)

COMBINE_INFO_SRCS = combine_info.c
COMBINE_INFO_OBJS = $(COMBINE_INFO_SRCS:.c=.o)

CC = gcc
CFLAGS += -Wall
ifdef CG_INC_PATH
  CFLAGS += -I"$(CG_INC_PATH)"
endif
ifdef CG_LIB_PATH
  CLINKFLAGS = -L"$(CG_LIB_PATH)"
endif

ifeq ($(UNAME), Darwin)
  CLINKFLAGS += -framework OpenGL -framework GLUT -framework Cg
else
  ifeq ($(findstring CYGWIN, $(UNAME)), CYGWIN)
    CFLAGS += -D_WIN32 -DGLUT_DISABLE_ATEXIT_HACK
    CFLAGS += -I"C:\Program Files\NVIDIA Corporation\Cg\include"
    CLINKFLAGS += -L"C:\Program Files\NVIDIA Corporation\Cg\lib"
    CLINKFLAGS += -lcg -lcgGL -lglut32 -lglu32 -lopengl32
    EXE = .exe
  else
    CLINKFLAGS += -L/usr/X11R6/lib64 -L/usr/X11R6/lib
    CLINKFLAGS += -lCg -lCgGL -lglut -lGLU -lGL -lXi -lXmu -lX11 -lm -lpthread
  endif
endif

BINARIES := $(TARGETS:=$(EXE))

all: $(BINARIES)

combine_program$(EXE) : $(COMBINE_PROGRAM_OBJS)
	$(CC) $(CFLAGS) -o $@ $(COMBINE_PROGRAM_OBJS) $(CLINKFLAGS)

combine_info$(EXE) : $(COMBINE_INFO_OBJS)
	$(CC) $(CFLAGS) -o $@ $(COMBINE_INFO_OBJS) $(CLINKFLAGS)

run: all
	./combine_program$(EXE)
	./combine_program$(EXE) -glsl
	./combine_info$(EXE)

clean:
	$(RM) $(BINARIES) $(COMBINE_PROGRAM_OBJS) $(COMBINE_INFO_OBJS)

clobber: clean
	$(RM) *.bak *.o *~

.PHONY: all run clean clobber
