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 4.6KB

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