blob: 2b696a412750c8ff2c54179aff50733696125d7a [file] [log] [blame]
# TODO(TC-265): support linux as a target option for vm-destined binaries
TARGETNAME := magma_test
FUCHSIA_DIR ?= ../../../../..
INTDIR := /tmp/virtio_magma/$(TARGETNAME)
OUTDIR := $(FUCHSIA_DIR)/garnet/bin/guest/pkg/biscotti_guest/images/x64/sysroot/usr/bin
TARGET := $(OUTDIR)/$(TARGETNAME)
INCLUDE_DIRS := \
$(FUCHSIA_DIR)/garnet/lib/magma/include/magma_abi \
$(FUCHSIA_DIR)/garnet/lib/magma/include/virtio \
$(FUCHSIA_DIR)/garnet/lib/magma/src \
$(LINUX_HEADERS_DIR)
SRC_EXT := cc
SRCS := $(notdir $(shell find -name '*.$(SRC_EXT)'))
OBJS := $(patsubst %.$(SRC_EXT),$(INTDIR)/%.$(SRC_EXT).o,$(SRCS))
LINKARGS := $(patsubst %,-l %,$(LIBS))
INCLUDE_ARGS := $(patsubst %,-I %,$(INCLUDE_DIRS))
CXX := clang++
CXXFLAGS := -std=c++14 -g -O0 -Wall
CXXTARGET := x86_64-pc-linux-none
CXXDEFS := -DMAGMA_DEBUG_INTERNAL_USE_ONLY=1 -DPAGE_SIZE=4096
CXXCMD := $(CXX) --target=$(CXXTARGET) $(CXXFLAGS) $(CXXDEFS)
LINKFLAGS := -static-libgcc -static-libstdc++
$(INTDIR)/%.o: %
@echo Compile: $<
@mkdir -p $(dir $@)
@$(CXXCMD) -c $< $(INCLUDE_ARGS) -o $@
$(TARGET): $(OBJS)
@echo Link: $(notdir $@)
@mkdir -p $(dir $@)
@$(CXXCMD) $^ $(LINKARGS) $(LINKFLAGS) -o $@
all: check-env $(TARGET)
check-env:
ifndef LINUX_HEADERS_DIR
$(error LINUX_HEADERS_DIR must be set to the target OS kernel header path (e.g. biscotti/usr/include))
endif
.PHONY: clean
clean: check-env
@$(RM) -r $(INTDIR)
@$(RM) -r $(OUTDIR)