| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 | ## 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)endififndef BUILD_VERBOSE  BUILD_VERBOSE = 0endififeq ($(BUILD_VERBOSE),1)  quiet =  Q =else  quiet = quiet_  Q = @endifexport Q quiet BUILD_VERBOSEsquote  := '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.squiet_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.hquiet_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.pycquiet_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)# .cquiet_cmd_cc_o_c = [ $@ ]      cmd_cc_o_c = $(CC) -MD -MP $(CFLAGS) $(CFLAGS-$@) -c -o $@ $<quiet_cmd_cpp_i_c = [ $@ ]      cmd_cpp_i_c = $(CC) -MD -MP -MF $@.d $(CFLAGS) $(CFLAGS-$@) -E -o $@ $<quiet_cmd_cc_s_c = [ $@ ]      cmd_cc_s_c = $(CC) -MD -MP -MF $@.d $(CFLAGS) $(CFLAGS-$@) -S -o $@ $<# .Squiet_cmd_as_o_S = [ $@ ]      cmd_as_o_S = $(CC) -MD -MP $(ASFLAGS) $(ASFLAGS-$@) -c -o $@ $<quiet_cmd_cpp_s_S = [ $@ ]      cmd_cpp_s_S = $(CC) -MD -MP -MF $@.d $(ASFLAGS) $(ASFLAGS-$@) -E -o $@ $<# LDquiet_cmd_ld_so_o = [ $@ ]      cmd_ld_so_o = $(LD) $(LDFLAGS) $(LDFLAGS-$@) -o $@ $(filter-out pal-symbols %.map %.map.template %.lds,$^) -soname $(notdir $@)# ARquiet_cmd_ar_so_o = [ $@ ]      cmd_ar_so_o = $(AR) $(ARFLAGS) $(ARFLAGS-$@) $@ $^quiet_cmd_ar_a_o = [ $@ ]      cmd_ar_a_o = $(AR) $(ARFLAGS) $(ARFLAGS-$@) $@ $^# LD onlyquiet_cmd_ld = [ $@ ]      cmd_ld = $(LD) $(LDFLAGS) $(LDFLAGS-$@) -o $@ $(filter-out pal-symbols %.map %.map.template %.lds,$^)# OBJCOPYquiet_cmd_objcopy = [ $@ ]      cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS-$@) $< $@# check_no_reloc# This depends on the output of readelf command.quiet_cmd_check_no_reloc = [ check_no_reloc $^ ]      cmd_check_no_reloc = LC_ALL=C readelf -r $^ | grep -q 'There are no relocations in this file.'# single .c => executablequiet_cmd_csingle  = [ $@ ]      cmd_csingle  = $(CC) -MD -MP $(CFLAGS) $(CFLAGS-$@) -o $@ $< $(LDLIBS) $(LDLIBS-$@)# single .cpp => executablequiet_cmd_cxxsingle  = [ $@ ]      cmd_cxxsingle  = $(CXX) -MD -MP $(CXXFLAGS) $(CXXFLAGS-$@) -o $@ $< $(LDLIBS) $(LDLIBS-$@)# sgx signquiet_cmd_sgx_sign_exec = [ $*.{sig, manifest.sgx} ]      cmd_sgx_sign_exec = $(SGX_SIGN) -output $*.manifest.sgx -exec $* -manifest $< > .output.sgx_sign.$*quiet_cmd_sgx_sign = [ $*.{sig, manifest.sgx} ]      cmd_sgx_sign = $(SGX_SIGN) -output $*.manifest.sgx -manifest $< > .output.sgx_sign.$*# sgx tokenquiet_cmd_sgx_get_token = [ Token: $(basename $*) ]      cmd_sgx_get_token = $(SGX_GET_TOKEN) -output $@ -sig $^ > .output.sgx_get_token.$(basename $*)# sgx manifest dependencyquiet_cmd_sgx_sign_depend_exec = [ $@ ]      cmd_sgx_sign_depend_exec = $(SGX_SIGN) -depend -output $@ -exec $* -manifest $<# SGX manifest dependency without executable manifest may not have loader.exec. If it is so,# only preload libraries. Use static pattern rule for this recipe.quiet_cmd_sgx_sign_depend = [ $@ ]      cmd_sgx_sign_depend = $(SGX_SIGN) -depend -output $@ -manifest $<# pal mapPAL_SYMBOL_FILE := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))Pal/src/pal-symbolsPAL_SYMBOLS = $(shell sed -e 's|$$|;|g' $(PAL_SYMBOL_FILE))quiet_cmd_pal_map = [ $@ ]      cmd_pal_map = sed -e 's|\$$(PAL_SYMBOLS)|$(PAL_SYMBOLS)|g' $< > $@pal.map: pal.map.template $(PAL_SYMBOL_FILE)	$(call cmd,pal_map)
 |