Files
graphene/Makefile.rules
Isaku Yamahata 0809e5a5e1 [LibOS] Add support for vDSO
This commit adds vDSO support: creates vDSO memory region which contains
necessary symbols __vdso_{gettimeofday, clock_getime, time, getcpu} with
wrappers to call function pointers with actual LibOS implementation.
On startup, function pointers are setup to point to actual functions.

With this commit, the Glibc modification to not use vDSO can be removed.
2019-07-18 17:19:21 -07:00

112 lines
3.0 KiB
Makefile

#
# All Makefiles must follow the following conventions:
#
# - Compilation and linking steps must be done via the 'cmd' function:
# e.g., use '$(call cmd,ld_so_o)' to create a shared library using LD
#
# - File-specific build flags must be specified via variables of the format 'FLAG-filename':
# e.g., use 'LDFLAGS-libsysdb.so=...' to specify libsysdb.so-specific linker flags
#
ifeq ("$(origin V)", "command line")
BUILD_VERBOSE = $(V)
endif
ifndef BUILD_VERBOSE
BUILD_VERBOSE = 0
endif
ifeq ($(BUILD_VERBOSE),1)
quiet =
Q =
else
quiet = quiet_
Q = @
endif
export Q quiet BUILD_VERBOSE
squote := '
escsq = $(subst $(squote),'\$(squote)',$1)
echo-cmd = $(if $($(quiet)cmd_$(1)), echo ' $(call escsq,$($(quiet)cmd_$(1)))';)
cmd = @$(echo-cmd) $(cmd_$(1))
quiet_cmd_generated_offsets_s = [ $@ ]
cmd_generated_offsets_s = $(CC) $(CFLAGS) $(defs) -S $< -o $@
generated-offsets.s: generated-offsets.c $(filter-out asm-offsets.h,$(headers))
$(call cmd,generated_offsets_s)
CLEAN_FILES += generated-offsets.s
quiet_cmd_asm_offsets_h = [ $@ ]
cmd_asm_offsets_h = \
(set -e; \
echo "/* DO NOT MODIFY. THIS FILE WAS AUTO-GENERATED. */"; \
echo "\#ifndef _ASM_OFFSETS_H_"; \
echo "\#define _ASM_OFFSETS_H_"; \
echo ""; \
awk '/\.ascii "GENERATED_INTEGER/{print "\#ifndef " $$3 "\n\#define " $$3 " " $$4 "\n\#endif"}' $^; \
echo ""; \
echo "\#endif") > $@
asm-offsets.h: generated-offsets.s
$(call cmd,asm_offsets_h)
CLEAN_FILES += asm-offsets.h
quiet_cmd_generated_offsets_py = [ $@ ]
cmd_generated_offsets_py = \
(set -e; \
echo "\# DO NOT MODIFY. THIS FILE WAS AUTO-GENERATED."; \
echo ""; \
awk '/\.ascii "GENERATED_INTEGER/{print $$3 " = " $$4}' $^) > $@
generated_offsets.py: generated-offsets.s
$(call cmd,generated_offsets_py)
CLEAN_FILES += generated_offsets.py generated_offsets.pyc
quiet_cmd_ln_sf = [ $@ ]
cmd_ln_sf = ln -sf $(abspath $<) $@
cc-option = $(shell set -e; \
if ($(CC) -Werror $(1) -c -x c /dev/null -o /dev/null) >/dev/null 2>&1; \
then echo "$(1)"; \
fi)
# .c
quiet_cmd_cc_o_c = [ $@ ]
cmd_cc_o_c = $(CC) $(CFLAGS) $(CFLAGS-$@) -c -o $@ $<
quiet_cmd_cpp_i_c = [ $@ ]
cmd_cpp_i_c = $(CC) $(CFLAGS) $(CFLAGS-$@) -E -o $@ $<
quiet_cmd_cc_s_c = [ $@ ]
cmd_cc_s_c = $(CC) $(CFLAGS) $(CFLAGS-$@) -S -o $@ $<
# .S
quiet_cmd_as_o_S = [ $@ ]
cmd_as_o_S = $(CC) $(ASFLAGS) $(ASFLAGS-$@) -c -o $@ $<
quiet_cmd_cpp_s_S = [ $@ ]
cmd_cpp_s_S = $(CC) $(ASFLAGS) $(ASFLAGS-$@) -E -o $@ $<
# LD
quiet_cmd_ld_so_o = [ $@ ]
cmd_ld_so_o = $(LD) $(LDFLAGS) $(LDFLAGS-$@) -o $@ $(filter-out %.map %.lds,$^) -soname $(notdir $@)
# AR
quiet_cmd_ar_so_o = [ $@ ]
cmd_ar_so_o = $(AR) $(ARFLAGS) $(ARFLAGS-$@) $@ $^
quiet_cmd_ar_a_o = [ $@ ]
cmd_ar_a_o = $(AR) $(ARFLAGS) $(ARFLAGS-$@) $@ $^
# LD only
quiet_cmd_ld = [ $@ ]
cmd_ld = $(LD) $(LDFLAGS) $(LDFLAGS-$@) -o $@ $(filter-out %.map %.lds,$^)
# OBJCOPY
quiet_cmd_objcopy = [ $@ ]
cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS-$@) $< $@