KDU_PENTIUM = Pentium  # Comment this out to get a generic compilation
# KDU_SOLARIS = V8       # Uncomment this to build for Sparc V8 architecture

KDU_GLIBS =
# KDU_GLIBS += -static -static-libgcc # Uncomment this to get a static build

CC = g++

INCLUDES = -I../common
C_OPT = -O -Wall -Wno-uninitialized $(KDU_GLIBS)
CFLAGS = $(INCLUDES) $(C_OPT)
MMX_OBJS =

# C_OPT += -DGCC_VERSION_LESS_THAN_3 # Uncomment this if compiling on gcc-2.9.x

ifdef KDU_PENTIUM
  MMX_OBJS += gcc_dwt_mmx.o gcc_colour_mmx.o
  C_OPT += -DKDU_PENTIUM_GCC
endif

ifdef KDU_SOLARIS
  C_OPT += -mv8
endif

BIN_DIR = ../../bin
LIB_DIR = ../../lib

all :: libkdu.a

libkdu.a :: block_coding_common.o block_decoder.o block_encoder.o decoder.o encoder.o mq_decoder.o mq_encoder.o blocks.o codestream.o compressed.o kernels.o messaging.o params.o colour.o analysis.o synthesis.o roi.o $(MMX_OBJS)
	ar -rv $(LIB_DIR)/libkdu.a *.o

mq_encoder.o :: ../coding/mq_encoder.cpp
	$(CC) $(CFLAGS) -c ../coding/mq_encoder.cpp \
	      -o mq_encoder.o
mq_decoder.o :: ../coding/mq_decoder.cpp
	$(CC) $(CFLAGS) -c ../coding/mq_decoder.cpp \
	      -o mq_decoder.o

block_coding_common.o :: ../coding/block_coding_common.cpp
	$(CC) $(CFLAGS) -c ../coding/block_coding_common.cpp \
	      -o block_coding_common.o
block_encoder.o :: ../coding/block_encoder.cpp
	$(CC) $(CFLAGS) -c ../coding/block_encoder.cpp \
	      -o block_encoder.o
block_decoder.o :: ../coding/block_decoder.cpp
	$(CC) $(CFLAGS) -c ../coding/block_decoder.cpp \
	      -o block_decoder.o

encoder.o :: ../coding/encoder.cpp
	$(CC) $(CFLAGS) -c ../coding/encoder.cpp \
	      -o encoder.o
decoder.o :: ../coding/decoder.cpp
	$(CC) $(CFLAGS) -c ../coding/decoder.cpp \
	      -o decoder.o

codestream.o :: ../compressed/codestream.cpp
	$(CC) $(CFLAGS) -c ../compressed/codestream.cpp \
	      -o codestream.o
compressed.o :: ../compressed/compressed.cpp
	$(CC) $(CFLAGS) -c ../compressed/compressed.cpp \
	      -o compressed.o
blocks.o :: ../compressed/blocks.cpp
	$(CC) $(CFLAGS) -c ../compressed/blocks.cpp \
	      -o blocks.o

kernels.o :: ../kernels/kernels.cpp
	$(CC) $(CFLAGS) -c ../kernels/kernels.cpp \
	      -o kernels.o

messaging.o :: ../messaging/messaging.cpp
	$(CC) $(CFLAGS) -c ../messaging/messaging.cpp \
	      -o messaging.o

params.o :: ../parameters/params.cpp
	$(CC) $(CFLAGS) -c ../parameters/params.cpp \


colour.o :: ../transform/colour.cpp
	$(CC) $(CFLAGS) -c ../transform/colour.cpp \
	      -o colour.o
analysis.o :: ../transform/analysis.cpp
	$(CC) $(CFLAGS) -c ../transform/analysis.cpp \
	      -o analysis.o
synthesis.o :: ../transform/synthesis.cpp
	$(CC) $(CFLAGS) -c ../transform/synthesis.cpp \
	      -o synthesis.o

roi.o :: ../roi/roi.cpp
	$(CC) $(CFLAGS) -c ../roi/roi.cpp \
	      -o roi.o

ifdef KDU_PENTIUM
  gcc_dwt_mmx.o :: ../transform/gcc_dwt_mmx.s
	as ../transform/gcc_dwt_mmx.s \
	      -o gcc_dwt_mmx.o

  gcc_colour_mmx.o :: ../transform/gcc_colour_mmx.s
	as ../transform/gcc_colour_mmx.s \
	      -o gcc_colour_mmx.o
endif # End of Pentium section.

