177 lines
5.1 KiB
Diff
177 lines
5.1 KiB
Diff
Index: vrpn-version_07.33/java_vrpn/CMakeLists.txt
|
|
===================================================================
|
|
--- vrpn-version_07.33.orig/java_vrpn/CMakeLists.txt
|
|
+++ vrpn-version_07.33/java_vrpn/CMakeLists.txt
|
|
@@ -6,6 +6,29 @@
|
|
|
|
if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EXECUTABLE AND VRPN_BUILD_JAVA)
|
|
|
|
+ set(JAVA_INSTALL_LIBDIR
|
|
+ lib
|
|
+ CACHE PATH
|
|
+ "Where to install java shared objects")
|
|
+ set(JAVA_INSTALL_JNIDIR
|
|
+ share/java
|
|
+ CACHE PATH
|
|
+ "Where to install JNI jar files")
|
|
+
|
|
+ if("${JAVA_INSTALL_LIBDIR}" STREQUAL lib)
|
|
+ set(JAVA_LOAD_VRPN
|
|
+ "System.loadLibrary(\"java_vrpn\")")
|
|
+ else()
|
|
+ if(IS_ABSOLUTE "${JAVA_INSTALL_LIBDIR}")
|
|
+ set(JAVA_LOAD_VRPN
|
|
+ "System.load(\"${JAVA_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}java_vrpn${CMAKE_SHARED_LIBRARY_SUFFIX}\")")
|
|
+ else()
|
|
+ set(JAVA_LOAD_VRPN
|
|
+ "System.load(\"${CMAKE_INSTALL_PREFIX}/${JAVA_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}java_vrpn${CMAKE_SHARED_LIBRARY_SUFFIX}\")")
|
|
+ endif()
|
|
+ endif()
|
|
+ configure_file("vrpn/VRPN.java.in" "vrpn/VRPN.java")
|
|
+
|
|
# Set up file lists
|
|
set(JAVA_CLASSES
|
|
AnalogOutputRemote
|
|
@@ -22,7 +45,6 @@ if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EX
|
|
TextSender
|
|
TrackerRemote
|
|
TrackerRemoteListener
|
|
- VRPN
|
|
VRPNDevice)
|
|
set(JAVAC_OUTPUT)
|
|
set(JAVAC_INPUT)
|
|
@@ -38,6 +60,15 @@ if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EX
|
|
JAVA_JNI_HEADERS
|
|
"${CMAKE_CURRENT_BINARY_DIR}/vrpn_${class}.h")
|
|
endforeach()
|
|
+ list(APPEND
|
|
+ JAVAC_OUTPUT
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/vrpn/VRPN.class")
|
|
+ list(APPEND
|
|
+ JAVAC_INPUT
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/vrpn/VRPN.java")
|
|
+ list(APPEND
|
|
+ JAVA_JNI_HEADERS
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/vrpn_VRPN.h")
|
|
|
|
# *.java -> *.class
|
|
add_custom_command(OUTPUT
|
|
@@ -87,6 +118,20 @@ if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EX
|
|
COMMENT
|
|
"Generating JNI header file for vrpn.${in}")
|
|
endforeach()
|
|
+ add_custom_command(OUTPUT
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/vrpn_VRPN.h"
|
|
+ DEPENDS
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/vrpn/VRPN.class"
|
|
+ COMMAND
|
|
+ "${JAVAH_EXECUTABLE}"
|
|
+ -d
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}"
|
|
+ -jni
|
|
+ -classpath
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}"
|
|
+ vrpn.VRPN
|
|
+ COMMENT
|
|
+ "Generating JNI header file for vrpn.${in}")
|
|
|
|
# target for vrpn.jar
|
|
add_custom_target(java_vrpn_jar
|
|
@@ -120,12 +165,15 @@ if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EX
|
|
|
|
if(VRPN_INSTALL)
|
|
install(TARGETS java_vrpn
|
|
- ARCHIVE DESTINATION lib COMPONENT java
|
|
- LIBRARY DESTINATION lib COMPONENT java
|
|
- RUNTIME DESTINATION lib COMPONENT java)
|
|
+ ARCHIVE DESTINATION "${JAVA_INSTALL_LIBDIR}"
|
|
+ COMPONENT java
|
|
+ LIBRARY DESTINATION "${JAVA_INSTALL_LIBDIR}"
|
|
+ COMPONENT java
|
|
+ RUNTIME DESTINATION "${JAVA_INSTALL_LIBDIR}"
|
|
+ COMPONENT java)
|
|
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/vrpn.jar"
|
|
- DESTINATION share/java
|
|
+ DESTINATION "${JAVA_INSTALL_JNIDIR}"
|
|
COMPONENT java
|
|
RENAME vrpn-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.jar)
|
|
endif()
|
|
Index: vrpn-version_07.33/java_vrpn/vrpn/VRPN.java
|
|
===================================================================
|
|
--- vrpn-version_07.33.orig/java_vrpn/vrpn/VRPN.java
|
|
+++ /dev/null
|
|
@@ -1,34 +0,0 @@
|
|
-
|
|
-
|
|
-package vrpn;
|
|
-
|
|
-public class VRPN
|
|
-{
|
|
-
|
|
- /**
|
|
- * All VRPN objects must assert this lock before making any calls
|
|
- * into native code. A corollary of this is that no native methods
|
|
- * may be public; all native methods must be wrapped by other methods
|
|
- * that first synchronize on this lock before calling the native
|
|
- * method.
|
|
- */
|
|
- protected final static Object downInVrpnLock = new Object( );
|
|
-
|
|
- static
|
|
- {
|
|
- try { System.loadLibrary( "java_vrpn" ); }
|
|
- catch( UnsatisfiedLinkError e )
|
|
- {
|
|
- System.out.println( e.getMessage( ) );
|
|
- System.out.println( "Error initializing java_vrpn." );
|
|
- System.out.println( " -- Unable to find native library." );
|
|
- }
|
|
- catch( SecurityException e )
|
|
- {
|
|
- System.out.println( e.getMessage( ) );
|
|
- System.out.println( "Security exception: you couldn't load the native vrpn dll." );
|
|
- }
|
|
- } // end static initializer block
|
|
-
|
|
-
|
|
-} // end class VRPN
|
|
Index: vrpn-version_07.33/java_vrpn/vrpn/VRPN.java.in
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ vrpn-version_07.33/java_vrpn/vrpn/VRPN.java.in
|
|
@@ -0,0 +1,34 @@
|
|
+
|
|
+
|
|
+package vrpn;
|
|
+
|
|
+public class VRPN
|
|
+{
|
|
+
|
|
+ /**
|
|
+ * All VRPN objects must assert this lock before making any calls
|
|
+ * into native code. A corollary of this is that no native methods
|
|
+ * may be public; all native methods must be wrapped by other methods
|
|
+ * that first synchronize on this lock before calling the native
|
|
+ * method.
|
|
+ */
|
|
+ protected final static Object downInVrpnLock = new Object( );
|
|
+
|
|
+ static
|
|
+ {
|
|
+ try { @JAVA_LOAD_VRPN@; }
|
|
+ catch( UnsatisfiedLinkError e )
|
|
+ {
|
|
+ System.out.println( e.getMessage( ) );
|
|
+ System.out.println( "Error initializing java_vrpn." );
|
|
+ System.out.println( " -- Unable to find native library." );
|
|
+ }
|
|
+ catch( SecurityException e )
|
|
+ {
|
|
+ System.out.println( e.getMessage( ) );
|
|
+ System.out.println( "Security exception: you couldn't load the native vrpn dll." );
|
|
+ }
|
|
+ } // end static initializer block
|
|
+
|
|
+
|
|
+} // end class VRPN
|