#!/bin/sh NDK_PATH=/home/roman/Android/Ndk CristaxNDK=0 if test -f $NDK_PATH/RELEASE.TXT; then if cat $NDK_PATH/RELEASE.TXT | grep crystax-ndk &> /dev/null; then CristaxNDK=1 fi fi HOST=linux-x86_64 TARGET=arm-linux-androideabi PLATFORM=android-21 PLATFORM_LIB_VAR=armeabi-v7a TARGET_V=4.9 PREFIX=$NDK_PATH/toolchains/$TARGET-$TARGET_V/prebuilt/$HOST #Soft float # -march=armv5te -mfloat-abi=softfp -mfpu=neon -mthumb\ export CFLAGS="-O2 -ffunction-sections -funwind-tables -no-canonical-prefixes\ -march=armv7-a -mfloat-abi=softfp -mfpu=vfp\ -fno-builtin-memmove -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Wa,--noexecstack -Wformat -Werror=format-security" export LDFLAGS="-llog -landroid -Wl,--fix-cortex-a8" #Hard float #export CFLAGS="-O2 -ffunction-sections -funwind-tables -no-canonical-prefixes\ # -march=armv7-a -mfpu=vfp -mhard-float\ # -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Wa,--noexecstack -Wformat -Werror=format-security" #export LDFLAGS="-llog -landroid -Wl,--no-warn-mismatch -lm_hard -Wl,--fix-cortex-a8" # -Wl,--no-undefined" if test $CristaxNDK = 1; then PLATFORM=android-19; export CFLAGS="$CFLAGS --sysroot=$NDK_PATH/platforms/$PLATFORM/arch-arm/ -I$NDK_PATH/sources/crystax/include" export LDFLAGS="$LDFLAGS -L$NDK_PATH/sources/crystax/libs/$PLATFORM_LIB_VAR" echo "Build for $PLATFORM and by the Cristax NDK" else export CFLAGS="$CFLAGS --sysroot=$NDK_PATH/platforms/$PLATFORM/arch-arm/" export LDFLAGS="$LDFLAGS -lm" echo "Build for $PLATFORM and by the Original NDK" fi export CFLAGS="$CFLAGS -I$NDK_PATH/sources/pcre/include\ -I$NDK_PATH/sources/openssl/include\ -I$NDK_PATH/sources/expat/include\ -I$NDK_PATH/sources/libpng/include\ -I$NDK_PATH/sources/libjpeg/include\ -I$NDK_PATH/sources/freetype/include\ -I$NDK_PATH/sources/fontconfig/include\ -I$NDK_PATH/sources/libgd2/include\ -I$NDK_PATH/sources/fftw3/include\ -I$NDK_PATH/sources/libiconv/include\ -I$NDK_PATH/sources/gettext/include\ -I$NDK_PATH/sources/sqlite/include" export LDFLAGS="$LDFLAGS -L$NDK_PATH/sources/pcre/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/openssl/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/expat/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/libpng/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/libjpeg/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/freetype/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/fontconfig/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/libgd2/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/fftw3/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/libiconv/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/gettext/libs/$PLATFORM_LIB_VAR\ -L$NDK_PATH/sources/sqlite/libs/$PLATFORM_LIB_VAR" export CXXFLAGS="$CFLAGS -std=c++11 -I$NDK_PATH/sources/cxx-stl/gnu-libstdc++/$TARGET_V/include\ -I$NDK_PATH/sources/cxx-stl/gnu-libstdc++/$TARGET_V/libs/$PLATFORM_LIB_VAR/include\ -L$NDK_PATH/sources/cxx-stl/gnu-libstdc++/$TARGET_V/libs/$PLATFORM_LIB_VAR -lgnustl_shared" # export PKG_CONFIG="pkg-config --static" export PKG_CONFIG_DIR= export PKG_CONFIG_LIBDIR=$NDK_PATH/sources/pkgconfig export PATH=$PREFIX/bin:$PATH #Extended for not autotool export CC=$TARGET-gcc export LD=$TARGET-ld export AS=$TARGET-as export AR=$TARGET-ar #Build OpenSCADA AndroidPrjDir=$(pwd) OpenSCADADir=$AndroidPrjDir/../.. BuildDir=$AndroidPrjDir/build_dir cd $OpenSCADADir # Patches apply for iPatch in $(ls $AndroidPrjDir/patches/openscada_*.patch 2> /dev/null); do patch -N -p0 < $iPatch; done # Same build #make clean ./configure --host=arm-linux-androideabi \ --prefix=/data/data/org.oscada --bindir=/data/data/org.oscada/bin --sysconfdir=/data/data/org.oscada --datarootdir=/data/data/org.oscada \ CoreLibNmToDlOpen=liboscada.so --disable-CoreLibVersion --disable-AllModuls \ --enable-SQLite=incl --enable-DBArch=incl --enable-DBF=incl \ --enable-Sockets=incl --enable-Serial=incl --enable-SSL \ --enable-SelfSystem=incl --enable-UserProtocol=incl --enable-HTTP=incl \ --enable-JavaLikeCalc=incl --enable-LogicLev=incl --enable-BlockCalc=incl --enable-System --enable-OPC_UA --enable-DAQGate=incl --enable-ModBus=incl --enable-DCON=incl \ --enable-FSArch=incl --enable-DBArch=incl \ --with-qt5=yes --enable-QTStarter --enable-QTCfg --enable-Vision \ --enable-VCAEngine --enable-WebCfg --enable-WebCfgD --enable-WebVision --enable-WebUser \ --enable-FLibSYS=incl --enable-SystemTests --enable-FLibMath --enable-FLibComplex1 rm -R $BuildDir DESTDIR=$BuildDir make -j4 install #Update the Android files dirSrc=$BuildDir/data/data/org.oscada echo "target=$PLATFORM" > $AndroidPrjDir/project.properties # Strip all libraries arm-linux-androideabi-strip $dirSrc/lib/liboscada.so arm-linux-androideabi-strip $dirSrc/lib/openscada/*.so # Install the libraries with the needed prefixes install -m 755 $dirSrc/lib/liboscada.so $AndroidPrjDir/libs/armeabi-v7a/ for fit in `ls $dirSrc/lib/openscada/*.so`; do install -m 755 $fit $AndroidPrjDir/libs/armeabi-v7a/liboscada_`basename $fit` done # Prepare assets install -m 755 -d $AndroidPrjDir/assets/icons if test $CristaxNDK = 1; then cp $AndroidPrjDir/libs_Crystax.xml.in $AndroidPrjDir/res/values/libs.xml else cp $AndroidPrjDir/libs.xml.in $AndroidPrjDir/res/values/libs.xml fi install -m 755 $dirSrc/bin/openscada-proj $AndroidPrjDir/assets/ # Install projects and standard configurations cp $dirSrc/oscada.xml $AndroidPrjDir/assets/ cp $dirSrc/oscada_start.xml $AndroidPrjDir/assets/ install -m 755 -d $AndroidPrjDir/assets/LibsDB cp $dirSrc/openscada/LibsDB/* $AndroidPrjDir/assets/LibsDB/ cp $dirSrc/oscada_AGLKS.xml $AndroidPrjDir/assets/ install -m 755 -d $AndroidPrjDir/assets/AGLKS cp $dirSrc/openscada/AGLKS/* $AndroidPrjDir/assets/AGLKS/ cp $dirSrc/oscada_Boiler.xml $AndroidPrjDir/assets/ install -m 755 -d $AndroidPrjDir/assets/Boiler cp $dirSrc/openscada/Boiler/* $AndroidPrjDir/assets/Boiler/ # Install icons for fit in `ls $dirSrc/openscada/icons/*`; do install -m 644 $fit $AndroidPrjDir/assets/icons/`basename $fit` echo "\\ticons/$(basename $fit):../openscada/icons/$(basename $fit)" >> $AndroidPrjDir/res/values/libs.xml done # Install the translations install -m 755 -d $AndroidPrjDir/assets/locale cp -R $dirSrc/locale/* $AndroidPrjDir/assets/locale/ for fit in `find $AndroidPrjDir/assets/locale/ -name "*.mo"`; do fit1=`echo $fit | sed -n "/.*\/assets\/\(.*\)/s//\1/p"` echo "\\t$fit1:../$fit1" >> $AndroidPrjDir/res/values/libs.xml done echo " \\n" >> $AndroidPrjDir/res/values/libs.xml #Make the APK package cd $AndroidPrjDir ant clean #ant debug ant release #cp bin/OpenSCADA-release-unsigned.apk bin/OpenSCADA-release.apk #jarsigner -keystore ~/.android/roman.jks bin/OpenSCADA-release.apk RomanSavochenkoKey #adb install -r bin/OpenSCADA-release.apk