blob: 4010aa613b8a7bd9b163205acf18beab66919835 [file] [log] [blame]
DRCc19ab9e2011-10-07 05:38:00 +00001cmake_minimum_required(VERSION 2.8)
2
3project(tigervnc-java Java)
4set(VERSION 1.1.80)
5
DRC7636ad02011-10-04 04:03:34 +00006find_package(Java)
7
DRC27a80a72011-10-05 06:21:58 +00008set(DEFAULT_JAVACFLAGS "-source 1.5 -target 1.5 -Xlint:all,-serial,-cast")
DRC7636ad02011-10-04 04:03:34 +00009set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING
10 "Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})")
11message(STATUS "Java compiler flags = ${JAVACFLAGS}")
12
13set(CLASSPATH com/tigervnc/vncviewer)
14set(JAVA_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/${CLASSPATH})
15set(JAVA_BINDIR ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH})
16
17if(MSVC)
18 execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmake/getdate.bat" "javadate"
19 OUTPUT_VARIABLE JAVA_DATE)
20 execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmake/getdate.bat" "javatime"
21 OUTPUT_VARIABLE JAVA_TIME)
22else()
23 execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
24 execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
25endif()
26string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
27string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
28
29set(JAVA_CLASSNAMES
30 CConn
31 ClipboardDialog
32 DesktopWindow
33 Dialog
34 F8Menu
35 OptionsDialogCallback
36 PasswdDialog
37 PixelBufferImage
38 OptionsDialog
39 ServerDialog
40 UserPrefs
41 VncViewer)
42
43if(MSVC_IDE)
44 set(OBJDIR "${CMAKE_CURRENT_BINARY_DIR}/$(OutDir)")
45else()
46 set(OBJDIR ${CMAKE_CURRENT_BINARY_DIR})
47endif()
48
49set(JAVA_SOURCES "")
50set(JAVA_CLASSES_FULL "")
51foreach(class ${JAVA_CLASSNAMES})
52 set(JAVA_SOURCES ${JAVA_SOURCES} ${JAVA_SRCDIR}/${class}.java)
53 set(JAVA_CLASSES_FULL ${JAVA_CLASSES_FULL}
54 ${OBJDIR}/${CLASSPATH}/${class}.class)
55endforeach()
56
57file(GLOB DEPEND_SOURCES
58 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rfb/*.java
59 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rdr/*.java
60 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jzlib/*.java)
61
62string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
63add_custom_command(OUTPUT ${JAVA_CLASSES_FULL}
64 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
65 COMMAND ${JAVA_COMPILE}
66 ARGS ${JAVACFLAGS} -cp ${CMAKE_CURRENT_SOURCE_DIR} -d ${OBJDIR} ${JAVA_SOURCES})
67
68configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
69
70add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.png
71 COMMAND ${CMAKE_COMMAND} -E copy_if_different
72 ${JAVA_SRCDIR}/tigervnc.png ${JAVA_BINDIR}/tigervnc.png
73 DEPENDS ${JAVA_SRCDIR}/tigervnc.png)
74
75add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.ico
76 COMMAND ${CMAKE_COMMAND} -E copy_if_different
77 ${JAVA_SRCDIR}/tigervnc.ico ${JAVA_BINDIR}/tigervnc.ico
78 DEPENDS ${JAVA_SRCDIR}/tigervnc.ico)
79
DRCd0002522011-10-05 09:18:55 +000080string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
DRCf50ec7c2011-10-05 09:29:21 +000081string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
DRCd0002522011-10-05 09:18:55 +000082
DRC7636ad02011-10-04 04:03:34 +000083add_custom_command(OUTPUT VncViewer.jar
84 DEPENDS ${JAVA_CLASSES_FULL}
85 ${JAVA_SRCDIR}/MANIFEST.MF
86 ${JAVA_BINDIR}/timestamp
87 ${JAVA_BINDIR}/tigervnc.png
88 ${JAVA_BINDIR}/tigervnc.ico
89 COMMAND ${JAVA_ARCHIVE}
90 ARGS cfm VncViewer.jar
91 ${JAVA_SRCDIR}/MANIFEST.MF
92 com/tigervnc/vncviewer/timestamp
93 com/tigervnc/vncviewer/*.class
94 com/tigervnc/rfb/*.class
95 com/tigervnc/rdr/*.class
96 com/jcraft/jzlib/*.class
97 com/tigervnc/vncviewer/tigervnc.png
98 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +000099 COMMAND ${CMAKE_COMMAND}
100 ARGS -DJava_PATH=${Java_PATH}
101 -DJAR_FILE=${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
DRCc19ab9e2011-10-07 05:38:00 +0000102 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/SignJar.cmake
DRC7636ad02011-10-04 04:03:34 +0000103 WORKING_DIRECTORY ${OBJDIR})
104
105add_custom_target(java ALL DEPENDS VncViewer.jar)
106
DRCf50ec7c2011-10-05 09:29:21 +0000107if(NOT WIN32)
108 install(FILES
109 ${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
110 ${JAVA_SRCDIR}/README
111 ${JAVA_SRCDIR}/index.vnc
Brian Hinz308b7ed2011-10-14 21:35:40 +0000112 ${JAVA_SRCDIR}/favicon.ico
DRCf50ec7c2011-10-05 09:29:21 +0000113 DESTINATION vnc/classes)
114endif()