summaryrefslogtreecommitdiffstats
path: root/src/Makefile.linux
diff options
context:
space:
mode:
authorSimon Rettberg2021-03-08 15:55:33 +0100
committerSimon Rettberg2021-03-08 15:55:33 +0100
commit6707d9218c8e6e760e53068d5f41ceb31fac6ea0 (patch)
tree88e8fc84ede2a0ed2c1cec3a6109beb9fb53abf5 /src/Makefile.linux
parentMerge branch 'master' into openslx (diff)
parent[linux] Do not assume that stat() works on sysfs files (diff)
downloadipxe-6707d9218c8e6e760e53068d5f41ceb31fac6ea0.tar.gz
ipxe-6707d9218c8e6e760e53068d5f41ceb31fac6ea0.tar.xz
ipxe-6707d9218c8e6e760e53068d5f41ceb31fac6ea0.zip
Merge branch 'master' into openslx
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)