Pthread create, join, and exit
[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
23 # Only build files if they exist.
24 USER_PARLIB_SRCFILES := $(wildcard $(USER_PARLIB_SRCFILES))
25
26 USER_PARLIB_OBJFILES  := $(patsubst $(USER_PARLIB_DIR)/%.c, \
27                              $(OBJDIR)/$(USER_PARLIB_DIR)/%.o, \
28                              $(USER_PARLIB_SRCFILES))
29 USER_PARLIB_OBJFILES  := $(patsubst $(USER_PARLIB_DIR)/%.S, \
30                              $(OBJDIR)/$(USER_PARLIB_DIR)/%.o, \
31                              $(USER_PARLIB_OBJFILES))
32
33 USER_PARLIB_LDDEPENDS := $(USER_PARLIB_OBJFILES)
34
35 $(OBJDIR)/$(USER_PARLIB_DIR)/%.o: $(USER_PARLIB_DIR)/%.c
36         @echo + cc [USER PARLIB] $<
37         @mkdir -p $(@D)
38         $(V)$(CC) $(USER_PARLIB_CFLAGS) -c -o $@ $<
39
40 $(OBJDIR)/$(USER_PARLIB_DIR)/%.o: $(USER_PARLIB_DIR)/%.S
41         @echo + as [USER PARLIB] $<
42         @mkdir -p $(@D)
43         $(V)$(CC) $(USER_PARLIB_CFLAGS) -D__ASSEMBLER__ -c -o $@ $<
44
45 $(OBJDIR)/$(USER_PARLIB_DIR)/libparlib.a: $(USER_PARLIB_LDDEPENDS)
46         @echo + ar [USER PARLIB] $@
47         @mkdir -p $(@D)
48         $(V)$(AR) r $@ $(USER_PARLIB_OBJFILES) 2>/dev/null
49