Browse Source

CMake build system for Windows


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4171 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v1.0.90
DRC 13 years ago
parent
commit
180c0167b4

+ 127
- 0
CMakeLists.txt View File

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

+ 2
- 0
Makefile.am View File

@@ -18,3 +18,5 @@ endif

dmg: all
sh $(srcdir)/release/makemacpkg ${PACKAGE_NAME} ${VERSION} ${BUILD} ${srcdir}

EXTRA_DIST = CMakeLists.txt cmakescripts/getdate.bat

+ 3
- 0
cmakescripts/getdate.bat View File

@@ -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%

+ 7
- 0
common/CMakeLists.txt View File

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

+ 2
- 0
common/Makefile.am View File

@@ -8,3 +8,5 @@ SUBDIRS += jpeg
endif

SUBDIRS += rdr network Xregion rfb

EXTRA_DIST = CMakeLists.txt

+ 2
- 0
common/Xregion/CMakeLists.txt View File

@@ -0,0 +1,2 @@
add_library(Xregion STATIC
Region.c)

+ 2
- 0
common/Xregion/Makefile.am View File

@@ -3,3 +3,5 @@ noinst_LTLIBRARIES = libXregion.la
HDRS = region.h Xregion.h

libXregion_la_SOURCES = $(HDRS) Region.c

EXTRA_DIST = CMakeLists.txt

+ 117
- 0
common/jpeg/CMakeLists.txt View File

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

+ 12
- 0
common/jpeg/Makefile.am View File

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

+ 62
- 0
common/jpeg/simd/CMakeLists.txt View File

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

+ 1
- 1
common/jpeg/simd/Makefile.am View File

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


+ 4
- 0
common/network/CMakeLists.txt View File

@@ -0,0 +1,4 @@
include_directories(${CMAKE_SOURCE_DIR}/common)

add_library(network STATIC
TcpSocket.cxx)

+ 1
- 0
common/network/Makefile.am View File

@@ -6,3 +6,4 @@ libnetwork_la_SOURCES = $(HDRS) TcpSocket.cxx

libnetwork_la_CPPFLAGS = -I$(top_srcdir)/common

EXTRA_DIST = CMakeLists.txt

+ 5
- 0
common/os/CMakeLists.txt View File

@@ -0,0 +1,5 @@
include_directories(${CMAKE_SOURCE_DIR}/common)

add_library(os STATIC
print.c
net.c)

+ 1
- 0
common/os/Makefile.am View File

@@ -6,3 +6,4 @@ libos_la_SOURCES = $(HDRS) print.c net.c

libos_la_CPPFLAGS = -I$(top_srcdir)/common

EXTRA_DIST = CMakeLists.txt

+ 17
- 0
common/rdr/CMakeLists.txt View File

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

+ 2
- 0
common/rdr/Makefile.am View File

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

+ 70
- 0
common/rfb/CMakeLists.txt View File

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

+ 2
- 0
common/rfb/Makefile.am View File

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

+ 18
- 0
common/zlib/CMakeLists.txt View File

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

+ 5
- 3
common/zlib/Makefile.am View File

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

+ 260
- 17
release/BUILDING.txt View File

@@ -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
@@ -188,12 +201,220 @@ GnuTLS, add the following monstrosity to the configure command line:
/opt/local/lib/libintl.a -framework CoreFoundation'


*******************************************************************************
** 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\).

+ 12
- 0
win/CMakeLists.txt View File

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

+ 1
- 1
win/Makefile.am View File

@@ -4,4 +4,4 @@ if BUILD_WINVNC
SUBDIRS += vncconfig winvnc
endif

EXTRA_DIST = logmessages/messages.h
EXTRA_DIST = logmessages/messages.h CMakeLists.txt

+ 1
- 0
win/README_BINARY.txt View File

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

+ 4
- 0
win/resdefs.h.in View File

@@ -0,0 +1,4 @@
#define __VERSIONSTR "@VERSION@\0"
#define __RCVERSION @RCVERSION@
#define __RCVERSIONSTR "@RCVERSION@\0"
#cmakedefine WIN64

+ 48
- 0
win/rfb_win32/CMakeLists.txt View File

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

+ 2
- 0
win/rfb_win32/Makefile.am View File

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

win/tigervnc.iss → win/tigervnc.iss.in View File

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

+ 18
- 0
win/vncconfig/CMakeLists.txt View File

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

+ 1
- 1
win/vncconfig/Makefile.am View File

@@ -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 $@

+ 22
- 0
win/vncconfig/vncconfig.exe.manifest64 View File

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

+ 16
- 6
win/vncconfig/vncconfig.rc View File

@@ -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
/////////////////////////////////////////////////////////////////////////////


+ 28
- 0
win/vncviewer/CMakeLists.txt View File

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

+ 1
- 1
win/vncviewer/Makefile.am View File

@@ -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 $@

+ 13
- 7
win/vncviewer/vncviewer.rc View File

@@ -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"

+ 33
- 0
win/winvnc/CMakeLists.txt View File

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

+ 1
- 1
win/winvnc/Makefile.am View File

@@ -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 $@

+ 16
- 6
win/winvnc/winvnc.rc View File

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

/////////////////////////////////////////////////////////////////////////////
//

+ 22
- 0
win/winvnc/winvnc4.exe.manifest64 View File

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

+ 1
- 1
win/wm_hooks/wm_hooks.def View File

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

+ 11
- 5
win/wm_hooks/wm_hooks.rc View File

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

Loading…
Cancel
Save