#
# Additional compilation flags may be passed via CFLAGS, CXXFLAGS and CLINKFLAGS
#
# Linux:
#   make CFLAGS=-m32
#   make CFLAGS=-m64
#
# Ubuntu 9.04 64-bit
#   make CFLAGS=-m32 CXXFLAGS=-m32 CLINKFLAGS="-L/lib32 -L/usr/lib32 -Wl,-rpath-link,/lib32:/usr/lib32"
#
# OSX:
#   make 'CFLAGS=-arch ppc'    'CXXFLAGS=-arch ppc'
#   make 'CFLAGS=-arch i386'   'CXXFLAGS=-arch i386'
#   make 'CFLAGS=-arch x86_64' 'CXXFLAGS=-arch x86_64'

UNAME := $(shell uname)

C_SOURCE   := trace.c traceOutput.c traceTime.c traceFilter.c b64.c
OBJ        := $(C_SOURCE:.c=.o) 
BIN        := libtrace.so

CC         =  gcc
C_FLAGS    += -Wall

ifdef CG_INC_PATH
  C_FLAGS  += -I"$(CG_INC_PATH)"
endif

ifeq ($(UNAME), Darwin)
  BIN = libtrace.dylib
  LINKFLAGS  += -dynamiclib
else
  LINKFLAGS  += -shared
  ifeq ($(findstring CYGWIN, $(UNAME)), CYGWIN)
    BIN = trace.dll
    C_FLAGS    += -D_WIN32
    C_FLAGS    += -I"C:\Program Files\NVIDIA Corporation\Cg\include"
  else
    ifeq ($(UNAME), SunOS)
      C_FLAGS    += -fPIC
    else
      C_FLAGS    += -fPIC
      LINKFLAGS  += -ldl
    endif
  endif
endif

override CFLAGS := $(CFLAGS) $(C_FLAGS)

all: trace

trace: $(OBJ)
	$(CC) $(CFLAGS) $(OBJ) -o $(BIN) $(LINKFLAGS) $(CLINKFLAGS)

test:

run: all

clean:
	$(RM) $(BIN) $(OBJ) 

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

.PHONY: all test run clean clobber
