-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path07-optimize-c.bash
executable file
·52 lines (45 loc) · 1.25 KB
/
07-optimize-c.bash
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
#!/bin/bash -e
mkdir -p gen obj bin
SHADER_MINIFIER=Shader_Minifier/shader_minifier.exe
if [ ! -e $SHADER_MINIFIER ]; then
pushd Shader_Minifier
TERM=xterm ./compile.bash
popd
fi
set -x
SSTRIP=ELFkickers/bin/sstrip
if [ ! -e $SSTRIP ]; then
pushd ELFkickers
make
popd
fi
mono $SHADER_MINIFIER --preserve-externals fshader.glsl -o gen/shaders.h
CFLAGS="-Wall -Werror -Os"
CFLAGS="$CFLAGS $(pkg-config --cflags gtk+-3.0)"
# release version
cc $CFLAGS -DNDEBUG -c 07-solskogen.c -o obj/solskogen-release.o
/usr/bin/ld \
-z norelro \
-z noseparate-code \
--orphan-handling=discard \
--as-needed \
--gc-sections \
--hash-style=gnu \
--no-eh-frame-hdr \
--no-ld-generated-unwind-info \
-m elf_x86_64 \
-dynamic-linker \
/lib64/ld-linux-x86-64.so.2 \
-o bin/solskogen-release \
obj/solskogen-release.o \
-lGL \
-lgtk-3 \
-lgobject-2.0
$SSTRIP bin/solskogen-release
XZ="xz -c -9e --format=lzma --lzma1=preset=9,lc=0,lp=0,pb=0"
cat bin/solskogen-release | $XZ > bin/solskogen-release.xz
cat uncompress-header bin/solskogen-release.xz > bin/solskogen
chmod a+x bin/solskogen
set +x
stat --printf="Uncompressed: %s bytes.\n" bin/solskogen-release
stat --printf="Final: %s bytes.\n" bin/solskogen