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.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. cmake_minimum_required(VERSION 2.8)
  2. project(tigervnc-java Java)
  3. if(NOT VERSION)
  4. set(VERSION 1.5.80)
  5. endif()
  6. find_package(Java)
  7. set(DEFAULT_JAVACFLAGS "-source 1.5 -target 1.5 -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. execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
  22. endif()
  23. execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
  24. execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
  25. string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
  26. string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
  27. string(REGEX REPLACE "\n" "" BUILD ${BUILD})
  28. set(JAVA_SOURCES "")
  29. set(JAVA_CLASSES "")
  30. set(JSCH_CLASSNAMES
  31. DH
  32. DHG1
  33. DHG14
  34. DHGEX
  35. JSch
  36. Session
  37. UserAuth
  38. UserAuthKeyboardInteractive
  39. UserAuthPassword
  40. UserAuthPublicKey
  41. UserAuthNone
  42. jce/AES128CBC
  43. jce/AES192CTR
  44. jce/ARCFOUR128
  45. jce/BlowfishCBC
  46. jce/HMACMD5
  47. jce/KeyPairGenDSA
  48. jce/Random
  49. jce/SignatureRSA
  50. jce/AES128CTR
  51. jce/AES256CBC
  52. jce/ARCFOUR256
  53. jce/DH
  54. jce/HMACSHA196
  55. jce/KeyPairGenRSA
  56. jce/SHA1
  57. jce/TripleDESCBC
  58. jce/AES192CBC
  59. jce/AES256CTR
  60. jce/ARCFOUR
  61. jce/HMACMD596
  62. jce/HMACSHA1
  63. jce/MD5
  64. jce/SignatureDSA
  65. jce/TripleDESCTR
  66. jcraft/Compression
  67. jcraft/HMAC
  68. jcraft/HMACMD596
  69. jcraft/HMACMD5
  70. jcraft/HMACSHA196
  71. jcraft/HMACSHA1)
  72. foreach(class ${JSCH_CLASSNAMES})
  73. set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
  74. set(JAVA_CLASSES ${JAVA_CLASSES}
  75. ${BINDIR}/com/jcraft/jsch/${class}.class)
  76. endforeach()
  77. file(GLOB DEPEND_SOURCES
  78. ${SRCDIR}/${CLASSPATH}/*.java
  79. ${SRCDIR}/com/tigervnc/rfb/*.java
  80. ${SRCDIR}/com/tigervnc/rdr/*.java
  81. ${SRCDIR}/com/tigervnc/network/*.java
  82. ${SRCDIR}/com/jcraft/jsch/*.java
  83. ${SRCDIR}/com/jcraft/jsch/jcraft/*.java
  84. ${SRCDIR}/com/jcraft/jsch/jgss/*.java
  85. ${SRCDIR}/com/jcraft/jzlib/*.java)
  86. string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
  87. add_custom_command(OUTPUT ${JAVA_CLASSES}
  88. DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
  89. COMMAND ${JAVA_COMPILE}
  90. ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
  91. ${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
  92. WORKING_DIRECTORY ${SRCDIR})
  93. configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
  94. if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
  95. add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.png
  96. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  97. ${SRCDIR}/${CLASSPATH}/tigervnc.png ${BINDIR}/${CLASSPATH}/tigervnc.png
  98. DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.png)
  99. add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/tigervnc.ico
  100. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  101. ${SRCDIR}/${CLASSPATH}/tigervnc.ico ${BINDIR}/${CLASSPATH}/tigervnc.ico
  102. DEPENDS ${SRCDIR}/${CLASSPATH}/tigervnc.ico)
  103. endif()
  104. string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
  105. string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
  106. add_custom_command(OUTPUT VncViewer.jar
  107. DEPENDS ${JAVA_CLASSES}
  108. ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
  109. ${BINDIR}/${CLASSPATH}/timestamp
  110. ${BINDIR}/${CLASSPATH}/tigervnc.png
  111. ${BINDIR}/${CLASSPATH}/tigervnc.ico
  112. COMMAND ${JAVA_ARCHIVE}
  113. ARGS cfm VncViewer.jar
  114. ${SRCDIR}/${CLASSPATH}/MANIFEST.MF
  115. ${CLASSPATH}/timestamp
  116. ${CLASSPATH}/*.class
  117. com/tigervnc/rfb/*.class
  118. com/tigervnc/rdr/*.class
  119. com/tigervnc/network/*.class
  120. com/jcraft/jzlib/*.class
  121. com/jcraft/jsch/jcraft/*.class
  122. com/jcraft/jsch/jce/*.class
  123. com/jcraft/jsch/*.class
  124. com/tigervnc/vncviewer/tigervnc.png
  125. com/tigervnc/vncviewer/tigervnc.ico
  126. COMMAND ${CMAKE_COMMAND}
  127. ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
  128. -DJAVA_KEYSTORE=${JAVA_KEYSTORE}
  129. -DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
  130. -DJAVA_STOREPASS=${JAVA_STOREPASS}
  131. -DJAVA_KEYPASS=${JAVA_KEYPASS}
  132. -DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
  133. -DJAVA_TSA_URL=${JAVA_TSA_URL}
  134. -P ${SRCDIR}/cmake/SignJar.cmake)
  135. add_custom_target(java ALL DEPENDS VncViewer.jar)
  136. if(NOT WIN32)
  137. install(FILES
  138. ${BINDIR}/VncViewer.jar
  139. ${SRCDIR}/${CLASSPATH}/README
  140. ${SRCDIR}/${CLASSPATH}/index.vnc
  141. ${SRCDIR}/${CLASSPATH}/favicon.ico
  142. DESTINATION ${DATA_DIR}/vnc/classes)
  143. endif()