123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #
- # 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) -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 $@ $<
- # .S
- quiet_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 $@ $<
- # 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-$@) $< $@
- # check_no_reloc
- # This depends on the output of readelf command.
- quiet_cmd_check_no_reloc = [ $@ ]
- cmd_check_no_reloc = LC_ALL=C readelf -r $^ | grep -q 'There are no relocations in this file.'
|