| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
(gluegen-rt-android.jar) if android SDK JAR files are available.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ARMv7hf -> ARMv6hf, ARMv7-soft -> ARMv5te/ARMV6 (soft)
platform build config files:
lib/gluegen-cpptasks-linux-armv7.xml -> lib/gluegen-cpptasks-linux-armv6.xml
lib/gluegen-cpptasks-linux-armv7hf.xml -> lib/gluegen-cpptasks-linux-armv6hf.xml
properties:
isLinuxARMv7 -> isLinuxARMv6
isLinuxARMv7Armel -> isLinuxARMv6Armel
isLinuxARMv7Armhf -> isLinuxARMv6Armhf
isAndroidARMv7 -> isAndroidARMv6
isAndroidARMv7Armel -> isAndroidARMv6Armel
isAndroidARMv7Armhf -> isAndroidARMv6Armhf
targets:
compiler.cfg.linux.armv7 -> compiler.cfg.linux.armv6
linker.cfg.linux.armv7 -> linker.cfg.linux.armv6
compiler.cfg.linux.armv6:
<compilerarg value="-fpic" />
<compilerarg value="-march=armv5te" />
<compilerarg value="-marm" />
<compilerarg value="-mfloat-abi=softfp" />
<linkerarg value="-fpic" />
<linkerarg value="-march=armv5te" />
<linkerarg value="-marm" />
<linkerarg value="-mfloat-abi=softfp" />
<linkerarg value="-nostdlib" />
<linkerarg value="-Bdynamic" />
compiler.cfg.linux.armv6hf:
<compilerarg value="-fpic" />
<compilerarg value="-march=armv6" />
<compilerarg value="-marm" />
<compilerarg value="-mfloat-abi=hard" />
<linkerarg value="-fpic" />
<linkerarg value="-march=armv6" />
<linkerarg value="-marm" />
<linkerarg value="-mfloat-abi=hard" />
<linkerarg value="-nostdlib" />
<linkerarg value="-Bdynamic" />
gluegen-cpptasks-android-armv6.xml:
<compilerarg value="-fpic" />
<compilerarg value="-march=armv6" />
<compilerarg value="-mfloat-abi=softfp" />
<compilerarg value="-marm" />
<linkerarg value="-march=armv6" />
<linkerarg value="-mfloat-abi=softfp" />
<linkerarg value="-marm" />
<linkerarg value="-nostdlib" />
<linkerarg value="-Bdynamic" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Derivation
+++
JNILibLoaderBase.addNativeJarLibs(..): Add API doc
JNILibLoaderBase:
"addNativeJarLibs(Class<?> classFromJavaJar, String allNativeJarBaseName, String[] atomicNativeJarBaseNames)" ->
"addNativeJarLibs(Class<?>[] classesFromJavaJars, String singleJarMarker, String[] stripBasenameSuffixes)"
Derive the 'all' (1st choice) native JAR URL solely on the given class's JAR URL.
Examples:
JOCL:
// only: jocl.jar -> jocl-natives-'os.and.arch'.jar
addNativeJarLibs(new Class<?>[] { JOCLJNILibLoader.class }, null, null );
JOGL:
final ClassLoader cl = GLProfile.class.getClassLoader();
// either: [jogl-all.jar, jogl-all-noawt.jar, jogl-all-mobile.jar] -> jogl-all-natives-<os.and.arch>.jar
// or: nativewindow-core.jar -> nativewindow-natives-<os.and.arch>.jar,
// jogl-core.jar -> jogl-natives-<os.and.arch>.jar,
// (newt-core.jar -> newt-natives-<os.and.arch>.jar)? (if available)
final String newtFactoryClassName = "com.jogamp.newt.NewtFactory";
final Class<?>[] classesFromJavaJars = new Class<?>[] { NWJNILibLoader.class, GLProfile.class, null };
if( ReflectionUtil.isClassAvailable(newtFactoryClassName, cl) ) {
classesFromJavaJars[2] = ReflectionUtil.getClass(newtFactoryClassName, false, cl);
}
JNILibLoaderBase.addNativeJarLibs(classesFromJavaJars, "-all", new String[] { "-noawt", "-mobile", "-core" } );
Efficiency / Performance:
- Reduced JAR URL lookup calls JarUtil.getJarURL(..) - JNILibLoaderBase, Platform, JarUtil
- Attempt loading Jar files (native, class, ..) only once - TempJarCache
Code Cleanup (IOUtil, JarUtil, :
- IOException if not found
- IllegalArgumentException if null argument
+++
jogamp.android-launcher.jar -> jogamp-android-launcher.jar
+++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Android specific classes for non Android platforms
Ensure same Java JAR content regardless of build target (fix).
Separate Android compilation results to gluegen-rt-android.jar,
avoiding generating different content of gluegen-rt.jar w/ non android builds.
aapt.signed: @{android.abi} argument is 'generic' by default.
Adding ${android.abi} to APK target name (gluegen-rt-android-armeabi-v7a.apk)
if not generic.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specific classes for non Android platforms.
Android specifics are delegated via class AndroidUtils,
which uses reflection to call AndroidUtilsImpl if platform is Android.
Android code is confined to the packages:
jogamp.common.os.android.*
jogamp.android.launcher.*
and only included when compiled for the Android platform.
|
| |
|
| |
|
| |
|
|
|
|
| |
version.code: 4
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
/ API doc cleanup; DynamicLibraryBundle: Add getDefaultRunnableExecutor()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Android ClassLoaderUtil cleanup;
- Add 'asset' URLConnection
- Please read API doc 'PiggybackURLConnection' and 'AssetURLConnection'
- Solves generic resource handling where platform locations may differ,
ie ClassLoader lookup on Android in the 'assets/' subfolder.
- New Android 'AssetDexClassLoader' uses 'assets/' folder for findResource(..)
- aapt.signed (our APK ant task)
- uses 'assets/' folder
- adds the 'assetsdir' attribute allowing to copy other assets into the APK
- IOUtil uses URLConnection / incr. effeciency
- using URLConnection on all getResource(..) since URL
is connected anyways for validation and URLConnection can be used by caller right away
- String getRelativeOf(URL, String) -> URL getRelativeOf(URL, String)
- preserves scheme, authority, etc
- simple parentOf handling, more efficient
- reusing new 'asset' protocol impl.
- Android ClassLoaderUtil cleanup;
- Use createClassLoader(..) impl for build-in static jogamp and user APKs,
which removes code redundancy
Tests: New code path, especially 'assets' are covered by new unit tests, no regressions on Linux.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ActivityLauncher provides delegating Activities, allowing the user to:
- daisy chain custom APK classes and native libraries to the classpath
- name one custom activity which gets delegated to, the downstream activity
Overview:
[User:a1] -- (usr-data) --> [Launcher] -> [User:a2] + using [other packages..]
[User APK] - The user provided APK
[JogAmp APK] - JogAmp APKs
[User:a1] - The initial user activity, which starts the [Launcher].
Providing data to [Launcher]: [User:a2], [User APK]
Resides in [User APK]
[User:a2] - The actual downstream 'real' activity, spoiled w/ full fledged ClassLoader
having access to all packages as requested, ie. [User APK], ..
Resides in [User APK]
[Launcher] - The launcher activity.
Gets called by [User:a1].
Creates a new ClassLoader, daisy chainging all requested APKs.
Instantiates [User:a2] w/ new ClassLoader.
Delegates all calls to [User:a2].
Resides in [JogAmp APK].
|
|
|
|
|
|
| |
-> JarURL on Android
All [remaining] tests passed on Android!
|
|
|
|
|
|
|
| |
from build.xml -> gluegen-cpptasks-base.xml
- unifies definition
- echo values
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- A bug in cpptasks was getting in the way of a working build with NDK
r7. A local patch to cpptasks fixed the bug.
- The patch is added as make/lib/cpptasks_gcclinker.patch and applies
cleanly to cpptasts @ revision 177.
- The result of building cpptasks r177 with this patch is part of the
commit as well.
- Cleaned up and simplified the android cross-compile script in
make/scripts.
- Cleaned up arguments passed to gcc for compiling and linking to look
more like the command lines used for building NDK samples.
- Some differences are necessary as cpptasks won't let us specify any
binary other than 'gcc' for building. See
gluegen-cpptasks-android-armv7.xml for comments on the matter.
- Thinking forward to x86 support, generalized jogamp-androidtasks.xml
to install the gluegen shared library in a subdirectory of image/lib
named for the targetted ABI for packaging with aapt. This file is
no-longer ARM-specific.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Current minimum requirements are:
- Java 1.6 (Level 6.0)
- Android SDK API Level 9 (Version 2.3 Gingerbread)
Official production builds are performed w/ Java 1.6.
- Java 1.6 (Level 6.0)
- Android SDK API Level 9 (Version 2.3 Gingerbread)
Android supports Java language level 6.0.
Nevertheless, it cannot be guaranteed whether the Android API
supports all classes and methods of Java 1.6.
It is required for JogAmp developers to validate Android compatibility
by an Android crosscompilation build.
Current GlueGen code utilizes some minor Java 1.6 features
which could be replaced, however it's not desired at this point
since we have no mode hard Java 1.5 constraints.
Notes:
- On OS X 10.5.8, only the 64bit version of Java6 is available
and hence the only supported one on Leopard.
+++
Pushing determination of host (compiletime) and target (runtime) Java version
to 'jogamp-env.xml'.
jogamp-env.xml uses:
env: SOURCE_LEVEL -> propery: target.sourcelevel def.: ${ant.java.version} >=1.6 (!)
env: TARGET_LEVEL -> propery: target.targetlevel def.: ${ant.java.version} >=1.6 (!)
env: TARGET_RT_JAR -> propery: target.rt.jar def.: ${java.home}/lib/rt.jar
Either all above values are set, or none at all (default),
otherwise a build error is being thrown.
Further more we have the compiletime properties:
host.sourcelevel def.: ${ant.java.version} >= 1.6 (!)
host.targetlevel def.: ${ant.java.version} >= 1.6 (!)
host.rt.jar def.: ${java.home}/lib/rt.jar
+++
- 'javac.memorymax' defaults to 1024m now.
|
| |
|
|
|
|
| |
Platform static init after loading native library.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
last entry is loaded
aapt build check fix
- exe aapt if source are newer than apk
DynamicLibraryBundle.isGlueLibComplete() == true if last entry is loaded
- fix long standing bug, where GlueLib was not complete if preload dependencies were missing.
this even lead to JOGL specific handling of this case .. duh.
- added debug info
|
|
|
|
| |
uses-library com.jogamp.common
|
|
|
|
|
|
|
| |
GluegenVersionActivity uses ApplicationContext
Hide DynamicLinker impl.:
- com.jogamp.common.os.*DynamicLinkerImpl -> jogamp.common.os
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
resources -> make/resources
Drop android.jar
- version 8 and 9
- license: apache v2 (NOTICE.txt included)
- allows compilation using Android API on all platforms
Simplify 'aapt.signed'
- removed 'jarclasspathrefid', seems to be not needed
(commented out)
Move our android resources make/lib/android -> make/resources/android
- make/lib is for 3rd party stuff only
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- build:
- exclude android packages if !isAndroid
- aapt:
- Use individual AndroidManifest xml files
- optional: incl. our JAR manifest file to support detailed version info
- use def. GluegenVersionActivity
- APK VersionName: Retrieve and show
- package/extension names:
- gluegen.jar/apk: com.jogamp.gluegen
- gluegen-rt.jar/apk: com.jogamp.common
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
icons
make/scripts/make.gluegen.all.android-armv7-cross.sh
- make Rami and me happy :)
- 3 default locations plus recognize user provided android toolkit path
- fixes using ant targets as arguments
make/jogamp-androidtasks.xml
- macro aapt.signed: create signed apk file from jar
- incl. adding native libraries
- see macro doc.
adding generic jogamp icons/images
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- junit.cross targets:
- use scripting to save time, ie write all target commands to script, xfer, exec
- junit: delete result folder just before junit.run
- Test BuildEnvironment.java: Simplify path config via properties (for android)
- AndroidVersion: No annoying exception dump if Build$VERSION* is not found (not android)
- launch scripts: use absolute TARGET_ROOT path for dynamic linker env.
|
|/
|
|
|
|
|
|
|
| |
the apk package can be installed on android device
using adb install gluegen-rt.apk
reference package on device is com.jogamp.gluegen
gerenic icons is added to be replaced by jogamp logo
changes to apk can be controled thru manifest lib/android/AndroidManifest.xml
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Test1p2ProcAddressEmitter
Fix Test1p2ProcAddressEmitter
- 3 tests used the wrong binding instance,
where no native lib was loaded for - duh :)
Cleaned up android build
- add unix src (UnixDynamicLinkerImpl_JNI.c)
- remove linker cmds in compile arguments
Cross junit/java android test works via script
- target command scrip is written to file, pushed and executed
Status: com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter
- passed
- on par w/ linux-armv7
|
|
|
|
| |
test commands to file - too long for single adb shell command
|
|
|
|
|
|
|
|
|
|
|
| |
- android minor build fix
- started dex'ing (gluegen-rt.apk, more to come for full junit tests)
- android remote dalvikvm launch works (crosstest-java-android-armv7-rel.sh)
- android detection, incl version (reflection)
- Platform:
- Add JAVA_VM_NAME and JAVA_VM_RUNIME
- OSType maybe ANDROID, where the OS name (String) is Linux ! (ok ?)
|
|
|
|
| |
linux-x86_32 spec. removed android props, we use custom xml files
|
|
|
|
|
|
|
|
|
|
|
|
| |
- StructAccessor uses byteOffset now (since 8b3057585930357bb16546f584d998953b084034)
Fix linux armv7l eabi:
- build.xml arm7 -> armv7
- all tests passes
Adding NativeSizeAlignment-linux-armv7l_eabi from passing test
OK: linux 32/64/armv7l, windows 32/64
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Preparation.
Currently GlueGen fails for type long (size) and some alignments (see package.html).
- The size and alignment values shall be queried at runtime.
- Compound alignment needs to follow the described natural alignment (also @runtime).
-
- Build
- add Linux Arm7 (EABI)
- junit test
- added compound/struct tests, pointing out the shortcomings of current impl.
- package.html
- Added alignment documentation
- remove intptr.cfg
- add GluGen types int8_t, int16_t, uint8_t, uint16_t
- move MachineDescription* into runtime
- Platform
- has runtime MachineDescription
- moved size, .. to MachineDescription
- use enums for OSType, CPUArch and CPUType defined by os.name/os.arch,
triggering exception if os/arch is not supported.
This avoids Java String comparison and conscious os/arch detection.
- MachineDescription:
- compile time instances MachineDescription32Bits, MachineDescription64Bits
- runtime queried instance MachineDescriptionRuntime
- correct size, alignment, page size, ..
|
| |
|
| |
|
| |
|
| |
|
| |
|