blob: 05d77e4d0a03659c81987edf51f08a5b0bc252ce [file] [log] [blame]
DRCc19ab9e2011-10-07 05:38:00 +00001cmake_minimum_required(VERSION 2.8)
2
3project(tigervnc-java Java)
Brian Hinz5c98b212012-09-01 20:54:12 +00004if(NOT VERSION)
Pierre Ossman607c9d02013-04-25 07:51:47 +00005 set(VERSION 1.3.80)
Brian Hinz5c98b212012-09-01 20:54:12 +00006endif()
DRCc19ab9e2011-10-07 05:38:00 +00007
DRC7636ad02011-10-04 04:03:34 +00008find_package(Java)
9
Brian Hinzd93a26d2012-12-14 22:40:02 +000010set(DEFAULT_JAVACFLAGS "-source 1.5 -target 1.5 -Xlint:all,-serial,-cast,-fallthrough,-dep-ann,-deprecation")
DRC7636ad02011-10-04 04:03:34 +000011set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING
12 "Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})")
13message(STATUS "Java compiler flags = ${JAVACFLAGS}")
14
15set(CLASSPATH com/tigervnc/vncviewer)
16set(JAVA_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/${CLASSPATH})
17set(JAVA_BINDIR ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH})
18
Brian Hinz5c98b212012-09-01 20:54:12 +000019if(NOT BUILD)
20 execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
21endif()
DRCccc09692011-11-08 06:57:58 +000022execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
23execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
DRC7636ad02011-10-04 04:03:34 +000024string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
25string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
Brian Hinz5c98b212012-09-01 20:54:12 +000026string(REGEX REPLACE "\n" "" BUILD ${BUILD})
DRC7636ad02011-10-04 04:03:34 +000027
28set(JAVA_CLASSNAMES
29 CConn
30 ClipboardDialog
31 DesktopWindow
32 Dialog
33 F8Menu
34 OptionsDialogCallback
35 PasswdDialog
Brian Hinzcf0e3122012-04-05 03:37:50 +000036 PlatformPixelBuffer
DRC7636ad02011-10-04 04:03:34 +000037 OptionsDialog
38 ServerDialog
DRC7636ad02011-10-04 04:03:34 +000039 VncViewer)
40
DRC7636ad02011-10-04 04:03:34 +000041set(JAVA_SOURCES "")
42set(JAVA_CLASSES_FULL "")
43foreach(class ${JAVA_CLASSNAMES})
44 set(JAVA_SOURCES ${JAVA_SOURCES} ${JAVA_SRCDIR}/${class}.java)
45 set(JAVA_CLASSES_FULL ${JAVA_CLASSES_FULL}
DRCccc09692011-11-08 06:57:58 +000046 ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH}/${class}.class)
DRC7636ad02011-10-04 04:03:34 +000047endforeach()
48
Brian Hinzcf0e3122012-04-05 03:37:50 +000049set(JSCH_CLASSNAMES
50 DH
51 DHG1
52 DHG14
53 DHGEX
54 JSch
55 Session
56 UserAuth
57 UserAuthKeyboardInteractive
58 UserAuthPassword
59 UserAuthPublicKey
60 UserAuthNone
61 jce/AES128CBC
62 jce/AES192CTR
63 jce/ARCFOUR128
64 jce/BlowfishCBC
65 jce/HMACMD5
66 jce/KeyPairGenDSA
67 jce/Random
68 jce/SignatureRSA
69 jce/AES128CTR
70 jce/AES256CBC
71 jce/ARCFOUR256
72 jce/DH
73 jce/HMACSHA196
74 jce/KeyPairGenRSA
75 jce/SHA1
76 jce/TripleDESCBC
77 jce/AES192CBC
78 jce/AES256CTR
79 jce/ARCFOUR
80 jce/HMACMD596
81 jce/HMACSHA1
82 jce/MD5
83 jce/SignatureDSA
84 jce/TripleDESCTR
85 jcraft/Compression
86 jcraft/HMAC
87 jcraft/HMACMD596
88 jcraft/HMACMD5
89 jcraft/HMACSHA196
90 jcraft/HMACSHA1)
91set(JSCH_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jsch)
92foreach(class ${JSCH_CLASSNAMES})
93 set(JAVA_SOURCES ${JAVA_SOURCES} ${JSCH_SRCDIR}/${class}.java)
94 set(JAVA_CLASSES_FULL ${JAVA_CLASSES_FULL}
95 ${CMAKE_CURRENT_BINARY_DIR}/com/jcraft/jsch/${class}.class)
96endforeach()
97
DRC7636ad02011-10-04 04:03:34 +000098file(GLOB DEPEND_SOURCES
99 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rfb/*.java
100 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rdr/*.java
Brian Hinz0eaec7d2012-02-03 05:38:23 +0000101 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/network/*.java
Brian Hinzcf0e3122012-04-05 03:37:50 +0000102 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jsch/*.java
103 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jsch/jcraft/*.java
104 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jsch/jgss/*.java
DRC7636ad02011-10-04 04:03:34 +0000105 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jzlib/*.java)
106
107string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
108add_custom_command(OUTPUT ${JAVA_CLASSES_FULL}
109 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
110 COMMAND ${JAVA_COMPILE}
Brian Hinzcf0e3122012-04-05 03:37:50 +0000111 ARGS ${JAVACFLAGS} -sourcepath ${CMAKE_CURRENT_SOURCE_DIR}
DRCccc09692011-11-08 06:57:58 +0000112 -d ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_SOURCES})
DRC7636ad02011-10-04 04:03:34 +0000113
114configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
115
116add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.png
117 COMMAND ${CMAKE_COMMAND} -E copy_if_different
118 ${JAVA_SRCDIR}/tigervnc.png ${JAVA_BINDIR}/tigervnc.png
119 DEPENDS ${JAVA_SRCDIR}/tigervnc.png)
120
121add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.ico
122 COMMAND ${CMAKE_COMMAND} -E copy_if_different
123 ${JAVA_SRCDIR}/tigervnc.ico ${JAVA_BINDIR}/tigervnc.ico
124 DEPENDS ${JAVA_SRCDIR}/tigervnc.ico)
125
DRCd0002522011-10-05 09:18:55 +0000126string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
DRCf50ec7c2011-10-05 09:29:21 +0000127string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
DRCd0002522011-10-05 09:18:55 +0000128
DRC7636ad02011-10-04 04:03:34 +0000129add_custom_command(OUTPUT VncViewer.jar
130 DEPENDS ${JAVA_CLASSES_FULL}
131 ${JAVA_SRCDIR}/MANIFEST.MF
132 ${JAVA_BINDIR}/timestamp
133 ${JAVA_BINDIR}/tigervnc.png
134 ${JAVA_BINDIR}/tigervnc.ico
135 COMMAND ${JAVA_ARCHIVE}
136 ARGS cfm VncViewer.jar
137 ${JAVA_SRCDIR}/MANIFEST.MF
138 com/tigervnc/vncviewer/timestamp
139 com/tigervnc/vncviewer/*.class
140 com/tigervnc/rfb/*.class
141 com/tigervnc/rdr/*.class
Brian Hinz0eaec7d2012-02-03 05:38:23 +0000142 com/tigervnc/network/*.class
DRC7636ad02011-10-04 04:03:34 +0000143 com/jcraft/jzlib/*.class
Brian Hinzcf0e3122012-04-05 03:37:50 +0000144 com/jcraft/jsch/jcraft/*.class
145 com/jcraft/jsch/jce/*.class
146 com/jcraft/jsch/*.class
DRC7636ad02011-10-04 04:03:34 +0000147 com/tigervnc/vncviewer/tigervnc.png
148 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +0000149 COMMAND ${CMAKE_COMMAND}
150 ARGS -DJava_PATH=${Java_PATH}
151 -DJAR_FILE=${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
DRCccc09692011-11-08 06:57:58 +0000152 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/SignJar.cmake)
DRC7636ad02011-10-04 04:03:34 +0000153
154add_custom_target(java ALL DEPENDS VncViewer.jar)
155
DRCf50ec7c2011-10-05 09:29:21 +0000156if(NOT WIN32)
157 install(FILES
158 ${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
159 ${JAVA_SRCDIR}/README
160 ${JAVA_SRCDIR}/index.vnc
Brian Hinz308b7ed2011-10-14 21:35:40 +0000161 ${JAVA_SRCDIR}/favicon.ico
Pierre Ossman95e28f72012-03-27 10:24:53 +0000162 DESTINATION ${DATA_DIR}/vnc/classes)
DRCf50ec7c2011-10-05 09:29:21 +0000163endif()