EXECUTABLE_FILES =	CropPNG \
			MixPNGChannels \
			PNGToAdaptiveBitmapSource \
			PNGToBitmapSource \
			PNGToRLEBitmapSource \
			QuantizePNG \
			RemapPNG


CC = gcc
LD = gcc

DEFINES =	-DRGBA32Pixels

C_OPTS =	-std=c99 -g

LD_OPTS =	-g

LIBS = -lm

SOURCE_DIR = ..
BUILD_DIR = Build

ALL_CFLAGS = $(C_OPTS) $(COMMON_OPTS) $(DEFINES) $(CFLAGS)
ALL_LDFLAGS = $(LD_OPTS) $(LDFLAGS)

AUTODEPENDENCY_CFLAGS=-MMD -MF$(@:.o=.d) -MT$@

all: $(EXECUTABLE_FILES)

.SUFFIXES: .o .c

.PHONY: clean

CropPNG: Build/Tools/CropPNG.o Build/Bitmap.o
	$(LD) $(ALL_LDFLAGS) -o $@ $^ $(LIBS)

MixPNGChannels: Build/Tools/MixPNGChannels.o Build/Bitmap.o
	$(LD) $(ALL_LDFLAGS) -o $@ $^ $(LIBS)

PNGToAdaptiveBitmapSource: Build/Tools/PNGToAdaptiveBitmapSource.o Build/Bitmap.o Build/DrawingPixels.o Build/RLEBitmap.o
	$(LD) $(ALL_LDFLAGS) -o $@ $^ $(LIBS)

PNGToBitmapSource: Build/Tools/PNGToBitmapSource.o Build/Bitmap.o Build/DrawingPixels.o
	$(LD) $(ALL_LDFLAGS) -o $@ $^ $(LIBS)

PNGToRLEBitmapSource: Build/Tools/PNGToRLEBitmapSource.o Build/Bitmap.o Build/DrawingPixels.o Build/RLEBitmap.o
	$(LD) $(ALL_LDFLAGS) -o $@ $^ $(LIBS)

QuantizePNG: Build/Tools/QuantizePNG.o Build/Bitmap.o Build/DrawingPixels.o Build/DrawingBitmaps.o
	$(LD) $(ALL_LDFLAGS) -o $@ $^ $(LIBS)

RemapPNG: Build/Tools/RemapPNG.o Build/Bitmap.o Build/DrawingPixels.o Build/DrawingBitmaps.o
	$(LD) $(ALL_LDFLAGS) -o $@ $^ $(LIBS)

$(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.c
	@mkdir -p $(dir $@)
	$(CC) $(ALL_CFLAGS) $(AUTODEPENDENCY_CFLAGS) -c $< -o $@


clean:
	rm -rf $(EXECUTABLE_FILES) $(BUILD_DIR)

rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))

-include $(call rwildcard,$(BUILD_DIR),*.d)
