Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y build-essential libc6-dev libc6-dev:i386 \
gcc-multilib g++-multilib \
gcc-multilib g++-multilib meson \
dos2unix

- name: Setup Android SDK
Expand Down
2 changes: 2 additions & 0 deletions Start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ fi
./freetype.sh bootstrap
./harfbuzz.sh
./freetype.sh
./pixman.sh
./cairo.sh
./libSDL.sh
./openssl.sh
./irrlicht.sh
Expand Down
133 changes: 133 additions & 0 deletions cairo.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
#!/bin/bash -e

. ./sdk.sh
CAIRO_VERSION=1.18.4

mkdir -p output/cairo/lib/$TARGET_ABI
mkdir -p deps; cd deps

if [ ! -d cairo-src ]; then
git clone -b $CAIRO_VERSION --depth 1 https://gitlab.freedesktop.org/cairo/cairo.git cairo-src
mkdir cairo-src/build
fi

cd cairo-src

FREETYPE_PREFIX="$ANDR_ROOT/output/freetype"
PNG_PREFIX="$ANDR_ROOT/output/libpng"
PIXMAN_PREFIX="$ANDR_ROOT/output/pixman"
CROSS_FILE="android-$TARGET_ABI.cross"

mkdir -p pkgconfig

cat > pkgconfig/freetype2.pc << EOF
prefix=$ANDR_ROOT/output/freetype
exec_prefix=\${prefix}
libdir=\${prefix}/lib/$TARGET_ABI
includedir=\${prefix}/include

Name: FreeType 2
Description:
Version: 26.x
Libs: -L\${libdir} -lfreetype
Cflags: -I\${includedir}
EOF

cat > pkgconfig/pixman-1.pc << EOF
prefix=$ANDR_ROOT/output/pixman
exec_prefix=\${prefix}
libdir=\${prefix}/lib/$TARGET_ABI
includedir=\${prefix}/include

Name: Pixman
Description:
Version: 0.42.x
Libs: -L\${libdir} -lpixman
Cflags: -I\${includedir}
EOF

cat > pkgconfig/libpng.pc << EOF
prefix=$ANDR_ROOT/output/libpng
exec_prefix=\${prefix}
libdir=\${prefix}/lib/$TARGET_ABI
includedir=\${prefix}/include

Name: libpng
Description:
Version: 1.6.x
Libs: -L\${libdir} -lpng
Cflags: -I\${includedir}
EOF

cat > "$CROSS_FILE" << EOF
[binaries]
c = '$CC'
cpp = '$CXX'
ar = '$AR'
ranlib = '$RANLIB'
strip = '$STRIP'
pkg-config = 'pkg-config'

[built-in options]
c_args = ['-O3', '-fPIC', '-D__ANDROID_MIN_SDK_VERSION__=$API',
'-I${FREETYPE_PREFIX}/include', '-I${FREETYPE_PREFIX}/include/freetype2',
'-I${PNG_PREFIX}/include',
'-I${PIXMAN_PREFIX}/include']
c_link_args = ['-fPIC',
'-L${FREETYPE_PREFIX}/lib/${TARGET_ABI}',
'-L${PNG_PREFIX}/lib/${TARGET_ABI}',
'-L${PIXMAN_PREFIX}/lib/${TARGET_ABI}']
cpp_args = ['-O3', '-fPIC', '-D__ANDROID_MIN_SDK_VERSION__=$API',
'-I${FREETYPE_PREFIX}/include', '-I${FREETYPE_PREFIX}/include/freetype2',
'-I${PNG_PREFIX}/include',
'-I${PIXMAN_PREFIX}/include']
cpp_link_args = ['-fPIC',
'-L${FREETYPE_PREFIX}/lib/${TARGET_ABI}',
'-L${PNG_PREFIX}/lib/${TARGET_ABI}',
'-L${PIXMAN_PREFIX}/lib/${TARGET_ABI}']

[properties]
sys_root = '$TOOLCHAIN/sysroot'
needs_exe_wrapper = true
pkg_config_libdir = '$ANDR_ROOT/deps/cairo-src/pkgconfig'

[host_machine]
system = 'android'
cpu_family = '$TARGET_CPU_FAMILY'
cpu = '$TARGET_CPU'
endian = 'little'
EOF

meson setup build \
--cross-file "$CROSS_FILE" \
--wrap-mode=nodownload \
--default-library=static \
--buildtype=release \
-Dprefix=/ \
-Dfreetype=enabled \
-Dpng=enabled \
-Dfontconfig=disabled \
-Dxcb=disabled \
-Dxlib=disabled \
-Dxlib-xcb=disabled \
-Dzlib=disabled \
-Dtests=disabled \
-Dlzo=disabled \
-Dgtk2-utils=disabled \
-Dglib=disabled \
-Dspectre=disabled \
-Dsymbol-lookup=disabled \
-Dgtk_doc=false

ninja -C build -j$(nproc)

# update headers
rm -rf ../../output/cairo/include
mkdir -p ../../output/cairo/include/cairo
cp src/*.h ../../output/cairo/include/cairo/
cp build/src/*.h ../../output/cairo/include/cairo/
# update lib
rm -f ../../output/cairo/lib/$TARGET_ABI/libcairo.a
cp build/src/libcairo.a ../../output/cairo/lib/$TARGET_ABI/libcairo.a

echo "libcairo build successful"
82 changes: 82 additions & 0 deletions pixman.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
#!/bin/bash -e

. ./sdk.sh
PIXMAN_VERSION=0.46.4

mkdir -p output/pixman/lib/$TARGET_ABI
mkdir -p deps; cd deps

if [ ! -d pixman-src ]; then
git clone -b pixman-$PIXMAN_VERSION --depth 1 https://gitlab.freedesktop.org/pixman/pixman.git pixman-src
mkdir pixman-src/build
fi

cd pixman-src

PNG_PREFIX="$ANDR_ROOT/output/libpng"
CROSS_FILE="android-$TARGET_ABI.cross"

mkdir -p pkgconfig

cat > pkgconfig/libpng.pc << EOF
prefix=$ANDR_ROOT/output/libpng
exec_prefix=\${prefix}
libdir=\${prefix}/lib/$TARGET_ABI
includedir=\${prefix}/include

Name: libpng
Description:
Version: 1.6.x
Libs: -L\${libdir} -lpng
Cflags: -I\${includedir}
EOF

cat > "$CROSS_FILE" << EOF
[binaries]
c = '$CC'
cpp = '$CXX'
ar = '$AR'
ranlib = '$RANLIB'
strip = '$STRIP'
pkg-config = 'pkg-config'

[built-in options]
c_args = ['-O3', '-fPIC', '-D__ANDROID_MIN_SDK_VERSION__=$API', '-I${PNG_PREFIX}/include']
c_link_args = ['-fPIC', '-L${PNG_PREFIX}/lib/${TARGET_ABI}']
cpp_args = ['-O3', '-fPIC', '-D__ANDROID_MIN_SDK_VERSION__=$API', '-I${PNG_PREFIX}/include']
cpp_link_args = ['-fPIC', '-L${PNG_PREFIX}/lib/${TARGET_ABI}']

[properties]
sys_root = '$TOOLCHAIN/sysroot'
needs_exe_wrapper = true
pkg_config_libdir = '$ANDR_ROOT/deps/pixman-src/pkgconfig'

[host_machine]
system = 'android'
cpu_family = '$TARGET_CPU_FAMILY'
cpu = '$TARGET_CPU'
endian = 'little'
EOF

meson setup build \
--cross-file "$CROSS_FILE" \
--default-library=static \
--buildtype=release \
-Dprefix=/ \
-Dgtk=disabled \
-Dtests=disabled \
-Ddemos=disabled \
-Dcpu-features-path="$ANDROID_NDK/sources/android/cpufeatures"

ninja -C build -j$(nproc)

# update headers
rm -rf ../../output/pixman/include
mkdir -p ../../output/pixman/include
cp pixman/*.h ../../output/pixman/include/
cp build/pixman/*.h ../../output/pixman/include/
# update lib
rm -f ../../output/pixman/lib/$TARGET_ABI/libpixman.a
cp "build/pixman/libpixman-1.a" ../../output/pixman/lib/$TARGET_ABI/libpixman.a

echo "libpixman build successful"
12 changes: 9 additions & 3 deletions sdk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,25 @@ case "$ARCH" in
export TARGET_ABI=armeabi-v7a
export TARGET_NAME=android-arm
export ANDROID_ABI="$TARGET_ABI with NEON"
export TARGET=armv7a-linux-androideabi ;;
export TARGET=armv7a-linux-androideabi
export TARGET_CPU_FAMILY=arm
export TARGET_CPU=armv7a ;;
"arm64")
### toolchain config for ARM64
export TARGET_ABI=arm64-v8a
export TARGET_NAME=android-arm64
export ANDROID_ABI=$TARGET_ABI
export TARGET=aarch64-linux-android ;;
export TARGET=aarch64-linux-android
export TARGET_CPU_FAMILY=aarch64
export TARGET_CPU=armv8 ;;
"x86_64")
### toolchain config for x86_64
export TARGET_ABI=x86_64
export TARGET_NAME=android-x86_64
export ANDROID_ABI=$TARGET_ABI
export TARGET=x86_64-linux-android ;;
export TARGET=x86_64-linux-android
export TARGET_CPU_FAMILY=x86_64
export TARGET_CPU=x86_64 ;;
*)
echo "Don't ask to use $ARCH"
exit 1 ;;
Expand Down