Skip to content

Commit 7c4a39f

Browse files
committed
Boost for x86 works
1 parent 4aef67b commit 7c4a39f

File tree

3 files changed

+198
-17
lines changed

3 files changed

+198
-17
lines changed
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
diff --git a/build-android.sh b/build-android.sh
2+
index 40453f7..86f0cff 100755
3+
--- a/build-android.sh
4+
+++ b/build-android.sh
5+
@@ -258,9 +258,9 @@ case "$NDK_RN" in
6+
TOOLSET=gcc-androidR8e
7+
;;
8+
"10 (64-bit)")
9+
- TOOLCHAIN=${TOOLCHAIN:-arm-linux-androideabi-4.6}
10+
- CXXPATH=$AndroidNDKRoot/toolchains/${TOOLCHAIN}/prebuilt/${PlatformOS}-x86_64/bin/arm-linux-androideabi-g++
11+
- TOOLSET=gcc-androidR8e
12+
+ TOOLCHAIN=llvm-3.4
13+
+ CXXPATH=$AndroidNDKRoot/toolchains/${TOOLCHAIN}/prebuilt/${PlatformOS}-x86_64/bin/clang++
14+
+ TOOLSET=clang-androidR8e
15+
;;
16+
*)
17+
echo "Undefined or not supported Android NDK version!"
18+
@@ -392,6 +392,7 @@ echo "Building boost for android"
19+
export PATH=$AndroidBinariesPath:$PATH
20+
export AndroidNDKRoot
21+
export NO_BZIP2=1
22+
+ export ICONV_PATH="`pwd`/../../libiconv/x86"
23+
24+
cxxflags=""
25+
for flag in $CXXFLAGS; do cxxflags="$cxxflags cxxflags=$flag"; done
26+
@@ -404,8 +405,12 @@ echo "Building boost for android"
27+
threading=multi \
28+
--layout=versioned \
29+
--prefix="./../$BUILD_DIR/" \
30+
+ boost.locale.posix=off \
31+
+ boost.locale.std=on \
32+
+ boost.locale.iconv=on \
33+
+ boost.locale.icu=off \
34+
$LIBRARIES \
35+
- install 2>&1 \
36+
+ release debug install 2>&1 \
37+
|| { dump "ERROR: Failed to build boost for android!" ; exit 1 ; }
38+
} | tee -a $PROGDIR/build.log
39+
40+
diff --git a/configs/user-config-boost-1_55_0.jam b/configs/user-config-boost-1_55_0.jam
41+
index 666d4c8..9c2f67f 100644
42+
--- a/configs/user-config-boost-1_55_0.jam
43+
+++ b/configs/user-config-boost-1_55_0.jam
44+
@@ -41,91 +41,44 @@ import os ;
45+
local AndroidNDKRoot = [ os.environ AndroidNDKRoot ] ;
46+
47+
# --------------------------------------------------------------------
48+
-# Is same for 8b, 8c and 8d
49+
-using gcc : androidR8b
50+
+using clang : androidR8e
51+
:
52+
-arm-linux-androideabi-g++
53+
+$(AndroidNDKRoot)/toolchains/llvm-3.4/prebuilt/linux-x86_64/bin/clang++
54+
:
55+
-<archiver>arm-linux-androideabi-ar
56+
+<compileflags>--gcc-toolchain="$(AndroidNDKRoot)/toolchains/x86-4.8/prebuilt/linux-x86_64"
57+
<compileflags>-fexceptions
58+
<compileflags>-frtti
59+
<compileflags>-fpic
60+
<compileflags>-ffunction-sections
61+
<compileflags>-funwind-tables
62+
-<compileflags>-D__ARM_ARCH_5__
63+
-<compileflags>-D__ARM_ARCH_5T__
64+
-<compileflags>-D__ARM_ARCH_5E__
65+
-<compileflags>-D__ARM_ARCH_5TE__
66+
-<compileflags>-Wno-psabi
67+
-<compileflags>-march=armv5te
68+
-<compileflags>-mtune=xscale
69+
-<compileflags>-msoft-float
70+
-<compileflags>-mthumb
71+
+<compileflags>-fstack-protector
72+
+<compileflags>-no-canonical-prefixes
73+
+<compileflags>--target=i686-none-linux-android
74+
+<compileflags>--sysroot="$(AndroidNDKRoot)/platforms/android-9/arch-x86"
75+
<compileflags>-Os
76+
<compileflags>-fomit-frame-pointer
77+
-<compileflags>-fno-strict-aliasing
78+
-<compileflags>-finline-limit=64
79+
-<compileflags>-I$(AndroidNDKRoot)/platforms/android-9/arch-arm/usr/include
80+
+<compileflags>-fstrict-aliasing
81+
<compileflags>-Wa,--noexecstack
82+
<compileflags>-DANDROID
83+
<compileflags>-D__ANDROID__
84+
<compileflags>-DNDEBUG
85+
<compileflags>-O2
86+
<compileflags>-g
87+
-<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/gnu-libstdc++/4.6/include
88+
-<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include
89+
+<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/gnu-libstdc++/4.8/include
90+
+<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include
91+
+<linkflags>--target=i686-none-linux-android
92+
+<linkflags>--gcc-toolchain="$(AndroidNDKRoot)/toolchains/x86-4.8/prebuilt/linux-x86_64"
93+
+<linkflags>--sysroot=$(AndroidNDKRoot)/platforms/android-9/arch-x86
94+
# @Moss - Above are the 'oficial' android flags
95+
-<architecture>arm
96+
+#<architecture>i686
97+
<compileflags>-fvisibility=hidden
98+
<compileflags>-fvisibility-inlines-hidden
99+
<compileflags>-fdata-sections
100+
-<cxxflags>-D__arm__
101+
<cxxflags>-D_REENTRANT
102+
<cxxflags>-D_GLIBCXX__PTHREADS
103+
+<cxxflags>-std=c++11
104+
;
105+
106+
-# --------------------------------------------------------------------
107+
-using gcc : androidR8e
108+
-:
109+
-arm-linux-androideabi-g++
110+
-:
111+
-<archiver>arm-linux-androideabi-ar
112+
-<compileflags>-fexceptions
113+
-<compileflags>-frtti
114+
-<compileflags>-fpic
115+
-<compileflags>-ffunction-sections
116+
-<compileflags>-funwind-tables
117+
-<compileflags>-D__ARM_ARCH_5__
118+
-<compileflags>-D__ARM_ARCH_5T__
119+
-<compileflags>-D__ARM_ARCH_5E__
120+
-<compileflags>-D__ARM_ARCH_5TE__
121+
-<compileflags>-Wno-psabi
122+
-<compileflags>-march=armv5te
123+
-<compileflags>-mtune=xscale
124+
-<compileflags>-msoft-float
125+
-<compileflags>-mthumb
126+
-<compileflags>-Os
127+
-<compileflags>-fomit-frame-pointer
128+
-<compileflags>-fno-strict-aliasing
129+
-<compileflags>-finline-limit=64
130+
-<compileflags>-I$(AndroidNDKRoot)/platforms/android-9/arch-arm/usr/include
131+
-<compileflags>-Wa,--noexecstack
132+
-<compileflags>-DANDROID
133+
-<compileflags>-D__ANDROID__
134+
-<compileflags>-DNDEBUG
135+
-<compileflags>-O2
136+
-<compileflags>-g
137+
-<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/gnu-libstdc++/4.6/include
138+
-<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include
139+
-# @Moss - Above are the 'oficial' android flags
140+
-<architecture>arm
141+
-<compileflags>-fvisibility=hidden
142+
-<compileflags>-fvisibility-inlines-hidden
143+
-<compileflags>-fdata-sections
144+
-<cxxflags>-D__arm__
145+
-<cxxflags>-D_REENTRANT
146+
-<cxxflags>-D_GLIBCXX__PTHREADS
147+
-;
148+
149+
150+
# ------------------

Build_android/boost-for-android.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/build-android.sh b/build-android.sh
2-
index 40453f7..dd92f74 100755
2+
index 40453f7..97a3203 100755
33
--- a/build-android.sh
44
+++ b/build-android.sh
55
@@ -258,9 +258,9 @@ case "$NDK_RN" in
@@ -19,7 +19,7 @@ index 40453f7..dd92f74 100755
1919
export PATH=$AndroidBinariesPath:$PATH
2020
export AndroidNDKRoot
2121
export NO_BZIP2=1
22-
+ export ICONV_PATH="`pwd`/../../libiconv/r9d-9-armeabiv7a"
22+
+ export ICONV_PATH="`pwd`/../../libiconv/armeabi-v7a"
2323

2424
cxxflags=""
2525
for flag in $CXXFLAGS; do cxxflags="$cxxflags cxxflags=$flag"; done

Build_android/configure.sh

Lines changed: 46 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ fi
123123
if [ "${DO_OPENSSL}" == "1" ]
124124
then
125125
(
126+
if [ ! -d "openssl" ]; then mkdir openssl; fi
127+
cd openssl
126128
cp "${DIR}/openssl/Makefile" .
127129
export ANDROID_NDK_ROOT="${NDK_DIR}"
128130
make all
@@ -138,26 +140,29 @@ fi
138140
if [ "${DO_LIBICONV}" == "1" ]
139141
then
140142
(
141-
rm -rf libiconv
142-
mkdir libiconv
143-
cd libiconv
144143
if [ ! -e "libiconv-1.13.1.tar.gz" ]
145144
then
146145
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
147146
fi
148-
rm -rf libiconv-1.13.1
149-
tar xzf libiconv-1.13.1.tar.gz
147+
rm -rf libiconv
148+
mkdir libiconv
149+
cd libiconv
150+
tar xzf ../libiconv-1.13.1.tar.gz
150151
patch -b -p0 < "$DIR/libiconv/libiconv.patch"
151152
cd libiconv-1.13.1
152153
./configure
153154
cp -r "$DIR/libiconv/jni" ..
154155
cd ../jni
155156
"${NDK_DIR}/ndk-build" || exit 1
156157
cd ..
157-
mkdir -p r9d-9-armeabiv7a/include
158-
mkdir -p r9d-9-armeabiv7a/lib
159-
cp libiconv-1.13.1/include/iconv.h r9d-9-armeabiv7a/include/
160-
cp libs/armeabi-v7a/libiconv.so r9d-9-armeabiv7a/lib/
158+
mkdir -p armeabi-v7a/include
159+
mkdir -p armeabi-v7a/lib
160+
mkdir -p x86/include
161+
mkdir -p x86/lib
162+
cp libiconv-1.13.1/include/iconv.h armeabi-v7a/include/
163+
cp libiconv-1.13.1/include/iconv.h x86/include/
164+
cp obj/local/x86/libiconv.a x86/lib/
165+
cp obj/local/armeabi-v7a/libiconv.a armeabi-v7a/lib/
161166
)
162167
fi
163168

@@ -169,12 +174,38 @@ fi
169174
if [ "${DO_BOOST}" == "1" ]
170175
then
171176
(
172-
rm -rf Boost-for-Android
173-
git clone https://github.com/MysticTreeGames/Boost-for-Android.git
174-
cd Boost-for-Android
175-
git checkout 1c95d349d5f92c5ac1c24e0ec6985272a3e3883c
176-
patch -p1 < "$DIR/boost-for-android.patch"
177-
PATH="$PATH:$NDK_DIR" ./build-android.sh --boost=1.55.0 --with-libraries=locale,random,date_time,filesystem,system,thread,chrono "${NDK_DIR}" || exit 1
177+
(
178+
if [ ! -d "Boost-for-Android" ]
179+
then
180+
git clone https://github.com/MysticTreeGames/Boost-for-Android.git
181+
fi
182+
cd Boost-for-Android
183+
if [ ! -e "cpprestsdk.patched.stamp" ]
184+
then
185+
git checkout 1c95d349d5f92c5ac1c24e0ec6985272a3e3883c
186+
git reset --hard HEAD
187+
patch -p1 < "$DIR/boost-for-android.patch"
188+
touch cpprestsdk.patched.stamp
189+
fi
190+
PATH="$PATH:$NDK_DIR" ./build-android.sh --boost=1.55.0 --with-libraries=locale,random,date_time,filesystem,system,thread,chrono "${NDK_DIR}" || exit 1
191+
)
192+
193+
(
194+
if [ ! -d "Boost-for-Android-x86" ]
195+
then
196+
git clone Boost-for-Android Boost-for-Android-x86
197+
fi
198+
cd Boost-for-Android-x86
199+
if [ ! -e "cpprestsdk.patched.stamp" ]
200+
then
201+
git checkout 1c95d349d5f92c5ac1c24e0ec6985272a3e3883c
202+
git reset --hard HEAD
203+
patch -p1 < "$DIR/boost-for-android-x86.patch"
204+
ln -s ../Boost-for-Android/boost_1_55_0.tar.bz2 .
205+
touch cpprestsdk.patched.stamp
206+
fi
207+
PATH="$PATH:$NDK_DIR" ./build-android.sh --boost=1.55.0 --with-libraries=locale,random,date_time,filesystem,system,thread,chrono "${NDK_DIR}" || exit 1
208+
)
178209
)
179210
fi
180211

0 commit comments

Comments
 (0)