summaryrefslogtreecommitdiffstats
path: root/make
Commit message (Collapse)AuthorAgeFilesLines
* gluegen-cpptasks's compiler.cfg.linux.*: always "-include ↵Sven Gothel2014-07-304-0/+14
| | | | make/stub_includes/platform/glibc-compat-symbols.h" ensuring using low versioned GLIBC symbols
* Bug 1024: Add fallback for native-jar-file location via classpathSven Gothel2014-07-114-12/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In situations, where the native-jar file is not located within the same parent URI as it's java-jar file, our location mechanism fails. This patch adds a classloader based native-jar file location mechanism as a fallback, requiring the native jar file to be included in the users CLASSPATH. Classloader based location algorithm in JNILibLoaderBase.addNativeJarLibsImpl(..): - Extract the 'module-name' from the given classFromJavaJar's package name, i.e. the last package-part: 'jogamp.common.Debug' -> 'common' Hence it is important to pass a 'classFromJavaJar', which last package segment reflects the module-name! - <os.and.arch> -> <os_and_arch_dot>, e.g. linux-amd64 -> linux.amd64 (linux/amd64) - Locate class 'jogamp.nativetag.<module-name>.<os_and_arch_dot>.TAG', e.g. 'jogamp.nativetag.common.linux.amd64.TAG' - Use located class's JarFile URI .. continue as usual Injection of above mentioned TAG class via gluegen-cpptasks-base.xml macro 'native.tag.jar': - Creates dummy TAG.java code - Compiles TAG.java - Creates the native-jar file Example: <native.tag.jar objdir="${build}/obj" nativejarfile="${build}/gluegen-rt-natives-${os.and.arch}.jar" manifestfile="${build}/Manifest-rt-natives.temp" module="common" includelibs="*gluegen-rt.${native.library.suffix}" /> Note that the manifest file uses a matching Extension-Name: Extension-Name: jogamp.nativetag.common
* Bug 1023/Bug 1024: Create native jar files for different configurations due ↵Sven Gothel2014-07-101-1/+2
| | | | to non-native-jar aliasing
* Bug 1025 - GlueGen: Add accessor for compound fields of type array, pointer ↵Sven Gothel2014-06-255-6/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and string (code generation) Enhance compound access as delivered by Bug 1022, to also generate accessors (getter and setter) for array, pointer and string types. Allow configuration of array length either via their internal size (c-header) or config 'ReturnedArrayLength'. 'ReturnedArrayLength' allows specifying a java expression. Canonical field names of compounds are _now_ specified as follows for configuration entries: COMPOUND.FIELD e.g. StructA.fieldB Also allow configuration of pointer fields to be treated as referenced arrays via 'ReturnedArrayLength'. Further, allow specifying 'pointer fields' as String values via 'ReturnsString' configuration. ++++ Implementation details: - handle above described accessor features - enhance JavaDoc for generated accessors - generate native JNI compound and string accessor on demand - encapsule accessor code generation in their own methods - enhance exception messages - enhance type verbosity in debug mode - verbose debug output via GlueGen.debug() Tests: - Features covered by test1.[ch] and Test1p1JavaEmitter and Test1p2ProcAddressEmitter - Validated compilation and unit tests for modules: - joal - jogl (minor config changes req.) - jocl (minor config changes req.)
* Bump cpptasks.jar to commit 9a66c005a3cd304c4b47abd9a287a60e3545b9daSven Gothel2014-06-181-0/+0
|
* complete commit 33eb9484c4675423431521f2271e3e9d8d38f3b2Sven Gothel2014-06-171-1/+1
|
* Merge remote-tracking branch 'hharrison/antlr-move'Sven Gothel2014-06-171-65/+64
|\
| * gluegen: update the target names for generating java codeHarvey Harrison2014-05-311-45/+45
| | | | | | | | | | | | Also move the antlr-wrapping targets to be near the one place they are used. Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
| * gluegen: pair the grammer input folder with an out.dir valueHarvey Harrison2014-05-311-12/+12
| | | | | | | | Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
| * gluegen: move all antlr grammars to a top-level directoryHarvey Harrison2014-05-311-10/+9
| | | | | | | | | | | | | | | | /src/main/antlr/.. This gets the .g files unmixed from the non-generated java files for the cgram/jgram packages. Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
* | GlueGen: Add support for 'compound call-by-value', i.e. passing and ↵Sven Gothel2014-06-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | returning struct instance 'compound call-by-value' is not efficient. However, to allow mapping APIs utilizing passing small structs as arguments and return values - this feature has been added. +++ To return the struct value, native code needs to allocate a NIO ByteBuffer and copy the data. The stack return value can be dismissed afterwards and the NIO buffer is returned. We include this functionality for all generated [impl] classes, native method: 'static jobject JVMUtil_NewDirectByteBufferCopy(JNIEnv *env, void * source_address, jlong capacity)' (See: 'JavaEmitter.initClassAccessCode') Since this code requires knowledge of java classes and methods, for which a reference needs to be acquired, a static initialization method has been introduced for all generated [impl] classes: 'private static native boolean initializeImpl();' Per default the this method will be called in the new static initializer block of the class, which can be supressed via the configuration element: 'ManualStaticInit <class-name>' 'ManualStaticInit' can be used to issue the 'initializeImpl()' call in a custom static initializer written by the user. However, at the time 'initializeImpl()' gets called the JNI native library must have been loaded, of course! +++ - See tag: // FIXME: Compound call-by-value for code changes and validation of completeness Trigger for compond call-by-value in CMethodBindingEmitter is: !cArgType.isPointer() && javaArgType.isCompoundTypeWrapper() Trigger for compond call-by-value in JavaEmitter is: t.isCompound() +++ Further more we do tolerate 'javaType.isCPrimitivePointerType()', i.e. adding comments for offset/size and field entries, which are all NOP. This allows to utilize the remaining fields of the native structure. +++ Tests: Added call-by-value to test1.[ch] binding test!
* | Minor edits: space, final qualifier; setenv-build-*: Add generic JDK locationSven Gothel2014-06-172-0/+25
| |
* | OSX Build: Default gcc.compat.compiler=xcode.clang ; Remove explicit ↵Sven Gothel2014-06-114-32/+11
| | | | | | | | xcode.clang property files
* | Fix glibc-compat-symbols.h: Distinguish clang and gcc (Aligned w/ ↵Sven Gothel2014-06-101-1/+9
|/ | | | openal-soft commit adc3413dda197bbd6b879ff98e897b8fbc66cc39)
* Bump semver to 9ec2e5329780214d317b026f7c0b086972a94a5c - Using ↵Sven Gothel2014-05-143-3/+3
| | | | Dumper.dumpFullStats(..)
* Bump semver 174953022b62681653db1f57b087581e29313f5bSven Gothel2014-05-143-3/+4
|
* Bump semver.jar to new rebased c4930f9d23ae7515434942836f628f767411876c ↵Sven Gothel2014-05-133-2/+3
| | | | (0.9.25-SNAPSHOT)
* Bump semver.jar to 731db3566b4096ecf6a08a9d33991400e66c5021 (sgothel/jogamp ↵Sven Gothel2014-05-133-5/+6
| | | | branch): Using direct regexp for excludes
* Unit Test: Modularize Semantic Version Test / Fix 'excludes'Sven Gothel2014-05-132-4/+15
| | | | | | | Refactor base semjar unit test class into com.jogamp.junit.util.VersionSemanticsUtil, part of new gluegen-test-util.jar. The new gluegen-test-util.jar shall be used by all other modules to test versioning.
* Unit Test: Added Semantic Version Test (Current version agains v2.1.5)Sven Gothel2014-05-139-6/+540
| | | | | | | | | | | | | TestVersionSemantics adds testing of semantic versioning of 2.1.5 gluegen-rt.jar against the current version within a unit test. Currently we expect BACKWARD_COMPATIBLE_USER and need to toggle this to NON_BACKWARD_COMPATIBLE, if actually perfoming non compatible major or minor version changes. The latter is allowed right now, since we increment from 2.1 -> 2.2! - Added https://github.com/jeluard/semantic-versioning semver.jar (Apache License Version 2.0)
* Bug 923: Remove dependency of CStruct annotation processor _generation_ and ↵Sven Gothel2014-05-115-10/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | generated_class_user due to Java8 issues. Java8's annotation processor as embedded within javac does not allow referencing not-yet existing generated classes in a class source code which will produce these generated classes via the annotation process. Example: +++ import com.jogamp.gluegen.structgen.CStruct; public class Lala { @CStruct(name="RenderingConfig", header="TestStruct01.h") public RenderingConfig config; } +++ Above example illustrates that the type 'RenderingConfig' does not exist at time of processing the annotation. The type will be created via the annotation process itself. Even though we pass '-proc:only', i.e. skip java compilation, Java8's annotation processing via javac fails in such case. We see this as a bug within javac's annotation processing itself! +++ This workaround splits the annotation process and using the class as generated by the former. To allow this to work, CStruct receives a new field 'jname' allowing to enforce the java-name of the structure using a dummy field type like boolean. @CStruct(name="RenderingConfig", jname="RenderingConfig", header="TestStruct01.h") public boolean dummy; Further more CStruct can be annotated on the package, i.e. 'package-info.java', avoiding the dependency problem altogether. To support multiple header files and types, 'CStructs' has been introduced using an array of 'CStruct'. @CStructs({@CStruct(name="RenderingConfig", header="TestStruct01.h"), @CStruct(name="Pixel", header="TestStruct02.h")}) package com.jogamp.gluegen.test.junit.structgen; Tests: - Build w/ Java7 and Java8 - Validated 'major version 50' (Java 6) class files (OK)
* unit test: preserve hs_err_pid*.log files (move to results folder for archive)Sven Gothel2014-05-091-0/+3
|
* build/test: Add ant-junit4.jar to classpath; Add experimental gluegen-rt-alt ↵Sven Gothel2014-05-096-16/+90
| | | | recipe (inactive); Misc ..
* Bump to 2.2-rcSven Gothel2014-03-111-4/+4
|
* Bump to release 2.1.5 (Android: 0914019)Sven Gothel2014-03-101-3/+3
|
* Fix 7z for paths containing spaces on Windows.Wade Walker2014-03-011-1/+1
|
* Fix sed for paths containing spaces on Windows.Wade Walker2014-03-011-1/+1
|
* build-test.xml: Push 'java.generate' up from java.build to android.packageSven Gothel2014-02-211-3/+3
|
* Bug 980: Refine Bitstream API 'signed' and 'unsigned' semantics - ↵Sven Gothel2014-02-211-4/+4
| | | | readUInt32(..) must return long due to EOF
* Bitstream: Add static 'long toUint32Long(int)' and 'int toUint32Int(int)' ↵Sven Gothel2014-02-211-2/+2
| | | | conversion functions
* Bug 890: Adding versatile Bitstream implementationSven Gothel2014-02-201-3/+9
| | | | | | | | | | | | | | | | We already have several locations where bitstream operations are required and partially implemented (JPEG decoder, media parsing, ..) as well as endian related conversion (elf parser, ..). Create a versatile Bitstream class allowing: - Utilize I/O operations on I/O streams, buffers and arrays - Consider MSBfirst / LSBfirst mode - Linear bit R/W operations - Bulk R/W operations w/ endian related type conversion - Allow mark/reset and switching streams and input/output mode - Optimized operations Complete set of unit tests included, covering hopefully all cases.
* toolchain-linux [armhf/armsf]: Add symlinks to cc g++ c++Sven Gothel2014-02-156-0/+6
|
* Bump 'down' to 2.1.5Sven Gothel2014-02-151-2/+2
|
* Fix make.gluegen.all.android-armv6-cross.sh (SDIR was missing)Sven Gothel2014-02-151-0/+2
|
* Bump to 2.2.0 RCSven Gothel2014-02-051-4/+4
|
* Prepare 2.1.4v2.1.4Sven Gothel2014-01-301-3/+3
|
* build.xml .. fix doc (copy/paste)Sven Gothel2014-01-261-1/+1
|
* Add lst-jars.sh scriptSven Gothel2014-01-251-0/+6
|
* Jar Manifest: Seal all packages ; Each jar is 'standalone' as required by ↵Sven Gothel2014-01-254-2/+12
| | | | 'sealed packages': gluegen-rt.jar < gluegen-rt-android.jar < gluegen.jar
* Jar Manifest: Sealed Entries must follow generic headers - Otherwise ↵Sven Gothel2014-01-254-8/+12
| | | | subsequent entries are not recognized
* Bug 856 - Android: Support dual ABI (x86 i686 *and* ARMv7arm), i.e. pick ↵Sven Gothel2014-01-246-11/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'best' ABI - Use 'os.arch' as a prelim CPUType for MachineDescription - Always attempt to load a binary and parse it's elf header - Linux: self-exe - Android: gluegen-rt library - Other: java lib - Always use details (ABI) if ARM - Android: Check CPU_TYPE and CPU_TYPE2 // FIXME / HACK: // We use sCPUType for MachineDescriptionRuntime.getStatic() // until we have determined the final CPU_TYPE, etc. // MachineDescriptionRuntime gets notified via MachineDescriptionRuntime.notifyPropsInitialized() below. // // We could use Elf Ehdr's machine value to determine the bit-size // used for it's offset table! // However, 'os.arch' should be a good guess for this task. Tested manually on - Linux x86, x86_64, armhf (raspi) - Android intel and arm - Windows x86_64 - OSX x86_64
* Jar Manifest: Add empty line before EOF (otherwise last line is cut-off - ↵Sven Gothel2014-01-226-0/+11
| | | | duh), add 'Application-Library-Allowable-Codebase: *'
* Bug 945 - GlueGen's IOUtil does not consider file URI's authority when ↵Sven Gothel2014-01-224-5/+33
| | | | | | | | | | | | | | | | | | | | | | | converting to file-path or URI (Windows UNC / share host) Note: Authority for 'file-scheme' URI's is used on Windows to denote the host of the shared resource -> UNC Following methods of IOUtil didn't consider the authority for file-scheme URI: 'URL toURL(final URI uri)' 'String decodeURIToFilePath(final String uriPath)' 'String decodeURIIfFilePath(final URI uri)' Further more, the patterns 'patternSingleFS' and 'patternSingleBS' converted multiple '\' '/' to one replacement. However, we should not change the separator count and replace them one-by-one. TestIOUtilURIHandling: - Added shared-file-host 'filehost' test cases to file URIs and plain file path tests. - Passed on Unix and Windows. Added 'make/scripts/test-win32-smb_share.bat' - Testing actual windows share usage - Passed on Windows
* Bug 944 - Platform doesn't parse early-access java-version string properly ↵Sven Gothel2014-01-141-2/+2
| | | | | | | | | (JAVA_VERSION_UPDATE) Fix JAVA_VERSION_UPDATE for early release versions. Early access java versions are e.g. '1.7.0_60-ea' where releases simply are named: '1.7.0_60'.
* Bump to 2.1.4 RCv2.1.4_rc01Sven Gothel2013-12-181-1/+1
|
* IOUtil.toURL(..) Apply decodeFromURI(uri.getPath()) if file-scheme; Add ↵Sven Gothel2013-11-282-7/+8
| | | | | | | | | | | | | | | | | | | IOUtil.decodeURIToFilePath(..) for native usage. Refine comments, API doc. toURL(..): Apply space conversion, decodeFromURI(..), on file-scheme path, ensuring decoded space. ++ Add decodeURIToFilePath(String uriPath) and decodeURIToFilePath(URI uri) Both methods shall simplify decoding a file-URI for native platform usage. Tested in TestIOUtilURIHandling +++
* glibc-compat-symbols.h: Use GLIBC_2.0 for 32bit ; Use asm(..) instead of ↵Sven Gothel2013-11-171-8/+13
| | | | __asm__(..) to support clang ; Branch on OS predef-macro for GLIBC detection, allow __GNUC__ and __clang__ on __linux__
* Use 'gluegen-clang.properties' for generic clang and ↵Sven Gothel2013-11-176-5/+72
| | | | | | | | 'gluegen-xcode_clang.properties' for OSX xcode-clang ; Add GNU/Linux LLVM/clang build scripts Use 'gluegen-clang.properties' for generic clang and 'gluegen-xcode_clang.properties' for OSX xcode-clang. Add GNU/Linux LLVM/clang build scripts
* Add generic 'check-glibc.sh' script / rename old scriptSven Gothel2013-11-172-10/+36
|
* Bump (back) to 2.1.3 - devel (Postpone 2.2.0 track until important bugs and ↵Sven Gothel2013-11-061-2/+2
| | | | issues are fixed)