f31a7051f4471586d6a91bc2d3bcab0b1011cb16
[akaros.git] / user / benchutil / Makefile
1 ARCH ?= none    # catch bugs
2 CFLAGS_USER += -static -fomit-frame-pointer -g
3 LIBNAME = benchutil
4
5 SRCDIR := 
6 OBJDIR := $(SRCDIR)obj
7 INCDIR = $(SRCDIR)include
8
9 INCS = -I. -I$(INCDIR) 
10 FINALLIB = $(OBJDIR)/lib$(LIBNAME).a
11
12 uc = $(shell echo $(1) | tr a-z A-Z)
13
14 LIBUCNAME := $(call uc, $(LIBNAME))
15 HEADERS := $(shell find $(INCDIR) -name *.h)
16 CFILES  := $(wildcard $(SRCDIR)*.c)
17 CFILES  += $(wildcard $(SRCDIR)$(ARCH)/*.c)
18 SFILES  := $(wildcard $(SRCDIR)$(ARCH)/*.S)
19 OBJS    := $(patsubst %.c, $(OBJDIR)/%.o, $(CFILES)) \
20            $(patsubst %.S, $(OBJDIR)/%.o, $(SFILES))
21
22 all: $(FINALLIB)
23         @:
24
25 $(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS)
26         @echo + as [$(LIBUCNAME)] $<
27         @mkdir -p $(@D)
28         $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
29
30 $(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
31         @echo + cc [$(LIBUCNAME)] $<
32         @mkdir -p $(@D)
33         $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
34
35 $(FINALLIB): $(OBJS)
36         @echo + ar [$(LIBUCNAME)] $@
37         @mkdir -p $(@D)
38         $(Q)$(AR) rc $@ $(OBJS)
39
40 install: $(FINALLIB)
41         @cp $(FINALLIB) $(XCC_ROOT)/$(ARCH)-ros/lib/
42         @cp -R $(INCDIR)/* $(XCC_ROOT)/$(ARCH)-ros/sys-include/
43         @rm -rf $(XCC_ROOT)/$(ARCH)-ros/sys-include/benchutil
44         @ln -fs . $(XCC_ROOT)/$(ARCH)-ros/sys-include/benchutil
45
46 clean: 
47         @echo + clean [$(LIBUCNAME)]
48         $(Q)rm -rf $(FINALLIB)
49         $(Q)rm -rf $(OBJDIR)
50