Adds some event/uthread debugging code
[akaros.git] / user / c3po / Makefile
1 TARGET_ARCH ?= none     # catch bugs
2 CFLAGS = -O2 -static -std=gnu99 -fomit-frame-pointer -DOPTIMIZE=2 -DNO_TIMING \
3          -Wno-deprecated-declarations
4 LIBNAME = c3po
5 SUBDIRS = util stack threads #aio 
6 V ?= @
7
8 GCCPREFIX ?= $(TARGET_ARCH)-ros-
9 CC := $(GCCPREFIX)gcc
10 GCC_ROOT := $(shell which $(CC) | xargs dirname)/../
11
12 SRCDIR := 
13 OBJDIR := $(SRCDIR)obj
14 INCDIR = $(SRCDIR)include
15 UTILDIR = $(SRCDIR)util
16 STACKDIR = $(SRCDIR)stack
17 THREADSDIR = $(SRCDIR)threads
18 AIODIR = $(SRCDIR)aio
19
20 INCS = -I$(INCDIR) -I$(UTILDIR) -I$(THREADSDIR) -I$(STACKDIR) -I.
21 FINALLIB = $(OBJDIR)/lib$(LIBNAME).a
22
23 uc = $(shell echo $(1) | tr a-z A-Z)
24 lc = $(shell echo $(1) | tr A-Z a-z)
25 libname = $(OBJDIR)/$(1)/lib$(1).a
26 cleanname = $(1)-clean
27 makefragname = $(1)/Makefrag
28 filename = $(notdir $(1))
29 dirname = $(dir $(1))
30
31 CLEANS := $(foreach x, $(SUBDIRS), $(call cleanname,$(x)))
32 MAKEFRAGS := $(foreach x, $(SUBDIRS), $(call makefragname,$(x)))
33 LIBUCNAME := $(call uc, $(LIBNAME))
34
35 all: $(FINALLIB)
36
37 include $(MAKEFRAGS)
38 ALLOBJS = $(foreach x, $(SUBDIRS), $(wildcard $(OBJDIR)/$(x)/*.o))
39 ALLLIBS = $(foreach x, $(SUBDIRS), $(call libname,$(x)))
40
41 $(FINALLIB): $(ALLLIBS)
42         @echo + ar [$(LIBUCNAME)] $@
43         @mkdir -p $(@D)
44         $(V)$(AR) rc $@ $(ALLOBJS)
45
46 install: $(FINALLIB)
47         cp $(FINALLIB) $(GCC_ROOT)/$(TARGET_ARCH)-ros/lib/
48         mkdir -p $(GCC_ROOT)/$(TARGET_ARCH)-ros/include/$(LIBNAME)
49         cp -R $(INCDIR)/* $(GCC_ROOT)/$(TARGET_ARCH)-ros/include/$(LIBNAME)
50
51 clean: $(CLEANS)
52         @echo + clean [$(LIBUCNAME)]
53         $(V)rm -rf $(FINALLIB)
54         $(V)rm -rf $(OBJDIR)
55