# Linker hash-style is set to gnu via gcc default LD_OPTIM="-Wl,--as-needed" TARGET_CPPFLAGS="" TARGET_CFLAGS="$TARGET_CFLAGS -Wall -pipe $PROJECT_CFLAGS" TARGET_CXXFLAGS="$TARGET_CFLAGS" TARGET_LDFLAGS="$TARGET_LDFLAGS $LD_OPTIM" TARGET_LIBDIR="$SYSROOT_PREFIX/lib $SYSROOT_PREFIX/usr/lib" TARGET_INCDIR="$SYSROOT_PREFIX/include $SYSROOT_PREFIX/usr/include" HOST_CPPFLAGS="" HOST_CFLAGS="-march=native -O2 -Wall -pipe -I$TOOLCHAIN/include" HOST_CXXFLAGS="$HOST_CFLAGS" HOST_LDFLAGS="-Wl,-rpath,$TOOLCHAIN/lib -L$TOOLCHAIN/lib" HOST_INCDIR="$TOOLCHAIN/include /usr/include" # work around Ubuntu default C*FLAGS # see https://wiki.ubuntu.com/ToolChain/CompilerFlags#A-Wformat_-Wformat-security HOST_CFLAGS="$HOST_CFLAGS -Wno-format-security" HOST_CXXFLAGS="$HOST_CXXFLAGS -Wno-format-security" # lto flags FLAGS_OPTIM_LTO_NO_PARALLEL="-flto" FLAGS_OPTIM_LTO_PARALLEL="-flto=${CONCURRENCY_MAKE_LEVEL}" FLAGS_OPTIM_LTO_NO_FAT="-fno-fat-lto-objects" FLAGS_OPTIM_LTO_FAT="-ffat-lto-objects" FLAGS_OPTIM_LTO_OFF="-fno-lto" LDFLAGS_OPTIM_LTO_COMMON="-fuse-linker-plugin" # linker specific flags LDFLAGS_OPTIM_LINKER_COMPILER_DEFAULT="" LDFLAGS_OPTIM_LINKER_BFD="-fuse-ld=bfd" LDFLAGS_OPTIM_LINKER_GOLD="-fuse-ld=gold" LDFLAGS_OPTIM_LINKER_MOLD="-fuse-ld=mold" # default compiler optimization CFLAGS_OPTIM_DEFAULT="-O2 -fomit-frame-pointer -DNDEBUG" CXXFLAGS_OPTIM_DEFAULT="$CFLAGS_OPTIM_DEFAULT" # speed flag CFLAGS_OPTIM_SPEED="-O3 -fomit-frame-pointer -DNDEBUG" CXXFLAGS_OPTIM_SPEED="$CFLAGS_OPTIM_SPEED" # size flag CFLAGS_OPTIM_SIZE="-Os -fomit-frame-pointer -DNDEBUG" CXXFLAGS_OPTIM_SIZE="$CFLAGS_OPTIM_SIZE" # debug settings CFLAGS_OPTIM_DEBUG="-ggdb -Og" CXXFLAGS_OPTIM_DEBUG="$CFLAGS_OPTIM_DEBUG" LDFLAGS_OPTIM_DEBUG="-ggdb" # split debug settings (requires gold) CFLAGS_OPTIM_DEBUG_SPLIT="-gdwarf-4 -gsplit-dwarf -Og" CXXFLAGS_OPTIM_DEBUG_SPLIT="$CFLAGS_OPTIM_DEBUG_SPLIT" LDFLAGS_OPTIM_DEBUG_SPLIT="-gdwarf-4 -Wl,--gdb-index" # position-independent code CFLAGS_OPTIM_PIC="-fPIC -DPIC" CXXFLAGS_OPTIM_PIC="-fPIC -DPIC" LDFLAGS_OPTIM_PIC="-fPIC" # hardening support # TODO: basiclly copied from debian 9, should adjust for LE CFLAGS_OPTIM_HARDENING="-fstack-protector-strong -Wformat -Werror=format-security -fPIE" CXXFLAGS_OPTIM_HARDENING="-fstack-protector-strong -Wformat -Werror=format-security -fPIE" CPPFLAGS_OPTIM_HARDENING="-D_FORTIFY_SOURCE=2" LDFLAGS_OPTIM_HARDENING="-Wl,-z,relro -Wl,-z,now" # add distro specific library dirs if [ -z "$HOST_LIBDIR" ]; then HOST_LIBDIR="$TOOLCHAIN/lib" # ubuntu/debian specific "multiarch support" export MACHINE_HARDWARE_NAME="$(uname -m)" FAMILY_TRIPLET=$($LOCAL_CC -print-multiarch) if [ -n "$FAMILY_TRIPLET" ]; then if [ -d /lib/$FAMILY_TRIPLET ]; then HOST_LIBDIR="$HOST_LIBDIR /lib/$FAMILY_TRIPLET" fi if [ -d /usr/lib/$FAMILY_TRIPLET ]; then HOST_LIBDIR="$HOST_LIBDIR /usr/lib/$FAMILY_TRIPLET" fi fi # default multiarch support case "${MACHINE_HARDWARE_NAME}" in i*86) if [ -d /lib32 ]; then HOST_LIBDIR="$HOST_LIBDIR /lib32" fi if [ -d /usr/lib32 ]; then HOST_LIBDIR="$HOST_LIBDIR /usr/lib32" fi ;; x86_64) if [ -d /lib64 ]; then HOST_LIBDIR="$HOST_LIBDIR /lib64" fi if [ -d /usr/lib64 ]; then HOST_LIBDIR="$HOST_LIBDIR /usr/lib64" fi ;; esac # default dirs export HOST_LIBDIR="$HOST_LIBDIR /lib /usr/lib" fi