blob: 2fd348f74b32888117f644b6db8a99af09fc639a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
cmake_minimum_required(VERSION 3.10.0)
project(tigervnc-java Java)
if(NOT VERSION)
set(VERSION 1.13.80)
endif()
find_package(Java)
set(DEFAULT_JAVACFLAGS "-source 8 -target 8 -encoding UTF-8 -Xlint:all,-serial,-cast,-unchecked,-fallthrough,-dep-ann,-deprecation,-rawtypes")
set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING
"Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})")
message(STATUS "Java compiler flags = ${JAVACFLAGS}")
set(CLASSPATH com/tigervnc/vncviewer)
set(SRCDIR ${CMAKE_CURRENT_SOURCE_DIR})
set(BINDIR ${CMAKE_CURRENT_BINARY_DIR})
set(JAVA_KEYSTORE NOTFOUND CACHE STRING "URL of keystore location")
set(JAVA_KEYSTORE_TYPE "jks" CACHE STRING "Type of keystore (Default: \"jks\")")
set(JAVA_KEY_ALIAS NOTFOUND CACHE STRING "Alias for the keystore entry used to generate the signature")
set(JAVA_STOREPASS NOTFOUND CACHE STRING "Password required to access the keystore")
set(JAVA_KEYPASS NOTFOUND CACHE STRING "Password used to protect the private key of the specified keystore entry")
set(JAVA_PKCS11_PROVIDER_CLASS "sun.security.pkcs11.SunPKCS11" CACHE STRING "PKCS11 SecurityProvider class name")
set(JAVA_PKCS11_PROVIDER_ARG NOTFOUND CACHE STRING "Path to the PKCS11 security provider class config file")
set(JAVA_TSA_URL NOTFOUND CACHE STRING "URL of Time Stamping Authority (TSA)")
set(JAVA_CERT_CHAIN NOTFOUND CACHE STRING "Path to CA certificate chain file")
if(NOT BUILD)
STRING(TIMESTAMP BUILD "%Y%m%d" UTC)
endif()
STRING(TIMESTAMP JAVA_DATE "%Y-%m-%d" UTC)
STRING(TIMESTAMP JAVA_TIME "%H:%M:%S" UTC)
set(JAVA_SOURCES "")
set(JAVA_CLASSES "")
set(JSCH_CLASSNAMES
DH
DHEC256
DHEC384
DHEC521
DHECN
DHGEX256
DHG1
DHG14
DHGEX
ECDH
JSch
Session
UserAuth
UserAuthKeyboardInteractive
UserAuthPassword
UserAuthPublicKey
UserAuthNone
jce/AES128CBC
jce/AES128CTR
jce/AES192CBC
jce/AES192CTR
jce/AES256CBC
jce/AES256CTR
jce/ARCFOUR
jce/ARCFOUR128
jce/ARCFOUR256
jce/BlowfishCBC
jce/DH
jce/ECDH256
jce/ECDH384
jce/ECDH521
jce/ECDHN
jce/HMAC
jce/HMACMD5
jce/HMACMD596
jce/HMACSHA1
jce/HMACSHA196
jce/HMACSHA256
jce/HMACSHA512
jce/KeyPairGenDSA
jce/KeyPairGenECDSA
jce/KeyPairGenRSA
jce/MD5
jce/PBKDF
jce/Random
jce/SHA1
jce/SHA256
jce/SHA384
jce/SHA512
jce/SignatureDSA
jce/SignatureECDSA
jce/SignatureRSA
jce/TripleDESCBC
jce/TripleDESCTR
jcraft/Compression
jcraft/HMAC
jcraft/HMACMD596
jcraft/HMACMD5
jcraft/HMACSHA196
jcraft/HMACSHA1)
foreach(class ${JSCH_CLASSNAMES})
set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
set(JAVA_CLASSES ${JAVA_CLASSES}
${BINDIR}/com/jcraft/jsch/${class}.class)
endforeach()
file(GLOB DEPEND_SOURCES
${SRCDIR}/${CLASSPATH}/*.java
${SRCDIR}/com/tigervnc/rfb/*.java
${SRCDIR}/com/tigervnc/rdr/*.java
${SRCDIR}/com/tigervnc/network/*.java
${SRCDIR}/com/jcraft/jsch/*.java
${SRCDIR}/com/jcraft/jsch/jcraft/*.java
${SRCDIR}/com/jcraft/jsch/jgss/*.java
${SRCDIR}/com/jcraft/jzlib/*.java)
string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
add_custom_command(OUTPUT ${JAVA_CLASSES}
DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
COMMAND ${JAVA_COMPILE}
ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
WORKING_DIRECTORY ${SRCDIR})
configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
set(ICONS
tigervnc.ico
tigervnc.png
insecure.png
secure.png)
foreach(icon ${ICONS})
add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/${icon}
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${SRCDIR}/${CLASSPATH}/${icon} ${BINDIR}/${CLASSPATH}/${icon}
DEPENDS ${SRCDIR}/${CLASSPATH}/${icon})
endforeach()
endif()
string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
add_custom_command(OUTPUT VncViewer.jar
DEPENDS ${JAVA_CLASSES}
${SRCDIR}/${CLASSPATH}/MANIFEST.MF
${BINDIR}/${CLASSPATH}/timestamp
${BINDIR}/${CLASSPATH}/tigervnc.ico
${BINDIR}/${CLASSPATH}/tigervnc.png
${BINDIR}/${CLASSPATH}/insecure.png
${BINDIR}/${CLASSPATH}/secure.png
COMMAND ${JAVA_ARCHIVE}
ARGS cfm VncViewer.jar
${SRCDIR}/${CLASSPATH}/MANIFEST.MF
${CLASSPATH}/timestamp
${CLASSPATH}/*.class
com/tigervnc/rfb/*.class
com/tigervnc/rdr/*.class
com/tigervnc/network/*.class
com/jcraft/jzlib/*.class
com/jcraft/jsch/jcraft/*.class
com/jcraft/jsch/jce/*.class
com/jcraft/jsch/*.class
com/tigervnc/vncviewer/*.png
com/tigervnc/vncviewer/tigervnc.ico
COMMAND ${CMAKE_COMMAND}
ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
-DJAVA_KEYSTORE=${JAVA_KEYSTORE}
-DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
-DJAVA_STOREPASS=${JAVA_STOREPASS}
-DJAVA_PKCS11_PROVIDER_CLASS=${JAVA_PKCS11_PROVIDER_CLASS}
-DJAVA_PKCS11_PROVIDER_ARG=${JAVA_PKCS11_PROVIDER_ARG}
-DJAVA_KEYPASS=${JAVA_KEYPASS}
-DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
-DJAVA_TSA_URL=${JAVA_TSA_URL}
-DJAVA_CERT_CHAIN=${JAVA_CERT_CHAIN}
-P ${SRCDIR}/cmake/SignJar.cmake)
add_custom_target(java ALL DEPENDS VncViewer.jar)
|