-
Notifications
You must be signed in to change notification settings - Fork 96
Expand file tree
/
Copy pathmake_message_src.sh
More file actions
executable file
·124 lines (112 loc) · 2.87 KB
/
make_message_src.sh
File metadata and controls
executable file
·124 lines (112 loc) · 2.87 KB
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/bin/sh
set -e
KERNEL_NAME=`uname -s`
if [ "$KERNEL_NAME" = "Darwin" ]; then
# Compilation with brew help
ICU_FRAMEWORK="$(brew --prefix icu4c)"
if [ -n "$ICU_FRAMEWORK" ]; then
GENRB=${ICU_FRAMEWORK}/bin/genrb
PKGDATA=${ICU_FRAMEWORK}/bin/pkgdata
ICUBREW_INSTALLED=true
else
ICUBREW_INSTALLED=false
ICU_FRAMEWORK=/Library/Frameworks/ICU.framework
fi
# Old compilation
if [ "$ICUBREW_INSTALLED" = false ] && [ -d ${ICU_FRAMEWORK} ]; then
export PATH=${PATH}:${ICU_FRAMEWORK}/Versions/Current/usr/bin
export DYLD_LIBRARY_PATH=${ICU_FRAMEWORK}/Versions/Current/usr/lib
GENRB=${ICU_FRAMEWORK}/Versions/Current/usr/bin/genrb
PKGDATA=${ICU_FRAMEWORK}/Versions/Current/usr/bin/pkgdata
elif [ "$ICUBREW_INSTALLED" = false ]; then
GENRB=genrb
PKGDATA=pkgdata
fi
elif [ "$KERNEL_NAME" = "FreeBSD" ]; then
GENRB=genrb
PKGDATA=/usr/local/bin/pkgdata
else
if [ -x /usr/bin/genrb ]; then
GENRB=/usr/bin/genrb
else
GENRB=genrb
fi
if [ -x /usr/bin/pkgdata ]; then
PKGDATA=/usr/bin/pkgdata
else
PKGDATA=pkgdata
fi
fi
if [ "$#" -ne "1" ]; then
echo "Usage: $0 object_file"
exit 1
fi
case $KERNEL_NAME in
MINGW32_NT*)
BASENAME=`echo $1 | sed -e 's/_dat\.o$//'`
;;
*)
BASENAME=`echo $1 | sed -e 's/_dat\.a$//'`
BASENAME=`echo $BASENAME | sed -e 's/^lib//'`
;;
esac
cd ${BASENAME}
make_obj() {
echo "Processing ${BASENAME}"
# Create a fresh work directory
if [ -d work ]; then
rm -rf work
fi
mkdir work
# Generate files
${GENRB} -d work -q *.txt
cd work
ls *.res >packagelist.txt
${PKGDATA} -p ${BASENAME} -m static -q packagelist.txt >/dev/null
case $KERNEL_NAME in
MINGW32_NT*)
mv ${BASENAME}.dat ../../
;;
FreeBSD)
# pkgdata with -m static generates an ar(1) archive
# with several object files on FreeBSD. To avoid
# reworking the makefiles for all OSes, just rename
# the archive to match the regular convention. The
# linker handles it without a problem.
mv lib${BASENAME}.a ../../lib${BASENAME}_dat.a
;;
NetBSD)
# generate libtool archive for later linking
mv lib${BASENAME}.a ../../lib${BASENAME}_dat.a
OBJFILE=${BASENAME}_dat.o
LTFILE=${BASENAME}_dat.lo
mkdir -p .libs ../../.libs
mv ${OBJFILE} .libs
LTVERS=`libtool --version |
sed -e 's/^\([^ ]*\) (GNU \(.*\)) \(.*\)$$/\1 - GNU \2 \3/' -e q`
echo "# ${OBJFILE} - a libtool object file" > ${LTFILE}
echo "# Generated by ${LTVERS}" >> ${LTFILE}
echo "pic_object='.libs/${OBJFILE}'" >> ${LTFILE}
echo "non_pic_object=none" >> ${LTFILE}
libtool --mode=link --tag=CC cc -o ../../lib${BASENAME}_dat.la ${LTFILE}
cp ../../lib${BASENAME}_dat.a ../../.libs
;;
*)
mv ${BASENAME}_dat.o ../../lib${BASENAME}_dat.a
;;
esac
# Clean up
cd ..
rm -rf work
}
# Check whether we need to do anything
if [ -f "../$1" ]; then
for file in *.txt; do
if [ "$file" -nt "../$1" ]; then
make_obj
exit 0
fi
done
else
make_obj
fi