You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. cmake_minimum_required(VERSION 2.8)
  2. project(tigervnc-java Java)
  3. if(NOT VERSION)
  4. set(VERSION 1.9.0)
  5. endif()
  6. find_package(Java)
  7. set(DATA_DIR "${CMAKE_INSTALL_PREFIX}/share")
  8. set(DEFAULT_JAVACFLAGS "-source 7 -target 7 -encoding UTF-8 -Xlint:all,-serial,-cast,-unchecked,-fallthrough,-dep-ann,-deprecation,-rawtypes")
  9. set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING
  10. "Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})")
  11. message(STATUS "Java compiler flags = ${JAVACFLAGS}")
  12. set(CLASSPATH com/tigervnc/vncviewer)
  13. set(SRCDIR ${CMAKE_CURRENT_SOURCE_DIR})
  14. set(BINDIR ${CMAKE_CURRENT_BINARY_DIR})
  15. set(JAVA_KEYSTORE NOTFOUND CACHE STRING "URL of keystore location")
  16. set(JAVA_KEYSTORE_TYPE "jks" CACHE STRING "Type of keystore (Default: \"jks\")")
  17. set(JAVA_KEY_ALIAS NOTFOUND CACHE STRING "Alias for the keystore entry used to generate the signature")
  18. set(JAVA_STOREPASS NOTFOUND CACHE STRING "Password required to access the keystore")
  19. set(JAVA_KEYPASS NOTFOUND CACHE STRING "Password used to protect the private key of the specified keystore entry")
  20. set(JAVA_TSA_URL NOTFOUND CACHE STRING "URL of Time Stamping Authority (TSA)")
  21. if(NOT BUILD)
  22. execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
  23. endif()
  24. execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
  25. execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
  26. string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
  27. string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
  28. string(REGEX REPLACE "\n" "" BUILD ${BUILD})
  29. set(JAVA_SOURCES "")
  30. set(JAVA_CLASSES "")
  31. set(JSCH_CLASSNAMES
  32. DH
  33. DHEC256
  34. DHEC384
  35. DHEC521
  36. DHECN
  37. DHGEX256
  38. DHG1
  39. DHG14
  40. DHGEX
  41. ECDH
  42. JSch
  43. Session
  44. UserAuth
  45. UserAuthKeyboardInteractive
  46. UserAuthPassword
  47. UserAuthPublicKey
  48. UserAuthNone
  49. jce/AES128CBC
  50. jce/AES128CTR
  51. jce/AES192CBC
  52. jce/AES192CTR
  53. jce/AES256CBC
  54. jce/AES256CTR
  55. jce/ARCFOUR
  56. jce/ARCFOUR128
  57. jce/ARCFOUR256
  58. jce/BlowfishCBC
  59. jce/DH
  60. jce/ECDH256
  61. jce/ECDH384
  62. jce/ECDH521
  63. jce/ECDHN
  64. jce/HMAC
  65. jce/HMACMD5
  66. jce/HMACMD596
  67. jce/HMACSHA1
  68. jce/HMACSHA196
  69. jce/HMACSHA256
  70. jce/HMACSHA512
  71. jce/KeyPairGenDSA
  72. jce/KeyPairGenECDSA
  73. jce/KeyPairGenRSA
  74. jce/MD5
  75. jce/PBKDF
  76. jce/Random
  77. jce/SHA1
  78. jce/SHA256
  79. jce/SHA384
  80. jce/SHA512
  81. jce/SignatureDSA
  82. jce/SignatureECDSA
  83. jce/SignatureRSA
  84. jce/TripleDESCBC
  85. jce/TripleDESCTR
  86. jcraft/Compression
  87. jcraft/HMAC
  88. jcraft/HMACMD596
  89. jcraft/HMACMD5
  90. jcraft/HMACSHA196
  91. jcraft/HMACSHA1)
  92. foreach(class ${JSCH_CLASSNAMES})
  93. set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
  94. set(JAVA_CLASSES ${JAVA_CLASSES}
  95. ${BINDIR}/com/jcraft/jsch/${class}.class)
  96. endforeach()
  97. file(GLOB DEPEND_SOURCES
  98. ${SRCDIR}/${CLASSPATH}/*.java
  99. ${SRCDIR}/com/tigervnc/rfb/*.java
  100. ${SRCDIR}/com/tigervnc/rdr/*.java
  101. ${SRCDIR}/com/tigervnc/network/*.java
  102. ${SRCDIR}/com/jcraft/jsch/*.java
  103. ${SRCDIR}/com/jcraft/jsch/jcraft/*.java
  104. ${SRCDIR}/com/jcraft/jsch/jgss/*.java
  105. ${SRCDIR}/com/jcraft/jzlib/*.java)
  106. string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
  107. add_custom_command(OUTPUT ${JAVA_CLASSES}
  108. DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
  109. COMMAND ${JAVA_COMPILE}
  110. ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
  111. ${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
  112. WORKING_DIRECTORY ${SRCDIR})
  113. configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
  114. if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
  115. set(ICONS
  116. tigervnc.ico
  117. tigervnc.png
  118. insecure.png
  119. secure.png)
  120. foreach(icon ${ICONS})
  121. add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/${icon}
  122. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  123. ${SRCDIR}/${CLASSPATH}/${icon} ${BINDIR}/${CLASSPATH}/${icon}
  124. DEPENDS ${SRCDIR}/${CLASSPATH}/${icon})
  125. endforeach()
  126. endif()
  127. string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
  128. string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
  129. add_custom_command(OUTPUT VncViewer.jar
  130. DEPENDS ${JAVA_CLASSES}
  131. ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
  132. ${BINDIR}/${CLASSPATH}/timestamp
  133. ${BINDIR}/${CLASSPATH}/tigervnc.ico
  134. ${BINDIR}/${CLASSPATH}/tigervnc.png
  135. ${BINDIR}/${CLASSPATH}/insecure.png
  136. ${BINDIR}/${CLASSPATH}/secure.png
  137. COMMAND ${JAVA_ARCHIVE}
  138. ARGS cfm VncViewer.jar
  139. ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
  140. ${CLASSPATH}/timestamp
  141. ${CLASSPATH}/*.class
  142. com/tigervnc/rfb/*.class
  143. com/tigervnc/rdr/*.class
  144. com/tigervnc/network/*.class
  145. com/jcraft/jzlib/*.class
  146. com/jcraft/jsch/jcraft/*.class
  147. com/jcraft/jsch/jce/*.class
  148. com/jcraft/jsch/*.class
  149. com/tigervnc/vncviewer/*.png
  150. com/tigervnc/vncviewer/tigervnc.ico
  151. COMMAND ${CMAKE_COMMAND}
  152. ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
  153. -DJAVA_KEYSTORE=${JAVA_KEYSTORE}
  154. -DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
  155. -DJAVA_STOREPASS=${JAVA_STOREPASS}
  156. -DJAVA_KEYPASS=${JAVA_KEYPASS}
  157. -DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
  158. -DJAVA_TSA_URL=${JAVA_TSA_URL}
  159. -P ${SRCDIR}/cmake/SignJar.cmake)
  160. add_custom_target(java ALL DEPENDS VncViewer.jar)
  161. if(NOT WIN32)
  162. install(FILES
  163. ${BINDIR}/VncViewer.jar
  164. ${SRCDIR}/${CLASSPATH}/README
  165. ${SRCDIR}/${CLASSPATH}/index.vnc
  166. ${SRCDIR}/${CLASSPATH}/favicon.ico
  167. DESTINATION ${DATA_DIR}/vnc/classes)
  168. endif()