Add SPLIT_DEBUG_INFO option, when it's set to yes the debug info is stored in separate .dwo files. This is mainly useful for remote debugging and reduces image size a lot. See also https://gcc.gnu.org/wiki/DebugFission Signed-off-by: Matthias Reichl <hias@horus.com>
		
			
				
	
	
		
			101 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# 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"
 | 
						|
 | 
						|
# gold flags
 | 
						|
LDFLAGS_OPTIM_GOLD="-fuse-ld=gold"
 | 
						|
 | 
						|
# default compiler optimization
 | 
						|
CFLAGS_OPTIM_DEFAULT="-O2 -fomit-frame-pointer"
 | 
						|
CXXFLAGS_OPTIM_DEFAULT="$CFLAGS_OPTIM_DEFAULT"
 | 
						|
# speed flag
 | 
						|
CFLAGS_OPTIM_SPEED="-O3 -fomit-frame-pointer"
 | 
						|
CXXFLAGS_OPTIM_SPEED="$CFLAGS_OPTIM_SPEED"
 | 
						|
# size flag
 | 
						|
CFLAGS_OPTIM_SIZE="-Os -fomit-frame-pointer"
 | 
						|
CXXFLAGS_OPTIM_SIZE="$CFLAGS_OPTIM_SIZE"
 | 
						|
# debug settings
 | 
						|
CFLAGS_OPTIM_DEBUG="-ggdb -Os"
 | 
						|
CXXFLAGS_OPTIM_DEBUG="$CFLAGS_OPTIM_DEBUG"
 | 
						|
LDFLAGS_OPTIM_DEBUG="-ggdb"
 | 
						|
# split debug settings (requires gold)
 | 
						|
CFLAGS_OPTIM_DEBUG_SPLIT="-gsplit-dwarf -Os"
 | 
						|
CXXFLAGS_OPTIM_DEBUG_SPLIT="$CFLAGS_OPTIM_DEBUG_SPLIT"
 | 
						|
LDFLAGS_OPTIM_DEBUG_SPLIT="-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)"
 | 
						|
  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
 |