

# gcc definitions
# ===============
OPTI = -g
CC = gcc $(OPTI)
CXX = g++ $(OPTI)

CFLAGS = -pedantic -Wall -I.
CXXFLAGS = -pedantic -Wall -I.
LDFLAGS = -lm -lpng

# icc definitions
# ===============
#OPTI = -O3 -tpp6 -xiMK -ip
#CXX = icc $(OPTI)
#CC = icc $(OPTI)

#CFLAGS = -I. -I/opt/intel/compiler50/ia32/include -I/opt/intel/compiler50/ia32/substitute_headers
#CXXFLAGS = -I. -I/opt/intel/compiler50/ia32/include -I/opt/intel/compiler50/ia32/substitute_headers
#LDFLAGS = -lm -lpng -lcprts

# base stuff
# ==========

OBJS = mcrandom.o pnginput.o pngoutput.o colourspace.o \
	wavelength.o triangulation.o filter.o

all: scale tri retri imagefilt cost

xy-srgb: $(OBJS) xy-srgb.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

uv-srgb: $(OBJS) uv-srgb.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

rgbfuncs: $(OBJS) rgbfuncs.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

rgbconvert: $(OBJS) rgbconvert.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

ycbcrtorgb: $(OBJS) ycbcrtorgb.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

plotr: $(OBJS) plotr.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

imagefilt: $(OBJS) imagefilt.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

scale: $(OBJS) scale.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

cost: $(OBJS) cost.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

tri: $(OBJS) tri.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

retri: $(OBJS) retri.o
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

#	./tri > testrun.txt
#	graph -T png testrun.txt > testrun.png

clean: 
	rm -f *.o xy-srgb uv-srgb rgbfuncs rgbconvert plotr ycbcrtorgb tri scale

