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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. cmake_minimum_required(VERSION 2.8.11)
  2. project(tigervnc-java Java)
  3. if(NOT VERSION)
  4. set(VERSION 1.10.0)
  5. endif()
  6. find_package(Java)
  7. set(DATA_DIR "${CMAKE_INSTALL_PREFIX}/share")
  8. set(DEFAULT_JAVACFLAGS "-source 8 -target 8 -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. STRING(TIMESTAMP BUILD "%Y%m%d" UTC)
  23. endif()
  24. STRING(TIMESTAMP JAVA_DATE "%Y-%m-%d" UTC)
  25. STRING(TIMESTAMP JAVA_TIME "%H:%M:%S" UTC)
  26. set(JAVA_SOURCES "")
  27. set(JAVA_CLASSES "")
  28. set(JSCH_CLASSNAMES
  29. DH
  30. DHEC256
  31. DHEC384
  32. DHEC521
  33. DHECN
  34. DHGEX256
  35. DHG1
  36. DHG14
  37. DHGEX
  38. ECDH
  39. JSch
  40. Session
  41. UserAuth
  42. UserAuthKeyboardInteractive
  43. UserAuthPassword
  44. UserAuthPublicKey
  45. UserAuthNone
  46. jce/AES128CBC
  47. jce/AES128CTR
  48. jce/AES192CBC
  49. jce/AES192CTR
  50. jce/AES256CBC
  51. jce/AES256CTR
  52. jce/ARCFOUR
  53. jce/ARCFOUR128
  54. jce/ARCFOUR256
  55. jce/BlowfishCBC
  56. jce/DH
  57. jce/ECDH256
  58. jce/ECDH384
  59. jce/ECDH521
  60. jce/ECDHN
  61. jce/HMAC
  62. jce/HMACMD5
  63. jce/HMACMD596
  64. jce/HMACSHA1
  65. jce/HMACSHA196
  66. jce/HMACSHA256
  67. jce/HMACSHA512
  68. jce/KeyPairGenDSA
  69. jce/KeyPairGenECDSA
  70. jce/KeyPairGenRSA
  71. jce/MD5
  72. jce/PBKDF
  73. jce/Random
  74. jce/SHA1
  75. jce/SHA256
  76. jce/SHA384
  77. jce/SHA512
  78. jce/SignatureDSA
  79. jce/SignatureECDSA
  80. jce/SignatureRSA
  81. jce/TripleDESCBC
  82. jce/TripleDESCTR
  83. jcraft/Compression
  84. jcraft/HMAC
  85. jcraft/HMACMD596
  86. jcraft/HMACMD5
  87. jcraft/HMACSHA196
  88. jcraft/HMACSHA1)
  89. foreach(class ${JSCH_CLASSNAMES})
  90. set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
  91. set(JAVA_CLASSES ${JAVA_CLASSES}
  92. ${BINDIR}/com/jcraft/jsch/${class}.class)
  93. endforeach()
  94. file(GLOB DEPEND_SOURCES
  95. ${SRCDIR}/${CLASSPATH}/*.java
  96. ${SRCDIR}/com/tigervnc/rfb/*.java
  97. ${SRCDIR}/com/tigervnc/rdr/*.java
  98. ${SRCDIR}/com/tigervnc/network/*.java
  99. ${SRCDIR}/com/jcraft/jsch/*.java
  100. ${SRCDIR}/com/jcraft/jsch/jcraft/*.java
  101. ${SRCDIR}/com/jcraft/jsch/jgss/*.java
  102. ${SRCDIR}/com/jcraft/jzlib/*.java)
  103. string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
  104. add_custom_command(OUTPUT ${JAVA_CLASSES}
  105. DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
  106. COMMAND ${JAVA_COMPILE}
  107. ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
  108. ${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
  109. WORKING_DIRECTORY ${SRCDIR})
  110. configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
  111. if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
  112. set(ICONS
  113. tigervnc.ico
  114. tigervnc.png
  115. insecure.png
  116. secure.png)
  117. foreach(icon ${ICONS})
  118. add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/${icon}
  119. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  120. ${SRCDIR}/${CLASSPATH}/${icon} ${BINDIR}/${CLASSPATH}/${icon}
  121. DEPENDS ${SRCDIR}/${CLASSPATH}/${icon})
  122. endforeach()
  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.ico
  131. ${BINDIR}/${CLASSPATH}/tigervnc.png
  132. ${BINDIR}/${CLASSPATH}/insecure.png
  133. ${BINDIR}/${CLASSPATH}/secure.png
  134. COMMAND ${JAVA_ARCHIVE}
  135. ARGS cfm VncViewer.jar
  136. ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
  137. ${CLASSPATH}/timestamp
  138. ${CLASSPATH}/*.class
  139. com/tigervnc/rfb/*.class
  140. com/tigervnc/rdr/*.class
  141. com/tigervnc/network/*.class
  142. com/jcraft/jzlib/*.class
  143. com/jcraft/jsch/jcraft/*.class
  144. com/jcraft/jsch/jce/*.class
  145. com/jcraft/jsch/*.class
  146. com/tigervnc/vncviewer/*.png
  147. com/tigervnc/vncviewer/tigervnc.ico
  148. COMMAND ${CMAKE_COMMAND}
  149. ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
  150. -DJAVA_KEYSTORE=${JAVA_KEYSTORE}
  151. -DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
  152. -DJAVA_STOREPASS=${JAVA_STOREPASS}
  153. -DJAVA_KEYPASS=${JAVA_KEYPASS}
  154. -DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
  155. -DJAVA_TSA_URL=${JAVA_TSA_URL}
  156. -P ${SRCDIR}/cmake/SignJar.cmake)
  157. add_custom_target(java ALL DEPENDS VncViewer.jar)