mirror of
https://github.com/clearlinux/graphene.git
synced 2026-09-06 05:41:37 +00:00
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.
112 lines
3.0 KiB
Makefile
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-$@) $< $@
|