LD = ld 
AS = as 
CC = gcc
CFLAGS = -Wall -O2 -g
LFLAGS = 
THUMBLFLAGS = --thumb-entry=_start

all:	hello_exit_arm hello_world_arm print_string_arm print_string_arm2 \
	hello_exit_thumb hello_world_thumb print_string_thumb \
	hello_world hello_world.static


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

hello_world.static:	hello_world.o
	$(CC) $(LFLAGS) -static -o hello_world.static hello_world.o

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

###

hello_exit_arm:	hello_exit_arm.o
	$(LD) -o hello_exit_arm hello_exit_arm.o

hello_exit_arm.o:	hello_exit_arm.s
	$(AS) -o hello_exit_arm.o hello_exit_arm.s

###

hello_exit_thumb:	hello_exit_thumb.o
	$(LD) $(THUMBLFLAGS) -o hello_exit_thumb hello_exit_thumb.o

hello_exit_thumb.o:	hello_exit_thumb.s
	$(AS) $(THUMBCFLAGS) -o hello_exit_thumb.o hello_exit_thumb.s

###

hello_world_arm:	hello_world_arm.o
	$(LD) -o hello_world_arm hello_world_arm.o

hello_world_arm.o:	hello_world_arm.s
	$(AS) -o hello_world_arm.o hello_world_arm.s

###

hello_world_thumb:	hello_world_thumb.o
	$(LD) $(THUMBLFLAGS) -o hello_world_thumb hello_world_thumb.o

hello_world_thumb.o:	hello_world_thumb.s
	$(AS) -o hello_world_thumb.o hello_world_thumb.s

###

print_string_arm:	print_string_arm.o
	$(LD) -o print_string_arm print_string_arm.o

print_string_arm.o:	print_string_arm.s
	$(AS) -o print_string_arm.o print_string_arm.s


###

print_string_arm2:	print_string_arm2.o
	$(LD) -o print_string_arm2 print_string_arm2.o

print_string_arm2.o:	print_string_arm2.s
	$(AS) -o print_string_arm2.o print_string_arm2.s


###

print_string_thumb:	print_string_thumb.o
	$(LD) $(THUMBLFLAGS) -o print_string_thumb print_string_thumb.o

print_string_thumb.o:	print_string_thumb.s
	$(AS) -o print_string_thumb.o print_string_thumb.s

clean:	
	rm -f *~ *.o hello_exit_arm hello_world_arm print_string_arm \
	print_string_arm2 \
	hello_exit_thumb hello_world_thumb print_string_thumb \
	hello_world hello_world.static hello_world.s 
