blob: 7d6c70a896b67d54831399d56803ebcbdbd0fd98 [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. 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)
28 execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
29endif()
DRCccc09692011-11-08 06:57:58 +000030execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
31execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
DRC7636ad02011-10-04 04:03:34 +000032string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
33string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
Brian Hinz5c98b212012-09-01 20:54:12 +000034string(REGEX REPLACE "\n" "" BUILD ${BUILD})
DRC7636ad02011-10-04 04:03:34 +000035
DRC7636ad02011-10-04 04:03:34 +000036set(JAVA_SOURCES "")
Brian Hinz48ce3622013-12-01 23:07:07 +000037set(JAVA_CLASSES "")
DRC7636ad02011-10-04 04:03:34 +000038
Brian Hinzcf0e3122012-04-05 03:37:50 +000039set(JSCH_CLASSNAMES
40 DH
Brian P. Hinzce48cc82015-12-26 21:48:11 -050041 DHEC256
42 DHEC384
43 DHEC521
44 DHECN
45 DHGEX256
Brian Hinzcf0e3122012-04-05 03:37:50 +000046 DHG1
47 DHG14
48 DHGEX
Brian P. Hinzce48cc82015-12-26 21:48:11 -050049 ECDH
Brian Hinzcf0e3122012-04-05 03:37:50 +000050 JSch
51 Session
52 UserAuth
53 UserAuthKeyboardInteractive
54 UserAuthPassword
55 UserAuthPublicKey
56 UserAuthNone
57 jce/AES128CBC
Brian Hinzcf0e3122012-04-05 03:37:50 +000058 jce/AES128CTR
Brian Hinzcf0e3122012-04-05 03:37:50 +000059 jce/AES192CBC
Brian P. Hinzce48cc82015-12-26 21:48:11 -050060 jce/AES192CTR
61 jce/AES256CBC
Brian Hinzcf0e3122012-04-05 03:37:50 +000062 jce/AES256CTR
63 jce/ARCFOUR
Brian P. Hinzce48cc82015-12-26 21:48:11 -050064 jce/ARCFOUR128
65 jce/ARCFOUR256
66 jce/BlowfishCBC
67 jce/DH
68 jce/ECDH256
69 jce/ECDH384
70 jce/ECDH521
71 jce/ECDHN
72 jce/HMAC
73 jce/HMACMD5
Brian Hinzcf0e3122012-04-05 03:37:50 +000074 jce/HMACMD596
75 jce/HMACSHA1
Brian P. Hinzce48cc82015-12-26 21:48:11 -050076 jce/HMACSHA196
77 jce/HMACSHA256
78 jce/HMACSHA512
79 jce/KeyPairGenDSA
80 jce/KeyPairGenECDSA
81 jce/KeyPairGenRSA
Brian Hinzcf0e3122012-04-05 03:37:50 +000082 jce/MD5
Brian P. Hinzce48cc82015-12-26 21:48:11 -050083 jce/PBKDF
84 jce/Random
85 jce/SHA1
86 jce/SHA256
87 jce/SHA384
88 jce/SHA512
Brian Hinzcf0e3122012-04-05 03:37:50 +000089 jce/SignatureDSA
Brian P. Hinzce48cc82015-12-26 21:48:11 -050090 jce/SignatureECDSA
91 jce/SignatureRSA
92 jce/TripleDESCBC
Brian Hinzcf0e3122012-04-05 03:37:50 +000093 jce/TripleDESCTR
94 jcraft/Compression
95 jcraft/HMAC
96 jcraft/HMACMD596
97 jcraft/HMACMD5
98 jcraft/HMACSHA196
99 jcraft/HMACSHA1)
Brian Hinz48ce3622013-12-01 23:07:07 +0000100
Brian Hinzcf0e3122012-04-05 03:37:50 +0000101foreach(class ${JSCH_CLASSNAMES})
Brian Hinz48ce3622013-12-01 23:07:07 +0000102 set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
103 set(JAVA_CLASSES ${JAVA_CLASSES}
104 ${BINDIR}/com/jcraft/jsch/${class}.class)
Brian Hinzcf0e3122012-04-05 03:37:50 +0000105endforeach()
106
DRC7636ad02011-10-04 04:03:34 +0000107file(GLOB DEPEND_SOURCES
Brian Hinz48ce3622013-12-01 23:07:07 +0000108 ${SRCDIR}/${CLASSPATH}/*.java
109 ${SRCDIR}/com/tigervnc/rfb/*.java
110 ${SRCDIR}/com/tigervnc/rdr/*.java
111 ${SRCDIR}/com/tigervnc/network/*.java
112 ${SRCDIR}/com/jcraft/jsch/*.java
113 ${SRCDIR}/com/jcraft/jsch/jcraft/*.java
114 ${SRCDIR}/com/jcraft/jsch/jgss/*.java
115 ${SRCDIR}/com/jcraft/jzlib/*.java)
DRC7636ad02011-10-04 04:03:34 +0000116
117string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
Brian Hinz48ce3622013-12-01 23:07:07 +0000118add_custom_command(OUTPUT ${JAVA_CLASSES}
DRC7636ad02011-10-04 04:03:34 +0000119 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
120 COMMAND ${JAVA_COMPILE}
Brian Hinz48ce3622013-12-01 23:07:07 +0000121 ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
122 ${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
123 WORKING_DIRECTORY ${SRCDIR})
DRC7636ad02011-10-04 04:03:34 +0000124
125configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
126
Brian Hinz48ce3622013-12-01 23:07:07 +0000127if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
DRC7636ad02011-10-04 04:03:34 +0000128
Brian Hinz48ce3622013-12-01 23:07:07 +0000129add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.png
DRC7636ad02011-10-04 04:03:34 +0000130 COMMAND ${CMAKE_COMMAND} -E copy_if_different
Brian Hinz48ce3622013-12-01 23:07:07 +0000131 ${SRCDIR}/${CLASSPATH}/tigervnc.png ${BINDIR}/${CLASSPATH}/tigervnc.png
132 DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.png)
133
134add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.ico
135 COMMAND ${CMAKE_COMMAND} -E copy_if_different
136 ${SRCDIR}/${CLASSPATH}/tigervnc.ico ${BINDIR}/${CLASSPATH}/tigervnc.ico
137 DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.ico)
138
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
148 ${BINDIR}/${CLASSPATH}/tigervnc.png
149 ${BINDIR}/${CLASSPATH}/tigervnc.ico
DRC7636ad02011-10-04 04:03:34 +0000150 COMMAND ${JAVA_ARCHIVE}
151 ARGS cfm VncViewer.jar
Brian Hinz48ce3622013-12-01 23:07:07 +0000152 ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
153 ${CLASSPATH}/timestamp
154 ${CLASSPATH}/*.class
DRC7636ad02011-10-04 04:03:34 +0000155 com/tigervnc/rfb/*.class
156 com/tigervnc/rdr/*.class
Brian Hinz0eaec7d2012-02-03 05:38:23 +0000157 com/tigervnc/network/*.class
DRC7636ad02011-10-04 04:03:34 +0000158 com/jcraft/jzlib/*.class
Brian Hinzcf0e3122012-04-05 03:37:50 +0000159 com/jcraft/jsch/jcraft/*.class
160 com/jcraft/jsch/jce/*.class
161 com/jcraft/jsch/*.class
DRC7636ad02011-10-04 04:03:34 +0000162 com/tigervnc/vncviewer/tigervnc.png
163 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +0000164 COMMAND ${CMAKE_COMMAND}
Brian Hinz48ce3622013-12-01 23:07:07 +0000165 ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
Brian Hinzf88b3ad2013-12-02 02:53:10 +0000166 -DJAVA_KEYSTORE=${JAVA_KEYSTORE}
167 -DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
168 -DJAVA_STOREPASS=${JAVA_STOREPASS}
169 -DJAVA_KEYPASS=${JAVA_KEYPASS}
170 -DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
171 -DJAVA_TSA_URL=${JAVA_TSA_URL}
Brian Hinz48ce3622013-12-01 23:07:07 +0000172 -P ${SRCDIR}/cmake/SignJar.cmake)
DRC7636ad02011-10-04 04:03:34 +0000173
174add_custom_target(java ALL DEPENDS VncViewer.jar)
175
DRCf50ec7c2011-10-05 09:29:21 +0000176if(NOT WIN32)
177 install(FILES
Brian Hinz09909982013-12-02 02:31:23 +0000178 ${BINDIR}/VncViewer.jar
179 ${SRCDIR}/${CLASSPATH}/README
180 ${SRCDIR}/${CLASSPATH}/index.vnc
181 ${SRCDIR}/${CLASSPATH}/favicon.ico
Pierre Ossman95e28f72012-03-27 10:24:53 +0000182 DESTINATION ${DATA_DIR}/vnc/classes)
DRCf50ec7c2011-10-05 09:29:21 +0000183endif()