blob: d00bedb4290d731a0e55d42b6ad5458a4d82f1b2 [file] [log] [blame]
DRCc19ab9e2011-10-07 05:38:00 +00001cmake_minimum_required(VERSION 2.8)
2
3project(tigervnc-java Java)
DRC550a4df2012-02-12 22:10:01 +00004set(VERSION 1.2.80)
DRCc19ab9e2011-10-07 05:38:00 +00005
DRC7636ad02011-10-04 04:03:34 +00006find_package(Java)
7
Brian Hinzcf0e3122012-04-05 03:37:50 +00008set(DEFAULT_JAVACFLAGS "-source 1.5 -target 1.5 -Xlint:all,-serial,-cast,-unchecked,-fallthrough,-dep-ann")
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
DRCccc09692011-11-08 06:57:58 +000017execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
18execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
DRC7636ad02011-10-04 04:03:34 +000019string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
20string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
21
22set(JAVA_CLASSNAMES
23 CConn
24 ClipboardDialog
25 DesktopWindow
26 Dialog
27 F8Menu
28 OptionsDialogCallback
29 PasswdDialog
Brian Hinzcf0e3122012-04-05 03:37:50 +000030 PlatformPixelBuffer
DRC7636ad02011-10-04 04:03:34 +000031 OptionsDialog
32 ServerDialog
33 UserPrefs
34 VncViewer)
35
DRC7636ad02011-10-04 04:03:34 +000036set(JAVA_SOURCES "")
37set(JAVA_CLASSES_FULL "")
38foreach(class ${JAVA_CLASSNAMES})
39 set(JAVA_SOURCES ${JAVA_SOURCES} ${JAVA_SRCDIR}/${class}.java)
40 set(JAVA_CLASSES_FULL ${JAVA_CLASSES_FULL}
DRCccc09692011-11-08 06:57:58 +000041 ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH}/${class}.class)
DRC7636ad02011-10-04 04:03:34 +000042endforeach()
43
Brian Hinzcf0e3122012-04-05 03:37:50 +000044set(JSCH_CLASSNAMES
45 DH
46 DHG1
47 DHG14
48 DHGEX
49 JSch
50 Session
51 UserAuth
52 UserAuthKeyboardInteractive
53 UserAuthPassword
54 UserAuthPublicKey
55 UserAuthNone
56 jce/AES128CBC
57 jce/AES192CTR
58 jce/ARCFOUR128
59 jce/BlowfishCBC
60 jce/HMACMD5
61 jce/KeyPairGenDSA
62 jce/Random
63 jce/SignatureRSA
64 jce/AES128CTR
65 jce/AES256CBC
66 jce/ARCFOUR256
67 jce/DH
68 jce/HMACSHA196
69 jce/KeyPairGenRSA
70 jce/SHA1
71 jce/TripleDESCBC
72 jce/AES192CBC
73 jce/AES256CTR
74 jce/ARCFOUR
75 jce/HMACMD596
76 jce/HMACSHA1
77 jce/MD5
78 jce/SignatureDSA
79 jce/TripleDESCTR
80 jcraft/Compression
81 jcraft/HMAC
82 jcraft/HMACMD596
83 jcraft/HMACMD5
84 jcraft/HMACSHA196
85 jcraft/HMACSHA1)
86set(JSCH_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jsch)
87foreach(class ${JSCH_CLASSNAMES})
88 set(JAVA_SOURCES ${JAVA_SOURCES} ${JSCH_SRCDIR}/${class}.java)
89 set(JAVA_CLASSES_FULL ${JAVA_CLASSES_FULL}
90 ${CMAKE_CURRENT_BINARY_DIR}/com/jcraft/jsch/${class}.class)
91endforeach()
92
DRC7636ad02011-10-04 04:03:34 +000093file(GLOB DEPEND_SOURCES
94 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rfb/*.java
95 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rdr/*.java
Brian Hinz0eaec7d2012-02-03 05:38:23 +000096 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/network/*.java
Brian Hinzcf0e3122012-04-05 03:37:50 +000097 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jsch/*.java
98 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jsch/jcraft/*.java
99 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jsch/jgss/*.java
DRC7636ad02011-10-04 04:03:34 +0000100 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jzlib/*.java)
101
102string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
103add_custom_command(OUTPUT ${JAVA_CLASSES_FULL}
104 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
105 COMMAND ${JAVA_COMPILE}
Brian Hinzcf0e3122012-04-05 03:37:50 +0000106 ARGS ${JAVACFLAGS} -sourcepath ${CMAKE_CURRENT_SOURCE_DIR}
DRCccc09692011-11-08 06:57:58 +0000107 -d ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_SOURCES})
DRC7636ad02011-10-04 04:03:34 +0000108
109configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
110
111add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.png
112 COMMAND ${CMAKE_COMMAND} -E copy_if_different
113 ${JAVA_SRCDIR}/tigervnc.png ${JAVA_BINDIR}/tigervnc.png
114 DEPENDS ${JAVA_SRCDIR}/tigervnc.png)
115
116add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.ico
117 COMMAND ${CMAKE_COMMAND} -E copy_if_different
118 ${JAVA_SRCDIR}/tigervnc.ico ${JAVA_BINDIR}/tigervnc.ico
119 DEPENDS ${JAVA_SRCDIR}/tigervnc.ico)
120
DRCd0002522011-10-05 09:18:55 +0000121string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
DRCf50ec7c2011-10-05 09:29:21 +0000122string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
DRCd0002522011-10-05 09:18:55 +0000123
DRC7636ad02011-10-04 04:03:34 +0000124add_custom_command(OUTPUT VncViewer.jar
125 DEPENDS ${JAVA_CLASSES_FULL}
126 ${JAVA_SRCDIR}/MANIFEST.MF
127 ${JAVA_BINDIR}/timestamp
128 ${JAVA_BINDIR}/tigervnc.png
129 ${JAVA_BINDIR}/tigervnc.ico
130 COMMAND ${JAVA_ARCHIVE}
131 ARGS cfm VncViewer.jar
132 ${JAVA_SRCDIR}/MANIFEST.MF
133 com/tigervnc/vncviewer/timestamp
134 com/tigervnc/vncviewer/*.class
135 com/tigervnc/rfb/*.class
136 com/tigervnc/rdr/*.class
Brian Hinz0eaec7d2012-02-03 05:38:23 +0000137 com/tigervnc/network/*.class
DRC7636ad02011-10-04 04:03:34 +0000138 com/jcraft/jzlib/*.class
Brian Hinzcf0e3122012-04-05 03:37:50 +0000139 com/jcraft/jsch/jcraft/*.class
140 com/jcraft/jsch/jce/*.class
141 com/jcraft/jsch/*.class
DRC7636ad02011-10-04 04:03:34 +0000142 com/tigervnc/vncviewer/tigervnc.png
143 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +0000144 COMMAND ${CMAKE_COMMAND}
145 ARGS -DJava_PATH=${Java_PATH}
146 -DJAR_FILE=${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
DRCccc09692011-11-08 06:57:58 +0000147 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/SignJar.cmake)
DRC7636ad02011-10-04 04:03:34 +0000148
149add_custom_target(java ALL DEPENDS VncViewer.jar)
150
DRCf50ec7c2011-10-05 09:29:21 +0000151if(NOT WIN32)
152 install(FILES
153 ${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
154 ${JAVA_SRCDIR}/README
155 ${JAVA_SRCDIR}/index.vnc
Brian Hinz308b7ed2011-10-14 21:35:40 +0000156 ${JAVA_SRCDIR}/favicon.ico
Pierre Ossman95e28f72012-03-27 10:24:53 +0000157 DESTINATION ${DATA_DIR}/vnc/classes)
DRCf50ec7c2011-10-05 09:29:21 +0000158endif()