summaryrefslogtreecommitdiff
path: root/bsp/libwrap/libwrap.mk
diff options
context:
space:
mode:
Diffstat (limited to 'bsp/libwrap/libwrap.mk')
-rw-r--r--bsp/libwrap/libwrap.mk54
1 files changed, 54 insertions, 0 deletions
diff --git a/bsp/libwrap/libwrap.mk b/bsp/libwrap/libwrap.mk
new file mode 100644
index 0000000..313ed00
--- /dev/null
+++ b/bsp/libwrap/libwrap.mk
@@ -0,0 +1,54 @@
+# See LICENSE for license details.
+
+ifndef _SIFIVE_MK_LIBWRAP
+_SIFIVE_MK_LIBWRAP := # defined
+
+LIBWRAP_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
+LIBWRAP_DIR := $(LIBWRAP_DIR:/=)
+
+LIBWRAP_SRCS := \
+ stdlib/malloc.c \
+ sys/open.c \
+ sys/lseek.c \
+ sys/read.c \
+ sys/write.c \
+ sys/fstat.c \
+ sys/stat.c \
+ sys/close.c \
+ sys/link.c \
+ sys/unlink.c \
+ sys/execve.c \
+ sys/fork.c \
+ sys/getpid.c \
+ sys/kill.c \
+ sys/wait.c \
+ sys/isatty.c \
+ sys/times.c \
+ sys/sbrk.c \
+ sys/_exit.c \
+ misc/write_hex.c
+
+LIBWRAP_SRCS := $(foreach f,$(LIBWRAP_SRCS),$(LIBWRAP_DIR)/$(f))
+LIBWRAP_OBJS := $(LIBWRAP_SRCS:.c=.o)
+
+LIBWRAP_SYMS := malloc free \
+ open lseek read write fstat stat close link unlink \
+ execve fork getpid kill wait \
+ isatty times sbrk _exit
+
+LIBWRAP := libwrap.a
+
+LINK_DEPS += $(LIBWRAP)
+
+LDFLAGS += $(foreach s,$(LIBWRAP_SYMS),-Wl,--wrap=$(s))
+LDFLAGS += -L. -Wl,--start-group -lwrap -lc -Wl,--end-group
+
+CLEAN_OBJS += $(LIBWRAP_OBJS)
+
+$(LIBWRAP_OBJS): %.o: %.c $(HEADERS)
+ $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
+
+$(LIBWRAP): $(LIBWRAP_OBJS)
+ $(AR) rcs $@ $^
+
+endif # _SIFIVE_MK_LIBWRAP