# -*- 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		+= 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)
ifneq ($(SYSROOT),)
LINUX_CFLAGS	+= --sysroot=$(SYSROOT)
endif

# 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)
