blob: 7ab9fc67a06c2d12b01cd9353c2129c485f19f6f [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
75add_custom_command(OUTPUT VncViewer.jar
76 DEPENDS ${JAVA_CLASSES_FULL}
77 ${JAVA_SRCDIR}/MANIFEST.MF
78 ${JAVA_BINDIR}/timestamp
79 ${JAVA_BINDIR}/tigervnc.png
80 ${JAVA_BINDIR}/tigervnc.ico
81 COMMAND ${JAVA_ARCHIVE}
82 ARGS cfm VncViewer.jar
83 ${JAVA_SRCDIR}/MANIFEST.MF
84 com/tigervnc/vncviewer/timestamp
85 com/tigervnc/vncviewer/*.class
86 com/tigervnc/rfb/*.class
87 com/tigervnc/rdr/*.class
88 com/jcraft/jzlib/*.class
89 com/tigervnc/vncviewer/tigervnc.png
90 com/tigervnc/vncviewer/tigervnc.ico
91 WORKING_DIRECTORY ${OBJDIR})
92
93add_custom_target(java ALL DEPENDS VncViewer.jar)
94
DRC11ca3b42011-10-05 07:53:29 +000095string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
96
97add_custom_command(TARGET java POST_BUILD COMMAND
98 ${CMAKE_COMMAND} -DJava_PATH=${Java_PATH}
99 -DJAR_FILE=${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
100 -P ${CMAKE_SOURCE_DIR}/cmake/SignJar.cmake)
101
DRC7636ad02011-10-04 04:03:34 +0000102install(FILES
103 ${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
104 ${JAVA_SRCDIR}/README
105 ${JAVA_SRCDIR}/index.vnc
106 DESTINATION vnc/classes)