blob: c98c69c0e408c702345ff32518f7d48d46df5686 [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 Hinz48ce3622013-12-01 23:07:07 +000010set(DEFAULT_JAVACFLAGS "-source 1.5 -target 1.5 -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
39 DHG1
40 DHG14
41 DHGEX
42 JSch
43 Session
44 UserAuth
45 UserAuthKeyboardInteractive
46 UserAuthPassword
47 UserAuthPublicKey
48 UserAuthNone
49 jce/AES128CBC
50 jce/AES192CTR
51 jce/ARCFOUR128
52 jce/BlowfishCBC
53 jce/HMACMD5
54 jce/KeyPairGenDSA
55 jce/Random
56 jce/SignatureRSA
57 jce/AES128CTR
58 jce/AES256CBC
59 jce/ARCFOUR256
60 jce/DH
61 jce/HMACSHA196
62 jce/KeyPairGenRSA
63 jce/SHA1
64 jce/TripleDESCBC
65 jce/AES192CBC
66 jce/AES256CTR
67 jce/ARCFOUR
68 jce/HMACMD596
69 jce/HMACSHA1
70 jce/MD5
71 jce/SignatureDSA
72 jce/TripleDESCTR
73 jcraft/Compression
74 jcraft/HMAC
75 jcraft/HMACMD596
76 jcraft/HMACMD5
77 jcraft/HMACSHA196
78 jcraft/HMACSHA1)
Brian Hinz48ce3622013-12-01 23:07:07 +000079
Brian Hinzcf0e3122012-04-05 03:37:50 +000080foreach(class ${JSCH_CLASSNAMES})
Brian Hinz48ce3622013-12-01 23:07:07 +000081 set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
82 set(JAVA_CLASSES ${JAVA_CLASSES}
83 ${BINDIR}/com/jcraft/jsch/${class}.class)
Brian Hinzcf0e3122012-04-05 03:37:50 +000084endforeach()
85
DRC7636ad02011-10-04 04:03:34 +000086file(GLOB DEPEND_SOURCES
Brian Hinz48ce3622013-12-01 23:07:07 +000087 ${SRCDIR}/${CLASSPATH}/*.java
88 ${SRCDIR}/com/tigervnc/rfb/*.java
89 ${SRCDIR}/com/tigervnc/rdr/*.java
90 ${SRCDIR}/com/tigervnc/network/*.java
91 ${SRCDIR}/com/jcraft/jsch/*.java
92 ${SRCDIR}/com/jcraft/jsch/jcraft/*.java
93 ${SRCDIR}/com/jcraft/jsch/jgss/*.java
94 ${SRCDIR}/com/jcraft/jzlib/*.java)
DRC7636ad02011-10-04 04:03:34 +000095
96string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
Brian Hinz48ce3622013-12-01 23:07:07 +000097add_custom_command(OUTPUT ${JAVA_CLASSES}
DRC7636ad02011-10-04 04:03:34 +000098 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
99 COMMAND ${JAVA_COMPILE}
Brian Hinz48ce3622013-12-01 23:07:07 +0000100 ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
101 ${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
102 WORKING_DIRECTORY ${SRCDIR})
DRC7636ad02011-10-04 04:03:34 +0000103
104configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
105
Brian Hinz48ce3622013-12-01 23:07:07 +0000106if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
DRC7636ad02011-10-04 04:03:34 +0000107
Brian Hinz48ce3622013-12-01 23:07:07 +0000108add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.png
DRC7636ad02011-10-04 04:03:34 +0000109 COMMAND ${CMAKE_COMMAND} -E copy_if_different
Brian Hinz48ce3622013-12-01 23:07:07 +0000110 ${SRCDIR}/${CLASSPATH}/tigervnc.png ${BINDIR}/${CLASSPATH}/tigervnc.png
111 DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.png)
112
113add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.ico
114 COMMAND ${CMAKE_COMMAND} -E copy_if_different
115 ${SRCDIR}/${CLASSPATH}/tigervnc.ico ${BINDIR}/${CLASSPATH}/tigervnc.ico
116 DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.ico)
117
118endif()
DRC7636ad02011-10-04 04:03:34 +0000119
DRCd0002522011-10-05 09:18:55 +0000120string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
DRCf50ec7c2011-10-05 09:29:21 +0000121string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
DRCd0002522011-10-05 09:18:55 +0000122
DRC7636ad02011-10-04 04:03:34 +0000123add_custom_command(OUTPUT VncViewer.jar
Brian Hinz48ce3622013-12-01 23:07:07 +0000124 DEPENDS ${JAVA_CLASSES}
125 ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
126 ${BINDIR}/${CLASSPATH}/timestamp
127 ${BINDIR}/${CLASSPATH}/tigervnc.png
128 ${BINDIR}/${CLASSPATH}/tigervnc.ico
DRC7636ad02011-10-04 04:03:34 +0000129 COMMAND ${JAVA_ARCHIVE}
130 ARGS cfm VncViewer.jar
Brian Hinz48ce3622013-12-01 23:07:07 +0000131 ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
132 ${CLASSPATH}/timestamp
133 ${CLASSPATH}/*.class
DRC7636ad02011-10-04 04:03:34 +0000134 com/tigervnc/rfb/*.class
135 com/tigervnc/rdr/*.class
Brian Hinz0eaec7d2012-02-03 05:38:23 +0000136 com/tigervnc/network/*.class
DRC7636ad02011-10-04 04:03:34 +0000137 com/jcraft/jzlib/*.class
Brian Hinzcf0e3122012-04-05 03:37:50 +0000138 com/jcraft/jsch/jcraft/*.class
139 com/jcraft/jsch/jce/*.class
140 com/jcraft/jsch/*.class
DRC7636ad02011-10-04 04:03:34 +0000141 com/tigervnc/vncviewer/tigervnc.png
142 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +0000143 COMMAND ${CMAKE_COMMAND}
Brian Hinz48ce3622013-12-01 23:07:07 +0000144 ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
Brian Hinzf88b3ad2013-12-02 02:53:10 +0000145 -DJAVA_KEYSTORE=${JAVA_KEYSTORE}
146 -DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
147 -DJAVA_STOREPASS=${JAVA_STOREPASS}
148 -DJAVA_KEYPASS=${JAVA_KEYPASS}
149 -DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
150 -DJAVA_TSA_URL=${JAVA_TSA_URL}
Brian Hinz48ce3622013-12-01 23:07:07 +0000151 -P ${SRCDIR}/cmake/SignJar.cmake)
DRC7636ad02011-10-04 04:03:34 +0000152
153add_custom_target(java ALL DEPENDS VncViewer.jar)
154
DRCf50ec7c2011-10-05 09:29:21 +0000155if(NOT WIN32)
156 install(FILES
Brian Hinz09909982013-12-02 02:31:23 +0000157 ${BINDIR}/VncViewer.jar
158 ${SRCDIR}/${CLASSPATH}/README
159 ${SRCDIR}/${CLASSPATH}/index.vnc
160 ${SRCDIR}/${CLASSPATH}/favicon.ico
Pierre Ossman95e28f72012-03-27 10:24:53 +0000161 DESTINATION ${DATA_DIR}/vnc/classes)
DRCf50ec7c2011-10-05 09:29:21 +0000162endif()