CC = gcc
CFLAGS = -O2 -Wall
LFLAGS =
AS = as
LD = ld
X86_AS_FLAGS = --32
X86_LD_FLAGS = -melf_i386
ARM_AS_FLAGS =
ARM_LD_FLAGS =

all:   input.bin pcx_to_bin bin_to_pcx

output:	output.pcx

output.pcx:	output.bin bin_to_pcx
	./bin_to_pcx < output.bin > output.pcx

x86:	input.bin x86_file_io x86_convolve

arm:	input.bin arm_file_io arm_convolve

input.bin:	pcx_to_bin
	./pcx_to_bin < butterfinger.pcx > input.bin

x86_file_io:	x86_file_io.o
	$(LD) $(X86_LD_FLAGS) -o x86_file_io x86_file_io.o

x86_file_io.o:	x86_file_io.s
	$(AS) $(X86_AS_FLAGS) -o x86_file_io.o x86_file_io.s


x86_convolve:	x86_convolve.o
	$(LD) $(X86_LD_FLAGS) -o x86_convolve x86_convolve.o

x86_convolve.o:	x86_convolve.s
	$(AS) $(X86_AS_FLAGS) -o x86_convolve.o x86_convolve.s


arm_file_io:	arm_file_io.o
	$(LD) $(ARM_LD_FLAGS) -o arm_file_io arm_file_io.o

arm_file_io.o:	arm_file_io.s
	$(AS) $(ARM_AS_FLAGS) -o arm_file_io.o arm_file_io.s


arm_convolve:	arm_convolve.o
	$(LD) $(ARM_LD_FLAGS) -o arm_convolve arm_convolve.o

arm_convolve.o:	arm_convolve.s
	$(AS) $(ARM_AS_FLAGS) -o arm_convolve.o arm_convolve.s



pcx_to_bin:	pcx_to_bin.o
		$(CC) $(LFLAGS) -o pcx_to_bin pcx_to_bin.o

pcx_to_bin.o:	pcx_to_bin.c
		$(CC) $(CFLAGS) -c pcx_to_bin.c

bin_to_pcx:	bin_to_pcx.o
	$(CC) $(LFLAGS) -o bin_to_pcx bin_to_pcx.o

bin_to_pcx.o:	bin_to_pcx.c
	$(CC) $(CFLAGS) -c bin_to_pcx.c

submit:	
	tar -czvf project1_submit.tar.gz arm_convolve.s x86_convolve.s arm_file_io.s Makefile README x86_file_io.s


clean:	       
	       rm -f *~ *.o pcx_to_bin bin_to_pcx input.bin output.bin output.pcx \
			x86_file_io x86_convolve arm_file_io arm_convolve

