blob: da24dcfadc69a392b3a17698064124bce9816dbf [file] [log] [blame]
Bernhard M. Wiedemanne27c8962018-11-18 08:14:50 +01001cmake_minimum_required(VERSION 2.8.11)
DRCc19ab9e2011-10-07 05:38:00 +00002
3project(tigervnc-java Java)
Brian Hinz5c98b212012-09-01 20:54:12 +00004if(NOT VERSION)
Pierre Ossman1f8d9982018-06-13 16:27:53 +02005 set(VERSION 1.9.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 P. Hinz5f0e6052017-05-07 09:33:54 -040010set(DATA_DIR "${CMAKE_INSTALL_PREFIX}/share")
11
Brian P. Hinz335446d2017-11-13 19:00:01 -050012set(DEFAULT_JAVACFLAGS "-source 7 -target 7 -encoding UTF-8 -Xlint:all,-serial,-cast,-unchecked,-fallthrough,-dep-ann,-deprecation,-rawtypes")
DRC7636ad02011-10-04 04:03:34 +000013set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING
14 "Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})")
15message(STATUS "Java compiler flags = ${JAVACFLAGS}")
16
17set(CLASSPATH com/tigervnc/vncviewer)
Brian Hinz48ce3622013-12-01 23:07:07 +000018set(SRCDIR ${CMAKE_CURRENT_SOURCE_DIR})
19set(BINDIR ${CMAKE_CURRENT_BINARY_DIR})
Brian Hinzf88b3ad2013-12-02 02:53:10 +000020set(JAVA_KEYSTORE NOTFOUND CACHE STRING "URL of keystore location")
21set(JAVA_KEYSTORE_TYPE "jks" CACHE STRING "Type of keystore (Default: \"jks\")")
22set(JAVA_KEY_ALIAS NOTFOUND CACHE STRING "Alias for the keystore entry used to generate the signature")
23set(JAVA_STOREPASS NOTFOUND CACHE STRING "Password required to access the keystore")
24set(JAVA_KEYPASS NOTFOUND CACHE STRING "Password used to protect the private key of the specified keystore entry")
25set(JAVA_TSA_URL NOTFOUND CACHE STRING "URL of Time Stamping Authority (TSA)")
DRC7636ad02011-10-04 04:03:34 +000026
Brian Hinz5c98b212012-09-01 20:54:12 +000027if(NOT BUILD)
Bernhard M. Wiedemanne27c8962018-11-18 08:14:50 +010028 STRING(TIMESTAMP BUILD "%Y%m%d" UTC)
Brian Hinz5c98b212012-09-01 20:54:12 +000029endif()
Bernhard M. Wiedemanne27c8962018-11-18 08:14:50 +010030STRING(TIMESTAMP JAVA_DATE "%Y-%m-%d" UTC)
31STRING(TIMESTAMP JAVA_TIME "%H:%M:%S" UTC)
DRC7636ad02011-10-04 04:03:34 +000032
DRC7636ad02011-10-04 04:03:34 +000033set(JAVA_SOURCES "")
Brian Hinz48ce3622013-12-01 23:07:07 +000034set(JAVA_CLASSES "")
DRC7636ad02011-10-04 04:03:34 +000035
Brian Hinzcf0e3122012-04-05 03:37:50 +000036set(JSCH_CLASSNAMES
37 DH
Brian P. Hinzce48cc82015-12-26 21:48:11 -050038 DHEC256
39 DHEC384
40 DHEC521
41 DHECN
42 DHGEX256
Brian Hinzcf0e3122012-04-05 03:37:50 +000043 DHG1
44 DHG14
45 DHGEX
Brian P. Hinzce48cc82015-12-26 21:48:11 -050046 ECDH
Brian Hinzcf0e3122012-04-05 03:37:50 +000047 JSch
48 Session
49 UserAuth
50 UserAuthKeyboardInteractive
51 UserAuthPassword
52 UserAuthPublicKey
53 UserAuthNone
54 jce/AES128CBC
Brian Hinzcf0e3122012-04-05 03:37:50 +000055 jce/AES128CTR
Brian Hinzcf0e3122012-04-05 03:37:50 +000056 jce/AES192CBC
Brian P. Hinzce48cc82015-12-26 21:48:11 -050057 jce/AES192CTR
58 jce/AES256CBC
Brian Hinzcf0e3122012-04-05 03:37:50 +000059 jce/AES256CTR
60 jce/ARCFOUR
Brian P. Hinzce48cc82015-12-26 21:48:11 -050061 jce/ARCFOUR128
62 jce/ARCFOUR256
63 jce/BlowfishCBC
64 jce/DH
65 jce/ECDH256
66 jce/ECDH384
67 jce/ECDH521
68 jce/ECDHN
69 jce/HMAC
70 jce/HMACMD5
Brian Hinzcf0e3122012-04-05 03:37:50 +000071 jce/HMACMD596
72 jce/HMACSHA1
Brian P. Hinzce48cc82015-12-26 21:48:11 -050073 jce/HMACSHA196
74 jce/HMACSHA256
75 jce/HMACSHA512
76 jce/KeyPairGenDSA
77 jce/KeyPairGenECDSA
78 jce/KeyPairGenRSA
Brian Hinzcf0e3122012-04-05 03:37:50 +000079 jce/MD5
Brian P. Hinzce48cc82015-12-26 21:48:11 -050080 jce/PBKDF
81 jce/Random
82 jce/SHA1
83 jce/SHA256
84 jce/SHA384
85 jce/SHA512
Brian Hinzcf0e3122012-04-05 03:37:50 +000086 jce/SignatureDSA
Brian P. Hinzce48cc82015-12-26 21:48:11 -050087 jce/SignatureECDSA
88 jce/SignatureRSA
89 jce/TripleDESCBC
Brian Hinzcf0e3122012-04-05 03:37:50 +000090 jce/TripleDESCTR
91 jcraft/Compression
92 jcraft/HMAC
93 jcraft/HMACMD596
94 jcraft/HMACMD5
95 jcraft/HMACSHA196
96 jcraft/HMACSHA1)
Brian Hinz48ce3622013-12-01 23:07:07 +000097
Brian Hinzcf0e3122012-04-05 03:37:50 +000098foreach(class ${JSCH_CLASSNAMES})
Brian Hinz48ce3622013-12-01 23:07:07 +000099 set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
100 set(JAVA_CLASSES ${JAVA_CLASSES}
101 ${BINDIR}/com/jcraft/jsch/${class}.class)
Brian Hinzcf0e3122012-04-05 03:37:50 +0000102endforeach()
103
DRC7636ad02011-10-04 04:03:34 +0000104file(GLOB DEPEND_SOURCES
Brian Hinz48ce3622013-12-01 23:07:07 +0000105 ${SRCDIR}/${CLASSPATH}/*.java
106 ${SRCDIR}/com/tigervnc/rfb/*.java
107 ${SRCDIR}/com/tigervnc/rdr/*.java
108 ${SRCDIR}/com/tigervnc/network/*.java
109 ${SRCDIR}/com/jcraft/jsch/*.java
110 ${SRCDIR}/com/jcraft/jsch/jcraft/*.java
111 ${SRCDIR}/com/jcraft/jsch/jgss/*.java
112 ${SRCDIR}/com/jcraft/jzlib/*.java)
DRC7636ad02011-10-04 04:03:34 +0000113
114string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
Brian Hinz48ce3622013-12-01 23:07:07 +0000115add_custom_command(OUTPUT ${JAVA_CLASSES}
DRC7636ad02011-10-04 04:03:34 +0000116 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
117 COMMAND ${JAVA_COMPILE}
Brian Hinz48ce3622013-12-01 23:07:07 +0000118 ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
119 ${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
120 WORKING_DIRECTORY ${SRCDIR})
DRC7636ad02011-10-04 04:03:34 +0000121
122configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
123
Brian Hinz48ce3622013-12-01 23:07:07 +0000124if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
DRC7636ad02011-10-04 04:03:34 +0000125
Brian P. Hinz88a45412017-11-30 21:23:46 -0500126set(ICONS
127tigervnc.ico
128tigervnc.png
129insecure.png
130secure.png)
Brian Hinz48ce3622013-12-01 23:07:07 +0000131
Brian P. Hinz88a45412017-11-30 21:23:46 -0500132foreach(icon ${ICONS})
133 add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/${icon}
134 COMMAND ${CMAKE_COMMAND} -E copy_if_different
135 ${SRCDIR}/${CLASSPATH}/${icon} ${BINDIR}/${CLASSPATH}/${icon}
136 DEPENDS ${SRCDIR}/${CLASSPATH}/${icon})
137endforeach()
Brian Hinz48ce3622013-12-01 23:07:07 +0000138
139endif()
DRC7636ad02011-10-04 04:03:34 +0000140
DRCd0002522011-10-05 09:18:55 +0000141string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
DRCf50ec7c2011-10-05 09:29:21 +0000142string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
DRCd0002522011-10-05 09:18:55 +0000143
DRC7636ad02011-10-04 04:03:34 +0000144add_custom_command(OUTPUT VncViewer.jar
Brian Hinz48ce3622013-12-01 23:07:07 +0000145 DEPENDS ${JAVA_CLASSES}
146 ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
147 ${BINDIR}/${CLASSPATH}/timestamp
Brian Hinz48ce3622013-12-01 23:07:07 +0000148 ${BINDIR}/${CLASSPATH}/tigervnc.ico
Brian P. Hinz88a45412017-11-30 21:23:46 -0500149 ${BINDIR}/${CLASSPATH}/tigervnc.png
150 ${BINDIR}/${CLASSPATH}/insecure.png
151 ${BINDIR}/${CLASSPATH}/secure.png
DRC7636ad02011-10-04 04:03:34 +0000152 COMMAND ${JAVA_ARCHIVE}
153 ARGS cfm VncViewer.jar
Brian Hinz48ce3622013-12-01 23:07:07 +0000154 ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
155 ${CLASSPATH}/timestamp
156 ${CLASSPATH}/*.class
DRC7636ad02011-10-04 04:03:34 +0000157 com/tigervnc/rfb/*.class
158 com/tigervnc/rdr/*.class
Brian Hinz0eaec7d2012-02-03 05:38:23 +0000159 com/tigervnc/network/*.class
DRC7636ad02011-10-04 04:03:34 +0000160 com/jcraft/jzlib/*.class
Brian Hinzcf0e3122012-04-05 03:37:50 +0000161 com/jcraft/jsch/jcraft/*.class
162 com/jcraft/jsch/jce/*.class
163 com/jcraft/jsch/*.class
Brian P. Hinz88a45412017-11-30 21:23:46 -0500164 com/tigervnc/vncviewer/*.png
DRC7636ad02011-10-04 04:03:34 +0000165 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +0000166 COMMAND ${CMAKE_COMMAND}
Brian Hinz48ce3622013-12-01 23:07:07 +0000167 ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
Brian Hinzf88b3ad2013-12-02 02:53:10 +0000168 -DJAVA_KEYSTORE=${JAVA_KEYSTORE}
169 -DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
170 -DJAVA_STOREPASS=${JAVA_STOREPASS}
171 -DJAVA_KEYPASS=${JAVA_KEYPASS}
172 -DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
173 -DJAVA_TSA_URL=${JAVA_TSA_URL}
Brian Hinz48ce3622013-12-01 23:07:07 +0000174 -P ${SRCDIR}/cmake/SignJar.cmake)
DRC7636ad02011-10-04 04:03:34 +0000175
176add_custom_target(java ALL DEPENDS VncViewer.jar)