| # -*- makefile -*- : Force emacs to use Makefile mode | |
| # Prefix all iPXE symbols to avoid collisions with platform libraries | |
| # | |
| SYMBOL_PREFIX = _ipxe__ | |
| # Enable valgrind | |
| # | |
| CFLAGS += -UNVALGRIND | |
| # The Linux linker script | |
| # | |
| LDSCRIPT = scripts/linux.lds | |
| # Use a two-stage link | |
| # | |
| LDFLAGS += -r -d | |
| # Source directories | |
| # | |
| SRCDIRS += drivers/linux | |
| SRCDIRS += drivers/net/linux | |
| SRCDIRS += interface/linux | |
| NON_AUTO_SRCS += interface/linux/linux_api.c | |
| # Media types | |
| # | |
| NON_AUTO_MEDIA = linux | |
| # Include Linux-specific drivers in all-drivers build | |
| # | |
| DRIVERS_ipxe += $(DRIVERS_linux_net) | |
| # Compiler flags for building host API wrapper | |
| # | |
| LINUX_CFLAGS += -Os -idirafter include -DSYMBOL_PREFIX=$(SYMBOL_PREFIX) | |
| LINUX_CFLAGS += -Wall -W | |
| ifneq ($(SYSROOT),) | |
| LINUX_CFLAGS += --sysroot=$(SYSROOT) | |
| endif | |
| ifneq ($(NO_WERROR),1) | |
| LINUX_CFLAGS += -Werror | |
| endif | |
| # Check for implicit libatomic | |
| # | |
| LIBATOMIC_TEST = $(CC) $(LINUX_CFLAGS) -x c /dev/null -nostartfiles \ | |
| -fno-link-libatomic -o /dev/null >/dev/null 2>&1 | |
| LIBATOMIC_FLAGS := $(shell $(LIBATOMIC_TEST) && $(ECHO) '-fno-link-libatomic') | |
| LINUX_CFLAGS += $(LIBATOMIC_FLAGS) | |
| # 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) |