blob: f8364fbae3d9b44b2583248dddeaca09da736d9d [file] [log] [blame]
DRCc19ab9e2011-10-07 05:38:00 +00001cmake_minimum_required(VERSION 2.8)
2
3project(tigervnc-java Java)
DRC4f3b2542012-01-17 22:35:43 +00004set(VERSION 1.1.91)
DRCc19ab9e2011-10-07 05:38:00 +00005
DRC7636ad02011-10-04 04:03:34 +00006find_package(Java)
7
DRC27a80a72011-10-05 06:21:58 +00008set(DEFAULT_JAVACFLAGS "-source 1.5 -target 1.5 -Xlint:all,-serial,-cast")
DRC7636ad02011-10-04 04:03:34 +00009set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING
10 "Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})")
11message(STATUS "Java compiler flags = ${JAVACFLAGS}")
12
13set(CLASSPATH com/tigervnc/vncviewer)
14set(JAVA_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/${CLASSPATH})
15set(JAVA_BINDIR ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH})
16
DRCccc09692011-11-08 06:57:58 +000017execute_process(COMMAND "date" "+%b %d %Y" OUTPUT_VARIABLE JAVA_DATE)
18execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE JAVA_TIME)
DRC7636ad02011-10-04 04:03:34 +000019string(REGEX REPLACE "\n" "" JAVA_DATE ${JAVA_DATE})
20string(REGEX REPLACE "\n" "" JAVA_TIME ${JAVA_TIME})
21
22set(JAVA_CLASSNAMES
23 CConn
24 ClipboardDialog
25 DesktopWindow
26 Dialog
27 F8Menu
28 OptionsDialogCallback
29 PasswdDialog
30 PixelBufferImage
31 OptionsDialog
32 ServerDialog
33 UserPrefs
34 VncViewer)
35
DRC7636ad02011-10-04 04:03:34 +000036set(JAVA_SOURCES "")
37set(JAVA_CLASSES_FULL "")
38foreach(class ${JAVA_CLASSNAMES})
39 set(JAVA_SOURCES ${JAVA_SOURCES} ${JAVA_SRCDIR}/${class}.java)
40 set(JAVA_CLASSES_FULL ${JAVA_CLASSES_FULL}
DRCccc09692011-11-08 06:57:58 +000041 ${CMAKE_CURRENT_BINARY_DIR}/${CLASSPATH}/${class}.class)
DRC7636ad02011-10-04 04:03:34 +000042endforeach()
43
44file(GLOB DEPEND_SOURCES
45 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rfb/*.java
46 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/rdr/*.java
Brian Hinz0eaec7d2012-02-03 05:38:23 +000047 ${CMAKE_CURRENT_SOURCE_DIR}/com/tigervnc/network/*.java
DRC7636ad02011-10-04 04:03:34 +000048 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jzlib/*.java)
49
50string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
51add_custom_command(OUTPUT ${JAVA_CLASSES_FULL}
52 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
53 COMMAND ${JAVA_COMPILE}
DRCccc09692011-11-08 06:57:58 +000054 ARGS ${JAVACFLAGS} -cp ${CMAKE_CURRENT_SOURCE_DIR}
55 -d ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_SOURCES})
DRC7636ad02011-10-04 04:03:34 +000056
57configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
58
59add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.png
60 COMMAND ${CMAKE_COMMAND} -E copy_if_different
61 ${JAVA_SRCDIR}/tigervnc.png ${JAVA_BINDIR}/tigervnc.png
62 DEPENDS ${JAVA_SRCDIR}/tigervnc.png)
63
64add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.ico
65 COMMAND ${CMAKE_COMMAND} -E copy_if_different
66 ${JAVA_SRCDIR}/tigervnc.ico ${JAVA_BINDIR}/tigervnc.ico
67 DEPENDS ${JAVA_SRCDIR}/tigervnc.ico)
68
DRCd0002522011-10-05 09:18:55 +000069string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
DRCf50ec7c2011-10-05 09:29:21 +000070string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
DRCd0002522011-10-05 09:18:55 +000071
DRC7636ad02011-10-04 04:03:34 +000072add_custom_command(OUTPUT VncViewer.jar
73 DEPENDS ${JAVA_CLASSES_FULL}
74 ${JAVA_SRCDIR}/MANIFEST.MF
75 ${JAVA_BINDIR}/timestamp
76 ${JAVA_BINDIR}/tigervnc.png
77 ${JAVA_BINDIR}/tigervnc.ico
78 COMMAND ${JAVA_ARCHIVE}
79 ARGS cfm VncViewer.jar
80 ${JAVA_SRCDIR}/MANIFEST.MF
81 com/tigervnc/vncviewer/timestamp
82 com/tigervnc/vncviewer/*.class
83 com/tigervnc/rfb/*.class
84 com/tigervnc/rdr/*.class
Brian Hinz0eaec7d2012-02-03 05:38:23 +000085 com/tigervnc/network/*.class
DRC7636ad02011-10-04 04:03:34 +000086 com/jcraft/jzlib/*.class
87 com/tigervnc/vncviewer/tigervnc.png
88 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +000089 COMMAND ${CMAKE_COMMAND}
90 ARGS -DJava_PATH=${Java_PATH}
91 -DJAR_FILE=${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
DRCccc09692011-11-08 06:57:58 +000092 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/SignJar.cmake)
DRC7636ad02011-10-04 04:03:34 +000093
94add_custom_target(java ALL DEPENDS VncViewer.jar)
95
DRCf50ec7c2011-10-05 09:29:21 +000096if(NOT WIN32)
97 install(FILES
98 ${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
99 ${JAVA_SRCDIR}/README
100 ${JAVA_SRCDIR}/index.vnc
Brian Hinz308b7ed2011-10-14 21:35:40 +0000101 ${JAVA_SRCDIR}/favicon.ico
DRCf50ec7c2011-10-05 09:29:21 +0000102 DESTINATION vnc/classes)
103endif()