Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/android-openjdk-build-multiarch
Path: blob/buildjre8/buildjdk.sh
861 views
1
#!/bin/bash
2
set -e
3
. setdevkitpath.sh
4
5
if [[ "$TARGET_JDK" == "arm" ]]
6
then
7
export TARGET_JDK=aarch32
8
export TARGET_PHYS=aarch32-linux-androideabi
9
export JVM_VARIANTS=client
10
else
11
export TARGET_PHYS=$TARGET
12
fi
13
14
export FREETYPE_DIR=$PWD/freetype-$BUILD_FREETYPE_VERSION/build_android-$TARGET_SHORT
15
export CUPS_DIR=$PWD/cups-2.2.4
16
export CFLAGS+=" -DLE_STANDALONE" # -I$FREETYPE_DIR -I$CUPS_DI
17
18
# if [[ "$TARGET_JDK" == "aarch32" ]] || [[ "$TARGET_JDK" == "aarch64" ]]
19
# then
20
# export CFLAGS+=" -march=armv7-a+neon"
21
# fi
22
23
# It isn't good, but need make it build anyways
24
# cp -R $CUPS_DIR/* $ANDROID_INCLUDE/
25
26
# cp -R /usr/include/X11 $ANDROID_INCLUDE/
27
# cp -R /usr/include/fontconfig $ANDROID_INCLUDE/
28
29
if [[ "$BUILD_IOS" != "1" ]]; then
30
export CFLAGS+=" -O3 -D__ANDROID__"
31
32
ln -s -f /usr/include/X11 $ANDROID_INCLUDE/
33
ln -s -f /usr/include/fontconfig $ANDROID_INCLUDE/
34
AUTOCONF_x11arg="--x-includes=$ANDROID_INCLUDE/X11"
35
36
export LDFLAGS+=" -L`pwd`/dummy_libs"
37
38
# Create dummy libraries so we won't have to remove them in OpenJDK makefiles
39
mkdir -p dummy_libs
40
ar cru dummy_libs/libpthread.a
41
ar cru dummy_libs/libthread_db.a
42
else
43
ln -s -f /opt/X11/include/X11 $ANDROID_INCLUDE/
44
platform_args="--with-toolchain-type=clang SDKNAME=iphoneos"
45
# --disable-precompiled-headers
46
AUTOCONF_x11arg="--with-x=/opt/X11/include/X11 --prefix=/usr/lib"
47
sameflags="-arch arm64 -DHEADLESS=1 -I$PWD/ios-missing-include -Wno-c++11-narrowing -Wno-implicit-function-declaration -Wno-reserved-user-defined-literal -Wno-shift-negative-value"
48
export CFLAGS+=" $sameflags"
49
export LDFLAGS+=" -arch arm64"
50
export BUILD_SYSROOT_CFLAGS="-isysroot ${themacsysroot}"
51
52
HOMEBREW_NO_AUTO_UPDATE=1 brew install ldid xquartz
53
fi
54
55
# fix building libjawt
56
ln -s -f $CUPS_DIR/cups $ANDROID_INCLUDE/
57
58
#FREEMARKER=$PWD/freemarker-2.3.8/lib/freemarker.jar
59
60
cd openjdk
61
62
# Apply patches
63
git reset --hard
64
if [[ "$BUILD_IOS" != "1" ]]; then
65
git apply --reject --whitespace=fix ../patches/jdk8u_android.diff || echo "git apply failed (universal patch set)"
66
if [[ "$TARGET_JDK" != "aarch32" ]]; then
67
git apply --reject --whitespace=fix ../patches/jdk8u_android_main.diff || echo "git apply failed (main non-universal patch set)"
68
else
69
git apply --reject --whitespace=fix ../patches/jdk8u_android_aarch32.diff || echo "git apply failed (aarch32 non-universal patch set)"
70
fi
71
if [[ "$TARGET_JDK" == "x86" ]]; then
72
git apply --reject --whitespace=fix ../patches/jdk8u_android_page_trap_fix.diff || echo "git apply failed (x86 page trap fix)"
73
fi
74
else
75
git apply --reject --whitespace=fix ../patches/jdk8u_ios.diff || echo "git apply failed (ios patch set)"
76
git apply --reject --whitespace=fix ../patches/jdk8u_ios_fix_clang.diff || echo "git apply failed (ios clang fix patch set)"
77
fi
78
79
# --with-extra-cxxflags="$CXXFLAGS -Dchar16_t=uint16_t -Dchar32_t=uint32_t" \
80
# --with-extra-cflags="$CPPFLAGS" \
81
# --with-sysroot="$(xcrun --sdk iphoneos --show-sdk-path)" \
82
83
# Let's print what's available
84
# bash configure --help
85
86
# --with-freemarker-jar=$FREEMARKER \
87
# --with-toolchain-type=clang \
88
# --with-native-debug-symbols=none \
89
bash ./configure \
90
--openjdk-target=$TARGET_PHYS \
91
--with-extra-cflags="$CFLAGS" \
92
--with-extra-cxxflags="$CFLAGS" \
93
--with-extra-ldflags="$LDFLAGS" \
94
--enable-option-checking=fatal \
95
--with-jdk-variant=normal \
96
--with-jvm-variants="${JVM_VARIANTS/AND/,}" \
97
--with-cups-include=$CUPS_DIR \
98
--with-devkit=$TOOLCHAIN \
99
--with-debug-level=$JDK_DEBUG_LEVEL \
100
--with-fontconfig-include=$ANDROID_INCLUDE \
101
--with-freetype-lib=$FREETYPE_DIR/lib \
102
--with-freetype-include=$FREETYPE_DIR/include/freetype2 \
103
$AUTOCONF_x11arg $AUTOCONF_EXTRA_ARGS \
104
--x-libraries=/usr/lib \
105
$platform_args || \
106
error_code=$?
107
if [[ "$error_code" -ne 0 ]]; then
108
echo "\n\nCONFIGURE ERROR $error_code , config.log:"
109
cat config.log
110
exit $error_code
111
fi
112
113
cd build/${JVM_PLATFORM}-${TARGET_JDK}-normal-${JVM_VARIANTS}-${JDK_DEBUG_LEVEL}
114
make JOBS=4 images || \
115
error_code=$?
116
if [[ "$error_code" -ne 0 ]]; then
117
echo "Build failure, exited with code $error_code. Trying again."
118
make JOBS=4 images
119
fi
120
121