blob: f452e5a024db6b5bd5863135d91aa3e3cb0db70e (
plain)
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
|
#!/usr/bin/env sh
set -e
#set -x #trace
CC=gcc
CFLAGS=" \
-pipe \
-Wall -Wextra -Wshadow -Wpedantic -Wformat=2 \
-std=c99"
CFASTF="-O2 -flto"
CDBGF="-g3 -Og -D _DEBUG"
# avoid "bin" just in case something goes wrong and we wipe /bin
# #paranoia
LIBDIR="libraries"
SRCDIR="sources"
BUILDDIR="binaries"
main()
{
case "$1" in
"") build_debug ;;
"debug") build_debug ;;
"release") build_release ;;
"clean") clean ;;
"help") help ;;
*)
echo "Error: Unknown argument '$1'"
help
;;
esac
}
help()
{
echo "Build script for Linux OSes"
echo "Usage: $0 [debug|release|clean|help]"
echo " debug - build debug mode (default)"
echo " release - build in release mode, aka optimized"
echo " clean - delete the build artifacts"
echo " help - print this message"
exit
}
build_unity()
{
"$CC" -D _UNITY_BUILD $CFLAGS -fwhole-program -I $(realpath "$SRCDIR") \
-I $(realpath "$LIBDIR") $1 "$SRCDIR"/server.c \
-o "$BUILDDIR"/server
"$CC" -D _UNITY_BUILD $CFLAGS -fwhole-program -I $(realpath "$SRCDIR") \
-I $(realpath "$LIBDIR") $1 "$SRCDIR"/client.c \
-o "$BUILDDIR"/client
}
build()
{
mkdir -p "$BUILDDIR"
build_unity "$1"
}
build_debug()
{
build "$CDBGF"
}
build_release()
{
build "$CFASTF"
}
clean()
{
rm -rf $(realpath ${BUILDDIR:?})
}
main "$@"
|