#CC = /usr/local/cs/bin/gcc
CC=gcc
CFLAGS= -O1 -Wall
CINC =
F32 =-m32 -fno-omit-frame-pointer
F32c =-m32 -march=i686 -msse4 -mfpmath=sse
F64 =-m64


.SUFFIXES: .c .32s .64s .32o .64o .32d .64d .32cs


.c.32s:
	$(CC) $(CFLAGS) $(CINC) -S $(F32) $*.c -o $*.$(MACHINE)32s

.c.32cs:
	$(CC) $(CFLAGS) $(CINC) -S $(F32c) $*.c -o $*.$(MACHINE)32cs

.c.64s:
	$(CC) $(CFLAGS) $(CINC) -S $(F64) $*.c -o $*.$(MACHINE)64s

.c.32d:
	$(CC) $(CFLAGS) $(CINC) $(F32) $*.c -o $*
	objdump -d $* > $*.32d
	rm -f $*

.c.64d:
	$(CC) $(CFLAGS) $(CINC) $(F64) $*.c -o $*
	objdump -d $* > $*.64d
	rm -f $*

files:	switch switch.32s switch.32d switch.64s switch.64d \
	swap.32s swap.64s \
	call_swap call_swap.32s call_swap.32D \
	pointer.32s pointer.64s recurse.32s recurse.64s

switch: switch.c
	$(CC) $(CFLAGS) $(CINC) $(F32) switch.c -o switch

call_swap: call_swap.c swap.c
	$(CC) $(CFLAGS) $(CINC) $(F32) call_swap.c swap.c -o call_swap

call_swap.32D: call_swap
	objdump -d call_swap > call_swap.32D

clean:
	rm -f *~

superclean: clean
	rm -f *.32s *.64s *.32o *.64o *.32d *.64d
	rm -f switch swap

