-
Notifications
You must be signed in to change notification settings - Fork 142
/
Makefile.common
80 lines (71 loc) · 2.61 KB
/
Makefile.common
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 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 := $(CONFIG_HOST_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