Fixed issues building without ivy and without __NETWORK__
[akaros.git] / user / parlib / src / Makefrag
1 USER_PARLIB_SRC_DIR = $(USER_PARLIB_DIR)/src
2 OBJDIRS += $(USER_PARLIB_SRC_DIR)
3
4 USER_PARLIB_SRC_CFLAGS   := $(USER_CFLAGS) \
5                             -I$(USER_PARLIB_DIR)/inc \
6                             -I$(USER_PARLIB_NEWLIB_DIR)/include
7 ifeq ($(COMPILER),IVY)
8 PATCHFILE = $(OBJDIR)/$(USER_PARLIB_DIR)/libc_patch.i
9 USER_PARLIB_SRC_CFLAGS   += --nopatch --patch=$(PATCHFILE)
10 endif
11
12 USER_PARLIB_SRC_SRCFILES := $(USER_PARLIB_SRC_DIR)/debug.c \
13                             $(USER_PARLIB_SRC_DIR)/debugfmt.c \
14                             $(USER_PARLIB_SRC_DIR)/syscall.c \
15                             $(USER_PARLIB_SRC_DIR)/parlibmain.c \
16                             $(USER_PARLIB_SRC_DIR)/channel.c \
17                             $(USER_PARLIB_ARCH_SRCFILES)
18
19 USER_PARLIB_SRC_OBJFILES := $(patsubst $(USER_PARLIB_SRC_DIR)/%.c, \
20                             $(OBJDIR)/$(USER_PARLIB_SRC_DIR)/%.o, \
21                             $(USER_PARLIB_SRC_SRCFILES))
22 USER_PARLIB_SRC_OBJFILES := $(patsubst $(USER_PARLIB_SRC_DIR)/%.S, \
23                             $(OBJDIR)/$(USER_PARLIB_SRC_DIR)/%.o, \
24                             $(USER_PARLIB_SRC_OBJFILES))
25
26 ANNOTS := $(shell dirname $(shell which ivycc))
27 ANNOTS := $(ANNOTS)/../lib/ivy/include/deputy/annots.h
28
29 $(PATCHFILE): $(USER_PARLIB_DIR)/inc/libc_patch.h
30         @echo + cpp [PARLIB] $^
31         @mkdir -p $(@D)
32         $(V)gcc -E -include $(ANNOTS) -o $@ $^
33
34 $(OBJDIR)/$(USER_PARLIB_SRC_DIR)/%.o: $(USER_PARLIB_SRC_DIR)/%.c $(PATCHFILE)
35         @echo + cc [PARLIB] $<
36         @mkdir -p $(@D)
37         $(V)$(CC) $(USER_PARLIB_SRC_CFLAGS) -c -o $@ $<
38
39 $(OBJDIR)/$(USER_PARLIB_SRC_DIR)/%.o: $(USER_PARLIB_SRC_DIR)/%.S
40         @echo + as [PARLIB] $<
41         @mkdir -p $(@D)
42         $(V)$(CC) $(USER_PARLIB_SRC_CFLAGS) -c -o $@ $<
43
44 $(OBJDIR)/$(USER_PARLIB_DIR)/libparlib.a: $(USER_PARLIB_SRC_OBJFILES)
45         @echo + ar [PARLIB] $@
46         @mkdir -p $(@D)
47         $(V)$(AR) r $@ $(USER_PARLIB_SRC_OBJFILES) 2>/dev/null
48