-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sh
executable file
·105 lines (91 loc) · 2.73 KB
/
build.sh
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
99
100
101
102
103
104
105
#!/bin/sh
# Copyright (C) 2011 by Gregor Pintar <[email protected]>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
CWD=$(pwd)
CC=${CC:-"cc"}
AR=${AR:-"ar"}
STRIP=${STRIP:-"strip"}
CFLAGS="-std=c99 -pedantic -Wall -Wextra -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual -Wbad-function-cast -Wshadow -Wc++-compat -fstack-protector-all -I $CWD/include/ -fPIC -D_ANSI_SOURCE -D_ISOC99_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 $CFLAGS"
# -DNDEBUG -D_FORTIFY_SOURCE=2
OPTIM="-O2 $OPTIM"
LDFLAGS="-Wall $LDFLAGS"
i=1
while [ $i -le $# ]; do
eval param=\$$i;
case $param in
"-g")
debug=1
;;
"-os=unix")
os=1
CFLAGS="$CFLAGS -DKRIPTO_UNIX"
;;
"-os=windows")
os=2
CFLAGS="$CFLAGS -DKRIPTO_WINDOWS"
LDFLAGS="$LDFLAGS -Wl,--subsystem,windows"
;;
"-h" | "--help")
echo "-g Debug build"
echo "-os=[unix|windows] Target operating system"
exit 1
;;
*)
CFLAGS="$CFLAGS $param"
;;
esac
i=$(($i+1))
done
#endian=$(printf '\1' | od -An -t xS)
#if [ "$endian" = " 0001" ]; then
# CFLAGS="$CFLAGS -DKRIPTO_LITTLE_ENDIAN"
#elif [ "$endian" = " 0100" ]; then
# CFLAGS="$CFLAGS -DKRIPTO_BIG_ENDIAN"
#fi
# if OS not defined assume UNIX
if [ -z $os ]; then
CFLAGS="$CFLAGS -DKRIPTO_UNIX"
fi
if [ -z $debug ]; then
CFLAGS="$CFLAGS $OPTIM"
LDFLAGS="$LDFLAGS $OPTIM"
else
CFLAGS="$CFLAGS -g"
fi
# compile
cd lib
$PREFIX$CC -c *.c $CFLAGS
cd block
$PREFIX$CC -c *.c $CFLAGS
cd ../hash
$PREFIX$CC -c *.c $CFLAGS
cd ../mac
$PREFIX$CC -c *.c $CFLAGS
cd ../stream
$PREFIX$CC -c *.c $CFLAGS
cd ../ae
$PREFIX$CC -c *.c $CFLAGS
cd ../
# build static
$PREFIX$AR rcs libkripto.a *.o block/*.o hash/*.o mac/*.o stream/*.o ae/*.o
# build shared
#$PREFIX$CC -shared $LDFLAGS -Wl,-soname,libkripto.so.0 -o libkripto.so.0.1.0 *.o block/*.o hash/*.o mac/*.o stream/*.o ae/*.o -lc
$PREFIX$CC -shared $LDFLAGS -o libkripto.so *.o block/*.o hash/*.o mac/*.o stream/*.o ae/*.o
# strip
if [ -z $debug ]; then
$PREFIX$STRIP -S libkripto.so
fi
# run tests
cd ../
find test/ -name "*.c" -exec $CC {} lib/libkripto.a $CFLAGS -o t \; -exec ./t \; -exec rm t \;
#find test/ -name "*.c" -exec $CC {} lib/libkripto.a $CFLAGS -DVERBOSE -o t \; -exec valgrind -q ./t \; -exec rm t \;