blob: 3477c8d0ba03cb73c3beaf328a209c770c304540 [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})
DRC7636ad02011-10-04 04:03:34 +000018
Brian Hinz5c98b212012-09-01 20:54:12 +000019if(NOT BUILD)
20 execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
21endif()
DRCccc09692011-11-08 06:57:58 +000022execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
23execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
DRC7636ad02011-10-04 04:03:34 +000024string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
25string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
Brian Hinz5c98b212012-09-01 20:54:12 +000026string(REGEX REPLACE "\n" "" BUILD ${BUILD})
DRC7636ad02011-10-04 04:03:34 +000027
DRC7636ad02011-10-04 04:03:34 +000028set(JAVA_SOURCES "")
Brian Hinz48ce3622013-12-01 23:07:07 +000029set(JAVA_CLASSES "")
DRC7636ad02011-10-04 04:03:34 +000030
Brian Hinzcf0e3122012-04-05 03:37:50 +000031set(JSCH_CLASSNAMES
32 DH
33 DHG1
34 DHG14
35 DHGEX
36 JSch
37 Session
38 UserAuth
39 UserAuthKeyboardInteractive
40 UserAuthPassword
41 UserAuthPublicKey
42 UserAuthNone
43 jce/AES128CBC
44 jce/AES192CTR
45 jce/ARCFOUR128
46 jce/BlowfishCBC
47 jce/HMACMD5
48 jce/KeyPairGenDSA
49 jce/Random
50 jce/SignatureRSA
51 jce/AES128CTR
52 jce/AES256CBC
53 jce/ARCFOUR256
54 jce/DH
55 jce/HMACSHA196
56 jce/KeyPairGenRSA
57 jce/SHA1
58 jce/TripleDESCBC
59 jce/AES192CBC
60 jce/AES256CTR
61 jce/ARCFOUR
62 jce/HMACMD596
63 jce/HMACSHA1
64 jce/MD5
65 jce/SignatureDSA
66 jce/TripleDESCTR
67 jcraft/Compression
68 jcraft/HMAC
69 jcraft/HMACMD596
70 jcraft/HMACMD5
71 jcraft/HMACSHA196
72 jcraft/HMACSHA1)
Brian Hinz48ce3622013-12-01 23:07:07 +000073
Brian Hinzcf0e3122012-04-05 03:37:50 +000074foreach(class ${JSCH_CLASSNAMES})
Brian Hinz48ce3622013-12-01 23:07:07 +000075 set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
76 set(JAVA_CLASSES ${JAVA_CLASSES}
77 ${BINDIR}/com/jcraft/jsch/${class}.class)
Brian Hinzcf0e3122012-04-05 03:37:50 +000078endforeach()
79
DRC7636ad02011-10-04 04:03:34 +000080file(GLOB DEPEND_SOURCES
Brian Hinz48ce3622013-12-01 23:07:07 +000081 ${SRCDIR}/${CLASSPATH}/*.java
82 ${SRCDIR}/com/tigervnc/rfb/*.java
83 ${SRCDIR}/com/tigervnc/rdr/*.java
84 ${SRCDIR}/com/tigervnc/network/*.java
85 ${SRCDIR}/com/jcraft/jsch/*.java
86 ${SRCDIR}/com/jcraft/jsch/jcraft/*.java
87 ${SRCDIR}/com/jcraft/jsch/jgss/*.java
88 ${SRCDIR}/com/jcraft/jzlib/*.java)
DRC7636ad02011-10-04 04:03:34 +000089
90string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
Brian Hinz48ce3622013-12-01 23:07:07 +000091add_custom_command(OUTPUT ${JAVA_CLASSES}
DRC7636ad02011-10-04 04:03:34 +000092 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
93 COMMAND ${JAVA_COMPILE}
Brian Hinz48ce3622013-12-01 23:07:07 +000094 ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
95 ${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
96 WORKING_DIRECTORY ${SRCDIR})
DRC7636ad02011-10-04 04:03:34 +000097
98configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
99
Brian Hinz48ce3622013-12-01 23:07:07 +0000100if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
DRC7636ad02011-10-04 04:03:34 +0000101
Brian Hinz48ce3622013-12-01 23:07:07 +0000102add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.png
DRC7636ad02011-10-04 04:03:34 +0000103 COMMAND ${CMAKE_COMMAND} -E copy_if_different
Brian Hinz48ce3622013-12-01 23:07:07 +0000104 ${SRCDIR}/${CLASSPATH}/tigervnc.png ${BINDIR}/${CLASSPATH}/tigervnc.png
105 DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.png)
106
107add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.ico
108 COMMAND ${CMAKE_COMMAND} -E copy_if_different
109 ${SRCDIR}/${CLASSPATH}/tigervnc.ico ${BINDIR}/${CLASSPATH}/tigervnc.ico
110 DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.ico)
111
112endif()
DRC7636ad02011-10-04 04:03:34 +0000113
DRCd0002522011-10-05 09:18:55 +0000114string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
DRCf50ec7c2011-10-05 09:29:21 +0000115string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
DRCd0002522011-10-05 09:18:55 +0000116
DRC7636ad02011-10-04 04:03:34 +0000117add_custom_command(OUTPUT VncViewer.jar
Brian Hinz48ce3622013-12-01 23:07:07 +0000118 DEPENDS ${JAVA_CLASSES}
119 ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
120 ${BINDIR}/${CLASSPATH}/timestamp
121 ${BINDIR}/${CLASSPATH}/tigervnc.png
122 ${BINDIR}/${CLASSPATH}/tigervnc.ico
DRC7636ad02011-10-04 04:03:34 +0000123 COMMAND ${JAVA_ARCHIVE}
124 ARGS cfm VncViewer.jar
Brian Hinz48ce3622013-12-01 23:07:07 +0000125 ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
126 ${CLASSPATH}/timestamp
127 ${CLASSPATH}/*.class
DRC7636ad02011-10-04 04:03:34 +0000128 com/tigervnc/rfb/*.class
129 com/tigervnc/rdr/*.class
Brian Hinz0eaec7d2012-02-03 05:38:23 +0000130 com/tigervnc/network/*.class
DRC7636ad02011-10-04 04:03:34 +0000131 com/jcraft/jzlib/*.class
Brian Hinzcf0e3122012-04-05 03:37:50 +0000132 com/jcraft/jsch/jcraft/*.class
133 com/jcraft/jsch/jce/*.class
134 com/jcraft/jsch/*.class
DRC7636ad02011-10-04 04:03:34 +0000135 com/tigervnc/vncviewer/tigervnc.png
136 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +0000137 COMMAND ${CMAKE_COMMAND}
Brian Hinz48ce3622013-12-01 23:07:07 +0000138 ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
139 -P ${SRCDIR}/cmake/SignJar.cmake)
DRC7636ad02011-10-04 04:03:34 +0000140
141add_custom_target(java ALL DEPENDS VncViewer.jar)
142
DRCf50ec7c2011-10-05 09:29:21 +0000143if(NOT WIN32)
144 install(FILES
Brian Hinz09909982013-12-02 02:31:23 +0000145 ${BINDIR}/VncViewer.jar
146 ${SRCDIR}/${CLASSPATH}/README
147 ${SRCDIR}/${CLASSPATH}/index.vnc
148 ${SRCDIR}/${CLASSPATH}/favicon.ico
Pierre Ossman95e28f72012-03-27 10:24:53 +0000149 DESTINATION ${DATA_DIR}/vnc/classes)
DRCf50ec7c2011-10-05 09:29:21 +0000150endif()