Skip to content

Commit

Permalink
Rive Text for iOS and Android!
Browse files Browse the repository at this point in the history
Adding rive text support to ios.

@mjtalbot Sorry for the shell script format churn, this is my formatter in case we want to standardize on one:
https://github.com/foxundermoon/vs-shell-format
```
  "[shellscript]": {
    "editor.defaultFormatter": "foxundermoon.shell-format"
  },
```

Also, I couldn't test the MacOSX build thoroughly as I was getting a Metal error on run which wasn't related to the text changes. But maybe I'm running the wrong project (this is the iOS one which I thought we were sharing)? Not sure which one I should run for Mac. This is the error:
<img width="847" alt="CleanShot 2023-07-20 at 16 29 56@2x" src="https://github.com/rive-app/rive/assets/454182/6c2f70f9-c8f4-4b50-a3cb-753a861e2e0b">

Diffs=
13863bf8f Rive Text for iOS and Android! (#5634)

Co-authored-by: Luigi Rosso <[email protected]>
  • Loading branch information
luigi-rosso and luigi-rosso committed Jul 24, 2023
1 parent 66b1e65 commit cf2e58c
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 74 deletions.
2 changes: 1 addition & 1 deletion .rive_head
Original file line number Diff line number Diff line change
@@ -1 +1 @@
9e0c43b70a4f25342bf4572d1284c01b4781cf99
13863bf8f83c360422e9b8e924660a57e902b524
13 changes: 12 additions & 1 deletion RiveRuntime.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -647,16 +647,21 @@
"OTHER_LDFLAGS[sdk=iphoneos*]" = (
"-lskia_ios",
"-lrive",
"-lrive_harfbuzz",
"-lrive_sheenbidi",
"-lrive_skia_renderer",
);
"OTHER_LDFLAGS[sdk=iphonesimulator*]" = (
"-lskia_ios_sim",
"-lrive_sim",
"-lrive_harfbuzz_sim",
"-lrive_sheenbidi_sim",
"-lrive_skia_renderer_sim",
);
"OTHER_LDFLAGS[sdk=macosx*]" = (
"-lskia_macos",
"-lrive_macos",
"-lrive_harfbuzz_macos",
"-lrive_sheenbidi_macos",
"-lrive_skia_renderer_macos",
);
PRODUCT_BUNDLE_IDENTIFIER = rive.app.ios.runtime.RiveRuntime;
Expand Down Expand Up @@ -720,16 +725,22 @@
"OTHER_LDFLAGS[sdk=iphoneos*]" = (
"-lskia_ios",
"-lrive",
"-lrive_harfbuzz",
"-lrive_sheenbidi",
"-lrive_skia_renderer",
);
"OTHER_LDFLAGS[sdk=iphonesimulator*]" = (
"-lskia_ios_sim",
"-lrive_sim",
"-lrive_harfbuzz_sim",
"-lrive_sheenbidi_sim",
"-lrive_skia_renderer_sim",
);
"OTHER_LDFLAGS[sdk=macosx*]" = (
"-lskia_macos",
"-lrive_macos",
"-lrive_harfbuzz_macos",
"-lrive_sheenbidi_macos",
"-lrive_skia_renderer_macos",
);
PRODUCT_BUNDLE_IDENTIFIER = rive.app.ios.runtime.RiveRuntime;
Expand Down
140 changes: 69 additions & 71 deletions scripts/build.rive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,16 @@ set -ex
# split in two so build.skia can be done by multiple workers.
# assumes all skia's have been built

path=`readlink -f "${BASH_SOURCE:-$0}"`
DEV_SCRIPT_DIR=`dirname $path`
path=$(readlink -f "${BASH_SOURCE:-$0}")
DEV_SCRIPT_DIR=$(dirname $path)


if [ -d "$DEV_SCRIPT_DIR/../submodules/rive-cpp" ];
then
if [ -d "$DEV_SCRIPT_DIR/../submodules/rive-cpp" ]; then
export RIVE_RUNTIME_DIR="$DEV_SCRIPT_DIR/../submodules/rive-cpp"
else
export RIVE_RUNTIME_DIR="$DEV_SCRIPT_DIR/../../runtime"
fi
export RIVE_RUNTIME_DIR="$DEV_SCRIPT_DIR/../../runtime"
fi

make_dependency_directories(){
make_dependency_directories() {
rm -fr $DEV_SCRIPT_DIR/../dependencies

mkdir -p $DEV_SCRIPT_DIR/../dependencies
Expand All @@ -34,6 +32,8 @@ build_renderer() {
./build.sh -p ios $1
popd
cp -r $RIVE_RUNTIME_DIR/build/ios/bin/$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive.a
cp -r $RIVE_RUNTIME_DIR/dependencies/ios/cache/bin/$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz.a
cp -r $RIVE_RUNTIME_DIR/dependencies/ios/cache/bin/$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi.a
cp -r $RIVE_RUNTIME_DIR/skia/renderer/build/ios/bin/$1/librive_skia_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_skia_renderer.a

cp -r $RIVE_RUNTIME_DIR/skia/renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
Expand All @@ -46,8 +46,10 @@ build_renderer_sim() {
./build.sh -p ios_sim clean
./build.sh -p ios_sim $1
popd

cp -r $RIVE_RUNTIME_DIR/build/ios_sim/bin/$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sim.a
cp -r $RIVE_RUNTIME_DIR/dependencies/ios_sim/cache/bin/$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz_sim.a
cp -r $RIVE_RUNTIME_DIR/dependencies/ios_sim/cache/bin/$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi_sim.a
cp -r $RIVE_RUNTIME_DIR/skia/renderer/build/ios_sim/bin/$1/librive_skia_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_skia_renderer_sim.a

cp -r $RIVE_RUNTIME_DIR/skia/renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
Expand All @@ -61,13 +63,14 @@ build_renderer_macosx() {
./build.sh -p macosx $1
popd
cp -r $RIVE_RUNTIME_DIR/build/macosx/bin/$1/librive.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_macos.a
cp -r $RIVE_RUNTIME_DIR/dependencies/macosx/cache/bin/$1/librive_harfbuzz.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_harfbuzz_macos.a
cp -r $RIVE_RUNTIME_DIR/dependencies/macosx/cache/bin/$1/librive_sheenbidi.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_sheenbidi_macos.a
cp -r $RIVE_RUNTIME_DIR/skia/renderer/build/macosx/bin/$1/librive_skia_renderer.a $DEV_SCRIPT_DIR/../dependencies/$1/librive_skia_renderer_macos.a

cp -r $RIVE_RUNTIME_DIR/skia/renderer/include $DEV_SCRIPT_DIR/../dependencies/includes/renderer
cp -r $RIVE_RUNTIME_DIR/include $DEV_SCRIPT_DIR/../dependencies/includes/rive
}


finalize_skia() {
# COMBINE SKIA
# make fat library, note that the ios64 library is already fat with arm64 and arm64e so we don't specify arch there.
Expand All @@ -79,85 +82,80 @@ finalize_skia() {
xcrun -sdk iphoneos lipo -create -arch x86_64 out/ios/x64/libskia.a -arch i386 out/ios/x86/libskia.a out/ios/iossim_arm64/libskia.a -output out/ios/libskia_ios_sim.a
popd

# copy skia outputs from ld'in skia!
# copy skia outputs from ld'in skia!
cp -r $RIVE_RUNTIME_DIR/skia/dependencies/skia/out/ios/libskia_ios.a $DEV_SCRIPT_DIR/../dependencies
cp -r $RIVE_RUNTIME_DIR/skia/dependencies/skia/out/ios/libskia_ios_sim.a $DEV_SCRIPT_DIR/../dependencies
cp -r $RIVE_RUNTIME_DIR/skia/dependencies/skia/out/macosx/libskia_macos.a $DEV_SCRIPT_DIR/../dependencies
# note we purposefully put the skia include folder into dependencies/includes/skia, skia includes headers from include/core/name.h
cp -r $RIVE_RUNTIME_DIR/skia/dependencies/skia/include $DEV_SCRIPT_DIR/../dependencies/includes/skia
}


usage () {
usage() {
echo "USAGE: $0 <all|ios|ios_sim|macosx> <debug|release>"
exit 1
}

if (( $# < 1 ))
then
if (($# < 1)); then
usage
fi

case $1 in
all)
case $1 in
all)
make_dependency_directories
finalize_skia
build_renderer debug
build_renderer release
build_renderer_sim debug
build_renderer_sim release
build_renderer_macosx debug
build_renderer_macosx release
;;
macosx)
if (($# < 2)); then
usage
fi
case $2 in
release | debug)
make_dependency_directories
finalize_skia
build_renderer debug
build_renderer release
build_renderer_sim debug
build_renderer_sim release
build_renderer_macosx debug
build_renderer_macosx release
;;
macosx)
if (( $# < 2 ))
then
usage
fi
case $2 in
release | debug)
make_dependency_directories
finalize_skia
build_renderer_macosx $2
;;
*)
usage
;;
esac
;;
ios)
if (( $# < 2 ))
then
usage
fi
case $2 in
release | debug)
make_dependency_directories
finalize_skia
build_renderer $2
;;
*)
usage
;;
esac
build_renderer_macosx $2
;;
*)
usage
;;
esac
;;
ios_sim)
if (( $# < 2 ))
then
usage
fi
case $2 in
release | debug)
make_dependency_directories
finalize_skia
build_renderer_sim $2
;;
*)
usage
;;
esac
ios)
if (($# < 2)); then
usage
fi
case $2 in
release | debug)
make_dependency_directories
finalize_skia
build_renderer $2
;;
*)
usage
;;
esac
;;
ios_sim)
if (($# < 2)); then
usage
fi
case $2 in
release | debug)
make_dependency_directories
finalize_skia
build_renderer_sim $2
;;
*)
usage
;;
esac
esac
;;
*)
usage
;;
esac
2 changes: 1 addition & 1 deletion submodules/rive-cpp

0 comments on commit cf2e58c

Please sign in to comment.