# Test if the input language was specified externally. # Otherwise test if the compiler unterstands the "-std=c99" flag, and use it if so. ifeq ($(filter -std=%,$(CFLAGS)),) ifeq ($(shell $(CC) -std=c99 -E - 2>/dev/null >/dev/null y` was accessed. # 0x0 might be a sane memory location for embedded systems, so the test must not be removed. # Right now clang does not use the *delete-null-pointer* optimization, and does not understand the parameter. # Related issues: #628, #664. ifeq ($(shell $(CC) -fno-delete-null-pointer-checks -E - 2>/dev/null >/dev/null &1 1>/dev/null /dev/null >/dev/null &1 1>/dev/null /dev/null >/dev/null /dev/null >/dev/null /dev/null 2>&1; \ then echo "$(2)"; \ else echo "$(3)"; \ fi) # __cc-option # Usage: MY_CFLAGS += $(call __cc-option,$(CC),$(MY_CFLAGS),-march=winchip-c6,-march=i586) __cc-option = $(call try-run,\ $(1) -Werror $(2) $(3) -c -x c /dev/null -o "$$TMP",$(3),$(4)) # cc-option # Usage: CFLAGS += $(call cc-option,-mthumb) cc-option = $(call __cc-option, $(CC),$(CFLAGS),$(1),$(2)) # ld-option # Usage: LDFLAGS += $(call ld-option, -X, -Y) ld-option = $(call try-run, $(LD) $(LDFLAGS) $(1) -v,$(1),$(2),$(3)) LDARG += $(call ld-option,--no-warn-rwx-segment) LDARGPREFIX = -Wl, LDARG := $(strip $(LDARG)) ifneq (,$(LDARG)) LINKFLAGS += $(addprefix $(LDARGPREFIX), $(LDARG)) endif