blob: f0a884b80875bc531834cf69f35e6dfe80f80e22 [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
47 ${CMAKE_CURRENT_SOURCE_DIR}/com/jcraft/jzlib/*.java)
48
49string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
50add_custom_command(OUTPUT ${JAVA_CLASSES_FULL}
51 DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
52 COMMAND ${JAVA_COMPILE}
DRCccc09692011-11-08 06:57:58 +000053 ARGS ${JAVACFLAGS} -cp ${CMAKE_CURRENT_SOURCE_DIR}
54 -d ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_SOURCES})
DRC7636ad02011-10-04 04:03:34 +000055
56configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
57
58add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.png
59 COMMAND ${CMAKE_COMMAND} -E copy_if_different
60 ${JAVA_SRCDIR}/tigervnc.png ${JAVA_BINDIR}/tigervnc.png
61 DEPENDS ${JAVA_SRCDIR}/tigervnc.png)
62
63add_custom_command(OUTPUT ${JAVA_BINDIR}/tigervnc.ico
64 COMMAND ${CMAKE_COMMAND} -E copy_if_different
65 ${JAVA_SRCDIR}/tigervnc.ico ${JAVA_BINDIR}/tigervnc.ico
66 DEPENDS ${JAVA_SRCDIR}/tigervnc.ico)
67
DRCd0002522011-10-05 09:18:55 +000068string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
DRCf50ec7c2011-10-05 09:29:21 +000069string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
DRCd0002522011-10-05 09:18:55 +000070
DRC7636ad02011-10-04 04:03:34 +000071add_custom_command(OUTPUT VncViewer.jar
72 DEPENDS ${JAVA_CLASSES_FULL}
73 ${JAVA_SRCDIR}/MANIFEST.MF
74 ${JAVA_BINDIR}/timestamp
75 ${JAVA_BINDIR}/tigervnc.png
76 ${JAVA_BINDIR}/tigervnc.ico
77 COMMAND ${JAVA_ARCHIVE}
78 ARGS cfm VncViewer.jar
79 ${JAVA_SRCDIR}/MANIFEST.MF
80 com/tigervnc/vncviewer/timestamp
81 com/tigervnc/vncviewer/*.class
82 com/tigervnc/rfb/*.class
83 com/tigervnc/rdr/*.class
84 com/jcraft/jzlib/*.class
85 com/tigervnc/vncviewer/tigervnc.png
86 com/tigervnc/vncviewer/tigervnc.ico
DRCd0002522011-10-05 09:18:55 +000087 COMMAND ${CMAKE_COMMAND}
88 ARGS -DJava_PATH=${Java_PATH}
89 -DJAR_FILE=${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
DRCccc09692011-11-08 06:57:58 +000090 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/SignJar.cmake)
DRC7636ad02011-10-04 04:03:34 +000091
92add_custom_target(java ALL DEPENDS VncViewer.jar)
93
DRCf50ec7c2011-10-05 09:29:21 +000094if(NOT WIN32)
95 install(FILES
96 ${CMAKE_CURRENT_BINARY_DIR}/VncViewer.jar
97 ${JAVA_SRCDIR}/README
98 ${JAVA_SRCDIR}/index.vnc
Brian Hinz308b7ed2011-10-14 21:35:40 +000099 ${JAVA_SRCDIR}/favicon.ico
DRCf50ec7c2011-10-05 09:29:21 +0000100 DESTINATION vnc/classes)
101endif()