blob: da24dcfadc69a392b3a17698064124bce9816dbf [file] [log] [blame] [edit]
cmake_minimum_required(VERSION 2.8.11)
project(tigervnc-java Java)
if(NOT VERSION)
set(VERSION 1.9.80)
endif()
find_package(Java)
set(DATA_DIR "${CMAKE_INSTALL_PREFIX}/share")
set(DEFAULT_JAVACFLAGS "-source 7 -target 7 -encoding UTF-8 -Xlint:all,-serial,-cast,-unchecked,-fallthrough,-dep-ann,-deprecation,-rawtypes")
set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING
"Java compiler flags (Default: ${DEFAULT_JAVACFLAGS})")
message(STATUS "Java compiler flags = ${JAVACFLAGS}")
set(CLASSPATH com/tigervnc/vncviewer)
set(SRCDIR ${CMAKE_CURRENT_SOURCE_DIR})
set(BINDIR ${CMAKE_CURRENT_BINARY_DIR})
set(JAVA_KEYSTORE NOTFOUND CACHE STRING "URL of keystore location")
set(JAVA_KEYSTORE_TYPE "jks" CACHE STRING "Type of keystore (Default: \"jks\")")
set(JAVA_KEY_ALIAS NOTFOUND CACHE STRING "Alias for the keystore entry used to generate the signature")
set(JAVA_STOREPASS NOTFOUND CACHE STRING "Password required to access the keystore")
set(JAVA_KEYPASS NOTFOUND CACHE STRING "Password used to protect the private key of the specified keystore entry")
set(JAVA_TSA_URL NOTFOUND CACHE STRING "URL of Time Stamping Authority (TSA)")
if(NOT BUILD)
STRING(TIMESTAMP BUILD "%Y%m%d" UTC)
endif()
STRING(TIMESTAMP JAVA_DATE "%Y-%m-%d" UTC)
STRING(TIMESTAMP JAVA_TIME "%H:%M:%S" UTC)
set(JAVA_SOURCES "")
set(JAVA_CLASSES "")
set(JSCH_CLASSNAMES
DH
DHEC256
DHEC384
DHEC521
DHECN
DHGEX256
DHG1
DHG14
DHGEX
ECDH
JSch
Session
UserAuth
UserAuthKeyboardInteractive
UserAuthPassword
UserAuthPublicKey
UserAuthNone
jce/AES128CBC
jce/AES128CTR
jce/AES192CBC
jce/AES192CTR
jce/AES256CBC
jce/AES256CTR
jce/ARCFOUR
jce/ARCFOUR128
jce/ARCFOUR256
jce/BlowfishCBC
jce/DH
jce/ECDH256
jce/ECDH384
jce/ECDH521
jce/ECDHN
jce/HMAC
jce/HMACMD5
jce/HMACMD596
jce/HMACSHA1
jce/HMACSHA196
jce/HMACSHA256
jce/HMACSHA512
jce/KeyPairGenDSA
jce/KeyPairGenECDSA
jce/KeyPairGenRSA
jce/MD5
jce/PBKDF
jce/Random
jce/SHA1
jce/SHA256
jce/SHA384
jce/SHA512
jce/SignatureDSA
jce/SignatureECDSA
jce/SignatureRSA
jce/TripleDESCBC
jce/TripleDESCTR
jcraft/Compression
jcraft/HMAC
jcraft/HMACMD596
jcraft/HMACMD5
jcraft/HMACSHA196
jcraft/HMACSHA1)
foreach(class ${JSCH_CLASSNAMES})
set(JAVA_SOURCES ${JAVA_SOURCES} com/jcraft/jsch/${class}.java)
set(JAVA_CLASSES ${JAVA_CLASSES}
${BINDIR}/com/jcraft/jsch/${class}.class)
endforeach()
file(GLOB DEPEND_SOURCES
${SRCDIR}/${CLASSPATH}/*.java
${SRCDIR}/com/tigervnc/rfb/*.java
${SRCDIR}/com/tigervnc/rdr/*.java
${SRCDIR}/com/tigervnc/network/*.java
${SRCDIR}/com/jcraft/jsch/*.java
${SRCDIR}/com/jcraft/jsch/jcraft/*.java
${SRCDIR}/com/jcraft/jsch/jgss/*.java
${SRCDIR}/com/jcraft/jzlib/*.java)
string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
add_custom_command(OUTPUT ${JAVA_CLASSES}
DEPENDS ${JAVA_SOURCES} ${DEPEND_SOURCES}
COMMAND ${JAVA_COMPILE}
ARGS ${JAVACFLAGS} -sourcepath ${SRCDIR} -d ${BINDIR}
${CLASSPATH}/VncViewer.java ${JAVA_SOURCES}
WORKING_DIRECTORY ${SRCDIR})
configure_file(${CLASSPATH}/timestamp.in ${CLASSPATH}/timestamp)
if(NOT "${SRCDIR}" STREQUAL "${BINDIR}")
set(ICONS
tigervnc.ico
tigervnc.png
insecure.png
secure.png)
foreach(icon ${ICONS})
add_custom_command(OUTPUT ${BINDIR}/${CLASSPATH}/${icon}
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${SRCDIR}/${CLASSPATH}/${icon} ${BINDIR}/${CLASSPATH}/${icon}
DEPENDS ${SRCDIR}/${CLASSPATH}/${icon})
endforeach()
endif()
string(REGEX REPLACE "jar" "" Java_PATH ${Java_JAR_EXECUTABLE})
string(REGEX REPLACE ".exe" "" Java_PATH ${Java_PATH})
add_custom_command(OUTPUT VncViewer.jar
DEPENDS ${JAVA_CLASSES}
${SRCDIR}/${CLASSPATH}/MANIFEST.MF
${BINDIR}/${CLASSPATH}/timestamp
${BINDIR}/${CLASSPATH}/tigervnc.ico
${BINDIR}/${CLASSPATH}/tigervnc.png
${BINDIR}/${CLASSPATH}/insecure.png
${BINDIR}/${CLASSPATH}/secure.png
COMMAND ${JAVA_ARCHIVE}
ARGS cfm VncViewer.jar
${SRCDIR}/${CLASSPATH}/MANIFEST.MF
${CLASSPATH}/timestamp
${CLASSPATH}/*.class
com/tigervnc/rfb/*.class
com/tigervnc/rdr/*.class
com/tigervnc/network/*.class
com/jcraft/jzlib/*.class
com/jcraft/jsch/jcraft/*.class
com/jcraft/jsch/jce/*.class
com/jcraft/jsch/*.class
com/tigervnc/vncviewer/*.png
com/tigervnc/vncviewer/tigervnc.ico
COMMAND ${CMAKE_COMMAND}
ARGS -DJava_PATH=${Java_PATH} -DJAR_FILE=${BINDIR}/VncViewer.jar
-DJAVA_KEYSTORE=${JAVA_KEYSTORE}
-DJAVA_KEYSTORE_TYPE=${JAVA_KEYSTORE_TYPE}
-DJAVA_STOREPASS=${JAVA_STOREPASS}
-DJAVA_KEYPASS=${JAVA_KEYPASS}
-DJAVA_KEY_ALIAS=${JAVA_KEY_ALIAS}
-DJAVA_TSA_URL=${JAVA_TSA_URL}
-P ${SRCDIR}/cmake/SignJar.cmake)
add_custom_target(java ALL DEPENDS VncViewer.jar)