# guard against environment variables
HEADERS=
INCLUDES=
OBJS=

# headers prefix
HPFX := ../include

HEADERS += $(HPFX)/cpumap.h
HEADERS += $(HPFX)/debug.h
HEADERS += $(HPFX)/debugfs.h
HEADERS += $(HPFX)/dso.h
HEADERS += $(HPFX)/event.h
HEADERS += $(HPFX)/evsel.h
HEADERS += $(HPFX)/evlist.h
HEADERS += $(HPFX)/fs.h
HEADERS += $(HPFX)/asm/bug.h
HEADERS += $(HPFX)/asm/hash.h
HEADERS += $(HPFX)/asm/hweight.h
HEADERS += $(HPFX)/linux/bitops.h
HEADERS += $(HPFX)/linux/compiler.h
HEADERS += $(HPFX)/linux/export.h
HEADERS += $(HPFX)/linux/kernel.h
HEADERS += $(HPFX)/linux/list.h
HEADERS += $(HPFX)/linux/poison.h
HEADERS += $(HPFX)/linux/rbtree_augmented.h
HEADERS += $(HPFX)/linux/types.h
HEADERS += $(HPFX)/lib.h
HEADERS += $(HPFX)/ras.h
HEADERS += $(HPFX)/rblist.h
HEADERS += $(HPFX)/sane_ctype.h
HEADERS += $(HPFX)/strlist.h
HEADERS += $(HPFX)/symbol.h
HEADERS += $(HPFX)/target.h
HEADERS += $(HPFX)/thread_map.h
HEADERS += $(HPFX)/xyarray.h

OBJS += cpumap.o
OBJS += ctype.o
OBJS += debug.o
OBJS += debugfs.o
OBJS += evlist.o
OBJS += evsel.o
OBJS += fs.o
OBJS += hweight.o
OBJS += rasd.o
OBJS += rblist.o
OBJS += rbtree.o
OBJS += strlist.o
OBJS += thread_map.o
OBJS += util.o
OBJS += xyarray.o

INCLUDES += -I../include

BASIC_CFLAGS = $(INCLUDES)
CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
EXTLIBS =
ALL_CFLAGS = $(CFLAGS) $(BASIC_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
ALL_LDFLAGS = $(LDFLAGS)

RM = rm -f

rasd: $(OBJS) $(HEADERS)
	$(CC) -o $@ $(OBJS)
%.o: %.c
	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<
%.i: %.c
	$(QUIET_CC)$(CC) -E -o $@ $(ALL_CFLAGS) $<
%.s: %.c
	$(QUIET_CC)$(CC) -S -o $@ $(ALL_CFLAGS) $<

rbtree.o: rbtree.c
	$(QUIET_CC)$(CC) -o $@ -c -Wno-unused-parameter $(ALL_CFLAGS) $<

clean:
	$(QUIET_CLEAN)$(RM) $(OBJS) rasd 

.PHONY: clean
