upm/tests/check_autoloadlibrary.py
Noel Eck 6725559669 JAVA: Remove library source compile from JAVA packages
Previously the JAVA packages re-compile UPM library source files.  This
was a work-around for compiling JAVA-specific functionality from the UPM
source into the SWIG'ed JAVA pacakges.

This commit removes the source from the JAVA SWIG compile and provides
an example on how to add the JAVA-specific code with a swig extend call.

    * Added _upm.i file for %import (not %include)
    * Added macros to _upm.i; 1 which performs the loadLibrary, and one
      which adds the java installISR runnable.
    * Updated the src/CMakeLists.txt file to NOT build library src into
      pacakges.
    * Updated the a110x library with examples on how to use the macros.

Signed-off-by: Noel Eck <noel.eck@intel.com>
2018-01-24 09:30:23 -08:00

54 lines
1.8 KiB
Python
Executable File

#!/usr/bin/python
import unittest as u
import re, fnmatch, os
rootDir = '../src/'
prefix = """
%pragma(java) jniclasscode=%{
static {
try {
System.loadLibrary(\""""
suffix = """\");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load. \\n" + e);
System.exit(1);
}
}
%}"""
class AutoLoadLibrary(u.TestCase):
def test_existing_snippet(self):
broken_modules = []
for subdir, dirs, files in os.walk(rootDir):
for fileName in files:
if fnmatch.fnmatch(fileName, 'javaupm_*.i'):
moduleName = fileName[:-2]
snippet = prefix + moduleName + suffix
with open(os.path.join(subdir, fileName), "rU") as f:
#read in entire file
data = f.read()
#Make sure it is module
if not '%module' in data:
print "%%module not found in %s, skipping" % fileName
continue
# Check for the autoload code or the autoload macro
if (not 'JAVA_JNI_LOADLIBRARY(javaupm_' in data) and \
(not snippet in data):
broken_modules.append('%s: %s' % \
(moduleName, os.path.join(subdir, fileName)))
self.assertEqual( len(broken_modules), 0, \
"\nThe following modules do not contain the standard auto load library code:\n" + \
"\n".join(broken_modules) + \
"\nConsider adding the following snippet to the SWIG interface file:\n" + \
prefix + "<module_name>" + suffix)
if __name__ == '__main__':
u.main()