1
1
#! /usr/bin/env bash
2
2
#
3
3
# Run as: CLANG=bin/clang build_symbolizer.sh out.o
4
+ # If you want to use a local copy of zlib, set ZLIB_SRC.
4
5
# zlib can be downloaded from http://www.zlib.net.
5
6
#
6
7
# Script compiles self-contained object file with symbolization code.
@@ -20,6 +21,12 @@ set -u
20
21
21
22
SCRIPT_DIR=$( cd " $( dirname " $0 " ) " && pwd)
22
23
SRC_DIR=$( readlink -f $SCRIPT_DIR /..)
24
+
25
+ if [[ $# -ne 1 ]]; then
26
+ echo " Missing output file"
27
+ exit 1
28
+ fi
29
+
23
30
OUTPUT=$( readlink -f $1 )
24
31
COMPILER_RT_SRC=$( readlink -f ${SCRIPT_DIR} /../../../..)
25
32
LLVM_SRC=${LLVM_SRC:- ${COMPILER_RT_SRC} / ../ llvm}
@@ -52,6 +59,7 @@ LLVM_BUILD=${BUILD_DIR}/llvm
52
59
SYMBOLIZER_BUILD=${BUILD_DIR} /symbolizer
53
60
54
61
FLAGS=${FLAGS:- }
62
+ ZLIB_SRC=${ZLIB_SRC:- }
55
63
TARGET_TRIPLE=$( $CC -print-target-triple $FLAGS )
56
64
if [[ " $FLAGS " =~ " -m32" ]] ; then
57
65
# Avoid new wrappers.
@@ -63,7 +71,15 @@ FLAGS+=" -include ${SRC_DIR}/../sanitizer_redefine_builtins.h -DSANITIZER_COMMON
63
71
LINKFLAGS=" -fuse-ld=lld -target $TARGET_TRIPLE "
64
72
65
73
# Build zlib.
66
- [[ -d ${ZLIB_BUILD} ]] || git clone https://github.com/madler/zlib ${ZLIB_BUILD}
74
+ if [[ -d ${ZLIB_BUILD} ]]; then
75
+ if [[ -z " ${ZLIB_SRC} " ]]; then
76
+ git clone https://github.com/madler/zlib ${ZLIB_BUILD}
77
+ else
78
+ ZLIB_SRC=$( readlink -f $ZLIB_SRC )
79
+ cp -r ${ZLIB_SRC} /* ${ZLIB_BUILD} /
80
+ fi
81
+ fi
82
+
67
83
cd ${ZLIB_BUILD}
68
84
AR=" ${AR} " CC=" ${CC} " CFLAGS=" $FLAGS -Wno-deprecated-non-prototype" RANLIB=/bin/true ./configure --static
69
85
make -j libz.a
0 commit comments