summaryrefslogtreecommitdiffstats
path: root/usr/klibc/socketcalls/Kbuild
diff options
context:
space:
mode:
Diffstat (limited to 'usr/klibc/socketcalls/Kbuild')
-rw-r--r--usr/klibc/socketcalls/Kbuild52
1 files changed, 52 insertions, 0 deletions
diff --git a/usr/klibc/socketcalls/Kbuild b/usr/klibc/socketcalls/Kbuild
new file mode 100644
index 0000000..a974a88
--- /dev/null
+++ b/usr/klibc/socketcalls/Kbuild
@@ -0,0 +1,52 @@
+#
+# Generate socket calls based on SOCKETCALLS.def
+#
+
+# Include automatically generated Makefile fragment.
+# It contains definition of socketcall-objs specifying name of all .o files
+ifeq ($(clean),)
+-include $(obj)/socketcalls.mk
+endif
+
+# Listing of all .o files
+always := klib.list
+
+#####
+# Generate socket calls stubs
+# Based on input from SOCKETCALLS.def generate socket call stubs
+targets := klib.list
+targets += socketcalls.mk
+targets += SOCKETCALLS.i
+targets += $(socketcall-objs)
+clean-files += *.S *.c *.o *.list
+
+EXTRA_KLIBCCFLAGS := -I$(srctree)/$(src)
+
+quiet_cmd_makelist = LIST $@
+ cmd_makelist = echo '$(filter-out FORCE,$^)' > $@
+
+# Create list of all files
+$(obj)/klib.list: $(call objectify,$(socketcall-objs)) FORCE
+ $(call if_changed,makelist)
+
+# Generate assembler file (.i)
+# We pass -ansi to keep cpp from define e.g. "i386" as well as "__i386__"
+quiet_cmd_socketcall.i = GEN $@
+ cmd_socketcall.i = $(KLIBCCC) $(klibccflags) -D__ASSEMBLY__ \
+ -ansi -x c -E -o $@ $<
+$(obj)/SOCKETCALLS.i: $(KLIBCSRC)/SOCKETCALLS.def FORCE
+ $(call if_changed_dep,socketcall.i)
+
+# Generate socketcall stubs
+quiet_cmd_socketcalls = GEN $@
+ cmd_socketcalls = $(PERL) $(srctree)/$(KLIBCSRC)/socketcalls.pl \
+ $(obj)/SOCKETCALLS.i \
+ $(KLIBCARCH) $(obj) > $@ \
+ || ( rm -f $@ ; exit 1 )
+
+$(obj)/socketcalls.mk: $(srctree)/$(KLIBCSRC)/socketcalls.pl \
+ $(obj)/SOCKETCALLS.i \
+ $(src)/socketcommon.h
+ $(call cmd,socketcalls)
+
+PHONY += FORCE