11#! /bin/bash
22
3- # Place C/C++ common flags here
4- COMMON=" -g"
5-
6- export CFLAGS
7- export CXXFLAGS
8- export LDFLAGS
3+ # Run from the source dir.
4+ SRCDIR=${PWD}
95
106# TODO replace w/ wget
117LZMA=" xz-5.2.1"
12- LZMA_FILE=" /volume/home/jmacd/src/xdelta-devel/xz-5.2.1 .tar.xz"
8+ LZMA_FILE=" ${SRCDIR} /../ ${LZMA} .tar.xz"
139
1410MAKEFLAGS=" -j 10"
1511
16- MYOS=` uname`
17-
18- BUILDDIR=${PWD} /build
12+ BUILDDIR=${SRCDIR} /build
1913LZMASRC=${BUILDDIR} /${LZMA}
2014
21- LIBBASE=$HOME /lib
22-
23- MINGW_CFLAGS=" -DEXTERNAL_COMPRESSION=0 -DVCDIFF_TOOLS=0 -DXD3_WIN32=1 -DSHELL_TESTS=0"
15+ MINGW_CFLAGS=" -DEXTERNAL_COMPRESSION=0 -DVCDIFF_TOOLS=0"
16+ MINGW_CFLAGS=" ${MINGW_CFLAGS} -DXD3_WIN32=1 -DSHELL_TESTS=0"
2417
25- MINGW_LDFLAGS=" "
26-
27- # Location where mingw-w64-build script runs.
28- MINGW_BASE=" /volume/home/jmacd/src/mingwb"
18+ MYOS=` uname`
19+ DATE=` date`
2920
30- # Windows 32bit
31- # Run from the source dir.
32- SRCDIR=$PWD
21+ CLEAN=" "
3322
23+ LINUXTGTS=" "
3424LINUXTEST1=" "
3525LINUXTEST2=" "
26+
27+ WINTGTS=" "
3628WINTEST1=" "
3729WINTEST2=" "
3830
31+ OSXTGTS=" "
32+ OSXTEST1=" "
33+ OSXTEST2=" "
34+
35+ TMP=" ${TMP} "
36+ if [ " ${TMP} " == " " ]; then
37+ TMP=" ${TMPDIR} "
38+ fi
39+
3940find build -type f 2> /dev/null | xargs rm
4041
4142function setup {
@@ -51,15 +52,15 @@ function try {
5152 local dir=$1
5253 shift
5354 echo -n " ${w} ..."
54- (cd " ${dir} " && " $@ " > $w .stdout 2> $w .stderr)
55+ (cd " ${dir} " && " $@ " > ${w} .stdout 2> ${w} .stderr)
5556 local s=$?
56- if [ $s -eq 0 ]; then
57+ if [ ${s} -eq 0 ]; then
5758 echo " success"
5859 else
5960 echo " failed!"
6061 echo " Error $1 in ${dir} " >&2
6162 fi
62- return $s
63+ return ${s}
6364}
6465
6566function buildlzma {
@@ -69,7 +70,7 @@ function buildlzma {
6970
7071 echo " ... liblzma"
7172
72- mkdir -p $target
73+ mkdir -p ${ target}
7374
7475 try configure-lzma ${target} ${LZMASRC} /configure \
7576 --host=${host} \
@@ -93,25 +94,34 @@ function buildlzma {
9394}
9495
9596function buildit {
96- host=$1
97- march=$2
98- offsetbits=$3
99- cargs=$4
100- largs=$5
101- BM=" ${host}${march} "
102- D=" build/${BM} /xoff${offsetbits} "
103- BMD=" ${BM} -${offsetbits} "
104- FULLD=" $PWD / $D "
105- CFLAGS=" ${COMMON} ${ march} ${cargs} -I${PWD } /build/lib-${BM} /include"
106- CXXFLAGS=" ${COMMON} ${ march} ${cargs} -I${PWD } /build/lib-${BM} /include"
107- LDFLAGS=" ${largs} ${march} -L${PWD } /build/lib-${BM} /lib"
97+ local host=$1
98+ local march=$2
99+ local offsetbits=$3
100+ local cargs=$4
101+ local largs=$5
102+ local BM=" ${host}${march} "
103+ local D=" build/${BM} /xoff${offsetbits} "
104+ local BMD=" ${BM} -${offsetbits} "
105+ local FULLD=" ${SRCDIR} / ${D} "
106+ local CFLAGS=" ${march} ${cargs} -g - I${SRCDIR } /build/lib-${BM} /include"
107+ local CXXFLAGS=" ${march} ${cargs} -g - I${SRCDIR } /build/lib-${BM} /include"
108+ local LDFLAGS=" ${largs} ${march} -L${SRCDIR } /build/lib-${BM} /lib"
108109 mkdir -p ${D}
109110
110111 echo " ... ${BMD} "
111112
112113 cat >> Makefile.test << EOF
113114
114115# ${BMD}
116+ # ${CFLAGS}
117+ .PHONY: build-${BMD}
118+ build-${BMD} :
119+ (cd ${D} && make all)
120+
121+ .PHONY: clean-${BMD}
122+ clean-${BMD} :
123+ (cd ${D} && make clean)
124+
115125.PHONY: regtest-${BMD}
116126regtest-${BMD} :
117127 (cd ${D} && ./xdelta3regtest 1> \$ {TMP}/regtest.${BMD} .stdout 2> \$ {TMP}/regtest.${BMD} .stderr)
@@ -125,31 +135,42 @@ EOF
125135
126136 case ${host} in
127137 * linux* )
138+ LINUXTGTS=" ${LINUXTGTS} build-${BMD} "
128139 LINUXTEST1=" ${LINUXTEST1} selftest-${BMD} "
129140 LINUXTEST2=" ${LINUXTEST2} regtest-${BMD} "
130141 ;;
131142 * mingw* )
143+ WINTGTS=" ${WINTGTS} build-${BMD} "
132144 WINTEST1=" ${WINTEST1} selftest-${BMD} "
133145 WINTEST2=" ${WINTEST2} regtest-${BMD} "
134146 ;;
147+ * apple* )
148+ OSXTGTS=" ${OSXTGTS} build-${BMD} "
149+ OSXTEST1=" ${OSXTEST1} selftest-${BMD} "
150+ OSXTEST2=" ${OSXTEST2} regtest-${BMD} "
151+ ;;
135152 esac
153+ CLEAN=" ${CLEAN} clean-${BMD} "
136154
137- try configure-xdelta $FULLD $ SRCDIR /configure \
155+ try configure-xdelta ${ FULLD} ${ SRCDIR} /configure \
138156 --host=${host} \
139157 --prefix=${FULLD} \
140158 --enable-static \
141159 --disable-shared \
142- --enable-debug-symbols
160+ --enable-debug-symbols \
161+ " CFLAGS=${CFLAGS} " \
162+ " CXXFLAGS=${CXXFLAGS} " \
163+ " LDFLAGS=${LDFLAGS} "
143164 if [ $? -ne 0 ]; then
144165 return
145166 fi
146167
147- try build-xdelta $FULLD make ${MAKEFLAGS} all
168+ try build-xdelta ${ FULLD} make ${MAKEFLAGS} all
148169 if [ $? -ne 0 ]; then
149170 return
150171 fi
151172
152- try install-xdelta $FULLD make install
173+ try install-xdelta ${ FULLD} make install
153174}
154175
155176function buildall {
@@ -158,17 +179,8 @@ function buildall {
158179 echo " "
159180
160181 buildlzma " $1 " " $2 "
161- if [ $? -ne 0 ]; then
162- return
163- fi
164182 buildit " $1 " " $2 " 32 " -DXD3_USE_LARGEFILE64=0 $3 " " $4 "
165- if [ $? -ne 0 ]; then
166- return
167- fi
168183 buildit " $1 " " $2 " 64 " -DXD3_USE_LARGEFILE64=1 $3 " " $4 "
169- if [ $? -ne 0 ]; then
170- return
171- fi
172184}
173185
174186setup
@@ -178,28 +190,49 @@ if [ $? -ne 0 ]; then
178190 exit $?
179191fi
180192
181- DATE=` date`
182193cat > Makefile.test << EOF
183194# Auto-generated ${DATE} -*- Mode: Makefile -*-
195+ TMP = ${TMP}
196+
184197EOF
185198
186- # Linux
187- buildall x86_64-pc-linux-gnu -m32
188- buildall x86_64-pc-linux-gnu -m64
199+ # Native compiles
200+ if [ " ${MYOS} " == " Linux" ]; then
201+ # Linux
202+ buildall x86_64-pc-linux-gnu -m32
203+ buildall x86_64-pc-linux-gnu -m64
204+ fi
205+
206+ if [ " ${MYOS} " == " Darwin" ]; then
207+ # OS X
208+ buildall x86_64-apple-darwin -m32
209+ buildall x86_64-apple-darwin -m64
210+ fi
189211
190- # Windows
191- buildall i686-w64-mingw32 -mconsole " ${MINGW_CFLAGS} " " "
192- buildall x86_64-w64-mingw32 -mconsole " ${MINGW_CFLAGS} " " "
212+ # Cross compile
213+ buildall i686-w64-mingw32 -mconsole " ${MINGW_CFLAGS} "
214+ buildall x86_64-w64-mingw32 -mconsole " ${MINGW_CFLAGS} "
193215
194216cat >> Makefile.test << EOF
195217
196- linux: linux-selftest linux-regtest
197- windows: windows-selftest windows-regtest
218+ all: linux windows apple
219+
220+ clean: ${CLEAN}
198221
222+ linux: linux-build linux-selftest linux-regtest
223+ windows: windows-build windows-selftest windows-regtest
224+ apple: apple-build apple-selftest apple-regtest
225+
226+ linux-build: ${LINUXTGTS}
199227linux-selftest: ${LINUXTEST1}
200228linux-regtest: ${LINUXTEST2}
201229
230+ windows-build: ${WINTGTS}
202231windows-selftest: ${WINTEST1}
203232windows-regtest: ${WINTEST2}
204233
234+ apple-build: ${OSXTGTS}
235+ apple-selftest: ${OSXTEST1}
236+ apple-regtest: ${OSXTEST2}
237+
205238EOF
0 commit comments