| 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) |