blob: 4b9c943ab3df479a080dc788bcd638d654bb246a [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 Ossmaneefa6fe2017-04-19 15:25:23 +02005 set(VERSION 1.8.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. Hinz10d9af52015-12-26 21:49:49 -050010set(DEFAULT_JAVACFLAGS "-source 1.6 -target 1.6 -Xlint:all,-serial,-cast,-unchecked,-fallthrough,-dep-ann,-deprecation,-rawtypes")
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)
Brian Hinz48ce3622013-12-01 23:07:07 +000016set(SRCDIR ${CMAKE_CURRENT_SOURCE_DIR})
17set(BINDIR ${CMAKE_CURRENT_BINARY_DIR})
Brian Hinzf88b3ad2013-12-02 02:53:10 +000018set(JAVA_KEYSTORE NOTFOUND CACHE STRING "URL of keystore location")
19set(JAVA_KEYSTORE_TYPE "jks" CACHE STRING "Type of keystore (Default: \"jks\")")
20set(JAVA_KEY_ALIAS NOTFOUND CACHE STRING "Alias for the keystore entry used to generate the signature")
21set(JAVA_STOREPASS NOTFOUND CACHE STRING "Password required to access the keystore")
22set(JAVA_KEYPASS NOTFOUND CACHE STRING "Password used to protect the private key of the specified keystore entry")
23set(JAVA_TSA_URL NOTFOUND CACHE STRING "URL of Time Stamping Authority (TSA)")
DRC7636ad02011-10-04 04:03:34 +000024
Brian Hinz5c98b212012-09-01 20:54:12 +000025if(NOT BUILD)
26 execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
27endif()
DRCccc09692011-11-08 06:57:58 +000028execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
29execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
DRC7636ad02011-10-04 04:03:34 +000030string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
31string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
Brian Hinz5c98b212012-09-01 20:54:12 +000032string(REGEX REPLACE "\n" "" BUILD ${BUILD})
DRC7636ad02011-10-04 04:03:34 +000033
DRC7636ad02011-10-04 04:03:34 +000034set(JAVA_SOURCES "")
Brian Hinz48ce3622013-12-01 23:07:07 +000035set(JAVA_CLASSES "")
DRC7636ad02011-10-04 04:03:34 +000036
Brian Hinzcf0e3122012-04-05 03:37:50 +000037set(JSCH_CLASSNAMES
38 DH
Brian P. Hinzce48cc82015-12-26 21:48:11 -050039 DHEC256
40 DHEC384
41 DHEC521
42 DHECN
43 DHGEX256
Brian Hinzcf0e3122012-04-05 03:37:50 +000044 DHG1
45 DHG14
46 DHGEX
Brian P. Hinzce48cc82015-12-26 21:48:11 -050047 ECDH
Brian Hinzcf0e3122012-04-05 03:37:50 +000048 JSch
49 Session
50 UserAuth
51 UserAuthKeyboardInteractive
52 UserAuthPassword
53 UserAuthPublicKey
54 UserAuthNone
55 jce/AES128CBC
Brian Hinzcf0e3122012-04-05 03:37:50 +000056 jce/AES128CTR
Brian Hinzcf0e3122012-04-05 03:37:50 +000057 jce/AES192CBC
Brian P. Hinzce48cc82015-12-26 21:48:11 -050058 jce/AES192CTR
59 jce/AES256CBC
Brian Hinzcf0e3122012-04-05 03:37:50 +000060 jce/AES256CTR
61 jce/ARCFOUR
Brian P. Hinzce48cc82015-12-26 21:48:11 -050062 jce/ARCFOUR128
63 jce/ARCFOUR256
64 jce/BlowfishCBC
65 jce/DH
66 jce/ECDH256
67 jce/ECDH384
68 jce/ECDH521
69 jce/ECDHN
70 jce/HMAC
71 jce/HMACMD5
Brian Hinzcf0e3122012-04-05 03:37:50 +000072 jce/HMACMD596
73 jce/HMACSHA1
Brian P. Hinzce48cc82015-12-26 21:48:11 -050074 jce/HMACSHA196
75 jce/HMACSHA256
76 jce/HMACSHA512
77 jce/KeyPairGenDSA
78 jce/KeyPairGenECDSA
79 jce/KeyPairGenRSA
Brian Hinzcf0e3122012-04-05 03:37:50 +000080 jce/MD5
Brian P. Hinzce48cc82015-12-26 21:48:11 -050081 jce/PBKDF
82 jce/Random
83 jce/SHA1
84 jce/SHA256
85 jce/SHA384
86 jce/SHA512
Brian Hinzcf0e3122012-04-05 03:37:50 +000087 jce/SignatureDSA
Brian P. Hinzce48cc82015-12-26 21:48:11 -050088 jce/SignatureECDSA
89 jce/SignatureRSA
90 jce/TripleDESCBC
Brian Hinzcf0e3122012-04-05 03:37:50 +000091 jce/TripleDESCTR
92 jcraft/Compression
93 jcraft/HMAC
94 jcraft/HMACMD596
95 jcraft/HMACMD5
96 jcraft/HMACSHA196
97 jcraft/HMACSHA1)
Brian Hinz48ce3622013-12-01 23:07:07 +000098
Brian Hinzcf0e3122012-04-05 03:37:50 +000099foreach(class ${JSCH_CLASSNAMES})
Brian Hinz48ce3622013-12-01 23:07:07 +0000100 set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
101 set(JAVA_CLASSES ${JAVA_CLASSES}
102 ${BINDIR}/com/jcraft/jsch/${class}.class)
Brian Hinzcf0e3122012-04-05 03:37:50 +0000103endforeach()
104
DRC7636ad02011-10-04 04:03:34 +0000105file(GLOB DEPEND_SOURCES
Brian Hinz48ce3622013-12-01 23:07:07 +0000106 ${SRCDIR}/${CLASSPATH}/*.java
107 ${SRCDIR}/com/tigervnc/rfb/*.java
108 ${SRCDIR}/com/tigervnc/rdr/*.java
109 ${SRCDIR}/com/tigervnc/network/*.java
110 ${SRCDIR}/com/jcraft/jsch/*.java
111 ${SRCDIR}/com/jcraft/jsch/jcraft/*.java
112 ${SRCDIR}/com/jcraft/jsch/jgss/*.java
113 ${SRCDIR}/com/jcraft/jzlib/*.java)
DRC7636ad02011-10-04 04:03:34 +0000114
115string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
Brian Hinz48ce3622013-12-01 23:07:07 +0000116add_custom_command(OUTPUT ${JAVA_CLASSES}
DRC7636ad02011-10-04 04:03:34 +0000117 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
118 COMMAND ${JAVA_COMPILE}
Brian Hinz48ce3622013-12-01 23:07:07 +0000119 ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
120 ${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
121 WORKING_DIRECTORY ${SRCDIR})
DRC7636ad02011-10-04 04:03:34 +0000122
123configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
124
Brian Hinz48ce3622013-12-01 23:07:07 +0000125if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
DRC7636ad02011-10-04 04:03:34 +0000126
Brian Hinz48ce3622013-12-01 23:07:07 +0000127add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.png
DRC7636ad02011-10-04 04:03:34 +0000128 COMMAND ${CMAKE_COMMAND} -E copy_if_different
Brian Hinz48ce3622013-12-01 23:07:07 +0000129 ${SRCDIR}/${CLASSPATH}/tigervnc.png ${BINDIR}/${CLASSPATH}/tigervnc.png
130 DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.png)
131
132add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.ico
133 COMMAND ${CMAKE_COMMAND} -E copy_if_different
134 ${SRCDIR}/${CLASSPATH}/tigervnc.ico ${BINDIR}/${CLASSPATH}/tigervnc.ico
135 DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.ico)
136
137endif()
DRC7636ad02011-10-04 04:03:34 +0000138
DRCd0002522011-10-05 09:18:55 +0000139string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
DRCf50ec7c2011-10-05 09:29:21 +0000140string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
DRCd0002522011-10-05 09:18:55 +0000141
DRC7636ad02011-10-04 04:03:34 +0000142add_custom_command(OUTPUT VncViewer.jar
Brian Hinz48ce3622013-12-01 23:07:07 +0000143 DEPENDS ${JAVA_CLASSES}
144 ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
145 ${BINDIR}/${CLASSPATH}/timestamp
146 ${BINDIR}/${CLASSPATH}/tigervnc.png
147 ${BINDIR}/${CLASSPATH}/tigervnc.ico
DRC7636ad02011-10-04 04:03:34 +0000148 COMMAND ${JAVA_ARCHIVE}
149 ARGS cfm VncViewer.jar
Brian Hinz48ce3622013-12-01 23:07:07 +0000150 ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
151 ${CLASSPATH}/timestamp
152 ${CLASSPATH}/*.class
DRC7636ad02011-10-04 04:03:34 +0000153 com/tigervnc/rfb/*.class
154 com/tigervnc/rdr/*.class
Brian Hinz0eaec7d2012-02-03 05:38:23 +0000155 com/tigervnc/network/*.class
DRC7636ad02011-10-04 04:03:34 +0000156 com/jcraft/jzlib/*.class
Brian Hinzcf0e3122012-04-05 03:37:50 +0000157 com/jcraft/jsch/jcraft/*.class
158 com/jcraft/jsch/jce/*.class
159 com/jcraft/jsch/*.class
DRC7636ad02011-10-04 04:03:34 +0000160 com/tigervnc/vncviewer/tigervnc.png
161 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +0000162 COMMAND ${CMAKE_COMMAND}
Brian Hinz48ce3622013-12-01 23:07:07 +0000163 ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
Brian Hinzf88b3ad2013-12-02 02:53:10 +0000164 -DJAVA_KEYSTORE=${JAVA_KEYSTORE}
165 -DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
166 -DJAVA_STOREPASS=${JAVA_STOREPASS}
167 -DJAVA_KEYPASS=${JAVA_KEYPASS}
168 -DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
169 -DJAVA_TSA_URL=${JAVA_TSA_URL}
Brian Hinz48ce3622013-12-01 23:07:07 +0000170 -P ${SRCDIR}/cmake/SignJar.cmake)
DRC7636ad02011-10-04 04:03:34 +0000171
172add_custom_target(java ALL DEPENDS VncViewer.jar)
173
DRCf50ec7c2011-10-05 09:29:21 +0000174if(NOT WIN32)
175 install(FILES
Brian Hinz09909982013-12-02 02:31:23 +0000176 ${BINDIR}/VncViewer.jar
177 ${SRCDIR}/${CLASSPATH}/README
178 ${SRCDIR}/${CLASSPATH}/index.vnc
179 ${SRCDIR}/${CLASSPATH}/favicon.ico
Pierre Ossman95e28f72012-03-27 10:24:53 +0000180 DESTINATION ${DATA_DIR}/vnc/classes)
DRCf50ec7c2011-10-05 09:29:21 +0000181endif()