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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. cmake_minimum_required(VERSION 2.8)
  2. project(tigervnc-java Java)
  3. if(NOT VERSION)
  4. set(VERSION 1.8.80)
  5. endif()
  6. find_package(Java)
  7. set(DATA_DIR "${CMAKE_INSTALL_PREFIX}/share")
  8. set(DEFAULT_JAVACFLAGS "-source 7 -target 7 -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. add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.png
  116. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  117. ${SRCDIR}/${CLASSPATH}/tigervnc.png ${BINDIR}/${CLASSPATH}/tigervnc.png
  118. DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.png)
  119. add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.ico
  120. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  121. ${SRCDIR}/${CLASSPATH}/tigervnc.ico ${BINDIR}/${CLASSPATH}/tigervnc.ico
  122. DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.ico)
  123. endif()
  124. string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
  125. string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
  126. add_custom_command(OUTPUT VncViewer.jar
  127. DEPENDS ${JAVA_CLASSES}
  128. ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
  129. ${BINDIR}/${CLASSPATH}/timestamp
  130. ${BINDIR}/${CLASSPATH}/tigervnc.png
  131. ${BINDIR}/${CLASSPATH}/tigervnc.ico
  132. COMMAND ${JAVA_ARCHIVE}
  133. ARGS cfm VncViewer.jar
  134. ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
  135. ${CLASSPATH}/timestamp
  136. ${CLASSPATH}/*.class
  137. com/tigervnc/rfb/*.class
  138. com/tigervnc/rdr/*.class
  139. com/tigervnc/network/*.class
  140. com/jcraft/jzlib/*.class
  141. com/jcraft/jsch/jcraft/*.class
  142. com/jcraft/jsch/jce/*.class
  143. com/jcraft/jsch/*.class
  144. com/tigervnc/vncviewer/tigervnc.png
  145. com/tigervnc/vncviewer/tigervnc.ico
  146. COMMAND ${CMAKE_COMMAND}
  147. ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
  148. -DJAVA_KEYSTORE=${JAVA_KEYSTORE}
  149. -DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
  150. -DJAVA_STOREPASS=${JAVA_STOREPASS}
  151. -DJAVA_KEYPASS=${JAVA_KEYPASS}
  152. -DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
  153. -DJAVA_TSA_URL=${JAVA_TSA_URL}
  154. -P ${SRCDIR}/cmake/SignJar.cmake)
  155. add_custom_target(java ALL DEPENDS VncViewer.jar)
  156. if(NOT WIN32)
  157. install(FILES
  158. ${BINDIR}/VncViewer.jar
  159. ${SRCDIR}/${CLASSPATH}/README
  160. ${SRCDIR}/${CLASSPATH}/index.vnc
  161. ${SRCDIR}/${CLASSPATH}/favicon.ico
  162. DESTINATION ${DATA_DIR}/vnc/classes)
  163. endif()