14e70a9e4627f42671d0671f2fda2ade7a19879bbJack Palevich#!/bin/bash 24e70a9e4627f42671d0671f2fda2ade7a19879bbJack Palevichset -u 327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichset -e 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectrm -rf out generated 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectmkdir out 791a27ae2fec23b420244258636d2370117e86f5eJack Palevich 891a27ae2fec23b420244258636d2370117e86f5eJack Palevich# Create dummy Java files for Android APIs that are used by the code we generate. 991a27ae2fec23b420244258636d2370117e86f5eJack Palevich# This allows us to test the generated code without building the rest of Android. 1091a27ae2fec23b420244258636d2370117e86f5eJack Palevich 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectmkdir -p out/javax/microedition/khronos/opengles 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectmkdir -p out/com/google/android/gles_jni 1391a27ae2fec23b420244258636d2370117e86f5eJack Palevichmkdir -p out/android/app 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectmkdir -p out/android/graphics 1527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichmkdir -p out/android/opengl 1691a27ae2fec23b420244258636d2370117e86f5eJack Palevichmkdir -p out/android/content 1791a27ae2fec23b420244258636d2370117e86f5eJack Palevichmkdir -p out/android/content/pm 1891a27ae2fec23b420244258636d2370117e86f5eJack Palevichmkdir -p out/android/os 1991a27ae2fec23b420244258636d2370117e86f5eJack Palevichmkdir -p out/android/util 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectecho "package android.graphics;" > out/android/graphics/Canvas.java 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectecho "public interface Canvas {}" >> out/android/graphics/Canvas.java 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2491a27ae2fec23b420244258636d2370117e86f5eJack Palevichecho "package android.app; import android.content.pm.IPackageManager; public class ActivityThread { public static final ActivityThread currentActivityThread() { return null; } public static final String currentPackageName(){ return null; } public static IPackageManager getPackageManager() { return null;} }" > out/android/app/ActivityThread.java 2591a27ae2fec23b420244258636d2370117e86f5eJack Palevich# echo "package android.content; import android.content.pm.PackageManager; public interface Context { public PackageManager getPackageManager(); }" > out/android/content/Context.java 2691a27ae2fec23b420244258636d2370117e86f5eJack Palevichecho "package android.content.pm; public class ApplicationInfo {public int targetSdkVersion;}" > out/android/content/pm/ApplicationInfo.java 2791a27ae2fec23b420244258636d2370117e86f5eJack Palevichecho "package android.content.pm; public interface IPackageManager {ApplicationInfo getApplicationInfo(java.lang.String packageName, int flags) throws android.os.RemoteException;}" > out/android/content/pm/IPackageManager.java 2891a27ae2fec23b420244258636d2370117e86f5eJack Palevichecho "package android.os; public class Build {public static class VERSION_CODES { public static final int CUPCAKE = 3;}; }" > out/android/os/Build.java 2991a27ae2fec23b420244258636d2370117e86f5eJack Palevichecho "package android.os; public class RemoteException extends Exception {}" > out/android/os/RemoteException.java 3091a27ae2fec23b420244258636d2370117e86f5eJack Palevichecho "package android.util; public class Log {public static void w(String a, String b) {} public static void e(String a, String b) {}}" > out/android/util/Log.java 3191a27ae2fec23b420244258636d2370117e86f5eJack Palevich 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGLFILE=out/javax/microedition/khronos/opengles/GL.java 3327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichcp stubs/jsr239/GLHeader.java-if $GLFILE 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3527f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichGLGEN_FILES="CFunc.java CType.java CodeEmitter.java GenerateGL.java GenerateGLES.java GLESCodeEmitter.java JFunc.java JniCodeEmitter.java JType.java Jsr239CodeEmitter.java ParameterChecker.java" 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpushd src > /dev/null 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectjavac ${GLGEN_FILES} 394e70a9e4627f42671d0671f2fda2ade7a19879bbJack PalevichJAVAC_RESULT=$? 404e70a9e4627f42671d0671f2fda2ade7a19879bbJack Palevichif [ $JAVAC_RESULT -ne 0 ]; then 414e70a9e4627f42671d0671f2fda2ade7a19879bbJack Palevich echo "Could not compile glgen." 424e70a9e4627f42671d0671f2fda2ade7a19879bbJack Palevich exit $JAVAC_RESULT 434e70a9e4627f42671d0671f2fda2ade7a19879bbJack Palevichfi 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpopd > /dev/null 4527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 4627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichecho "Generating JSR239-like APIs" 4727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichjava -classpath src GenerateGL -c specs/jsr239/glspec-1.0 specs/jsr239/glspec-1.0ext specs/jsr239/glspec-1.1 specs/jsr239/glspec-1.1ext specs/jsr239/glspec-1.1extpack specs/jsr239/glspec-checks 4827f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichJAVA_RESULT=$? 4927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichif [ $JAVA_RESULT -ne 0 ]; then 5027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich echo "Could not run GenerateGL." 5127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich exit $JAVA_RESULT 5227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichfi 5327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 5427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichecho "Generating static OpenGLES 1.1 bindings" 5527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichjava -classpath src GenerateGLES 5627f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichJAVA_RESULT=$? 5727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichif [ $JAVA_RESULT -ne 0 ]; then 5827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich echo "Could not run GenerateGLES." 5927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich exit $JAVA_RESULT 6027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichfi 6127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 624e70a9e4627f42671d0671f2fda2ade7a19879bbJack Palevichrm src/*.class 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpushd out > /dev/null 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectmkdir classes 6627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichjavac -d classes com/google/android/gles_jni/GLImpl.java javax/microedition/khronos/opengles/GL10.java javax/microedition/khronos/opengles/GL10Ext.java javax/microedition/khronos/opengles/GL11.java javax/microedition/khronos/opengles/GL11Ext.java javax/microedition/khronos/opengles/GL11ExtensionPack.java android/opengl/GLES10.java android/opengl/GLES10Ext.java android/opengl/GLES11.java android/opengl/GLES11Ext.java 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpopd > /dev/null 6827f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichJAVA_RESULT=$? 6927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichif [ $JAVA_RESULT -ne 0 ]; then 7027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich echo "Could not compile generated classes." 7127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich exit $JAVA_RESULT 7227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichfi 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectrm -rf generated 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectmkdir -p generated/C 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectcp out/com_google_android_gles_jni_GLImpl.cpp generated/C 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectcp -r out/com generated 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectcp -r out/javax generated 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichcp out/android_opengl_*.cpp generated/C 8127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichmkdir -p generated/android/opengl 8227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichcp -r out/android/opengl generated/android 8327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectrm -rf out 85c005f8b8ba22c204f32fa032ab7211f51bf4d677Jack PalevichKEEP_GENERATED=0 8627f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichSAID_PLEASE=0 8727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 8827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich# compareGenerated destDir generatedDir file 8927f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichcompareGenerated() { 9027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if cmp -s $1/$3 $2/$3 ; then 9127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich echo "# " $3 unchanged 9227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich else 9327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if [ $SAID_PLEASE == "0" ] ; then 9427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich echo Please evaluate the following commands: 9527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich echo 9627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich SAID_PLEASE=1 9727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich fi 9827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich echo " " cp $2/$3 $1 9927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich echo " " git add $1/$3 10027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich KEEP_GENERATED=1 10127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich fi 10227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 10327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 10427f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichcompareGenerated ../../../core/jni generated/C com_google_android_gles_jni_GLImpl.cpp 10527f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichcompareGenerated ../../java/com/google/android/gles_jni generated/com/google/android/gles_jni GLImpl.java 10627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 10727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichfor x in GL.java GL10.java GL10Ext.java GL11.java GL11Ext.java GL11ExtensionPack.java 10827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichdo 10927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich compareGenerated ../../java/javax/microedition/khronos/opengles generated/javax/microedition/khronos/opengles $x 11027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichdone 11127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 11227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichfor x in GLES10 GLES10Ext GLES11 GLES11Ext 11327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichdo 11427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich compareGenerated ../../java/android/opengl generated/android/opengl ${x}.java 11527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich compareGenerated ../../../core/jni generated/C android_opengl_${x}.cpp 11627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichdone 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 118c005f8b8ba22c204f32fa032ab7211f51bf4d677Jack Palevichif [ $KEEP_GENERATED == "0" ] ; then 11927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich rm -rf generated 120c005f8b8ba22c204f32fa032ab7211f51bf4d677Jack Palevichfi 121