blob: 7048dd91e609bdf1999bba0bb36ab423a13571fe [file] [log] [blame]
DRC7636ad02011-10-04 04:03:34 +00001find_package(Java)
2
DRC27a80a72011-10-05 06:21:58 +00003set(DEFAULT_JAVACFLAGS "-source 1.5 -target 1.5 -Xlint:all,-serial,-cast")
DRC7636ad02011-10-04 04:03:34 +00004set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING
5 "Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})")
6message(STATUS "Java compiler flags = ${JAVACFLAGS}")
7
8set(CLASSPATH com/tigervnc/vncviewer)
9set(JAVA_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/${CLASSPATH})
10set(JAVA_BINDIR ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH})
11
12if(MSVC)
13 execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmake/getdate.bat" "javadate"
14 OUTPUT_VARIABLE JAVA_DATE)
15 execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmake/getdate.bat" "javatime"
16 OUTPUT_VARIABLE JAVA_TIME)
17else()
18 execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
19 execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
20endif()
21string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
22string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
23
24set(JAVA_CLASSNAMES
25 CConn
26 ClipboardDialog
27 DesktopWindow
28 Dialog
29 F8Menu
30 OptionsDialogCallback
31 PasswdDialog
32 PixelBufferImage
33 OptionsDialog
34 ServerDialog
35 UserPrefs
36 VncViewer)
37
38if(MSVC_IDE)
39 set(OBJDIR "${CMAKE_CURRENT_BINARY_DIR}/$(OutDir)")
40else()
41 set(OBJDIR ${CMAKE_CURRENT_BINARY_DIR})
42endif()
43
44set(JAVA_SOURCES "")
45set(JAVA_CLASSES_FULL "")
46foreach(class ${JAVA_CLASSNAMES})
47 set(JAVA_SOURCES ${JAVA_SOURCES} ${JAVA_SRCDIR}/${class}.java)
48 set(JAVA_CLASSES_FULL ${JAVA_CLASSES_FULL}
49 ${OBJDIR}/${CLASSPATH}/${class}.class)
50endforeach()
51
52file(GLOB DEPEND_SOURCES
53 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rfb/*.java
54 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rdr/*.java
55 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jzlib/*.java)
56
57string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
58add_custom_command(OUTPUT ${JAVA_CLASSES_FULL}
59 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
60 COMMAND ${JAVA_COMPILE}
61 ARGS ${JAVACFLAGS} -cp ${CMAKE_CURRENT_SOURCE_DIR} -d ${OBJDIR} ${JAVA_SOURCES})
62
63configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
64
65add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.png
66 COMMAND ${CMAKE_COMMAND} -E copy_if_different
67 ${JAVA_SRCDIR}/tigervnc.png ${JAVA_BINDIR}/tigervnc.png
68 DEPENDS ${JAVA_SRCDIR}/tigervnc.png)
69
70add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.ico
71 COMMAND ${CMAKE_COMMAND} -E copy_if_different
72 ${JAVA_SRCDIR}/tigervnc.ico ${JAVA_BINDIR}/tigervnc.ico
73 DEPENDS ${JAVA_SRCDIR}/tigervnc.ico)
74
DRCd0002522011-10-05 09:18:55 +000075string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
76
DRC7636ad02011-10-04 04:03:34 +000077add_custom_command(OUTPUT VncViewer.jar
78 DEPENDS ${JAVA_CLASSES_FULL}
79 ${JAVA_SRCDIR}/MANIFEST.MF
80 ${JAVA_BINDIR}/timestamp
81 ${JAVA_BINDIR}/tigervnc.png
82 ${JAVA_BINDIR}/tigervnc.ico
83 COMMAND ${JAVA_ARCHIVE}
84 ARGS cfm VncViewer.jar
85 ${JAVA_SRCDIR}/MANIFEST.MF
86 com/tigervnc/vncviewer/timestamp
87 com/tigervnc/vncviewer/*.class
88 com/tigervnc/rfb/*.class
89 com/tigervnc/rdr/*.class
90 com/jcraft/jzlib/*.class
91 com/tigervnc/vncviewer/tigervnc.png
92 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +000093 COMMAND ${CMAKE_COMMAND}
94 ARGS -DJava_PATH=${Java_PATH}
95 -DJAR_FILE=${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
96 -P ${CMAKE_SOURCE_DIR}/cmake/SignJar.cmake
DRC7636ad02011-10-04 04:03:34 +000097 WORKING_DIRECTORY ${OBJDIR})
98
99add_custom_target(java ALL DEPENDS VncViewer.jar)
100
DRC7636ad02011-10-04 04:03:34 +0000101install(FILES
102 ${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
103 ${JAVA_SRCDIR}/README
104 ${JAVA_SRCDIR}/index.vnc
105 DESTINATION vnc/classes)