| # 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 |