blob: 214769a64d81657b1f73396fc3fb38ca2f10ca8e (
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
|
#!/bin/sh
set -e
this_script_path=$(readlink -f "$0")
this_script_dir=$(dirname "$this_script_path")
source_files=$(readlink -f $(find "$this_script_dir/src" -name "*.c"))
if [ -z "$CC" ]; then
CC=cc
fi
CFLAGS=""
LIBS=""
if [ ! -z "$SANITIZE_ADDRESS" ]; then
CFLAGS+="-fsanitize=address "
elif [ ! -z "$SANITIZE_THREAD" ]; then
CFLAGS+="-fsanitize=thread "
fi
if [ ! -z "$PEDANTIC" ]; then
CFLAGS+="-DAMAL_PEDANTIC -pedantic "
fi
CFLAGS+="-Wall -Wextra -Werror -g -O0 -DDEBUG -std=c89 -D_GNU_SOURCE"
LIBS+="-pthread"
BUILD_ARGS="$source_files $CFLAGS $LIBS -shared -fpic -o "$this_script_dir/libamalgam.so""
set -x
time $CC $BUILD_ARGS
if [ ! -z "$SCAN_BUILD" ]; then
scan-build $CC $BUILD_ARGS
fi
set +x
if [ -z "$NO_TEST" ]; then
source_files_tests=$(readlink -f $(find "$this_script_dir/tests" -name "*.c"))
set -x
time $CC $source_files_tests $CFLAGS $LIBS -o test "$this_script_dir/libamalgam.so"
fi
set +x
compile_commands=$(
first=0
echo "["
for source_file in $source_files $source_files_tests; do
if [ $first == 1 ]; then
echo ","
fi
first=1
o_file="${source_file}.o"
echo " {"
echo " \"file\": \"$source_file\","
echo " \"directory\": \"$this_script_dir\","
echo " \"command\": \"$CC -o $o_file $CFLAGS $LIBS -c $source_file\","
echo " \"output\": \"$o_file\""
echo " }"
done
echo "]")
echo "$compile_commands" > "$this_script_dir/compile_commands.json"
echo "Finished building"
|