# The -mdynamic-no-pic ensures that the compiler executable is built without # position-independent-code -- the usual default on Darwin. This speeds compiles # by 8-20% (measurements made against GCC-11). # However, we cannot add it unless the bootstrap compiler supports # -mno-dynamic-no-pic to undo it, since libiberty, at least, needs this. # We use Werror, since some versions of clang report unknown command line flags # as a warning only. # We only need to determine this for the host tool used to build stage1 (or a # non-bootstrapped compiler), later stages will be built by GCC which supports # the required flags. # We cannot use mdynamic-no-pic when building shared host resources. ifeq (${host_shared},no) BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC := $(shell \ $(CC) -S -xc /dev/null -o /dev/null -Werror -mno-dynamic-no-pic 2>/dev/null \ && echo true) else BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC := false endif @if gcc-bootstrap ifeq (${BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC},true) STAGE1_CFLAGS += -mdynamic-no-pic else STAGE1_CFLAGS += -fPIC endif ifeq (${host_shared},no) # Add -mdynamic-no-pic to later stages when we know it is built with GCC. BOOT_CFLAGS += -mdynamic-no-pic endif @endif gcc-bootstrap @unless gcc-bootstrap ifeq (${BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC},true) # FIXME: we should also enable this for cross and non-bootstrap builds but # that needs amendment to libcc1. # CFLAGS += -mdynamic-no-pic # CXXFLAGS += -mdynamic-no-pic else CFLAGS += -fPIC CXXFLAGS += -fPIC endif @endunless gcc-bootstrap