5c310e864bde247591ff6e6530bf847661029922
[akaros.git] / user / parlib / Makefrag
1 # Makefile fragment for ROS kernel.
2 # This is NOT a complete makefile;
3 # you must run GNU make in the top-level directory
4 # where the GNUmakefile is located.
5 #
6
7 USER_PARLIB_DIR = $(USER_DIR)/parlib
8 USER_PARLIB_CFLAGS += $(USER_CFLAGS)
9 OBJDIRS += $(USER_PARLIB_DIR)
10 ROS_USER_LIBS += $(OBJDIR)/$(USER_PARLIB_DIR)/libparlib.a
11
12 USER_PARLIB_SRCFILES := \
13                  $(USER_PARLIB_DIR)/pthread.c \
14                  $(USER_PARLIB_DIR)/bthread.c \
15                  $(USER_PARLIB_DIR)/vcore.c \
16                  $(USER_PARLIB_DIR)/mcs.c \
17                  $(USER_PARLIB_DIR)/panic.c \
18                  $(USER_PARLIB_DIR)/syscall.c \
19                  $(USER_PARLIB_DIR)/debugfmt.c \
20                  $(USER_PARLIB_DIR)/timing.c \
21                  $(USER_PARLIB_DIR)/debug.c \
22                  $(USER_PARLIB_DIR)/asynccall.c
23
24 # Only build files if they exist.
25 USER_PARLIB_SRCFILES := $(wildcard $(USER_PARLIB_SRCFILES))
26
27 USER_PARLIB_OBJFILES  := $(patsubst $(USER_PARLIB_DIR)/%.c, \
28                              $(OBJDIR)/$(USER_PARLIB_DIR)/%.o, \
29                              $(USER_PARLIB_SRCFILES))
30 USER_PARLIB_OBJFILES  := $(patsubst $(USER_PARLIB_DIR)/%.S, \
31                              $(OBJDIR)/$(USER_PARLIB_DIR)/%.o, \
32                              $(USER_PARLIB_OBJFILES))
33
34 USER_PARLIB_LDDEPENDS := $(USER_PARLIB_OBJFILES)
35
36 $(OBJDIR)/$(USER_PARLIB_DIR)/%.o: $(USER_PARLIB_DIR)/%.c
37         @echo + cc [USER PARLIB] $<
38         @mkdir -p $(@D)
39         $(V)$(CC) $(USER_PARLIB_CFLAGS) -c -o $@ $<
40
41 $(OBJDIR)/$(USER_PARLIB_DIR)/%.o: $(USER_PARLIB_DIR)/%.S
42         @echo + as [USER PARLIB] $<
43         @mkdir -p $(@D)
44         $(V)$(CC) $(USER_PARLIB_CFLAGS) -D__ASSEMBLER__ -c -o $@ $<
45
46 $(OBJDIR)/$(USER_PARLIB_DIR)/libparlib.a: $(USER_PARLIB_LDDEPENDS)
47         @echo + ar [USER PARLIB] $@
48         @mkdir -p $(@D)
49         $(V)$(AR) r $@ $(USER_PARLIB_OBJFILES) 2>/dev/null
50