summaryrefslogtreecommitdiffstats
path: root/src/Makefile.linux
diff options
context:
space:
mode:
authorMichael Brown2021-03-02 11:20:55 +0100
committerMichael Brown2021-03-02 12:09:57 +0100
commit2b5d3f582f718ca11488fb6d92ea39dd22b8ffed (patch)
treea4ab380c613b7fa3261f7538fc8524b04b610dc0 /src/Makefile.linux
parent[build] Allow __asmcall to be used as a type attribute (diff)
downloadipxe-2b5d3f582f718ca11488fb6d92ea39dd22b8ffed.tar.gz
ipxe-2b5d3f582f718ca11488fb6d92ea39dd22b8ffed.tar.xz
ipxe-2b5d3f582f718ca11488fb6d92ea39dd22b8ffed.zip
[slirp] Add libslirp driver for Linux
Add a driver using libslirp to provide a virtual network interface without requiring root permissions on the host. This simplifies the process of running iPXE as a Linux userspace application with network access. For example: make bin-x86_64-linux/slirp.linux ./bin-x86_64-linux/slirp.linux --net slirp libslirp will provide a built-in emulated DHCP server and NAT router. Settings such as the boot filename may be controlled via command-line options. For example: ./bin-x86_64-linux/slirp.linux \ --net slirp,filename=http://192.168.0.1/boot.ipxe Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/Makefile.linux')
-rw-r--r--src/Makefile.linux17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/Makefile.linux b/src/Makefile.linux
index 4a783791..09b2b157 100644
--- a/src/Makefile.linux
+++ b/src/Makefile.linux
@@ -26,9 +26,21 @@ NON_AUTO_MEDIA = linux
#
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_LDFLAGS += -lslirp
+endif
+
# Host API wrapper
#
-$(BIN)/linux_api.o : interface/linux/linux_api.c $(MAKEDEPS)
+$(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 $<
@@ -36,4 +48,5 @@ $(BIN)/linux_api.o : interface/linux/linux_api.c $(MAKEDEPS)
#
$(BIN)/%.linux : $(BIN)/%.linux.tmp $(BIN)/linux_api.o
$(QM)$(ECHO) " [FINISH] $@"
- $(Q)$(CC) $(LINUX_CFLAGS) $(WORKAROUND_CFLAGS) -o $@ $^
+ $(Q)$(CC) $(LINUX_CFLAGS) $(WORKAROUND_CFLAGS) $(LINUX_LDFLAGS) \
+ -o $@ $^