Move JNI to a standalone subdirectory.
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 12 Feb 2022 05:22:55 +0000 (06:22 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 12 Feb 2022 05:22:55 +0000 (06:22 +0100)
27 files changed:
Makefile
configure
jni/.cproject [new file with mode: 0644]
jni/.project [new file with mode: 0644]
jni/.settings/language.settings.xml [new file with mode: 0644]
jni/.settings/org.eclipse.cdt.core.prefs [new file with mode: 0644]
jni/Makefile [new file with mode: 0644]
jni/jni.mk [new file with mode: 0644]
jni/org_argeo_api_uuid_libuuid/.gitignore [new file with mode: 0644]
jni/org_argeo_api_uuid_libuuid/Makefile [new file with mode: 0644]
jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.c [new file with mode: 0644]
jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.h [new file with mode: 0644]
jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.c [new file with mode: 0644]
jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.h [new file with mode: 0644]
org.argeo.api.uuid/jni/.cproject [deleted file]
org.argeo.api.uuid/jni/.project [deleted file]
org.argeo.api.uuid/jni/.settings/language.settings.xml [deleted file]
org.argeo.api.uuid/jni/.settings/org.eclipse.cdt.core.prefs [deleted file]
org.argeo.api.uuid/jni/Makefile [deleted file]
org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/.gitignore [deleted file]
org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/Makefile [deleted file]
org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.c [deleted file]
org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.h [deleted file]
org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.c [deleted file]
org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.h [deleted file]
sdk.mk.old [new file with mode: 0644]
sdk/jni.mk [deleted file]

index 82dcf494b5e24bf0464edb1702a9d3745993d53a..85473c29cb1291d9f86b35075d9326b0ebfb8941 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 include sdk.mk
-.PHONY: clean all osgi
+.PHONY: clean all osgi jni
 
-all: osgi jni
+all: osgi 
 
 BUNDLE_PREFIX = org.argeo
 A2_CATEGORY = org.argeo
@@ -12,7 +12,6 @@ org.argeo.util \
 org.argeo.api.uuid \
 org.argeo.api.acr \
 org.argeo.api.cms \
-org.argeo.cms.tp \
 org.argeo.cms \
 org.argeo.cms.pgsql \
 eclipse/org.argeo.cms.servlet \
@@ -21,9 +20,6 @@ rcp/org.argeo.swt.specific.rcp \
 eclipse/org.argeo.cms.swt \
 rcp/org.argeo.cms.ui.rcp \
 
-NATIVE_PROJECTS = \
-org.argeo.api.uuid/jni \
-
 BUILD_CLASSPATH = \
 /usr/share/java/osgi-core/osgi.core.jar:$\
 /usr/share/java/osgi-compendium/osgi.cmpn.jar:$\
@@ -60,7 +56,7 @@ org.argeo.api.cms
 
 
 jni:
-       $(foreach dir, $(NATIVE_PROJECTS), $(MAKE) -C $(dir);)
+       $(MAKE) -C jni
 
 # TODO relativize from SDK_SRC_BASE
 BUILD_BASE = $(SDK_BUILD_BASE)
@@ -96,7 +92,7 @@ clean:
        rm -rf $(BUILD_BASE)/*-compiled
        rm -rf $(BUILD_BASE)/{cnf,a2}
        rm -rf $(BUILD_BASE)/$(BUNDLE_PREFIX).* $(BUILD_BASE)/eclipse $(BUILD_BASE)/rcp
-       $(foreach dir, $(NATIVE_PROJECTS), $(MAKE) -C $(dir) clean;)
+       $(MAKE) -C jni clean
 
 # SDK level
 $(SDK_BUILD_BASE)/cnf/%.bnd: cnf/%.bnd
index 4587bf45ef4680ae1e675dbc2ae6e37e086e2814..90c0e9953b3150d59901ec2096752f93f53e218a 100644 (file)
--- a/configure
+++ b/configure
@@ -21,6 +21,12 @@ exit 1
 
 else
 
+if [ -z "$JAVA_HOME" ]
+then
+echo "Environment variable JAVA_HOME must be set"
+exit 1
+fi
+
 # Create build directory, so that it can be used right away
 # and we check whether we have the rights
 mkdir -p $SDK_BUILD_BASE
@@ -34,6 +40,7 @@ fi
 cat > "$SDK_MK" <<EOF
 SDK_SRC_BASE := $SDK_SRC_BASE
 SDK_BUILD_BASE := $SDK_BUILD_BASE
+JAVA_HOME := $JAVA_HOME
 
 include \$(SDK_SRC_BASE)/branch.properties
 include \$(SDK_SRC_BASE)/sdk/includes.mk
@@ -41,6 +48,7 @@ EOF
 
 
 echo SDK was configured.
+echo "JAVA_HOME        : $JAVA_HOME"
 echo "Base for sources : $SDK_SRC_BASE"
 echo "Base for builds  : $SDK_BUILD_BASE"
 exit 0
diff --git a/jni/.cproject b/jni/.cproject
new file mode 100644 (file)
index 0000000..259cf27
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591" moduleId="org.eclipse.cdt.core.settings" name="Linux x86_64">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="${ProjName}" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591" name="Linux x86_64" parent="org.eclipse.cdt.build.core.emptycfg">
+                                       <folderInfo id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591.350590933" name="/" resourcePath="">
+                                               <toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.2019979628" name="Cross GCC">
+                                                       <option id="cdt.managedbuild.option.gnu.cross.prefix.715257330" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
+                                                       <option id="cdt.managedbuild.option.gnu.cross.path.1210265928" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
+                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.2070205849" isAbstract="false" osList="all"/>
+                                                       <builder enableAutoBuild="true" id="cdt.managedbuild.builder.gnu.cross.1468217036" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="org_argeo_api_uuid_libuuid"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="org.argeo.api.uuid.null.1913821562" name="org.argeo.api.uuid"/>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="refreshScope" versionNumber="2">
+               <configuration configurationName="Linux x86_64"/>
+               <configuration configurationName="Default">
+                       <resource resourceType="PROJECT" workspacePath="/Java_org_argeo_api_uuid"/>
+               </configuration>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.1367283591;cdt.managedbuild.toolchain.gnu.cross.base.1367283591.350590933;cdt.managedbuild.tool.gnu.cross.c.compiler.453851306;cdt.managedbuild.tool.gnu.c.compiler.input.1102448447">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.1367283591;cdt.managedbuild.toolchain.gnu.cross.base.1367283591.350590933;cdt.managedbuild.tool.gnu.cross.cpp.compiler.365551368;cdt.managedbuild.tool.gnu.cpp.compiler.input.916135861">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
+               <buildTargets>
+                       <target name="ide" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
+                               <buildCommand>make</buildCommand>
+                               <buildArguments/>
+                               <buildTarget>ide</buildTarget>
+                               <stopOnError>true</stopOnError>
+                               <useDefaultCommand>true</useDefaultCommand>
+                               <runAllBuilders>true</runAllBuilders>
+                       </target>
+               </buildTargets>
+       </storageModule>
+</cproject>
\ No newline at end of file
diff --git a/jni/.project b/jni/.project
new file mode 100644 (file)
index 0000000..492a807
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>jni-commons</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+</projectDescription>
diff --git a/jni/.settings/language.settings.xml b/jni/.settings/language.settings.xml
new file mode 100644 (file)
index 0000000..e30ee16
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project>
+       <configuration id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591" name="Linux x86_64">
+               <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+                       <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+                       <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+                       <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser" keep-relative-paths="false" name="CDT GCC Build Output Parser" parameter="(g?cc)|([gc]\+\+)|(clang)" prefer-non-shared="true"/>
+                       <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+               </extension>
+       </configuration>
+</project>
\ No newline at end of file
diff --git a/jni/.settings/org.eclipse.cdt.core.prefs b/jni/.settings/org.eclipse.cdt.core.prefs
new file mode 100644 (file)
index 0000000..c8ec5df
--- /dev/null
@@ -0,0 +1,6 @@
+doxygen/doxygen_new_line_after_brief=true
+doxygen/doxygen_use_brief_tag=false
+doxygen/doxygen_use_javadoc_tags=true
+doxygen/doxygen_use_pre_tag=false
+doxygen/doxygen_use_structural_commands=false
+eclipse.preferences.version=1
diff --git a/jni/Makefile b/jni/Makefile
new file mode 100644 (file)
index 0000000..8944d5c
--- /dev/null
@@ -0,0 +1,10 @@
+JNIDIRS = org_argeo_api_uuid_libuuid
+
+.PHONY: clean all
+
+all: 
+       $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir);)
+       
+clean:
+       $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir) clean;)
+
diff --git a/jni/jni.mk b/jni/jni.mk
new file mode 100644 (file)
index 0000000..46f0674
--- /dev/null
@@ -0,0 +1,61 @@
+TARGET_EXEC := libJava_$(NATIVE_PACKAGE).so
+
+LDFLAGS = -shared -fPIC -Wl,-soname,$(TARGET_EXEC).$(MAJOR).$(MINOR) $(ADDITIONAL_LIBS)
+CFLAGS = -O3 -fPIC
+
+SRC_DIRS := . 
+
+#
+# Generic Argeo
+#
+BUILD_DIR := $(SDK_BUILD_BASE)/jni/$(NATIVE_PACKAGE)
+
+# Every folder in ./src will need to be passed to GCC so that it can find header files
+INC_DIRS := $(shell find $(SRC_DIRS) -type d) $(JAVA_HOME)/include $(JAVA_HOME)/include/linux $(ADDITIONAL_INCLUDES)
+
+
+.PHONY: clean all ide
+all: $(SDK_BUILD_BASE)/jni/$(TARGET_EXEC)
+
+# Find all the C and C++ files we want to compile
+# Note the single quotes around the * expressions. Make will incorrectly expand these otherwise.
+SRCS := $(shell find $(SRC_DIRS) -name '*.cpp' -or -name '*.c' -or -name '*.s')
+
+# String substitution for every C/C++ file.
+# As an example, hello.cpp turns into ./build/hello.cpp.o
+OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)
+
+# String substitution (suffix version without %).
+# As an example, ./build/hello.cpp.o turns into ./build/hello.cpp.d
+DEPS := $(OBJS:.o=.d)
+
+# Add a prefix to INC_DIRS. So moduleA would become -ImoduleA. GCC understands this -I flag
+INC_FLAGS := $(addprefix -I,$(INC_DIRS))
+
+# The -MMD and -MP flags together generate Makefiles for us!
+# These files will have .d instead of .o as the output.
+CPPFLAGS := $(INC_FLAGS) -MMD -MP
+
+# The final build step.
+$(SDK_BUILD_BASE)/jni/$(TARGET_EXEC): $(OBJS)
+       $(CC) $(OBJS) -o $@ $(LDFLAGS)
+
+# Build step for C source
+$(BUILD_DIR)/%.c.o: %.c
+       mkdir -p $(dir $@)
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
+
+# Build step for C++ source
+$(BUILD_DIR)/%.cpp.o: %.cpp
+       mkdir -p $(dir $@)
+       $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
+
+clean:
+       rm -r $(BUILD_DIR) $(SDK_BUILD_BASE)/$(TARGET_EXEC)
+
+# Include the .d makefiles. The - at the front suppresses the errors of missing
+# Makefiles. Initially, all the .d files will be missing, and we don't want those
+# errors to show up.
+-include $(DEPS)
+
+# MAKEFILE_DIR := $(dir $(firstword $(MAKEFILE_LIST)))
diff --git a/jni/org_argeo_api_uuid_libuuid/.gitignore b/jni/org_argeo_api_uuid_libuuid/.gitignore
new file mode 100644 (file)
index 0000000..84c048a
--- /dev/null
@@ -0,0 +1 @@
+/build/
diff --git a/jni/org_argeo_api_uuid_libuuid/Makefile b/jni/org_argeo_api_uuid_libuuid/Makefile
new file mode 100644 (file)
index 0000000..cfeb1db
--- /dev/null
@@ -0,0 +1,8 @@
+NATIVE_PACKAGE := org_argeo_api_uuid_libuuid
+
+ADDITIONAL_INCLUDES = /usr/include/uuid
+ADDITIONAL_LIBS = -luuid
+
+include ../../sdk.mk
+include ../jni.mk
+
diff --git a/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.c b/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.c
new file mode 100644 (file)
index 0000000..a5aeed0
--- /dev/null
@@ -0,0 +1,8 @@
+#include <jni.h>
+#include <uuid.h>
+#include "org_argeo_api_uuid_libuuid_DirectLibuuidFactory.h"
+
+JNIEXPORT void JNICALL Java_org_argeo_api_uuid_libuuid_DirectLibuuidFactory_timeUUID(
+               JNIEnv *env, jobject uuidFactory, jobject uuidBuf) {
+       uuid_generate_time((*env)->GetDirectBufferAddress(env, uuidBuf));
+}
diff --git a/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.h b/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.h
new file mode 100644 (file)
index 0000000..5f18bf7
--- /dev/null
@@ -0,0 +1,21 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_argeo_api_uuid_libuuid_DirectLibuuidFactory */
+
+#ifndef _Included_org_argeo_api_uuid_libuuid_DirectLibuuidFactory
+#define _Included_org_argeo_api_uuid_libuuid_DirectLibuuidFactory
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     org_argeo_api_uuid_libuuid_DirectLibuuidFactory
+ * Method:    timeUUID
+ * Signature: (Ljava/nio/ByteBuffer;)V
+ */
+JNIEXPORT void JNICALL Java_org_argeo_api_uuid_libuuid_DirectLibuuidFactory_timeUUID
+  (JNIEnv *, jobject, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.c b/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.c
new file mode 100644 (file)
index 0000000..f97b1f4
--- /dev/null
@@ -0,0 +1,91 @@
+#include <jni.h>
+#include <uuid.h>
+#include "org_argeo_api_uuid_libuuid_LibuuidFactory.h"
+
+/*
+ * UTILITIES
+ */
+
+static inline jobject fromBytes(JNIEnv *env, uuid_t out) {
+       jlong msb = 0;
+       jlong lsb = 0;
+
+       for (int i = 0; i < 8; i++)
+               msb = (msb << 8) | (out[i] & 0xff);
+       for (int i = 8; i < 16; i++)
+               lsb = (lsb << 8) | (out[i] & 0xff);
+
+       jclass uuidClass = (*env)->FindClass(env, "java/util/UUID");
+       jmethodID uuidConstructor = (*env)->GetMethodID(env, uuidClass, "<init>",
+                       "(JJ)V");
+
+       jobject jUUID = (*env)->AllocObject(env, uuidClass);
+       (*env)->CallVoidMethod(env, jUUID, uuidConstructor, msb, lsb);
+
+       return jUUID;
+}
+
+static inline void toBytes(JNIEnv *env, jobject jUUID, uuid_t result) {
+
+       jclass uuidClass = (*env)->FindClass(env, "java/util/UUID");
+       jmethodID getMostSignificantBits = (*env)->GetMethodID(env, uuidClass,
+                       "getMostSignificantBits", "()J");
+       jmethodID getLeastSignificantBits = (*env)->GetMethodID(env, uuidClass,
+                       "getLeastSignificantBits", "()J");
+
+       jlong msb = (*env)->CallLongMethod(env, jUUID, getMostSignificantBits);
+       jlong lsb = (*env)->CallLongMethod(env, jUUID, getLeastSignificantBits);
+
+       for (int i = 0; i < 8; i++)
+               result[i] = (unsigned char) ((msb >> ((7 - i) * 8)) & 0xff);
+       for (int i = 8; i < 16; i++)
+               result[i] = (unsigned char) ((lsb >> ((15 - i) * 8)) & 0xff);
+}
+
+/*
+ * JNI IMPLEMENTATION
+ */
+
+JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_timeUUID(
+               JNIEnv *env, jobject uuidFactory) {
+       uuid_t out;
+
+       uuid_generate_time(out);
+       return fromBytes(env, out);
+}
+
+JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_nameUUIDv5(
+               JNIEnv *env, jobject uuidFactory, jobject namespaceUuid,
+               jbyteArray name) {
+       uuid_t ns;
+       uuid_t out;
+
+       toBytes(env, namespaceUuid, ns);
+       jsize length = (*env)->GetArrayLength(env, name);
+       jbyte *bytes = (*env)->GetByteArrayElements(env, name, 0);
+
+       uuid_generate_sha1(out, ns, bytes, length);
+       return fromBytes(env, out);
+}
+
+JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_nameUUIDv3(
+               JNIEnv *env, jobject uuidFactory, jobject namespaceUuid,
+               jbyteArray name) {
+       uuid_t ns;
+       uuid_t out;
+
+       toBytes(env, namespaceUuid, ns);
+       jsize length = (*env)->GetArrayLength(env, name);
+       jbyte *bytes = (*env)->GetByteArrayElements(env, name, 0);
+
+       uuid_generate_md5(out, ns, bytes, length);
+       return fromBytes(env, out);
+}
+
+JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_randomUUIDStrong(
+               JNIEnv *env, jobject uuidFactory) {
+       uuid_t out;
+
+       uuid_generate_random(out);
+       return fromBytes(env, out);
+}
diff --git a/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.h b/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.h
new file mode 100644 (file)
index 0000000..ad0ac5e
--- /dev/null
@@ -0,0 +1,45 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_argeo_api_uuid_libuuid_LibuuidFactory */
+
+#ifndef _Included_org_argeo_api_uuid_libuuid_LibuuidFactory
+#define _Included_org_argeo_api_uuid_libuuid_LibuuidFactory
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     org_argeo_api_uuid_libuuid_LibuuidFactory
+ * Method:    timeUUID
+ * Signature: ()Ljava/util/UUID;
+ */
+JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_timeUUID
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_argeo_api_uuid_libuuid_LibuuidFactory
+ * Method:    nameUUIDv5
+ * Signature: (Ljava/util/UUID;[B)Ljava/util/UUID;
+ */
+JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_nameUUIDv5
+  (JNIEnv *, jobject, jobject, jbyteArray);
+
+/*
+ * Class:     org_argeo_api_uuid_libuuid_LibuuidFactory
+ * Method:    nameUUIDv3
+ * Signature: (Ljava/util/UUID;[B)Ljava/util/UUID;
+ */
+JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_nameUUIDv3
+  (JNIEnv *, jobject, jobject, jbyteArray);
+
+/*
+ * Class:     org_argeo_api_uuid_libuuid_LibuuidFactory
+ * Method:    randomUUIDStrong
+ * Signature: ()Ljava/util/UUID;
+ */
+JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_randomUUIDStrong
+  (JNIEnv *, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/org.argeo.api.uuid/jni/.cproject b/org.argeo.api.uuid/jni/.cproject
deleted file mode 100644 (file)
index cf5a27a..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
-       
-    <storageModule moduleId="org.eclipse.cdt.core.settings">
-                       
-        <cconfiguration id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591">
-                               
-            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591" moduleId="org.eclipse.cdt.core.settings" name="Linux x86_64">
-                                               
-                <externalSettings/>
-                                               
-                <extensions>
-                                                       
-                    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-                                                       
-                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-                                                       
-                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-                                                       
-                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-                                                       
-                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
-                                                       
-                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-                                               
-                </extensions>
-                                       
-            </storageModule>
-                               
-            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
-                                               
-                <configuration artifactName="${ProjName}" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591" name="Linux x86_64" parent="org.eclipse.cdt.build.core.emptycfg">
-                                                       
-                    <folderInfo id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591.350590933" name="/" resourcePath="">
-                                                                       
-                        <toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.2019979628" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
-                                                                               
-                            <option id="cdt.managedbuild.option.gnu.cross.prefix.715257330" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
-                                                                               
-                            <option id="cdt.managedbuild.option.gnu.cross.path.1210265928" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
-                                                                               
-                            <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.2070205849" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
-                                                                               
-                            <builder enableAutoBuild="true" id="cdt.managedbuild.builder.gnu.cross.1468217036" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
-                                                                               
-                            <tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.453851306" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
-                                                                                               
-                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1102448447" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
-                                                                                       
-                            </tool>
-                                                                               
-                            <tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.365551368" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
-                                                                                               
-                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.1203427394" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
-                                                                                                       
-                                    <listOptionValue builtIn="false" value="/usr/lib/jvm/java-11-openjdk/include/"/>
-                                                                                                       
-                                    <listOptionValue builtIn="false" value="/usr/include/uuid/"/>
-                                                                                                       
-                                    <listOptionValue builtIn="false" value="/usr/lib/jvm/java-11-openjdk/include/linux/"/>
-                                                                                               
-                                </option>
-                                                                                               
-                                <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.916135861" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
-                                                                                       
-                            </tool>
-                                                                               
-                            <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.1473247311" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/>
-                                                                               
-                            <tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1834633481" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
-                                                                                               
-                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1443450015" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
-                                                                                                       
-                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
-                                                                                                       
-                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
-                                                                                               
-                                </inputType>
-                                                                                       
-                            </tool>
-                                                                               
-                            <tool id="cdt.managedbuild.tool.gnu.cross.archiver.1273786909" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
-                                                                               
-                            <tool id="cdt.managedbuild.tool.gnu.cross.assembler.488925101" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
-                                                                                               
-                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1103553043" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
-                                                                                       
-                            </tool>
-                                                                       
-                        </toolChain>
-                                                               
-                    </folderInfo>
-                                                       
-                    <sourceEntries>
-                                                                       
-                        <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="org_argeo_api_uuid_libuuid"/>
-                                                               
-                    </sourceEntries>
-                                               
-                </configuration>
-                                       
-            </storageModule>
-                               
-            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-                       
-        </cconfiguration>
-               
-    </storageModule>
-       
-    <storageModule moduleId="cdtBuildSystem" version="4.0.0">
-                       
-        <project id="org.argeo.api.uuid.null.1913821562" name="org.argeo.api.uuid"/>
-               
-    </storageModule>
-       
-    <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
-       
-    <storageModule moduleId="refreshScope" versionNumber="2">
-                       
-        <configuration configurationName="Linux x86_64"/>
-                       
-        <configuration configurationName="Default">
-                               
-            <resource resourceType="PROJECT" workspacePath="/Java_org_argeo_api_uuid"/>
-                       
-        </configuration>
-               
-    </storageModule>
-       
-    <storageModule moduleId="scannerConfiguration">
-                       
-        <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-                       
-        <scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.1367283591;cdt.managedbuild.toolchain.gnu.cross.base.1367283591.350590933;cdt.managedbuild.tool.gnu.cross.c.compiler.453851306;cdt.managedbuild.tool.gnu.c.compiler.input.1102448447">
-                               
-            <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-                       
-        </scannerConfigBuildInfo>
-                       
-        <scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.1367283591;cdt.managedbuild.toolchain.gnu.cross.base.1367283591.350590933;cdt.managedbuild.tool.gnu.cross.cpp.compiler.365551368;cdt.managedbuild.tool.gnu.cpp.compiler.input.916135861">
-                               
-            <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-                       
-        </scannerConfigBuildInfo>
-               
-    </storageModule>
-       
-    <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
-       
-    <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
-                       
-        <buildTargets>
-                               
-            <target name="ide" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
-                                               
-                <buildCommand>make</buildCommand>
-                                               
-                <buildArguments/>
-                                               
-                <buildTarget>ide</buildTarget>
-                                               
-                <stopOnError>true</stopOnError>
-                                               
-                <useDefaultCommand>true</useDefaultCommand>
-                                               
-                <runAllBuilders>true</runAllBuilders>
-                                       
-            </target>
-                       
-        </buildTargets>
-               
-    </storageModule>
-    
-</cproject>
diff --git a/org.argeo.api.uuid/jni/.project b/org.argeo.api.uuid/jni/.project
deleted file mode 100644 (file)
index 74fde08..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-       <name>Java_org_argeo_api_uuid</name>
-       <comment></comment>
-       <projects>
-       </projects>
-       <buildSpec>
-               <buildCommand>
-                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
-                       <arguments>
-                       </arguments>
-               </buildCommand>
-               <buildCommand>
-                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
-                       <triggers>full,incremental,</triggers>
-                       <arguments>
-                       </arguments>
-               </buildCommand>
-       </buildSpec>
-       <natures>
-               <nature>org.eclipse.cdt.core.cnature</nature>
-               <nature>org.eclipse.cdt.core.ccnature</nature>
-               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
-               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
-       </natures>
-</projectDescription>
diff --git a/org.argeo.api.uuid/jni/.settings/language.settings.xml b/org.argeo.api.uuid/jni/.settings/language.settings.xml
deleted file mode 100644 (file)
index 7e8a04b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<project>
-       
-    <configuration id="cdt.managedbuild.toolchain.gnu.cross.base.1367283591" name="Linux x86_64">
-                       
-        <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
-                               
-            <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
-                               
-            <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
-                               
-            <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser" keep-relative-paths="false" name="CDT GCC Build Output Parser" parameter="(g?cc)|([gc]\+\+)|(clang)" prefer-non-shared="true"/>
-                               
-            <provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-808469145454922213" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
-                                               
-                <language-scope id="org.eclipse.cdt.core.gcc"/>
-                                               
-                <language-scope id="org.eclipse.cdt.core.g++"/>
-                                       
-            </provider>
-                               
-            <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
-                       
-        </extension>
-               
-    </configuration>
-    
-</project>
diff --git a/org.argeo.api.uuid/jni/.settings/org.eclipse.cdt.core.prefs b/org.argeo.api.uuid/jni/.settings/org.eclipse.cdt.core.prefs
deleted file mode 100644 (file)
index c8ec5df..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-doxygen/doxygen_new_line_after_brief=true
-doxygen/doxygen_use_brief_tag=false
-doxygen/doxygen_use_javadoc_tags=true
-doxygen/doxygen_use_pre_tag=false
-doxygen/doxygen_use_structural_commands=false
-eclipse.preferences.version=1
diff --git a/org.argeo.api.uuid/jni/Makefile b/org.argeo.api.uuid/jni/Makefile
deleted file mode 100644 (file)
index df673b5..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-JNIDIRS = org_argeo_api_uuid_libuuid
-
-.PHONY: clean all jni
-
-all: jni
-
-jni:
-       $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir);)
-       
-clean:
-       $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir) clean;)
-
-#ide: $(META_INF_DIR)/$(ARCH)/$(TARGET_EXEC)
-       
-#$(META_INF_DIR)/$(ARCH)/$(TARGET_EXEC): $(BUILD_DIR)/$(TARGET_EXEC)
-#      mkdir -p $(dir $@)
-#      cp $(BUILD_DIR)/$(TARGET_EXEC) $(dir $@)
-
-
-%:
-       @echo Making '$@' $(if $^,from '$^')
-       @echo 'OBJ=$(OBJ)'
-       @echo 'DEP=$(DEP)'
diff --git a/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/.gitignore b/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/.gitignore
deleted file mode 100644 (file)
index 84c048a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/build/
diff --git a/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/Makefile b/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/Makefile
deleted file mode 100644 (file)
index 492f59f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-NATIVE_PACKAGE := org_argeo_api_uuid_libuuid
-
-include ../../../sdk.mk
-include $(SDK_SRC_BASE)/sdk/jni.mk
-
diff --git a/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.c b/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.c
deleted file mode 100644 (file)
index 71c2656..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <jni.h>
-#include <uuid.h>
-#include "org_argeo_api_uuid_libuuid_DirectLibuuidFactory.h"
-
-JNIEXPORT void JNICALL Java_org_argeo_api_uuid_libuuid_DirectLibuuidFactory_timeUUID(
-               JNIEnv *env, jobject, jobject uuidBuf) {
-       uuid_generate_time((*env)->GetDirectBufferAddress(env, uuidBuf));
-}
diff --git a/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.h b/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_DirectLibuuidFactory.h
deleted file mode 100644 (file)
index 5f18bf7..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_argeo_api_uuid_libuuid_DirectLibuuidFactory */
-
-#ifndef _Included_org_argeo_api_uuid_libuuid_DirectLibuuidFactory
-#define _Included_org_argeo_api_uuid_libuuid_DirectLibuuidFactory
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class:     org_argeo_api_uuid_libuuid_DirectLibuuidFactory
- * Method:    timeUUID
- * Signature: (Ljava/nio/ByteBuffer;)V
- */
-JNIEXPORT void JNICALL Java_org_argeo_api_uuid_libuuid_DirectLibuuidFactory_timeUUID
-  (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.c b/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.c
deleted file mode 100644 (file)
index cff3cc5..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-#include <jni.h>
-#include <uuid.h>
-#include "org_argeo_api_uuid_libuuid_LibuuidFactory.h"
-
-/*
- * UTILITIES
- */
-
-static inline jobject fromBytes(JNIEnv *env, uuid_t out) {
-       jlong msb = 0;
-       jlong lsb = 0;
-
-       for (int i = 0; i < 8; i++)
-               msb = (msb << 8) | (out[i] & 0xff);
-       for (int i = 8; i < 16; i++)
-               lsb = (lsb << 8) | (out[i] & 0xff);
-
-       jclass uuidClass = (*env)->FindClass(env, "java/util/UUID");
-       jmethodID uuidConstructor = (*env)->GetMethodID(env, uuidClass, "<init>",
-                       "(JJ)V");
-
-       jobject jUUID = (*env)->AllocObject(env, uuidClass);
-       (*env)->CallVoidMethod(env, jUUID, uuidConstructor, msb, lsb);
-
-       return jUUID;
-}
-
-static inline void toBytes(JNIEnv *env, jobject jUUID, uuid_t result) {
-
-       jclass uuidClass = (*env)->FindClass(env, "java/util/UUID");
-       jmethodID getMostSignificantBits = (*env)->GetMethodID(env, uuidClass,
-                       "getMostSignificantBits", "()J");
-       jmethodID getLeastSignificantBits = (*env)->GetMethodID(env, uuidClass,
-                       "getLeastSignificantBits", "()J");
-
-       jlong msb = (*env)->CallLongMethod(env, jUUID, getMostSignificantBits);
-       jlong lsb = (*env)->CallLongMethod(env, jUUID, getLeastSignificantBits);
-
-       for (int i = 0; i < 8; i++)
-               result[i] = (unsigned char) ((msb >> ((7 - i) * 8)) & 0xff);
-       for (int i = 8; i < 16; i++)
-               result[i] = (unsigned char) ((lsb >> ((15 - i) * 8)) & 0xff);
-}
-
-/*
- * JNI IMPLEMENTATION
- */
-
-JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_timeUUID(
-               JNIEnv *env, jobject) {
-       uuid_t out;
-
-       uuid_generate_time(out);
-       return fromBytes(env, out);
-}
-
-JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_nameUUIDv5(
-               JNIEnv *env, jobject, jobject namespaceUuid, jbyteArray name) {
-       uuid_t ns;
-       uuid_t out;
-
-       toBytes(env, namespaceUuid, ns);
-       jsize length = (*env)->GetArrayLength(env, name);
-       jbyte *bytes = (*env)->GetByteArrayElements(env, name, 0);
-
-       uuid_generate_sha1(out, ns, bytes, length);
-       return fromBytes(env, out);
-}
-
-JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_nameUUIDv3(
-               JNIEnv *env, jobject, jobject namespaceUuid, jbyteArray name) {
-       uuid_t ns;
-       uuid_t out;
-
-       toBytes(env, namespaceUuid, ns);
-       jsize length = (*env)->GetArrayLength(env, name);
-       jbyte *bytes = (*env)->GetByteArrayElements(env, name, 0);
-
-       uuid_generate_md5(out, ns, bytes, length);
-       return fromBytes(env, out);
-}
-
-JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_randomUUIDStrong(
-               JNIEnv *env, jobject) {
-       uuid_t out;
-
-       uuid_generate_random(out);
-       return fromBytes(env, out);
-}
diff --git a/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.h b/org.argeo.api.uuid/jni/org_argeo_api_uuid_libuuid/org_argeo_api_uuid_libuuid_LibuuidFactory.h
deleted file mode 100644 (file)
index ad0ac5e..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_argeo_api_uuid_libuuid_LibuuidFactory */
-
-#ifndef _Included_org_argeo_api_uuid_libuuid_LibuuidFactory
-#define _Included_org_argeo_api_uuid_libuuid_LibuuidFactory
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class:     org_argeo_api_uuid_libuuid_LibuuidFactory
- * Method:    timeUUID
- * Signature: ()Ljava/util/UUID;
- */
-JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_timeUUID
-  (JNIEnv *, jobject);
-
-/*
- * Class:     org_argeo_api_uuid_libuuid_LibuuidFactory
- * Method:    nameUUIDv5
- * Signature: (Ljava/util/UUID;[B)Ljava/util/UUID;
- */
-JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_nameUUIDv5
-  (JNIEnv *, jobject, jobject, jbyteArray);
-
-/*
- * Class:     org_argeo_api_uuid_libuuid_LibuuidFactory
- * Method:    nameUUIDv3
- * Signature: (Ljava/util/UUID;[B)Ljava/util/UUID;
- */
-JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_nameUUIDv3
-  (JNIEnv *, jobject, jobject, jbyteArray);
-
-/*
- * Class:     org_argeo_api_uuid_libuuid_LibuuidFactory
- * Method:    randomUUIDStrong
- * Signature: ()Ljava/util/UUID;
- */
-JNIEXPORT jobject JNICALL Java_org_argeo_api_uuid_libuuid_LibuuidFactory_randomUUIDStrong
-  (JNIEnv *, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/sdk.mk.old b/sdk.mk.old
new file mode 100644 (file)
index 0000000..d9e68e9
--- /dev/null
@@ -0,0 +1,5 @@
+SDK_SRC_BASE := /home/mbaudier/dev/git/unstable/argeo-commons
+SDK_BUILD_BASE := /home/mbaudier/dev/git/unstable/argeo-commons/output
+
+include $(SDK_SRC_BASE)/branch.properties
+include $(SDK_SRC_BASE)/sdk/includes.mk
diff --git a/sdk/jni.mk b/sdk/jni.mk
deleted file mode 100644 (file)
index 448ad8f..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-TARGET_EXEC := libJava_$(NATIVE_PACKAGE).so
-
-LDFLAGS = -shared -fPIC -Wl,-soname,$(TARGET_EXEC).$(MAJOR).$(MINOR) -luuid
-CFLAGS = -O3 -fPIC
-
-SRC_DIRS := . 
-%:
-       @echo Making '$@' $(if $^,from '$^')
-#      @echo 'MAJOR=$(MAJOR)'
-#      @echo 'MINOR=$(MINOR)'
-       @echo 'SRC_DIRS=$(SRC_DIRS)'
-       @echo 'BUILD_DIR=$(BUILD_DIR)'
-       
-
-#
-# Generic Argeo
-#
-BUILD_DIR := $(SDK_BUILD_BASE)/$(NATIVE_PACKAGE)
-#BUILD_DIR := ./build
-#META_INF_DIR := ./../META-INF
-#ARCH := $(shell uname -p)
-
-# Every folder in ./src will need to be passed to GCC so that it can find header files
-INC_DIRS := $(shell find $(SRC_DIRS) -type d) /usr/lib/jvm/java/include /usr/lib/jvm/java/include/linux /usr/include/uuid
-
-
-.PHONY: clean all ide
-all: $(SDK_BUILD_BASE)/$(TARGET_EXEC)
-
-# Find all the C and C++ files we want to compile
-# Note the single quotes around the * expressions. Make will incorrectly expand these otherwise.
-SRCS := $(shell find $(SRC_DIRS) -name '*.cpp' -or -name '*.c' -or -name '*.s')
-
-# String substitution for every C/C++ file.
-# As an example, hello.cpp turns into ./build/hello.cpp.o
-OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)
-
-# String substitution (suffix version without %).
-# As an example, ./build/hello.cpp.o turns into ./build/hello.cpp.d
-DEPS := $(OBJS:.o=.d)
-
-# Add a prefix to INC_DIRS. So moduleA would become -ImoduleA. GCC understands this -I flag
-INC_FLAGS := $(addprefix -I,$(INC_DIRS))
-
-# The -MMD and -MP flags together generate Makefiles for us!
-# These files will have .d instead of .o as the output.
-CPPFLAGS := $(INC_FLAGS) -MMD -MP
-
-# The final build step.
-$(SDK_BUILD_BASE)/$(TARGET_EXEC): $(OBJS)
-       $(CC) $(OBJS) -o $@ $(LDFLAGS)
-
-# Build step for C source
-$(BUILD_DIR)/%.c.o: %.c
-       mkdir -p $(dir $@)
-       $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
-
-# Build step for C++ source
-$(BUILD_DIR)/%.cpp.o: %.cpp
-       mkdir -p $(dir $@)
-       $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
-
-clean:
-       rm -r $(BUILD_DIR) $(SDK_BUILD_BASE)/$(TARGET_EXEC)
-
-# Include the .d makefiles. The - at the front suppresses the errors of missing
-# Makefiles. Initially, all the .d files will be missing, and we don't want those
-# errors to show up.
--include $(DEPS)
-
-# MAKEFILE_DIR := $(dir $(firstword $(MAKEFILE_LIST)))