# Copyright (c) 2015-2019 Contributors as noted in the AUTHORS file # # This file is part of Solo5, a sandboxed execution environment. # # Permission to use, copy, modify, and/or distribute this software # for any purpose with or without fee is hereby granted, provided # that the above copyright notice and this permission notice appear # in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE # AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS # OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # This Makefile defines common rules for building Solo5 and the in-tree test # programs. Variables starting with CONFIG_ and MAKECONF_ are sourced from the # Makeconf generated by configure.sh, and MAY be overriden by the user on the # top-level "make" command line. ifndef TOPDIR $(error TOPDIR must be set, run $(MAKE) from the top of the source tree or set it manually) endif include $(TOPDIR)/Makeconf # # The following variables and recipes apply to building bindings for each # target. # CC := __V=$(V) $(TOPDIR)/toolchain/bin/$(CONFIG_TARGET_TRIPLE)-cc CFLAGS := -std=c11 -Wall -Wextra -Werror -O2 -g CPPFLAGS := LD := __V=$(V) $(TOPDIR)/toolchain/bin/$(CONFIG_TARGET_TRIPLE)-ld LDFLAGS := OBJCOPY := __V=$(V) $(TOPDIR)/toolchain/bin/$(CONFIG_TARGET_TRIPLE)-objcopy # Also used by the HOST_ rules below. DEPFLAGS = -MT $@ -MMD -MP -MF $*.Td define COMPILE.c @echo "CC $@" $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ mv -f $*.Td $*.d && touch $@ endef define COMPILE.S @echo "AS $@" $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) -DASM_FILE -c $< -o $@ mv -f $*.Td $*.d && touch $@ endef # # The following variables and recpies apply to building tenders, i.e. # artifacts built to run on the (Solo5 tender's) *host*. # HOSTCC := $(CONFIG_HOST_CC) HOSTCFLAGS := -fstack-protector-strong -Wall -Werror -std=c11 -O2 -g HOSTCPPFLAGS := -I$(TOPDIR)/include HOSTLDFLAGS := HOSTLDLIBS := HOSTAR := ar define HOSTCOMPILE.c @echo "HOSTCC $@" $(HOSTCC) $(DEPFLAGS) $(HOSTCFLAGS) $(HOSTCPPFLAGS) -c $< -o $@ mv -f $*.Td $*.d && touch $@ endef define HOSTCOMPILE.S @echo "HOSTAS $@" $(HOSTCC) $(DEPFLAGS) $(HOSTCFLAGS) $(HOSTCPPFLAGS) -DASM_FILE -c $< -o $@ mv -f $*.Td $*.d && touch $@ endef define HOSTLINK @echo "HOSTLINK $@" $(HOSTCC) $(HOSTLDFLAGS) $^ $(HOSTLDLIBS) -o $@ endef