diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..f390767d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,127 @@ +# +# Setup +# + +cmake_minimum_required(VERSION 2.6) + +project(TigerVNC) +set(VERSION 1.0.90) + +# The RC version must always be four comma-separated numbers +set(RCVERSION 1,0,90,0) + +if(MINGW OR CYGWIN) + execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD) + string(REGEX REPLACE "\n" "" BUILD ${BUILD}) +elseif(WIN32) + execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmakescripts/getdate.bat" + OUTPUT_VARIABLE BUILD) + string(REGEX REPLACE "\n" "" BUILD ${BUILD}) +else() + message(FATAL_ERROR "Platform not supported by this build system. Use autotools instead.") +endif() + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}") + +# This only works if building from the command line. There is currently no way +# to set a variable's value based on the build type when using the MSVC IDE. +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(BUILD "${BUILD}d") +endif() + +message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}") + +if(NOT DEFINED BUILD_WINVNC) + if(MSVC) + set(BUILD_WINVNC 1) + else() + set(BUILD_WINVNC 0) + endif() +endif() + +if(MSVC) + # Use the static C library for all build types + foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}") + endif() + endforeach() + + # NOTE: 4244 and 4267 are 64-bit to 32-bit conversion warnings, so normally + # it is not a good idea to disable them, but we do this to duplicate the + # behavior of GCC, which is less strict. + add_definitions(-wd4244 -wd4267 -wd4800 -wd4996) +endif() + +# Detect whether compiler is 64-bit +if((MSVC AND CMAKE_CL_64) OR (CMAKE_SIZEOF_VOID_P MATCHES 8)) + set(64BIT 1) + set(WIN64 1) +endif() + +if(64BIT) + message(STATUS "64-bit build") +else() + message(STATUS "32-bit build") +endif() + +# CMake doesn't properly support resource compilation with MinGW. Boo! +if(MINGW) + if(NOT DEFINED RC) + set(CMAKE_RC_COMPILER_INIT windres) + else() + set(CMAKE_RC_COMPILER_INIT ${RC}) + endif() + enable_language(RC) + message(STATUS "Resource compiler: ${CMAKE_RC_COMPILER}") + set(CMAKE_RC_COMPILE_OBJECT + "<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -o <OBJECT> --output-format=coff <SOURCE>") +endif() + + +add_subdirectory(common) +add_subdirectory(win) + + +# +# Installer +# + +set(INST_NAME ${CMAKE_PROJECT_NAME}) + +if(64BIT) + set(INST_NAME ${INST_NAME}64) + set(INST_DEFS -DWIN64) +endif() + +if(MSVC_IDE) + set(INSTALLERDIR "$(OutDir)") + set(BUILDDIRDEF "-DBUILD_DIR=${INSTALLERDIR}\\") +else() + set(INSTALLERDIR .) + set(BUILDDIRDEF "-DBUILD_DIR=") +endif() + +set(INST_DEPS vncviewer) + +if(BUILD_WINVNC) + set(INST_DEFS ${INST_DEFS} -DBUILD_WINVNC) + set(INST_DEPS ${INST_DEPS} winvnc4 wm_hooks vncconfig) +endif() + +configure_file(win/tigervnc.iss.in tigervnc.iss) + +add_custom_target(installer + iscc -o${INSTALLERDIR} ${INST_DEFS} ${BUILDDIRDEF} -F${INST_NAME} tigervnc.iss + DEPENDS ${INST_DEPS} + SOURCES tigervnc.iss) + +install(FILES ${CMAKE_SOURCE_DIR}/win/README_BINARY.txt + ${CMAKE_SOURCE_DIR}/LICENCE.txt DESTINATION .) |