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