GCC_OPTIM="-Ofast" # Linker hash-style is set to gnu via gcc default LD_OPTIM="-Wl,--as-needed" if [ "${BUILD_WITH_DEBUG}" = "yes" ]; then TARGET_CFLAGS="$TARGET_CFLAGS -ggdb" TARGET_CXXFLAGS="$TARGET_CXXFLAGS -ggdb" TARGET_LDFLAGS="$TARGET_LDFLAGS -ggdb" else TARGET_CFLAGS="$TARGET_CFLAGS -fomit-frame-pointer" TARGET_CXXFLAGS="$TARGET_CXXFLAGS -fomit-frame-pointer" TARGET_LDFLAGS="$TARGET_LDFLAGS" fi NINJA_OPTS="" TARGET_CPPFLAGS="" TARGET_CFLAGS="$TARGET_CFLAGS -Wall -pipe $GCC_OPTIM $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 -O3 -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" # gold flags LDFLAGS_OPTIM_GOLD="-fuse-ld=gold" # 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)" export MACHINE_HARDWARE_PLATFORM="$(uname -i)" FAMILY_TRIPLET=${HOST_NAME/${MACHINE_HARDWARE_NAME}/${MACHINE_HARDWARE_PLATFORM}} 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 # 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