• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2
3# Test that the prefab binary exists
4if hash prefab 2>/dev/null; then
5  echo "Prefab is installed"
6else
7  echo "Prefab binary not found. See https://github.com/google/prefab for install instructions"
8  exit 1
9fi
10
11# Get the version string from the source
12major=$(grep "#define OBOE_VERSION_MAJOR" include/oboe/Version.h | cut -d' ' -f3)
13minor=$(grep "#define OBOE_VERSION_MINOR" include/oboe/Version.h | cut -d' ' -f3)
14patch=$(grep "#define OBOE_VERSION_PATCH" include/oboe/Version.h | cut -d' ' -f3)
15version=$major"."$minor"."$patch
16
17echo "Building libraries for Oboe version "$version
18./build_all_android.sh
19
20mkdir -p build/prefab
21cp -R prefab/* build/prefab
22
23ABIS=("x86" "x86_64" "arm64-v8a" "armeabi-v7a")
24
25pushd build/prefab
26
27  # Remove .DS_Store files as these will cause the prefab verification to fail
28  find . -name ".DS_Store" -delete
29
30  # Write the version number into the various metadata files
31  mv oboe-VERSION oboe-$version
32  mv oboe-VERSION.pom oboe-$version.pom
33  sed -i '' -e "s/VERSION/${version}/g" oboe-$version.pom oboe-$version/prefab/prefab.json
34
35  # Copy the headers
36  cp -R ../../include oboe-$version/prefab/modules/oboe/
37
38  # Copy the libraries
39  for abi in ${ABIS[@]}
40  do
41    echo "Copying the ${abi} library"
42    cp -v "../${abi}/liboboe.so" "oboe-${version}/prefab/modules/oboe/libs/android.${abi}/"
43  done
44
45  # Verify the prefab packages
46  for abi in ${ABIS[@]}
47  do
48
49    prefab --build-system cmake --platform android --os-version 29 \
50        --stl c++_shared --ndk-version 21 --abi ${abi} \
51        --output prefab-output-tmp $(pwd)/oboe-${version}/prefab
52
53    result=$?; if [[ $result == 0 ]]; then
54      echo "${abi} package verified"
55    else
56      echo "${abi} package verification failed"
57      exit 1
58    fi
59  done
60
61  # Zip into an AAR and move into parent dir
62  pushd oboe-${version}
63    zip -r oboe-${version}.aar . 2>/dev/null;
64    zip -Tv oboe-${version}.aar 2>/dev/null;
65
66    # Verify that the aar contents are correct (see output below to verify)
67    result=$?; if [[ $result == 0 ]]; then
68      echo "AAR verified"
69    else
70      echo "AAR verification failed"
71      exit 1
72    fi
73
74    mv oboe-${version}.aar ..
75  popd
76
77  # Zip the .aar and .pom files into a maven package
78  zip oboe-${version}.zip oboe-${version}.* 2>/dev/null;
79  zip -Tv oboe-${version}.zip 2>/dev/null;
80
81  # Verify that the zip contents are correct (see output below to verify)
82  result=$?; if [[ $result == 0 ]]; then
83    echo "Zip verified"
84  else
85    echo "Zip verification failed"
86    exit 1
87  fi
88popd
89
90echo "Prefab zip ready for deployment: ./build/prefab/oboe-${version}.zip"
91