1CC=gcc
2# gcc 2.7.1 or better is required
3# CFLAGS=
4# CFLAGS=-g -ansi -pedantic
5
6# ----- build path -----
7GDC_INCL=./
8GDC_LD=./
9GDC_LIB=libgdc.a
10
11# ----- install locations -----
12PREFIX_INC = /usr/local/include
13PREFIX_LIB = /usr/local/lib
14
15# INCLUDEDIRS=-I. -I/usr/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/include/X11 -I/usr/local/include
16
17# ----- lib gd -----
18# GDChart requires the gd library - www.boutell.com/gd/
19# gd 2.0.28 or better is required (GIF support has returned to libgd)
20# if it's not installed in a standard location edit these lines for your installation
21GD_INCL=/usr/local/include/
22GD_LD=/usr/local/lib/
23GD_LIB=libgd.so
24# a static libgd is also available
25# GD_LIB=libgd.a
26
27# ----- lib png -----
28# libgd requires libpng
29# if it's not installed in a standard location edit these lines for your installation
30# PNG_INCL = ../libpng-1.0.8
31# PNG_LD   = ../libpng-1.0.8
32
33# ----- lib z -----
34# libgd requires zlib
35# if it's not installed in a standard location edit these lines for your installation
36# ZLIB_INCL = ../zlib-1.1.3
37# ZLIB_LD   = ../zlib-1.1.3
38
39# ----- lib jpeg -----
40# libgd optionally uses libjpeg to produce JPEG images
41# JPEG_INCL = ../libjpeg
42# JPEG_LD   = ../libjpeg
43JPEG_DEF  = -DHAVE_JPEG
44JPEG_LK   = -ljpeg
45
46# libgd optionally uses libfreetype to use TTFs
47# FT_LD  = /usr/local/lib
48FT_DEF    = -DHAVE_LIBFREETYPE
49FT_LK     = -lfreetype
50
51DEFS = $(FT_DEF) $(JPEG_DEF)
52LIBS = $(FT_LK) $(JPEG_LK)
53
54LIB_PATHS   = -L$(GD_LD) -L$(GDC_LD)
55# if not installed in standard paths (/lib, /usr/lib), or LD_LIBRARY_PATH
56# LIB_PATHS   = -L$(GD_LD) -L$(PNG_LD) -L$(ZLIB_LD) -L$(JPEG_LD)
57
58# NOTE:
59# libpng, libz, etc. are usually linked in as dynamic libs
60# either use a link line similar to one of these, or set environment LD_LIBRARY_PATH
61# these should likely be absolute paths, as resolved at runtime
62# LIB_PATHS = $(LIB_PATHS) -R$(PNG_LD) -R$(ZLIB_LD)
63# LIB_PATHS = $(LIB_PATHS) -Xlinker -rpath -Xlinker $(PNG_LD) -Xlinker -rpath -Xlinker $(ZLIB_LD)
64
65
66all: libgdc.a gdc_samp1 gdc_samp2 gdc_pie_samp ft_samp
67
68# --- compile the samples ---
69gdc_pie_samp.o: $(GDC_INCL)gdc.h $(GDC_INCL)gdcpie.h gdc_pie_samp.c
70	$(CC) $(CFLAGS) -I$(GDC_INCL) $(DEFS) -c gdc_pie_samp.c
71
72gdc_samp1.o: $(GDC_INCL)gdc.h $(GDC_INCL)gdchart.h gdc_samp1.c
73	$(CC) $(CFLAGS) -I$(GDC_INCL) $(DEFS) -c gdc_samp1.c
74
75gdc_samp2.o: $(GDC_INCL)gdc.h $(GDC_INCL)gdchart.h gdc_samp2.c
76	$(CC) $(CFLAGS) -I$(GDC_INCL) $(DEFS) -c gdc_samp2.c
77
78ft_samp.o: $(GDC_INCL)gdc.h $(GDC_INCL)gdchart.h ft_samp.c
79	$(CC) $(CFLAGS) -I$(GDC_INCL) $(DEFS) -c ft_samp.c
80
81# --- link the samples ---
82gdc_samp1: $(GDC_LD)libgdc.a gdc_samp1.o $(GD_LD)/$(GD_LIB) $(GDC_LD)/$(GDC_LIB)
83	$(CC) -o gdc_samp1 \
84			 gdc_samp1.o \
85			 $(LIB_PATHS) \
86			 -lgdc -lgd -lz -lpng $(LIBS) -lm
87
88gdc_samp2: $(GDC_LD)libgdc.a gdc_samp2.o $(GD_LD)/$(GD_LIB) $(GDC_LD)/$(GDC_LIB)
89	$(CC) -o gdc_samp2 \
90			 gdc.o gdchart.o price_conv.o \
91			 gdc_samp2.o \
92			 $(LIB_PATHS) \
93			 -lgdc -lgd -lz -lpng $(LIBS) -lm
94
95gdc_pie_samp: $(GDC_LD)libgdc.a gdc_pie_samp.o $(GD_LD)/$(GD_LIB) $(GDC_LD)/$(GDC_LIB)
96	$(CC) -o gdc_pie_samp \
97			 gdc.o gdc_pie.o price_conv.o \
98			 gdc_pie_samp.o \
99			 $(LIB_PATHS) \
100			 -lgdc -lgd -lz -lpng $(LIBS) -lm
101
102ft_samp: $(GDC_LD)libgdc.a ft_samp.o $(GD_LD)/$(GD_LIB) $(GDC_LD)/$(GDC_LIB)
103	$(CC) -o ft_samp \
104			 gdc.o gdchart.o price_conv.o \
105			 ft_samp.o \
106			 $(LIB_PATHS) \
107			 -lgdc -lgd -lz -lpng $(LIBS) -lm
108
109# --- compile the lib ---
110gdc.h: $(GD_INCL)gd.h $(GD_INCL)gdfonts.h $(GD_INCL)gdfontt.h $(GD_INCL)gdfontmb.h $(GD_INCL)gdfontg.h $(GD_INCL)gdfontl.h $(GDC_INCL)array_alloc.h
111
112price_conv.o: price_conv.c
113	$(CC) $(CFLAGS) -c price_conv.c
114
115gdc.o: gdc.c $(GDC_INCL)gdc.h
116	$(CC) $(CFLAGS) -I$(GD_INCL) -I$(GDC_INCL) $(DEFS) -c gdc.c
117
118gdc_pie.o: $(GDC_INCL)gdc.h $(GDC_INCL)gdcpie.h gdc_pie.c
119	$(CC) $(CFLAGS) -I$(GD_INCL) -I$(GDC_INCL) $(DEFS) -c gdc_pie.c
120
121gdchart.o: $(GDC_INCL)gdc.h $(GDC_INCL)gdchart.h gdchart.c
122	$(CC) $(CFLAGS) -I$(GD_INCL) -I$(GDC_INCL) $(DEFS) -c gdchart.c
123
124array_alloc.o: array_alloc.c array_alloc.h
125	$(CC) $(CFLAGS) -c array_alloc.c
126
127libgdc.a: price_conv.o gdc.o gdc_pie.o gdchart.o array_alloc.o
128	ar cr libgdc.a gdc.o gdchart.o gdc_pie.o price_conv.o array_alloc.o
129	ranlib libgdc.a
130
131# --- supporting libraries ---
132# should be compile & installed separately
133# $(GD_LD)/$(GD_LIB):
134# 	cd $(GD_LD) ; make -f Makefile $(GD_LIB)
135
136# ----- install -----
137install: gdc.h gdchart.h gdcpie.h libgdc.a
138	cp gdc.h  gdchart.h  gdcpie.h $(PREFIX_INC)/
139	cp libgdc.a $(PREFIX_LIB)/
140
141# --- clean ---
142clean:
143	rm -f *.o *.a gdc_samp1 gdc_samp2 gdc_pie_samp ft_samp
144
145