summaryrefslogtreecommitdiffstats
path: root/src/Makefile.linux
diff options
context:
space:
mode:
Diffstat (limited to 'src/Makefile.linux')
-rw-r--r--src/Makefile.linux51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/Makefile.linux b/src/Makefile.linux
new file mode 100644
index 000000000..85d9c6438
--- /dev/null
+++ b/src/Makefile.linux
@@ -0,0 +1,51 @@
+# -*- makefile -*- : Force emacs to use Makefile mode
+
+# Prefix all iPXE symbols to avoid collisions with platform libraries
+#
+SYMBOL_PREFIX = _ipxe__
+
+# Enable valgrind
+#
+CFLAGS += -UNVALGRIND
+
+# Use a two-stage link
+#
+LDFLAGS += -r -d
+
+# Source directories
+#
+SRCDIRS += drivers/linux
+SRCDIRS += interface/linux
+NON_AUTO_SRCS += interface/linux/linux_api.c
+
+# Media types
+#
+NON_AUTO_MEDIA = linux
+
+# Compiler flags for building host API wrapper
+#
+LINUX_CFLAGS += -Os -idirafter include -DSYMBOL_PREFIX=$(SYMBOL_PREFIX)
+
+# Check for libslirp
+#
+LIBSLIRP_TEST = $(CC) $(LINUX_CFLAGS) -x c /dev/null -nostartfiles \
+ -include slirp/libslirp.h -lslirp \
+ -o /dev/null >/dev/null 2>&1
+WITH_LIBSLIRP := $(shell $(LIBSLIRP_TEST) && $(ECHO) yes)
+ifneq ($(WITH_LIBSLIRP),)
+LINUX_CFLAGS += -DHAVE_LIBSLIRP
+LINUX_LIBS += -lslirp
+endif
+
+# Host API wrapper
+#
+$(BIN)/linux_api.o : interface/linux/linux_api.c include/ipxe/linux_api.h \
+ include/ipxe/slirp.h $(MAKEDEPS)
+ $(QM)$(ECHO) " [BUILD] $@"
+ $(Q)$(CC) $(LINUX_CFLAGS) $(WORKAROUND_CFLAGS) -o $@ -c $<
+
+# Rule to generate final binary
+#
+$(BIN)/%.linux : $(BIN)/%.linux.tmp $(BIN)/linux_api.o
+ $(QM)$(ECHO) " [FINISH] $@"
+ $(Q)$(CC) $(LINUX_CFLAGS) $(WORKAROUND_CFLAGS) -o $@ $^ $(LINUX_LIBS)