summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt127
-rw-r--r--Makefile.am2
-rw-r--r--cmakescripts/getdate.bat3
-rw-r--r--common/CMakeLists.txt7
-rw-r--r--common/Makefile.am2
-rw-r--r--common/Xregion/CMakeLists.txt2
-rw-r--r--common/Xregion/Makefile.am2
-rw-r--r--common/jpeg/CMakeLists.txt117
-rw-r--r--common/jpeg/Makefile.am12
-rw-r--r--common/jpeg/simd/CMakeLists.txt62
-rw-r--r--common/jpeg/simd/Makefile.am2
-rw-r--r--common/network/CMakeLists.txt4
-rw-r--r--common/network/Makefile.am1
-rw-r--r--common/os/CMakeLists.txt5
-rw-r--r--common/os/Makefile.am1
-rw-r--r--common/rdr/CMakeLists.txt17
-rw-r--r--common/rdr/Makefile.am2
-rw-r--r--common/rfb/CMakeLists.txt70
-rw-r--r--common/rfb/Makefile.am2
-rw-r--r--common/zlib/CMakeLists.txt18
-rw-r--r--common/zlib/Makefile.am8
-rw-r--r--release/BUILDING.txt277
-rw-r--r--win/CMakeLists.txt12
-rw-r--r--win/Makefile.am2
-rw-r--r--win/README_BINARY.txt1
-rw-r--r--win/resdefs.h.in4
-rw-r--r--win/rfb_win32/CMakeLists.txt48
-rw-r--r--win/rfb_win32/Makefile.am2
-rw-r--r--win/tigervnc.iss.in (renamed from win/tigervnc.iss)99
-rw-r--r--win/vncconfig/CMakeLists.txt18
-rw-r--r--win/vncconfig/Makefile.am2
-rw-r--r--win/vncconfig/vncconfig.exe.manifest6422
-rw-r--r--win/vncconfig/vncconfig.rc22
-rw-r--r--win/vncviewer/CMakeLists.txt28
-rw-r--r--win/vncviewer/Makefile.am2
-rw-r--r--win/vncviewer/vncviewer.rc20
-rw-r--r--win/winvnc/CMakeLists.txt33
-rw-r--r--win/winvnc/Makefile.am2
-rw-r--r--win/winvnc/winvnc.rc22
-rw-r--r--win/winvnc/winvnc4.exe.manifest6422
-rw-r--r--win/wm_hooks/wm_hooks.def2
-rw-r--r--win/wm_hooks/wm_hooks.rc16
42 files changed, 1030 insertions, 92 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 .)
diff --git a/Makefile.am b/Makefile.am
index 9b7120e7..b7de812c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -18,3 +18,5 @@ endif
dmg: all
sh $(srcdir)/release/makemacpkg ${PACKAGE_NAME} ${VERSION} ${BUILD} ${srcdir}
+
+EXTRA_DIST = CMakeLists.txt cmakescripts/getdate.bat
diff --git a/cmakescripts/getdate.bat b/cmakescripts/getdate.bat
new file mode 100644
index 00000000..b4251bbb
--- /dev/null
+++ b/cmakescripts/getdate.bat
@@ -0,0 +1,3 @@
+@echo off
+for /f "tokens=1-4 eol=/ DELIMS=/ " %%i in ('date /t') do set BUILD=%%l%%j%%k
+echo %BUILD%
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
new file mode 100644
index 00000000..aaede056
--- /dev/null
+++ b/common/CMakeLists.txt
@@ -0,0 +1,7 @@
+add_subdirectory(os)
+add_subdirectory(zlib)
+add_subdirectory(jpeg)
+add_subdirectory(rdr)
+add_subdirectory(network)
+add_subdirectory(Xregion)
+add_subdirectory(rfb)
diff --git a/common/Makefile.am b/common/Makefile.am
index d8058096..15400c29 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -8,3 +8,5 @@ SUBDIRS += jpeg
endif
SUBDIRS += rdr network Xregion rfb
+
+EXTRA_DIST = CMakeLists.txt
diff --git a/common/Xregion/CMakeLists.txt b/common/Xregion/CMakeLists.txt
new file mode 100644
index 00000000..d12554c4
--- /dev/null
+++ b/common/Xregion/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_library(Xregion STATIC
+ Region.c)
diff --git a/common/Xregion/Makefile.am b/common/Xregion/Makefile.am
index fb6a1c74..7ea4c80f 100644
--- a/common/Xregion/Makefile.am
+++ b/common/Xregion/Makefile.am
@@ -3,3 +3,5 @@ noinst_LTLIBRARIES = libXregion.la
HDRS = region.h Xregion.h
libXregion_la_SOURCES = $(HDRS) Region.c
+
+EXTRA_DIST = CMakeLists.txt
diff --git a/common/jpeg/CMakeLists.txt b/common/jpeg/CMakeLists.txt
new file mode 100644
index 00000000..cd867e72
--- /dev/null
+++ b/common/jpeg/CMakeLists.txt
@@ -0,0 +1,117 @@
+#
+# Setup
+#
+
+cmake_minimum_required(VERSION 2.6)
+
+project(libjpeg-turbo)
+set(VERSION 1.0.90)
+
+if(NOT DEFINED WITH_SIMD)
+ set(WITH_SIMD 1)
+endif()
+
+# Detect whether compiler is 64-bit
+if(MSVC AND CMAKE_CL_64)
+ set(SIMD_X86_64 1)
+ set(64BIT 1)
+elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
+ set(SIMD_X86_64 1)
+ set(64BIT 1)
+endif()
+
+if(64BIT)
+ message(STATUS "64-bit build")
+else()
+ message(STATUS "32-bit build")
+endif()
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/win)
+
+
+#
+# Targets
+#
+
+set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
+ jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
+ jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
+ jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
+ jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
+ jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
+ jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
+
+if(WITH_SIMD)
+ add_definitions(-DWITH_SIMD)
+ add_subdirectory(simd)
+ if(SIMD_X86_64)
+ set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
+ else()
+ set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
+ endif()
+ # This tells CMake that the "source" files haven't been generated yet
+ set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
+else()
+ set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
+ message(STATUS "Not using SIMD acceleration")
+endif()
+
+add_library(jpeg STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
+if(WITH_SIMD)
+ add_dependencies(jpeg simd)
+endif()
+
+add_executable(jpegut jpegut.c turbojpegl.c)
+target_link_libraries(jpegut jpeg)
+
+add_executable(jpgtest jpgtest.cxx bmp.c turbojpegl.c)
+target_link_libraries(jpgtest jpeg)
+
+add_executable(cjpeg cjpeg.c cdjpeg.c rdbmp.c rdgif.c rdppm.c rdswitch.c
+ rdtarga.c)
+set_property(TARGET cjpeg PROPERTY COMPILE_FLAGS
+ "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED")
+target_link_libraries(cjpeg jpeg)
+
+add_executable(djpeg djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrbmp.c wrgif.c
+ wrppm.c wrtarga.c)
+set_property(TARGET djpeg PROPERTY COMPILE_FLAGS
+ "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED")
+target_link_libraries(djpeg jpeg)
+
+add_executable(jpegtran jpegtran.c cdjpeg.c rdswitch.c transupp.c)
+target_link_libraries(jpegtran jpeg)
+
+
+#
+# Tests
+#
+
+enable_testing()
+add_test(jpegut jpegut)
+add_test(cjpeg-int cjpeg -dct int -outfile testoutint.jpg ${CMAKE_CURRENT_SOURCE_DIR}/testorig.ppm)
+add_test(cjpeg-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimgint.jpg testoutint.jpg)
+add_test(cjpeg-fast cjpeg -dct fast -opt -outfile testoutfst.jpg ${CMAKE_CURRENT_SOURCE_DIR}/testorig.ppm)
+add_test(cjpeg-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimgfst.jpg testoutfst.jpg)
+add_test(cjpeg-float cjpeg -dct float -outfile testoutflt.jpg ${CMAKE_CURRENT_SOURCE_DIR}/testorig.ppm)
+if(WITH_SIMD)
+add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimgflt.jpg testoutflt.jpg)
+else()
+add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimgflt-nosimd.jpg testoutflt.jpg)
+endif()
+add_test(djpeg-int djpeg -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_CURRENT_SOURCE_DIR}/testorig.jpg)
+add_test(djpeg-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimgint.ppm testoutint.ppm)
+add_test(djpeg-fast djpeg -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_CURRENT_SOURCE_DIR}/testorig.jpg)
+add_test(djpeg-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimgfst.ppm testoutfst.ppm)
+add_test(djpeg-float djpeg -dct float -ppm -outfile testoutflt.ppm ${CMAKE_CURRENT_SOURCE_DIR}/testorig.jpg)
+if(WITH_SIMD)
+add_test(djpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimgflt.ppm testoutflt.ppm)
+else()
+add_test(djpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testorig.ppm testoutflt.ppm)
+endif()
+add_test(djpeg-256 djpeg -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_CURRENT_SOURCE_DIR}/testorig.jpg)
+add_test(djpeg-256-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimg.bmp testout.bmp)
+add_test(cjpeg-prog cjpeg -dct int -progressive -outfile testoutp.jpg ${CMAKE_CURRENT_SOURCE_DIR}/testorig.ppm)
+add_test(cjpeg-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimgp.jpg testoutp.jpg)
+add_test(jpegtran-prog jpegtran -outfile testoutt.jpg testoutp.jpg)
+add_test(jpegtran-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_CURRENT_SOURCE_DIR}/testimgint.jpg testoutt.jpg)
diff --git a/common/jpeg/Makefile.am b/common/jpeg/Makefile.am
index bae191ae..cd1c2212 100644
--- a/common/jpeg/Makefile.am
+++ b/common/jpeg/Makefile.am
@@ -57,6 +57,18 @@ jpegtran_SOURCES = jpegtran.c rdswitch.c cdjpeg.c transupp.c transupp.h
jpegtran_LDADD = libjpeg.la
+DOCS= README README-turbo.txt LICENSE.txt LGPL.txt
+
+TESTFILES= testorig.jpg testorig.ppm testimg.bmp testimgflt.jpg \
+ testimgfst.jpg testimgint.jpg testimgp.jpg testimgflt.ppm testimgfst.ppm \
+ testimgint.ppm testimgflt-nosimd.jpg
+
+EXTRA_DIST = win $(DOCS) $(TESTFILES) CMakeLists.txt
+
+dist-hook:
+ rm -rf `find $(distdir) -name .svn`
+
+
if WITH_SIMD
test: testclean all
diff --git a/common/jpeg/simd/CMakeLists.txt b/common/jpeg/simd/CMakeLists.txt
new file mode 100644
index 00000000..5be325e9
--- /dev/null
+++ b/common/jpeg/simd/CMakeLists.txt
@@ -0,0 +1,62 @@
+if(NOT DEFINED NASM)
+ set(NASM nasm)
+endif()
+
+if(SIMD_X86_64)
+ set(NAFLAGS -fwin64 -DWIN64 -D__x86_64__ -I${CMAKE_SOURCE_DIR}/win/
+ -I${CMAKE_CURRENT_SOURCE_DIR}/)
+else()
+ set(NAFLAGS -fwin32 -DWIN32 -I${CMAKE_SOURCE_DIR}/win/
+ -I${CMAKE_CURRENT_SOURCE_DIR}/)
+endif()
+
+if(MSVC)
+ set(NAFLAGS ${NAFLAGS} -DMSVC)
+endif()
+
+# 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"
+ OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
+ set(NAFLAGS ${NAFLAGS} -g)
+endif()
+
+if(SIMD_X86_64)
+ set(SIMD_BASENAMES jfsseflt-64 jccolss2-64 jdcolss2-64 jcsamss2-64
+ jdsamss2-64 jdmerss2-64 jcqnts2i-64 jfss2fst-64 jfss2int-64 jiss2red-64
+ jiss2int-64 jiss2fst-64 jcqnts2f-64 jiss2flt-64)
+ message(STATUS "Building x86_64 SIMD extensions")
+else()
+ set(SIMD_BASENAMES jsimdcpu jccolmmx jdcolmmx jcsammmx jdsammmx jdmermmx
+ jcqntmmx jfmmxfst jfmmxint jimmxred jimmxint jimmxfst jcqnt3dn jf3dnflt
+ ji3dnflt jcqntsse jfsseflt jisseflt jccolss2 jdcolss2 jcsamss2 jdsamss2
+ jdmerss2 jcqnts2i jfss2fst jfss2int jiss2red jiss2int jiss2fst jcqnts2f
+ jiss2flt)
+ message(STATUS "Building i386 SIMD extensions")
+endif()
+
+if(MSVC_IDE)
+ set(OBJDIR "${CMAKE_CURRENT_BINARY_DIR}/$(OutDir)")
+else()
+ set(OBJDIR ${CMAKE_CURRENT_BINARY_DIR})
+endif()
+
+foreach(file ${SIMD_BASENAMES})
+ set(DEPFILE "")
+ set(SIMD_SRC ${CMAKE_CURRENT_SOURCE_DIR}/${file}.asm)
+ if(${file} MATCHES col)
+ set(DEPFILE ${SIMD_SRC})
+ string(REGEX REPLACE "col" "clr" DEPFILE ${DEPFILE})
+ endif()
+ if(${file} MATCHES mer)
+ set(DEPFILE ${SIMD_SRC})
+ string(REGEX REPLACE "mer" "mrg" DEPFILE ${DEPFILE})
+ endif()
+ set(SIMD_OBJ ${OBJDIR}/${file}.obj)
+ add_custom_command(OUTPUT ${SIMD_OBJ} DEPENDS ${SIMD_SRC} ${DEPFILE} *.inc
+ COMMAND ${NASM} ${NAFLAGS} ${SIMD_SRC} -o${SIMD_OBJ})
+ set(SIMD_OBJS ${SIMD_OBJS} ${SIMD_OBJ})
+endforeach()
+
+set(SIMD_OBJS ${SIMD_OBJS} PARENT_SCOPE)
+add_custom_target(simd DEPENDS ${SIMD_OBJS})
diff --git a/common/jpeg/simd/Makefile.am b/common/jpeg/simd/Makefile.am
index a114c371..81c23af8 100644
--- a/common/jpeg/simd/Makefile.am
+++ b/common/jpeg/simd/Makefile.am
@@ -4,7 +4,7 @@ BUILT_SOURCES = jsimdcfg.inc
EXTRA_DIST = nasm_lt.sh jcclrmmx.asm jcclrss2.asm jdclrmmx.asm jdclrss2.asm \
jdmrgmmx.asm jdmrgss2.asm jcclrss2-64.asm jdclrss2-64.asm \
- jdmrgss2-64.asm
+ jdmrgss2-64.asm CMakeLists.txt
if SIMD_X86_64
diff --git a/common/network/CMakeLists.txt b/common/network/CMakeLists.txt
new file mode 100644
index 00000000..2afba7c0
--- /dev/null
+++ b/common/network/CMakeLists.txt
@@ -0,0 +1,4 @@
+include_directories(${CMAKE_SOURCE_DIR}/common)
+
+add_library(network STATIC
+ TcpSocket.cxx)
diff --git a/common/network/Makefile.am b/common/network/Makefile.am
index 3db55362..ab8d5ae8 100644
--- a/common/network/Makefile.am
+++ b/common/network/Makefile.am
@@ -6,3 +6,4 @@ libnetwork_la_SOURCES = $(HDRS) TcpSocket.cxx
libnetwork_la_CPPFLAGS = -I$(top_srcdir)/common
+EXTRA_DIST = CMakeLists.txt
diff --git a/common/os/CMakeLists.txt b/common/os/CMakeLists.txt
new file mode 100644
index 00000000..bbeec501
--- /dev/null
+++ b/common/os/CMakeLists.txt
@@ -0,0 +1,5 @@
+include_directories(${CMAKE_SOURCE_DIR}/common)
+
+add_library(os STATIC
+ print.c
+ net.c)
diff --git a/common/os/Makefile.am b/common/os/Makefile.am
index 5e372906..ed98579d 100644
--- a/common/os/Makefile.am
+++ b/common/os/Makefile.am
@@ -6,3 +6,4 @@ libos_la_SOURCES = $(HDRS) print.c net.c
libos_la_CPPFLAGS = -I$(top_srcdir)/common
+EXTRA_DIST = CMakeLists.txt
diff --git a/common/rdr/CMakeLists.txt b/common/rdr/CMakeLists.txt
new file mode 100644
index 00000000..2872fd71
--- /dev/null
+++ b/common/rdr/CMakeLists.txt
@@ -0,0 +1,17 @@
+include_directories(${CMAKE_SOURCE_DIR}/common ${CMAKE_SOURCE_DIR}/common/zlib)
+
+add_library(rdr STATIC
+ Exception.cxx
+ FdInStream.cxx
+ FdOutStream.cxx
+ HexInStream.cxx
+ HexOutStream.cxx
+ InStream.cxx
+ RandomStream.cxx
+ TLSException.cxx
+ TLSInStream.cxx
+ TLSOutStream.cxx
+ ZlibInStream.cxx
+ ZlibOutStream.cxx)
+
+target_link_libraries(rdr zlib os)
diff --git a/common/rdr/Makefile.am b/common/rdr/Makefile.am
index ff741c8b..ef911c24 100644
--- a/common/rdr/Makefile.am
+++ b/common/rdr/Makefile.am
@@ -18,3 +18,5 @@ if INCLUDED_ZLIB
librdr_la_CPPFLAGS += -I$(top_srcdir)/common/zlib
librdr_la_LIBADD += $(top_builddir)/common/zlib/libz.la
endif
+
+EXTRA_DIST = CMakeLists.txt
diff --git a/common/rfb/CMakeLists.txt b/common/rfb/CMakeLists.txt
new file mode 100644
index 00000000..6bfb5fef
--- /dev/null
+++ b/common/rfb/CMakeLists.txt
@@ -0,0 +1,70 @@
+include_directories(${CMAKE_SOURCE_DIR}/common ${CMAKE_SOURCE_DIR}/win
+ ${CMAKE_SOURCE_DIR}/common/jpeg ${CMAKE_SOURCE_DIR}/common/jpeg/win)
+
+add_library(rfb STATIC
+ Blacklist.cxx
+ CConnection.cxx
+ CMsgHandler.cxx
+ CMsgReader.cxx
+ CMsgReaderV3.cxx
+ CMsgWriter.cxx
+ CMsgWriterV3.cxx
+ CSecurityPlain.cxx
+ CSecurityStack.cxx
+ CSecurityVeNCrypt.cxx
+ CSecurityVncAuth.cxx
+ CapsContainer.cxx
+ CapsList.cxx
+ ComparingUpdateTracker.cxx
+ Configuration.cxx
+ ConnParams.cxx
+ Cursor.cxx
+ Decoder.cxx
+ d3des.c
+ Encoder.cxx
+ HTTPServer.cxx
+ HextileDecoder.cxx
+ HextileEncoder.cxx
+ KeyRemapper.cxx
+ LogWriter.cxx
+ Logger.cxx
+ Logger_file.cxx
+ Logger_stdio.cxx
+ Password.cxx
+ PixelBuffer.cxx
+ PixelFormat.cxx
+ RREEncoder.cxx
+ RREDecoder.cxx
+ RawDecoder.cxx
+ RawEncoder.cxx
+ Region.cxx
+ SConnection.cxx
+ SMsgHandler.cxx
+ SMsgReader.cxx
+ SMsgReaderV3.cxx
+ SMsgWriter.cxx
+ SMsgWriterV3.cxx
+ ServerCore.cxx
+ Security.cxx
+ SecurityServer.cxx
+ SecurityClient.cxx
+ SSecurityPlain.cxx
+ SSecurityStack.cxx
+ SSecurityVncAuth.cxx
+ SSecurityVeNCrypt.cxx
+ ScaledPixelBuffer.cxx
+ ScaleFilters.cxx
+ Timer.cxx
+ TightDecoder.cxx
+ TightEncoder.cxx
+ TightPalette.cxx
+ TransImageGetter.cxx
+ UpdateTracker.cxx
+ VNCSConnectionST.cxx
+ VNCServerST.cxx
+ ZRLEEncoder.cxx
+ ZRLEDecoder.cxx
+ encodings.cxx
+ util.cxx)
+
+target_link_libraries(rfb jpeg os)
diff --git a/common/rfb/Makefile.am b/common/rfb/Makefile.am
index ce196c6e..796c10b6 100644
--- a/common/rfb/Makefile.am
+++ b/common/rfb/Makefile.am
@@ -66,3 +66,5 @@ if INCLUDED_JPEG
librfb_la_CPPFLAGS += -I$(top_srcdir)/common/jpeg -I$(top_builddir)/common/jpeg
librfb_la_LIBADD += $(top_builddir)/common/jpeg/libjpeg.la
endif
+
+EXTRA_DIST = CMakeLists.txt
diff --git a/common/zlib/CMakeLists.txt b/common/zlib/CMakeLists.txt
new file mode 100644
index 00000000..3f1db1b8
--- /dev/null
+++ b/common/zlib/CMakeLists.txt
@@ -0,0 +1,18 @@
+add_definitions(-DNO_VIZ -DWINDOWS)
+
+add_library(zlib STATIC
+ adler32.c
+ compress.c
+ crc32.c
+ deflate.c
+ gzclose.c
+ gzlib.c
+ gzread.c
+ gzwrite.c
+ inflate.c
+ infback.c
+ inftrees.c
+ inffast.c
+ trees.c
+ uncompr.c
+ zutil.c)
diff --git a/common/zlib/Makefile.am b/common/zlib/Makefile.am
index a8c73184..743ac5c0 100644
--- a/common/zlib/Makefile.am
+++ b/common/zlib/Makefile.am
@@ -3,6 +3,8 @@ noinst_LTLIBRARIES = libz.la
HDRS = deflate.h infblock.h infcodes.h inffast.h inffixed.h inftrees.h \
infutil.h trees.h zconf.h zlib.h zutil.h
-libz_la_SOURCES = $(HDRS) adler32.c compress.c crc32.c deflate.c gzclose.c \
- gzlib.c gzread.c gzwrite.c inflate.c infback.c inftrees.c inffast.c \
- trees.c uncompr.c zutil.c
+libz_la_SOURCES = $(HDRS) adler32.c compress.c crc32.c deflate.c gzclose.c \
+ gzlib.c gzread.c gzwrite.c inflate.c infback.c inftrees.c inffast.c \
+ trees.c uncompr.c zutil.c
+
+EXTRA_DIST = CMakeLists.txt
diff --git a/release/BUILDING.txt b/release/BUILDING.txt
index 4dc84412..6c08bc31 100644
--- a/release/BUILDING.txt
+++ b/release/BUILDING.txt
@@ -1,5 +1,5 @@
*******************************************************************************
-** Building TigerVNC
+** Building on Unix Platforms (including Cygwin)
*******************************************************************************
@@ -8,9 +8,7 @@ Build Requirements
==================
-- autoconf 2.57 or later
-
-- automake 1.7 or later
-
-- libtool 1.4 or later
-- NASM
@@ -19,9 +17,9 @@ Build Requirements
* NASM 2.07 or later is required for a 64-bit build on OS X. This can be
obtained from MacPorts (http://www.macports.org/).
- The NASM 2.05 RPMs do not work on older Linux systems, such as Enterprise
- Linux 4. On such systems, you can easily build and install NASM 2.05
- from the source RPM by executing the following as root:
+ The NASM 2.05 RPMs do not work on older Linux systems, such as Red Hat
+ Enterprise Linux 4. On such systems, you can easily build and install NASM
+ 2.05 from the source RPM by executing the following as root:
ARCH=`uname -m`
wget http://www.nasm.us/pub/nasm/releasebuilds/2.05.01/nasm-2.05.01-1.src.rpm
@@ -40,6 +38,20 @@ Build Requirements
* OpenSSL v0.9.7 or later
+==================
+Out-of-Tree Builds
+==================
+
+Binary objects, libraries, and executables are generated in the same directory
+from which configure was executed (the "binary directory"), and this directory
+need not necessarily be the same as the TigerVNC source directory. You can
+create multiple independent binary directories, in which different versions of
+TigerVNC can be built from the same source tree using different compilers or
+settings. In the sections below, {build_directory} refers to the binary
+directory, whereas {source_directory} refers to the TigerVNC source directory.
+For in-tree builds, these directories are the same.
+
+
=================
Building TigerVNC
=================
@@ -49,13 +61,14 @@ systems. On 64-bit systems, this may build a 32-bit version of TigerVNC,
depending on the default compiler configuration for your system. See below for
specific build instructions for 64-bit systems.
- cd tigervnc
+ cd {source_directory}
autoreconf -fiv
- sh ./configure [additional configure flags]
+ cd {build_directory}
+ sh {source_directory}/configure [additional configure flags]
make
-NOTE: Running autoreconf is only necessary if building TigerVNC from the SVN
-repository.
+NOTE: Running autoreconf in the source directory is only necessary if building
+TigerVNC from the SVN repository.
Building the TigerVNC server (Xvnc) is a bit trickier. On newer systems, such
as Fedora, Xvnc is typically built to use the X11 shared libraries provided
@@ -70,15 +83,15 @@ distribution automates this process.
The following procedure will build both the TigerVNC viewer and a
"legacy-friendly" version of the TigerVNC server:
- cd tigervnc
- unix/build-xorg init -version 7.4
- unix/build-xorg build -version 7.4 [-static] [additional configure flags]
+ cd {build_directory}
+ sh {source_directory}/unix/build-xorg init -version 7.4
+ sh {source_directory}/unix/build-xorg build -version 7.4 [-static] [additional configure flags]
Passing an argument of "-static" to the build command line will generate a
version of Xvnc that has no external dependencies on the X11 shared libraries
or any other distribution-specific shared libraries. This version of Xvnc
should be transportable across multiple O/S distributions. The legacy-friendly
-build should work on RedHat Enterprise 4, its contemporaries, and later
+build should work on Red Hat Enterprise 4, its contemporaries, and later
systems. It probably will not work on older systems. It has not been tested
on non-Linux systems (yet).
@@ -87,11 +100,11 @@ once the X11 modules and other dependencies have been built the first time.
This is convenient for testing changes that just apply to the TigerVNC source
code. To accomplish this, run:
- unix/build-xorg rebuild [additional make flags]
+ sh {source_directory}/unix/build-xorg rebuild [additional make flags]
For instance,
- unix/build-xorg rebuild clean
+ sh {source_directory}/unix/build-xorg rebuild clean
will clean both the Xvnc and vncviewer builds without destroying any of the
build configuration or module dependencies.
@@ -109,7 +122,7 @@ Add
--host i686-pc-linux-gnu CFLAGS='-O3 -m32' CXXFLAGS='-O3 -m32' LDFLAGS=-m32
-to the configure and build command lines.
+to the configure or build command lines.
64-bit Build on 64-bit OS X
@@ -189,11 +202,219 @@ GnuTLS, add the following monstrosity to the configure command line:
*******************************************************************************
+** Building on Windows (Visual C++ or MinGW)
+*******************************************************************************
+
+
+==================
+Build Requirements
+==================
+
+-- CMake (http://www.cmake.org) v2.6 or later
+
+-- Microsoft Visual C++ 2005 or later
+
+ If you don't already have Visual C++, then the easiest way to get it is by
+ installing the Windows SDK:
+
+ http://msdn.microsoft.com/en-us/windows/bb980924.aspx
+
+ The Windows SDK includes both 32-bit and 64-bit Visual C++ compilers and
+ everything necessary to build TigerVNC.
+
+ * For 32-bit builds, you can also use Microsoft Visual C++ Express
+ Edition. Visual C++ Express Edition is a free download.
+ * If you intend to build TigerVNC from the command line, then add the
+ appropriate compiler and SDK directories to the INCLUDE, LIB, and PATH
+ environment variables. This is generally accomplished by executing
+ vcvars32.bat or vcvars64.bat and SetEnv.cmd. vcvars32.bat and
+ vcvars64.bat are part of Visual C++ and are located in the same directory
+ as the compiler. SetEnv.cmd is part of the Windows SDK. You can pass
+ optional arguments to SetEnv.cmd to specify a 32-bit or 64-bit build
+ environment.
+
+... OR ...
+
+-- MinGW
+
+ GCC v4.1 or later recommended for best performance
+
+-- NASM (http://www.nasm.us/) 0.98 or later (NASM 2.05 or later is required for
+ a 64-bit build)
+
+-- Inno Setup (needed to build the TigerVNC installer)
+ Inno Setup can be downloaded from http://www.jrsoftware.org/isinfo.php.
+ You also need the Inno Setup Preprocessor, which is available in the
+ Inno Setup QuickStart Pack.
+
+ Add the directory containing iscc.exe (for instance,
+ C:\Program Files\Inno Setup 5) to the system or user PATH environment
+ variable prior to building TigerVNC.
+
+
+==================
+Out-of-Tree Builds
+==================
+
+Binary objects, libraries, and executables are generated in the same directory
+from which cmake was executed (the "binary directory"), and this directory need
+not necessarily be the same as the TigerVNC source directory. You can create
+multiple independent binary directories, in which different versions of
+TigerVNC can be built from the same source tree using different compilers or
+settings. In the sections below, {build_directory} refers to the binary
+directory, whereas {source_directory} refers to the TigerVNC source directory.
+For in-tree builds, these directories are the same.
+
+
+=================
+Building TigerVNC
+=================
+
+
+Visual C++ (Command Line)
+-------------------------
+
+ cd {build_directory}
+ cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release {source_directory}
+ nmake
+
+This will build either a 32-bit or a 64-bit version of TigerVNC, depending
+on which version of cl.exe is in the PATH.
+
+
+Visual C++ (IDE)
+----------------
+
+Choose the appropriate CMake generator option for your version of Visual Studio
+(run "cmake" with no arguments for a list of available generators.) For
+instance:
+
+ cd {build_directory}
+ cmake -G "Visual Studio 9 2008" {source_directory}
+
+You can then open ALL_BUILD.vcproj in Visual Studio and build one of the
+configurations in that project ("Debug", "Release", etc.) to generate a full
+build of TigerVNC.
+
+
+MinGW
+-----
+
+ cd {build_directory}
+ cmake -G "MSYS Makefiles" {source_directory}
+ make
+
+This will generate only vncviewer. Currently, Visual C++ must be used to build
+WinVNC.
+
+
+Debug Build
+-----------
+
+Add "-DCMAKE_BUILD_TYPE=Debug" to the cmake command line. Or, if building with
+NMake, remove "-DCMAKE_BUILD_TYPE=Release" (Debug builds are the default with
+NMake.)
+
+
+===================
+Installing TigerVNC
+===================
+
+You can use the build system to install TigerVNC into a directory of your
+choosing (as opposed to creating an installer.) To do this, add:
+
+ -DCMAKE_INSTALL_PREFIX={install_directory}
+
+to the cmake command line.
+
+For example,
+
+ cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=c:\TigerVNC {source_directory}
+ nmake install
+
+If you don't specify CMAKE_INSTALL_PREFIX, then the default is
+c:\Program Files\TigerVNC.
+
+
+=============
+Build Recipes
+=============
+
+
+64-bit MinGW Build on Cygwin
+----------------------------
+
+ cd {build_directory}
+ CC=/usr/bin/x86_64-w64-mingw32-gcc CXX=/usr/bin/x86_64-w64-mingw32-g++ \
+ RC=/usr/bin/x86_64-w64-mingw32-windres \
+ cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \
+ -DCMAKE_AR=/usr/bin/x86_64-w64-mingw32-ar \
+ -DCMAKE_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib {source_directory}
+ make
+
+This produces a 64-bit build of TigerVNC that does not depend on cygwin1.dll or
+other Cygwin DLL's. The mingw64-x86_64-gcc-core and mingw64-x86_64-gcc-g++
+packages (and their dependencies) must be installed.
+
+
+32-bit MinGW Build on Cygwin
+----------------------------
+
+ cd {build_directory}
+ CC=/usr/bin/i686-w64-mingw32-gcc CXX=/usr/bin/i686-w64-mingw32-g++ \
+ RC=/usr/bin/i686-w64-mingw32-windres \
+ cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \
+ -DDCMAKE_AR=/usr/bin/i686-w64-mingw32-ar \
+ -DCMAKE_RANLIB=/usr/bin/i686-w64-mingw32-ranlib {source_directory}
+ make
+
+This produces a 32-bit build of TigerVNC that does not depend on cygwin1.dll or
+other Cygwin DLL's. The mingw64-i686-gcc-core and mingw64-i686-gcc-g++
+packages (and their dependencies) must be installed.
+
+
+MinGW-w64 Build on Windows
+--------------------------
+
+This produces a 64-bit build of TigerVNC using the "native" MinGW-w64 toolchain
+(which is faster than the Cygwin version):
+
+ cd {build_directory}
+ CC={mingw-w64_binary_path}/x86_64-w64-mingw32-gcc \
+ CXX={mingw-w64_binary_path}/x86_64-w64-mingw32-g++ \
+ RC={mingw-w64_binary_path}/x86_64-w64-mingw32-windres \
+ cmake -G "MSYS Makefiles" \
+ -DCMAKE_AR={mingw-w64_binary_path}/x86_64-w64-mingw32-ar \
+ -DCMAKE_RANLIB={mingw-w64_binary_path}/x86_64-w64-mingw32-ranlib \
+ {source_directory}
+ make
+
+
+MinGW Build on Linux
+--------------------
+
+ cd {build_directory}
+ CC={mingw_binary_path}/i386-mingw32-gcc \
+ CXX={mingw_binary_path}/i386-mingw32-g++ \
+ RC={mingw_binary_path}/i386-mingw32-windres \
+ cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \
+ -DCMAKE_AR={mingw_binary_path}/i386-mingw32-ar \
+ -DCMAKE_RANLIB={mingw_binary_path}/i386-mingw32-ranlib \
+ {source_directory}
+ make
+
+
+*******************************************************************************
** Creating Release Packages
*******************************************************************************
The following commands can be used to create various types of release packages:
+
+Unix
+----
+
make dmg
Create Macintosh package/disk image. This requires the PackageMaker
@@ -207,3 +428,25 @@ make udmg
later (OS X 10.4 compatibility SDK required.) If building on OS X 10.6
("Snow Leopard") or later, the 64-bit fork can be made backward compatible
with 10.5 by using the instructions in the "Build Recipes" section.
+
+
+Windows
+-------
+
+If using NMake:
+
+ cd {build_directory}
+ nmake installer
+
+If using MinGW:
+
+ cd {build_directory}
+ make installer
+
+If using the Visual Studio IDE, build the "installer" project.
+
+The installer package (TigerVNC[64].exe) will be located under
+{build_directory}. If building using the Visual Studio IDE, then the installer
+package will be located in a subdirectory with the same name as the
+configuration you built (such as {build_directory}\Debug\ or
+{build_directory}\Release\).
diff --git a/win/CMakeLists.txt b/win/CMakeLists.txt
new file mode 100644
index 00000000..ee0a5c02
--- /dev/null
+++ b/win/CMakeLists.txt
@@ -0,0 +1,12 @@
+add_definitions(-D_WIN32_IE=0x0500 -D_WIN32_WINNT=0x0500)
+
+include_directories(${CMAKE_SOURCE_DIR}/common ${CMAKE_SOURCE_DIR}/win)
+
+configure_file(resdefs.h.in resdefs.h)
+
+add_subdirectory(rfb_win32)
+add_subdirectory(vncviewer)
+if(BUILD_WINVNC)
+add_subdirectory(vncconfig)
+add_subdirectory(winvnc)
+endif()
diff --git a/win/Makefile.am b/win/Makefile.am
index 7f2d96cc..372b6991 100644
--- a/win/Makefile.am
+++ b/win/Makefile.am
@@ -4,4 +4,4 @@ if BUILD_WINVNC
SUBDIRS += vncconfig winvnc
endif
-EXTRA_DIST = logmessages/messages.h
+EXTRA_DIST = logmessages/messages.h CMakeLists.txt
diff --git a/win/README_BINARY.txt b/win/README_BINARY.txt
index 36dff100..fbef3521 100644
--- a/win/README_BINARY.txt
+++ b/win/README_BINARY.txt
@@ -5,6 +5,7 @@ TigerVNC Binary Distribution for Windows platforms
Copyright (C) 2002-2004 RealVNC Ltd. All Rights Reserved.
Copyright (C) 2000-2004 Constantin Kaplinsky.
Copyright (C) 2004-2009 Peter Astrand for Cendio AB
+Copyright (C) 2009-2010 D. R. Commander
This software is distributed under the GNU General Public Licence as
published by the Free Software Foundation. See the file LICENCE.TXT
diff --git a/win/resdefs.h.in b/win/resdefs.h.in
new file mode 100644
index 00000000..b61db53e
--- /dev/null
+++ b/win/resdefs.h.in
@@ -0,0 +1,4 @@
+#define __VERSIONSTR "@VERSION@\0"
+#define __RCVERSION @RCVERSION@
+#define __RCVERSIONSTR "@RCVERSION@\0"
+#cmakedefine WIN64
diff --git a/win/rfb_win32/CMakeLists.txt b/win/rfb_win32/CMakeLists.txt
new file mode 100644
index 00000000..60af6db5
--- /dev/null
+++ b/win/rfb_win32/CMakeLists.txt
@@ -0,0 +1,48 @@
+set(RFB_WIN32_SOURCES
+ AboutDialog.cxx
+ CKeyboard.cxx
+ Clipboard.cxx
+ CPointer.cxx
+ CurrentUser.cxx
+ DeviceContext.cxx
+ DeviceFrameBuffer.cxx
+ Dialog.cxx
+ DIBSectionBuffer.cxx
+ DynamicFn.cxx
+ EventManager.cxx
+ LaunchProcess.cxx
+ ListViewControl.cxx
+ LowLevelKeyEvents.cxx
+ MonitorInfo.cxx
+ MsgWindow.cxx
+ OSVersion.cxx
+ ProgressControl.cxx
+ RegConfig.cxx
+ Registry.cxx
+ ScaledDIBSectionBuffer.cxx
+ SDisplayCorePolling.cxx
+ SDisplayCoreWMHooks.cxx
+ SDisplay.cxx
+ Security.cxx
+ Service.cxx
+ SInput.cxx
+ SocketManager.cxx
+ TCharArray.cxx
+ Threading.cxx
+ ToolBar.cxx
+ TsSessions.cxx
+ Win32Util.cxx
+ WMCursor.cxx
+ WMHooks.cxx
+ WMNotifier.cxx
+ WMPoller.cxx
+ WMShatter.cxx
+ WMWindowCopyRect.cxx)
+
+if(BUILD_WINVNC)
+ set(RFB_WIN32_SOURCES ${RFB_WIN32_SOURCES} CleanDesktop.cxx)
+endif()
+
+add_library(rfb_win32 STATIC ${RFB_WIN32_SOURCES})
+
+target_link_libraries(rfb_win32 user32.lib comctl32.lib version.lib)
diff --git a/win/rfb_win32/Makefile.am b/win/rfb_win32/Makefile.am
index 74f74e8e..80d9286f 100644
--- a/win/rfb_win32/Makefile.am
+++ b/win/rfb_win32/Makefile.am
@@ -104,3 +104,5 @@ endif
librfb_win32_la_CPPFLAGS = -I$(top_srcdir)/common -I$(top_srcdir)/win
librfb_win32_la_LIBADD =
+
+EXTRA_DIST = CMakeLists.txt
diff --git a/win/tigervnc.iss b/win/tigervnc.iss.in
index ae7697af..2d967a45 100644
--- a/win/tigervnc.iss
+++ b/win/tigervnc.iss.in
@@ -1,42 +1,57 @@
-
-[Setup]
-OutputDir=.
-AppName=TigerVNC
-AppVerName=TigerVNC 1.0.90
-AppVersion=1.0.90
-AppPublisher=TigerVNC project
-AppPublisherURL=http://tigervnc.org
-DefaultDirName={pf}\TigerVNC
-DefaultGroupName=TigerVNC
-LicenseFile=LICENCE.txt
-
-[Files]
-Source: "Release\winvnc4.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
-Source: "Release\wm_hooks.dll"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
-Source: "Release\vncviewer.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
-Source: "Release\vncconfig.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
-Source: "README_BINARY.txt"; DestDir: "{app}"; Flags: ignoreversion
-Source: "LICENCE.txt"; DestDir: "{app}"; Flags: ignoreversion
-
-
-[Icons]
-Name: "{group}\TigerVNC Viewer"; FileName: "{app}\vncviewer.exe";
-Name: "{group}\Listening TigerVNC Viewer"; FileName: "{app}\vncviewer.exe"; Parameters: "-listen";
-
-Name: "{group}\VNC Server (User-Mode)\Run VNC Server"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole";
-Name: "{group}\VNC Server (User-Mode)\Configure VNC Server"; FileName: "{app}\vncconfig.exe"; Parameters: "-user";
-
-Name: "{group}\VNC Server (Service-Mode)\Configure VNC Service"; FileName: "{app}\vncconfig.exe"; Parameters: "-noconsole -service";
-Name: "{group}\VNC Server (Service-Mode)\Register VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-register";
-Name: "{group}\VNC Server (Service-Mode)\Unregister VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-unregister";
-Name: "{group}\VNC Server (Service-Mode)\Start VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole -start";
-Name: "{group}\VNC Server (Service-Mode)\Stop VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole -stop";
-Name: "{group}\License"; FileName: "{app}\LICENCE.txt";
-
-[Tasks]
-Name: installservice; Description: "&Register new TigerVNC Server as a system service"; GroupDescription: "Server configuration:";
-Name: startservice; Description: "&Start or restart TigerVNC service"; GroupDescription: "Server configuration:";
-
-[Run]
-Filename: "{app}\winvnc4.exe"; Parameters: "-register"; Tasks: installservice
-Filename: "net"; Parameters: "start winvnc4"; Tasks: startservice
+[Setup]
+#ifdef WIN64
+ArchitecturesInstallIn64BitMode=x64
+AppName=TigerVNC 64-bit
+AppVerName=TigerVNC 64-bit @VERSION@ (@BUILD@)
+#else
+AppName=TigerVNC
+AppVerName=TigerVNC v@VERSION@ (@BUILD@)
+#endif
+AppVersion=@VERSION@
+AppPublisher=TigerVNC project
+AppPublisherURL=http://tigervnc.org
+DefaultDirName={pf}\TigerVNC
+#ifdef WIN64
+DefaultGroupName=TigerVNC 64-bit
+#else
+DefaultGroupName=TigerVNC
+#endif
+LicenseFile=@CMAKE_SOURCE_DIR@\LICENCE.txt
+
+[Files]
+#ifdef BUILD_WINVNC
+Source: "@CMAKE_CURRENT_BINARY_DIR@\win\winvnc\{#BUILD_DIR}winvnc4.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
+Source: "@CMAKE_CURRENT_BINARY_DIR@\win\winvnc\{#BUILD_DIR}wm_hooks.dll"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
+Source: "@CMAKE_CURRENT_BINARY_DIR@\win\vncconfig\{#BUILD_DIR}vncconfig.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
+#endif
+Source: "@CMAKE_CURRENT_BINARY_DIR@\win\vncviewer\{#BUILD_DIR}vncviewer.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
+Source: "@CMAKE_SOURCE_DIR@\win\README_BINARY.txt"; DestDir: "{app}"; Flags: ignoreversion
+Source: "@CMAKE_SOURCE_DIR@\LICENCE.txt"; DestDir: "{app}"; Flags: ignoreversion
+
+
+[Icons]
+Name: "{group}\TigerVNC Viewer"; FileName: "{app}\vncviewer.exe";
+Name: "{group}\Listening TigerVNC Viewer"; FileName: "{app}\vncviewer.exe"; Parameters: "-listen";
+
+#ifdef BUILD_WINVNC
+Name: "{group}\VNC Server (User-Mode)\Run VNC Server"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole";
+Name: "{group}\VNC Server (User-Mode)\Configure VNC Server"; FileName: "{app}\vncconfig.exe"; Parameters: "-user";
+
+Name: "{group}\VNC Server (Service-Mode)\Configure VNC Service"; FileName: "{app}\vncconfig.exe"; Parameters: "-noconsole -service";
+Name: "{group}\VNC Server (Service-Mode)\Register VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-register";
+Name: "{group}\VNC Server (Service-Mode)\Unregister VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-unregister";
+Name: "{group}\VNC Server (Service-Mode)\Start VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole -start";
+Name: "{group}\VNC Server (Service-Mode)\Stop VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole -stop";
+#endif
+Name: "{group}\License"; FileName: "{app}\LICENCE.txt";
+Name: "{group}\Uninstall TigerVNC"; FileName: "{uninstallexe}"; WorkingDir: "{app}";
+
+#ifdef BUILD_WINVNC
+[Tasks]
+Name: installservice; Description: "&Register new TigerVNC Server as a system service"; GroupDescription: "Server configuration:";
+Name: startservice; Description: "&Start or restart TigerVNC service"; GroupDescription: "Server configuration:";
+
+[Run]
+Filename: "{app}\winvnc4.exe"; Parameters: "-register"; Tasks: installservice
+Filename: "net"; Parameters: "start winvnc4"; Tasks: startservice
+#endif
diff --git a/win/vncconfig/CMakeLists.txt b/win/vncconfig/CMakeLists.txt
new file mode 100644
index 00000000..9883dbd8
--- /dev/null
+++ b/win/vncconfig/CMakeLists.txt
@@ -0,0 +1,18 @@
+include_directories(${CMAKE_BINARY_DIR}/win)
+
+# Disable auto-generated manifests, since we have our own
+if(MSVC)
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
+endif()
+
+add_executable(vncconfig WIN32
+ Legacy.cxx
+ PasswordDialog.cxx
+ vncconfig.cxx
+ vncconfig.rc)
+
+target_link_libraries(vncconfig rfb_win32 rfb Xregion network rdr ws2_32.lib)
+
+install(TARGETS vncconfig
+ RUNTIME DESTINATION .
+)
diff --git a/win/vncconfig/Makefile.am b/win/vncconfig/Makefile.am
index 84d1b0ff..b22b28c1 100644
--- a/win/vncconfig/Makefile.am
+++ b/win/vncconfig/Makefile.am
@@ -14,7 +14,7 @@ vncconfig_LDADD = $(top_builddir)/win/rfb_win32/librfb_win32.la \
$(top_builddir)/common/rdr/librdr.la -lws2_32 -lgdi32 -lversion -lole32 \
-lcomctl32 resources.o
-EXTRA_DIST = vncconfig.ico vncconfig.rc vncconfig.exe.manifest
+EXTRA_DIST = vncconfig.ico vncconfig.rc vncconfig.exe.manifest CMakeLists.txt
resources.o: vncconfig.rc
$(WINDRES) $^ -o $@
diff --git a/win/vncconfig/vncconfig.exe.manifest64 b/win/vncconfig/vncconfig.exe.manifest64
new file mode 100644
index 00000000..10eefa30
--- /dev/null
+++ b/win/vncconfig/vncconfig.exe.manifest64
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="4.0.0.26"
+ processorArchitecture="AMD64"
+ name="TigerVNC.vncconfig.exe"
+ type="win32"
+/>
+<description>.NET control deployment tool</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="AMD64"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
diff --git a/win/vncconfig/vncconfig.rc b/win/vncconfig/vncconfig.rc
index 7292f1a5..df6cfdde 100644
--- a/win/vncconfig/vncconfig.rc
+++ b/win/vncconfig/vncconfig.rc
@@ -1,6 +1,7 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
+#include "resdefs.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
@@ -438,8 +439,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,90,0
- PRODUCTVERSION 1,0,90,0
+ FILEVERSION __RCVERSION
+ PRODUCTVERSION __RCVERSION
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -456,15 +457,20 @@ BEGIN
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "TigerVNC Project\0"
+ #ifdef WIN64
+ VALUE "FileDescription", "TigerVNC Server Configuration Applet for Win64\0"
+ VALUE "ProductName", "TigerVNC Server Configuration Applet for Win64\0"
+ #else
VALUE "FileDescription", "TigerVNC Server Configuration Applet for Win32\0"
- VALUE "FileVersion", "1.0.90\0"
+ VALUE "ProductName", "TigerVNC Server Configuration Applet for Win32\0"
+ #endif
+ VALUE "FileVersion", __RCVERSIONSTR
VALUE "InternalName", "vncconfig\0"
- VALUE "LegalCopyright", "Copyright (C) 1998-2009 [many holders]\0"
+ VALUE "LegalCopyright", "Copyright (C) 1998-2010 [many holders]\0"
VALUE "LegalTrademarks", "TigerVNC\0"
VALUE "OriginalFilename", "vncconfig.exe\0"
VALUE "PrivateBuild", "\0"
- VALUE "ProductName", "TigerVNC Configurator\0"
- VALUE "ProductVersion", "1.0.90\0"
+ VALUE "ProductVersion", __VERSIONSTR
VALUE "SpecialBuild", "\0"
END
END
@@ -482,7 +488,11 @@ END
// 24
//
+#ifdef WIN64
+IDR_MANIFEST 24 DISCARDABLE "vncconfig.exe.manifest64"
+#else
IDR_MANIFEST 24 DISCARDABLE "vncconfig.exe.manifest"
+#endif
#endif // English (U.K.) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/win/vncviewer/CMakeLists.txt b/win/vncviewer/CMakeLists.txt
new file mode 100644
index 00000000..863e2d07
--- /dev/null
+++ b/win/vncviewer/CMakeLists.txt
@@ -0,0 +1,28 @@
+include_directories(${CMAKE_BINARY_DIR}/win)
+
+# Disable auto-generated manifests, since we have our own
+if(MSVC)
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
+endif()
+
+add_executable(vncviewer WIN32
+ buildTime.cxx
+ CConn.cxx
+ CConnOptions.cxx
+ CConnThread.cxx
+ ConnectingDialog.cxx
+ ConnectionDialog.cxx
+ DesktopWindow.cxx
+ InfoDialog.cxx
+ OptionsDialog.cxx
+ UserPasswdDialog.cxx
+ ViewerToolBar.cxx
+ vncviewer.cxx
+ vncviewer.rc)
+
+target_link_libraries(vncviewer rfb rfb_win32 Xregion network rdr
+ ws2_32.lib)
+
+install(TARGETS vncviewer
+ RUNTIME DESTINATION .
+)
diff --git a/win/vncviewer/Makefile.am b/win/vncviewer/Makefile.am
index db398aef..1a486254 100644
--- a/win/vncviewer/Makefile.am
+++ b/win/vncviewer/Makefile.am
@@ -42,7 +42,7 @@ vncviewer_LDADD = $(top_builddir)/common/rfb/librfb.la \
vncviewer_LDFLAGS = -I$(top_srcdir)/win -mwindows
EXTRA_DIST = vncviewer.rc vncviewer.ico cursor1.cur vncviewer.exe.manifest \
- vncviewer.bmp toolbar.bmp
+ vncviewer.bmp toolbar.bmp CMakeLists.txt
resources.o: vncviewer.rc
$(WINDRES) $^ -o $@
diff --git a/win/vncviewer/vncviewer.rc b/win/vncviewer/vncviewer.rc
index 076d5b8b..60aa6363 100644
--- a/win/vncviewer/vncviewer.rc
+++ b/win/vncviewer/vncviewer.rc
@@ -1,6 +1,7 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
+#include "resdefs.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
@@ -67,8 +68,8 @@ IDI_ICON ICON DISCARDABLE "vncviewer.ico"
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,90,0
- PRODUCTVERSION 1,0,90,0
+ FILEVERSION __RCVERSION
+ PRODUCTVERSION __RCVERSION
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -85,15 +86,20 @@ BEGIN
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "TigerVNC Project\0"
+ #ifdef WIN64
+ VALUE "FileDescription", "TigerVNC Viewer for Win64\0"
+ VALUE "ProductName", "TigerVNC Viewer for Win64\0"
+ #else
VALUE "FileDescription", "TigerVNC Viewer for Win32\0"
- VALUE "FileVersion", "1.0.90\0"
+ VALUE "ProductName", "TigerVNC Viewer for Win32\0"
+ #endif
+ VALUE "FileVersion", __RCVERSIONSTR
VALUE "InternalName", "free4/vncviewer/win\0"
- VALUE "LegalCopyright", "Copyright (C) 1998-2009 [many holders]\0"
+ VALUE "LegalCopyright", "Copyright (C) 1998-2010 [many holders]\0"
VALUE "LegalTrademarks", "TigerVNC\0"
VALUE "OriginalFilename", "vncviewer.exe\0"
VALUE "PrivateBuild", "\0"
- VALUE "ProductName", "TigerVNC Viewer\0"
- VALUE "ProductVersion", "1.0.90\0"
+ VALUE "ProductVersion", __VERSIONSTR
VALUE "SpecialBuild", "\0"
END
END
@@ -534,7 +540,7 @@ END
// 24
//
-#ifdef _WIN64
+#ifdef WIN64
IDR_MANIFEST 24 DISCARDABLE "vncviewer.exe.manifest64"
#else
IDR_MANIFEST 24 DISCARDABLE "vncviewer.exe.manifest"
diff --git a/win/winvnc/CMakeLists.txt b/win/winvnc/CMakeLists.txt
new file mode 100644
index 00000000..811492c2
--- /dev/null
+++ b/win/winvnc/CMakeLists.txt
@@ -0,0 +1,33 @@
+include_directories(${CMAKE_BINARY_DIR}/win)
+
+# Disable auto-generated manifests, since we have our own
+if(MSVC)
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
+endif()
+
+add_library(wm_hooks SHARED
+ ../wm_hooks/wm_hooks.cxx
+ ../wm_hooks/wm_hooks.def
+ ../wm_hooks/wm_hooks.rc)
+
+add_executable(winvnc4 WIN32
+ buildTime.cxx
+ ControlPanel.cxx
+ JavaViewer.cxx
+ ManagedListener.cxx
+ QueryConnectDialog.cxx
+ STrayIcon.cxx
+ VNCServerService.cxx
+ VNCServerWin32.cxx
+ winvnc.cxx
+ winvnc.rc)
+
+target_link_libraries(winvnc4 rfb rfb_win32 Xregion network rdr ws2_32.lib)
+
+install(TARGETS winvnc4
+ RUNTIME DESTINATION .
+)
+
+install(TARGETS wm_hooks
+ RUNTIME DESTINATION .
+)
diff --git a/win/winvnc/Makefile.am b/win/winvnc/Makefile.am
index 19f3ada2..0ede9218 100644
--- a/win/winvnc/Makefile.am
+++ b/win/winvnc/Makefile.am
@@ -20,7 +20,7 @@ winvnc4_LDADD = $(top_builddir)/common/rfb/librfb.la \
winvnc4_LDFLAGS = -mwindows
EXTRA_DIST = winvnc.rc winvnc.ico connected.ico icon_dis.ico connecte.ico \
- winvnc4.exe.manifest winvnc.bmp
+ winvnc4.exe.manifest winvnc.bmp CMakeLists.txt
resources.o: winvnc.rc
$(WINDRES) $^ -o $@
diff --git a/win/winvnc/winvnc.rc b/win/winvnc/winvnc.rc
index 3cbc0a45..d514c4a5 100644
--- a/win/winvnc/winvnc.rc
+++ b/win/winvnc/winvnc.rc
@@ -1,6 +1,7 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
+#include "resdefs.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
@@ -58,8 +59,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,90,0
- PRODUCTVERSION 1,0,90,0
+ FILEVERSION __RCVERSION
+ PRODUCTVERSION __RCVERSION
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -76,15 +77,20 @@ BEGIN
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "TigerVNC Project\0"
+ #ifdef WIN64
+ VALUE "FileDescription", "TigerVNC Server for Win64\0"
+ VALUE "ProductName", "TigerVNC Server for Win64\0"
+ #else
VALUE "FileDescription", "TigerVNC Server for Win32\0"
- VALUE "FileVersion", "1.0.90\0"
+ VALUE "ProductName" "TigerVNC Server for Win32\0"
+ #endif
+ VALUE "FileVersion", __RCVERSIONSTR
VALUE "InternalName", "winvnc\0"
- VALUE "LegalCopyright", "Copyright (C) 1998-2009 [many holders]\0"
+ VALUE "LegalCopyright", "Copyright (C) 1998-2010 [many holders]\0"
VALUE "LegalTrademarks", "TigerVNC\0"
VALUE "OriginalFilename", "winvnc4.exe\0"
VALUE "PrivateBuild", "\0"
- VALUE "ProductName", "TigerVNC Server\0"
- VALUE "ProductVersion", "1.0.90\0"
+ VALUE "ProductVersion", __VERSIONSTR
VALUE "SpecialBuild", "\0"
END
END
@@ -222,7 +228,11 @@ END
// 24
//
+#ifdef WIN64
+IDR_MANIFEST 24 DISCARDABLE "winvnc4.exe.manifest64"
+#else
IDR_MANIFEST 24 DISCARDABLE "winvnc4.exe.manifest"
+#endif
/////////////////////////////////////////////////////////////////////////////
//
diff --git a/win/winvnc/winvnc4.exe.manifest64 b/win/winvnc/winvnc4.exe.manifest64
new file mode 100644
index 00000000..be022436
--- /dev/null
+++ b/win/winvnc/winvnc4.exe.manifest64
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="4.0.0.26"
+ processorArchitecture="AMD64"
+ name="TigerVNC.winvnc4.exe"
+ type="win32"
+/>
+<description>.NET control deployment tool</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="AMD64"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
diff --git a/win/wm_hooks/wm_hooks.def b/win/wm_hooks/wm_hooks.def
index b9198ab9..a70908a9 100644
--- a/win/wm_hooks/wm_hooks.def
+++ b/win/wm_hooks/wm_hooks.def
@@ -1,5 +1,5 @@
LIBRARY "wm_hooks"
-DESCRIPTION 'Window Message Hooks Dynamic Link Library'
+; DESCRIPTION 'Window Message Hooks Dynamic Link Library'
SECTIONS
.WM_Hooks_Shared read write shared
diff --git a/win/wm_hooks/wm_hooks.rc b/win/wm_hooks/wm_hooks.rc
index 5a11fd28..d80c983f 100644
--- a/win/wm_hooks/wm_hooks.rc
+++ b/win/wm_hooks/wm_hooks.rc
@@ -1,6 +1,7 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
+#include "resdefs.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
@@ -54,8 +55,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 4,1,0,0
- PRODUCTVERSION 4,1,0,0
+ FILEVERSION __RCVERSION
+ PRODUCTVERSION __RCVERSION
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -72,15 +73,20 @@ BEGIN
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "Constantin Kaplinsky\0"
+ #ifdef WIN64
+ VALUE "FileDescription", "TigerVNC Server Hooking DLL for Win64\0"
+ VALUE "ProductName", "TigerVNC Server Hooking DLL for Win64\0"
+ #else
VALUE "FileDescription", "TigerVNC Server Hooking DLL for Win32\0"
- VALUE "FileVersion", "4.1\0"
+ VALUE "ProductName", "TigerVNC Server Hooking DLL for Win32\0"
+ #endif
+ VALUE "FileVersion", __RCVERSIONSTR
VALUE "InternalName", "\0"
VALUE "LegalCopyright", "Copyright (C) 1998-2005 [many holders]\0"
VALUE "LegalTrademarks", "TigerVNC\0"
VALUE "OriginalFilename", "wm_hooks.dll\0"
VALUE "PrivateBuild", "\0"
- VALUE "ProductName", "TigerVNC Server\0"
- VALUE "ProductVersion", "4.1\0"
+ VALUE "ProductVersion", __VERSIONSTR
VALUE "SpecialBuild", "\0"
END
END