ARCH      := SPARC_V8PLUS
DEBUGGING := -DNDEBUG

ifeq ($(ARCH),SPARC_V8PLUS)
CC          := /opt/SUNWspro/bin/cc
CFLAGS      := -xO3 -DSPARC_V8PLUS sparc_v8plus_mcas.il -xarch=v8plus
LDFLAGS     := -DSPARC_V8PLUS sparc_v8plus_mcas.il -xarch=v8plus -lthread -lrt
HRLDFLAGS   := -lsched
endif

CFLAGS      += $(DEBUGGING)
COMMON_DEPS += Makefile $(wildcard *.h)

TARGETS    := rb_stm_holdrel
TARGETS    += $(GC_HARNESS_TARGETS) $(SIMPLEGC_HARNESS_TARGETS)

all: $(TARGETS) replay

clean:
	rm -f $(TARGETS) replay *~ core *.o *.a

replay: %: %.c $(COMMON_DEPS)
	$(CC) $(CFLAGS) -c -o $(patsubst %.c,%.o,$<) $<
	$(CC) -o $@ $(patsubst %.c,%.o,$<) $(LDFLAGS)

%.o: %.c $(COMMON_DEPS)
	$(CC) $(CFLAGS) -c -o $@ $<

rb_stm_holdrel: rb_stm_holdrel.o stm_holdrel.o holdrel.o set_harness.o ptst.o gc.o
	$(CC) -o $@ $^ $(LDFLAGS) $(HRLDFLAGS)

$(RC_TARGETS): %: %.o
	$(CC) -o $@ $^ $(LDFLAGS)

$(GC_TARGETS): %: %.o ptst.o gc.o
	$(CC) -o $@ $^ $(LDFLAGS)

$(GC_HARNESS_TARGETS): %: %.o set_harness.o ptst.o gc.o
	$(CC) -o $@ $^ $(LDFLAGS)

$(SIMPLEGC_HARNESS_TARGETS): %: %.o set_harness.o ptst.o simple_gc.o
	$(CC) -o $@ $^ $(LDFLAGS)
