#!/usr/bin/env bash set -e export PKG_CONFIG_LIBDIR="$NDK_HOME/platforms/android-24/arch-x86/usr/lib:$MRAA_INSTALL_DIR/lib/pkgconfig/" cmake \ -DANDROID_COMPILER_FLAGS_CXX='-std=c++11' \ -DANDROID_PIE=1 \ -DANDROID_PLATFORM=android-24 \ -DANDROID_STL_FORCE_FEATURES=ON \ -DANDROID_STL=c++_shared \ -DANDROID_TOOLCHAIN_NAME=x86-i686 \ -DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake \ -DCMAKE_FIND_ROOT_PATH=$MRAA_INSTALL_DIR \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DJAVA_AWT_INCLUDE_PATH=$JAVA_HOME/include \ -DJAVA_AWT_LIBRARY=$JAVA_HOME/jre/lib/amd64/libjawt.so \ -DJAVA_INCLUDE_PATH=$JAVA_HOME/include \ -DJAVA_INCLUDE_PATH2=$JAVA_HOME/include/linux \ -DJAVA_JVM_LIBRARY=$JAVA_HOME/jre/lib/amd64/server/libjvm.so \ -DBUILDSWIGJAVA=$BUILDSWIGJAVA \ -DBUILDSWIGNODE=$BUILDSWIGNODE \ -DBUILDSWIGPYTHON=$BUILDSWIGPYTHON \ -DWERROR=$WERROR \ -H. \ -Bbuild make -j8 -Cbuild # Anotate the .java src from doxygen find src/ -name "javaupm_*.i" > build/upm.i.list # TODO: install doxy port tool #doxyport build/upm.i.list \ # -s src/interfaces/,src/bacnetmstp,src/bmg160,src/bma250e,src/bmm150 \ # -m doxy/samples.mapping.txt \ # -d build/src/ \ # --convert-protected-to-private \ # -o build/upm-java-files.txt \ # -c build/compile_commands.json gen_and_upload() { # Skip any directories without .java src files if [ ! -f *.java ]; then return fi # Get the MRAA version string from the .pom file VERSION=$(ls *.pom | perl -nle 'print $2 if /^(.*)-(\d+\.\d+\.\d+)\.pom/') # Get the MRAA name string from the .pom file LIB_NAME=$(ls *.pom | perl -nle 'print $1 if /^(.*)-(\d+\.\d+\.\d+)\.pom/') # Bundle upload directory PKG_BUNDLE_DIR=BUNDLE_DIR mkdir -p ${PKG_BUNDLE_DIR} # Create the aar directory structure AAR_DIRECTORY="$LIB_NAME-$VERSION" mkdir -p $AAR_DIRECTORY/jni/x86 mkdir -p $AAR_DIRECTORY/res/values # Write out res/values/values.xml to the aar echo "${values_xml/XXX_LIBRARY/$LIB_NAME}" > $AAR_DIRECTORY/res/values/values.xml # Write out AndroidManifest.xml to the aar _tmp_manifest=${AndroidManifest_xml/XXX_PACKAGE/$JAVA_PKG_PREFIX_DOT} _tmp_manifest=${_tmp_manifest/XXX_LIBRARY/$LIB_NAME} echo "${_tmp_manifest/XXX_VERSION/$VERSION}" > $AAR_DIRECTORY/AndroidManifest.xml # Copy over the so's cp *.so $AAR_DIRECTORY/jni/x86 # Create javadoc jar javadoc *.java -d $LIB_NAME-javadoc jar cf $PKG_BUNDLE_DIR/$LIB_NAME-$VERSION-javadoc.jar $LIB_NAME-javadoc/* # Create sources jar file for upload jar cf $PKG_BUNDLE_DIR/$LIB_NAME-$VERSION-sources.jar *.java # Copy pom file cp $LIB_NAME-$VERSION.pom $PKG_BUNDLE_DIR # Copy the java module jar to classes.jar cp $LIB_NAME.jar $AAR_DIRECTORY/classes.jar # Create the .aar pushd $AAR_DIRECTORY jar cf ../$PKG_BUNDLE_DIR/$LIB_NAME-$VERSION.aar * popd # Create the bundle file pushd $PKG_BUNDLE_DIR # Create the tar bundle jar cvf ../$LIB_NAME-$VERSION-bundle.jar * popd } # Template for res/values/values.xml in aar values_xml='XXX_LIBRARY' # Template for AndroidManifest.xml in aar AndroidManifest_xml=' ' # Package prefix JAVA_PKG_PREFIX_DOT="io.mraa.at.upm" # Work in the UPM build directory cd build/src # For each directory in build/src which contains a .pom file... for lib_dir in `ls -d */`; do if ls $lib_dir/upm_*.pom 1> /dev/null 2>&1; then pushd $lib_dir # Allow for spawning multiple if necessary (&) gen_and_upload popd fi done