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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. cmake_minimum_required(VERSION 2.8)
  2. project(tigervnc-java Java)
  3. set(VERSION 1.2.0)
  4. find_package(Java)
  5. set(DEFAULT_JAVACFLAGS "-source 1.5 -target 1.5 -Xlint:all,-serial,-cast")
  6. set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING
  7. "Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})")
  8. message(STATUS "Java compiler flags = ${JAVACFLAGS}")
  9. set(CLASSPATH com/tigervnc/vncviewer)
  10. set(JAVA_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/${CLASSPATH})
  11. set(JAVA_BINDIR ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH})
  12. execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
  13. execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
  14. string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
  15. string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
  16. set(JAVA_CLASSNAMES
  17. CConn
  18. ClipboardDialog
  19. DesktopWindow
  20. Dialog
  21. F8Menu
  22. OptionsDialogCallback
  23. PasswdDialog
  24. PixelBufferImage
  25. OptionsDialog
  26. ServerDialog
  27. UserPrefs
  28. VncViewer)
  29. set(JAVA_SOURCES "")
  30. set(JAVA_CLASSES_FULL "")
  31. foreach(class ${JAVA_CLASSNAMES})
  32. set(JAVA_SOURCES ${JAVA_SOURCES} ${JAVA_SRCDIR}/${class}.java)
  33. set(JAVA_CLASSES_FULL ${JAVA_CLASSES_FULL}
  34. ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH}/${class}.class)
  35. endforeach()
  36. file(GLOB DEPEND_SOURCES
  37. ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rfb/*.java
  38. ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rdr/*.java
  39. ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jzlib/*.java)
  40. string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
  41. add_custom_command(OUTPUT ${JAVA_CLASSES_FULL}
  42. DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
  43. COMMAND ${JAVA_COMPILE}
  44. ARGS ${JAVACFLAGS} -cp ${CMAKE_CURRENT_SOURCE_DIR}
  45. -d ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_SOURCES})
  46. configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
  47. add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.png
  48. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  49. ${JAVA_SRCDIR}/tigervnc.png ${JAVA_BINDIR}/tigervnc.png
  50. DEPENDS ${JAVA_SRCDIR}/tigervnc.png)
  51. add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.ico
  52. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  53. ${JAVA_SRCDIR}/tigervnc.ico ${JAVA_BINDIR}/tigervnc.ico
  54. DEPENDS ${JAVA_SRCDIR}/tigervnc.ico)
  55. string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
  56. string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
  57. add_custom_command(OUTPUT VncViewer.jar
  58. DEPENDS ${JAVA_CLASSES_FULL}
  59. ${JAVA_SRCDIR}/MANIFEST.MF
  60. ${JAVA_BINDIR}/timestamp
  61. ${JAVA_BINDIR}/tigervnc.png
  62. ${JAVA_BINDIR}/tigervnc.ico
  63. COMMAND ${JAVA_ARCHIVE}
  64. ARGS cfm VncViewer.jar
  65. ${JAVA_SRCDIR}/MANIFEST.MF
  66. com/tigervnc/vncviewer/timestamp
  67. com/tigervnc/vncviewer/*.class
  68. com/tigervnc/rfb/*.class
  69. com/tigervnc/rdr/*.class
  70. com/jcraft/jzlib/*.class
  71. com/tigervnc/vncviewer/tigervnc.png
  72. com/tigervnc/vncviewer/tigervnc.ico
  73. COMMAND ${CMAKE_COMMAND}
  74. ARGS -DJava_PATH=${Java_PATH}
  75. -DJAR_FILE=${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
  76. -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/SignJar.cmake)
  77. add_custom_target(java ALL DEPENDS VncViewer.jar)
  78. if(NOT WIN32)
  79. install(FILES
  80. ${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
  81. ${JAVA_SRCDIR}/README
  82. ${JAVA_SRCDIR}/index.vnc
  83. ${JAVA_SRCDIR}/favicon.ico
  84. DESTINATION vnc/classes)
  85. endif()