GDC_INCL = .
GDC_LIB  = .

# GDChart requires the gd library - www.boutell.com/gd/
GD_INCL  = ../gd-1.8.4
GD_LIB   = ../gd-1.8.4

# libgd requires libpng
PNG_INCL = ../libpng-1.0.9
PNG_LIB  = ../libpng-1.0.9

# libgd requires zlib
# ZLIB_INCL = ../zlib-1.1.3
# ZLIB_LIB  = ../zlib-1.1.3

# libgd needs libjpeg to produce JPEG images
ifeq ($(HAVE_JPEG),1)
JPEG_INCL = ../jpeg-6b
JPEG_LIB  = ../jpeg-6b
JPEG_DEF  = -DHAVE_JPEG
JPEG_LK   = -ljpeg
endif

LIB_PATHS   = -L$(GD_LIB) 
# if not installed in standard paths (/lib, /usr/lib), or LD_LIBRARY_PATH
# LIB_PATHS   = -L$(GD_LIB) -L$(PNG_LIB) -L$(ZLIB_LIB) -L$(JPEG_LIB)

# NOTE:
# libpng, libz, etc. are usually linked in as dynamic libs
# either use a link line similar to one of these, or set environment LD_LIBRARY_PATH
# these should likely be absolute paths, as resolved at runtime
# LIB_PATHS = $(LIB_PATHS) -R$(PNG_LIB) -R$(ZLIB_LIB)
# LIB_PATHS = $(LIB_PATHS) -Xlinker -rpath -Xlinker $(PNG_LIB) -Xlinker -rpath -Xlinker $(ZLIB_LIB)

CC=gcc -fpic -O

all: gdc_samp1 gdc_samp2 gdc_pie_samp

# --- compile the samples ---
gdc_pie_samp.o: $(GDC_INCL)/gdc.h $(GDC_INCL)/gdcpie.h gdc_pie_samp.c
	$(CC) -I$(GDC_INCL) -c gdc_pie_samp.c

gdc_samp1.o: $(GDC_INCL)/gdc.h $(GDC_INCL)/gdchart.h gdc_samp1.c
	$(CC) -I$(GDC_INCL) $(JPEG_DEF) -c gdc_samp1.c

gdc_samp2.o: $(GDC_INCL)/gdc.h $(GDC_INCL)/gdchart.h gdc_samp2.c
	$(CC) -I$(GDC_INCL) $(JPEG_DEF) -c gdc_samp2.c

# --- link the samples ---
gdc_samp1: gdc.o gdchart.o price_conv.o gdc_samp1.o gifencode.o $(GD_LIB)/libgd.a
	$(CC) -o gdc_samp1 \
			 gdc.o gdchart.o price_conv.o gifencode.o \
			 gdc_samp1.o \
			 $(LIB_PATHS) \
			 -lgd -lz -lpng $(JPEG_LK) -lm

gdc_samp2: gdc.o gdchart.o price_conv.o gdc_samp2.o gifencode.o $(GD_LIB)/libgd.a
	$(CC) -o gdc_samp2 \
			 gdc.o gdchart.o price_conv.o gifencode.o \
			 gdc_samp2.o \
			 $(LIB_PATHS) \
			 -lgd -lz -lpng $(JPEG_LK) -lm

gdc_pie_samp: gdc.o gdc_pie.o price_conv.o gdc_pie_samp.o gifencode.o $(GD_LIB)/libgd.a
	$(CC) -o gdc_pie_samp \
			 gdc.o gdc_pie.o price_conv.o gifencode.o \
			 gdc_pie_samp.o \
			 $(LIB_PATHS) \
			 -lgd -lz -lpng $(JPEG_LK) -lm

# --- compile the lib ---
libgdchart.a: gifencode.o price_conv.o gdc.o gdc_pie.o gdchart.o
	ar rc $@ $?
	ranlib $@

gifencode.o: gifencode.c gifencode.h
	$(CC) -I$(GD_INCL) -c gifencode.c

price_conv.o: price_conv.c
	$(CC) -c price_conv.c

gdc.o: gdc.c $(GDC_INCL)/gdc.h $(GDC_INCL)/gifencode.h
	$(CC) -I$(GD_INCL) -I$(GDC_INCL) $(JPEG_DEF) -c gdc.c

gdc_pie.o: $(GDC_INCL)/gdc.h $(GDC_INCL)/gifencode.h $(GDC_INCL)/gdcpie.h gdc_pie.c
	$(CC) -I$(GD_INCL) -I$(GDC_INCL) $(JPEG_DEF) -c gdc_pie.c

gdchart.o: $(GDC_INCL)/gdc.h $(GDC_INCL)/gifencode.h $(GDC_INCL)/gdchart.h gdchart.c
	$(CC) -I$(GD_INCL) -I$(GDC_INCL) $(JPEG_DEF) -c gdchart.c

# --- supporting libraries ---
# should be compile & installed separately
# $(GD_LIB)/libgd.a:
# 	cd $(GD_LIB) ; make -f Makefile libgd.a

# --- clean ---
clean:
	rm -f *.o gdc_samp1 gdc_samp2 gdc_pie_samp libgdchart.a
#	cd $(GD_LIB) ; make -f Makefile clean

