-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathoptimize
98 lines (85 loc) · 3.03 KB
/
optimize
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Linker hash-style is set to gnu via gcc default
LD_OPTIM="-Wl,--as-needed"
NINJA_OPTS=""
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"
# 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