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