diff options
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | cmake/BuildPackages.cmake | 9 | ||||
-rw-r--r-- | cmake/getdate.bat | 6 | ||||
-rw-r--r-- | java/src/CMakeLists.txt | 99 | ||||
-rw-r--r-- | java/src/com/tigervnc/vncviewer/timestamp.in | 4 | ||||
-rw-r--r-- | release/maketarball.in | 7 |
6 files changed, 121 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index e330dc6e..5bba01f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -260,6 +260,11 @@ if(NOT FOUND_LIBJPEG_TURBO) message(STATUS "WARNING: You are not using libjpeg-turbo. Performance will suffer.") endif() +option(BUILD_JAVA "Build Java version of the TigerVNC Viewer" FALSE) +if(BUILD_JAVA) + add_subdirectory(java/src) +endif() + # Check for FLTK if(BUILD_NEW_VNCVIEWER) set(FLTK_SKIP_FLUID TRUE) diff --git a/cmake/BuildPackages.cmake b/cmake/BuildPackages.cmake index 1e3dd42c..100ba05a 100644 --- a/cmake/BuildPackages.cmake +++ b/cmake/BuildPackages.cmake @@ -77,12 +77,17 @@ if(UNIX) configure_file(release/maketarball.in release/maketarball) +set(TARBALL_DEPENDS vncviewer vncpasswd vncconfig) +if(BUILD_JAVA) + set(TARBALL_DEPENDS ${TARBALL_DEPENDS} java) +endif() + add_custom_target(tarball sh release/maketarball - DEPENDS vncviewer vncpasswd vncconfig + DEPENDS ${TARBALL_DEPENDS} SOURCES release/maketarball) add_custom_target(servertarball sh release/maketarball server - DEPENDS vncviewer vncpasswd vncconfig + DEPENDS ${TARBALL_DEPENDS} SOURCES release/maketarball) endif() #UNIX diff --git a/cmake/getdate.bat b/cmake/getdate.bat index b4251bbb..09956baa 100644 --- a/cmake/getdate.bat +++ b/cmake/getdate.bat @@ -1,3 +1,9 @@ @echo off + +if "%1"=="javadate" date /t & goto end +if "%1"=="javatime" time /t & goto end + for /f "tokens=1-4 eol=/ DELIMS=/ " %%i in ('date /t') do set BUILD=%%l%%j%%k echo %BUILD% + +:end diff --git a/java/src/CMakeLists.txt b/java/src/CMakeLists.txt new file mode 100644 index 00000000..dc9d2870 --- /dev/null +++ b/java/src/CMakeLists.txt @@ -0,0 +1,99 @@ +find_package(Java) + +set(DEFAULT_JAVACFLAGS "-target 1.5") +set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING + "Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})") +message(STATUS "Java compiler flags = ${JAVACFLAGS}") + +set(CLASSPATH com/tigervnc/vncviewer) +set(JAVA_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/${CLASSPATH}) +set(JAVA_BINDIR ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH}) + +if(MSVC) + execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmake/getdate.bat" "javadate" + OUTPUT_VARIABLE JAVA_DATE) + execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmake/getdate.bat" "javatime" + OUTPUT_VARIABLE JAVA_TIME) +else() + execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE) + execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME) +endif() +string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE}) +string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME}) + +set(JAVA_CLASSNAMES + CConn + ClipboardDialog + DesktopWindow + Dialog + F8Menu + OptionsDialogCallback + PasswdDialog + PixelBufferImage + OptionsDialog + ServerDialog + UserPrefs + VncViewer) + +if(MSVC_IDE) + set(OBJDIR "${CMAKE_CURRENT_BINARY_DIR}/$(OutDir)") +else() + set(OBJDIR ${CMAKE_CURRENT_BINARY_DIR}) +endif() + +set(JAVA_SOURCES "") +set(JAVA_CLASSES_FULL "") +foreach(class ${JAVA_CLASSNAMES}) + set(JAVA_SOURCES ${JAVA_SOURCES} ${JAVA_SRCDIR}/${class}.java) + set(JAVA_CLASSES_FULL ${JAVA_CLASSES_FULL} + ${OBJDIR}/${CLASSPATH}/${class}.class) +endforeach() + +file(GLOB DEPEND_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rfb/*.java + ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rdr/*.java + ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jzlib/*.java) + +string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}") +add_custom_command(OUTPUT ${JAVA_CLASSES_FULL} + DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES} + COMMAND ${JAVA_COMPILE} + ARGS ${JAVACFLAGS} -cp ${CMAKE_CURRENT_SOURCE_DIR} -d ${OBJDIR} ${JAVA_SOURCES}) + +configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp) + +add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.png + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${JAVA_SRCDIR}/tigervnc.png ${JAVA_BINDIR}/tigervnc.png + DEPENDS ${JAVA_SRCDIR}/tigervnc.png) + +add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.ico + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${JAVA_SRCDIR}/tigervnc.ico ${JAVA_BINDIR}/tigervnc.ico + DEPENDS ${JAVA_SRCDIR}/tigervnc.ico) + +add_custom_command(OUTPUT VncViewer.jar + DEPENDS ${JAVA_CLASSES_FULL} + ${JAVA_SRCDIR}/MANIFEST.MF + ${JAVA_BINDIR}/timestamp + ${JAVA_BINDIR}/tigervnc.png + ${JAVA_BINDIR}/tigervnc.ico + COMMAND ${JAVA_ARCHIVE} + ARGS cfm VncViewer.jar + ${JAVA_SRCDIR}/MANIFEST.MF + com/tigervnc/vncviewer/timestamp + com/tigervnc/vncviewer/*.class + com/tigervnc/rfb/*.class + com/tigervnc/rdr/*.class + com/jcraft/jzlib/*.class + com/tigervnc/vncviewer/tigervnc.png + com/tigervnc/vncviewer/tigervnc.ico + WORKING_DIRECTORY ${OBJDIR}) + +add_custom_target(java ALL DEPENDS VncViewer.jar) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar + ${JAVA_SRCDIR}/README + ${JAVA_SRCDIR}/index.vnc + DESTINATION vnc/classes) diff --git a/java/src/com/tigervnc/vncviewer/timestamp.in b/java/src/com/tigervnc/vncviewer/timestamp.in new file mode 100644 index 00000000..5f6326aa --- /dev/null +++ b/java/src/com/tigervnc/vncviewer/timestamp.in @@ -0,0 +1,4 @@ +Manifest-Version: 1.0 +Main-Class: com.tigervnc.vncviewer.VncViewer +Package-Date: @JAVA_DATE@ +Package-Time: @JAVA_TIME@ diff --git a/release/maketarball.in b/release/maketarball.in index 40af2584..81d40e46 100644 --- a/release/maketarball.in +++ b/release/maketarball.in @@ -45,16 +45,9 @@ mkdir -p $OUTDIR/man/man1 make DESTDIR=$TMPDIR/inst install if [ $SERVER = 1 ]; then - pushd $SRCDIR/java/src/com/tigervnc/vncviewer - make - popd install -m 755 ./xorg.build/bin/Xvnc $OUTDIR/bin/ install -m 644 ./xorg.build/man/man1/Xvnc.1 $OUTDIR/man/man1/Xvnc.1 install -m 644 ./xorg.build/man/man1/Xserver.1 $OUTDIR/man/man1/Xserver.1 - mkdir -p $OUTDIR/vnc/classes/ - install -m 644 $SRCDIR/java/src/com/tigervnc/vncviewer/index.vnc $OUTDIR/vnc/classes/ - install -m 644 $SRCDIR/java/src/com/tigervnc/vncviewer/VncViewer.jar $OUTDIR/vnc/classes/ - install -m 644 $SRCDIR/java/src/com/tigervnc/vncviewer/README $OUTDIR/vnc/classes/ mkdir -p $OUTDIR/lib/dri/ install -m 755 ./xorg.build/lib/dri/swrast_dri.so $OUTDIR/lib/dri/ fi |