CROSS = 

LD = ld
AS = as
ASFLAGS_THUMB = -mthumb-interwork
LDFLAGS_THUMB = --thumb-entry=_start

CC = gcc
CFLAGS = -O2 -Wall -g
CFLAGS_NOTHUMB = -marm -march=armv7-a+fp
CFLAGS_THUMB = -mthumb -march=armv7-a+fp
CFLAGS_NOOPT = -Wall -g
LFLAGS =

# don't build anything be default
all:

all64:	integer_print_arm64 integer_print_arm64.dis \
	stripped/integer_print_arm64.stripped \

all32:	integer_print_arm32 integer_print_arm32.dis \
	stripped/integer_print_arm32.stripped \
	integer_print_thumb2 integer_print_thumb2.dis \
	stripped/integer_print_thumb2.stripped \
	integer_print_static \
	stripped/integer_print_static.stripped \
	integer_print_asm \
	stripped/integer_print_asm.stripped
####



stripped/integer_print_asm.stripped:	integer_print_asm
	$(CROSS)strip -o stripped/integer_print_asm.stripped integer_print_asm

integer_print_asm:	integer_print_asm.o
	$(CROSS)$(LD) $(LDFLAGS) -o integer_print_asm integer_print_asm.o

integer_print_asm.o:	integer_print_asm.s
	$(CROSS)$(AS) $(ASFLAGS) -o integer_print_asm.o integer_print_asm.s


#####
stripped/integer_print_arm32.stripped:	integer_print_arm32
	$(CROSS)strip -o stripped/integer_print_arm32.stripped integer_print_arm32

integer_print_arm32.dis:	integer_print_arm32
	$(CROSS)objdump --disassemble-all ./integer_print_arm32 > integer_print_arm32.dis

integer_print_arm32:	integer_print_arm32.o
	$(CROSS)$(CC) $(LFLAGS) -o integer_print_arm32 integer_print_arm32.o

integer_print_arm32.o:	integer_print.c
	$(CROSS)$(CC) $(CFLAGS) $(CFLAGS_NOTHUMB) -o integer_print_arm32.o -c integer_print.c

#####
stripped/integer_print_arm64.stripped:	integer_print_arm64
	$(CROSS)strip -o stripped/integer_print_arm64.stripped integer_print_arm64

integer_print_arm64.dis:	integer_print_arm64
	$(CROSS)objdump --disassemble-all ./integer_print_arm64 > integer_print_arm64.dis

integer_print_arm64:	integer_print_arm64.o
	$(CROSS)$(CC) $(LFLAGS) -o integer_print_arm64 integer_print_arm64.o

integer_print_arm64.o:	integer_print.c
	$(CROSS)$(CC) $(CFLAGS) -o integer_print_arm64.o -c integer_print.c


#####

stripped/integer_print_static.stripped:	integer_print_static
	$(CROSS)strip -o stripped/integer_print_static.stripped integer_print_static

integer_print_static:	integer_print_arm32.o
	$(CROSS)$(CC) $(LFLAGS) -static -o integer_print_static integer_print_arm32.o



####

stripped/integer_print_thumb2.stripped:	integer_print_thumb2
	$(CROSS)strip -o stripped/integer_print_thumb2.stripped integer_print_thumb2

integer_print_thumb2.dis:	integer_print_thumb2
	$(CROSS)objdump --disassemble-all ./integer_print_thumb2 > integer_print_thumb2.dis

integer_print_thumb2:	integer_print_thumb2.o
	$(CROSS)$(CC) $(LFLAGS) -o integer_print_thumb2 integer_print_thumb2.o

integer_print_thumb2.o:	integer_print.c
	$(CROSS)$(CC) $(CFLAGS) $(CFLAGS_THUMB) -o integer_print_thumb2.o -c integer_print.c

####

clean:	
	rm -f *~ *.o

dist_clean:
	rm -f *~ *.o *.dis integer_print_arm32 integer_print.thumb \
			integer_print.extra integer_print.thumb2 \
			integer_print_asm integer_print_static
	cd stripped && rm *.stripped
