The migration from 32-bit to 64-bit has long passed. Let's get rid of all distinctions as native applications it the norm now.tags/v1.12.90
------------------------------------------------ | ------------------------------------------------ | ||||
The following procedure will build the TigerVNC Viewer on Linux and Unix | The following procedure will build the TigerVNC Viewer on Linux and Unix | ||||
systems. On 64-bit systems, this will build a 64-bit version of TigerVNC. See | |||||
"Build Recipes" for specific build instructions for building a 32-bit version | |||||
of TigerVNC on 64-bit systems. | |||||
systems. | |||||
cd {build_directory} | cd {build_directory} | ||||
cmake -G "Unix Makefiles" [additional CMake flags] {source_directory} | cmake -G "Unix Makefiles" [additional CMake flags] {source_directory} | ||||
Create Macintosh disk image file that contains an application bundle of the | Create Macintosh disk image file that contains an application bundle of the | ||||
TigerVNC Viewer | TigerVNC Viewer | ||||
make udmg | |||||
On 64-bit OS X systems, this creates a version of the Macintosh package and | |||||
disk image which contains universal i386/x86-64 binaries. You should first | |||||
configure a 32-bit out-of-tree build of TigerVNC, then configure a 64-bit | |||||
out-of-tree build, then run 'make udmg' from the 64-bit build directory. The | |||||
build system will look for the 32-bit build under {source_directory}/osxx86 | |||||
by default, but you can override this by setting the OSX_X86_BUILD CMake | |||||
variable to the directory containing your configured 32-bit build. Either | |||||
the 64-bit or 32-bit build can be configured to be backward compatible by | |||||
using the instructions in the "Build Recipes" section. | |||||
Windows | Windows | ||||
------- | ------- | ||||
============= | ============= | ||||
32-bit Build on 64-bit Linux/Unix (including OS X) | |||||
-------------------------------------------------- | |||||
Set the following environment variables before building TigerVNC. | |||||
CFLAGS='-O3 -m32' | |||||
CXXFLAGS='-O3 -m32' | |||||
LDFLAGS=-m32 | |||||
If you are building the TigerVNC Server on a modern Unix/Linux system, then | |||||
you will also need to pass the appropriate --host argument when configuring the | |||||
X server source (for instance, --host=i686-pc-linux-gnu). | |||||
64-bit Backward-Compatible Build on 64-bit OS X | |||||
----------------------------------------------- | |||||
Add | |||||
-DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.5.sdk \ | |||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.5 | |||||
to the CMake command line. The OS X 10.5 SDK must be installed. | |||||
32-bit Backward-Compatible Build on 64-bit OS X | |||||
----------------------------------------------- | |||||
Set the following environment variables: | |||||
CC=gcc-4.0 | |||||
CXX=g++-4.0 | |||||
CFLAGS='-O3 -m32' | |||||
CXXFLAGS='-O3 -m32' | |||||
LDFLAGS=-m32 | |||||
and add | |||||
-DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.4u.sdk \ | |||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.4 | |||||
to the CMake command line. The OS X 10.4 SDK must be installed. | |||||
64-bit MinGW Build on Cygwin | |||||
---------------------------- | |||||
MinGW Build on Cygwin | |||||
--------------------- | |||||
cd {build_directory} | cd {build_directory} | ||||
CC=/usr/bin/x86_64-w64-mingw32-gcc CXX=/usr/bin/x86_64-w64-mingw32-g++ \ | CC=/usr/bin/x86_64-w64-mingw32-gcc CXX=/usr/bin/x86_64-w64-mingw32-g++ \ | ||||
-DCMAKE_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib {source_directory} | -DCMAKE_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib {source_directory} | ||||
make | make | ||||
This produces a 64-bit build of TigerVNC that does not depend on cygwin1.dll or | |||||
This produces a 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++ | other Cygwin DLL's. The mingw64-x86_64-gcc-core and mingw64-x86_64-gcc-g++ | ||||
packages (and their dependencies) must be installed. | 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 | MinGW-w64 Build on Windows | ||||
-------------------------- | -------------------------- | ||||
This produces a 64-bit build of TigerVNC using the "native" MinGW-w64 toolchain | |||||
This produces a build of TigerVNC using the "native" MinGW-w64 toolchain | |||||
(which is faster than the Cygwin version): | (which is faster than the Cygwin version): | ||||
cd {build_directory} | cd {build_directory} | ||||
-------------------- | -------------------- | ||||
cd {build_directory} | cd {build_directory} | ||||
CC={mingw_binary_path}/i386-mingw32-gcc \ | |||||
CXX={mingw_binary_path}/i386-mingw32-g++ \ | |||||
RC={mingw_binary_path}/i386-mingw32-windres \ | |||||
CC={mingw_binary_path}/x86_64-w64-mingw32-gcc \ | |||||
CXX={mingw_binary_path}/x86_64-w64-mingw32-g++ \ | |||||
RC={mingw_binary_path}/x86_64-w64-mingw32-windres \ | |||||
cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \ | cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \ | ||||
-DCMAKE_AR={mingw_binary_path}/i386-mingw32-ar \ | |||||
-DCMAKE_RANLIB={mingw_binary_path}/i386-mingw32-ranlib \ | |||||
-DCMAKE_AR={mingw_binary_path}/x86_64-w64-mingw32-ar \ | |||||
-DCMAKE_RANLIB={mingw_binary_path}/x86_64-w64-mingw32-ranlib \ | |||||
{source_directory} | {source_directory} | ||||
make | make | ||||
add_definitions(-D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0) | add_definitions(-D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0) | ||||
endif() | endif() | ||||
if(CMAKE_SIZEOF_VOID_P MATCHES 8) | |||||
message(STATUS "64-bit build") | |||||
else() | |||||
message(STATUS "32-bit build") | |||||
endif() | |||||
# MinGW64 has header support but no library support for IActiveDesktop, so we | # MinGW64 has header support but no library support for IActiveDesktop, so we | ||||
# need to check for both the header and library and use our own implementation | # need to check for both the header and library and use our own implementation | ||||
# in common/os if either doesn't exist. | # in common/os if either doesn't exist. |
if(APPLE) | if(APPLE) | ||||
set(DEFAULT_OSX_X86_BUILD ${CMAKE_SOURCE_DIR}/osxx86) | |||||
set(OSX_X86_BUILD ${DEFAULT_OSX_X86_BUILD} CACHE PATH | |||||
"Directory containing 32-bit OS X build to include in universal binaries (default: ${DEFAULT_OSX_X86_BUILD})") | |||||
configure_file(makemacapp.in makemacapp) | configure_file(makemacapp.in makemacapp) | ||||
configure_file(Info.plist.in Info.plist) | configure_file(Info.plist.in Info.plist) | ||||
DEPENDS vncviewer | DEPENDS vncviewer | ||||
SOURCES makemacapp) | SOURCES makemacapp) | ||||
add_custom_target(udmg sh makemacapp universal | |||||
DEPENDS vncviewer | |||||
SOURCES makemacapp) | |||||
endif() # APPLE | endif() # APPLE | ||||
usage() | usage() | ||||
{ | { | ||||
echo "$0 [universal]" | |||||
echo "$0" | |||||
exit 1 | exit 1 | ||||
} | } | ||||
BUILD=@BUILD@ | BUILD=@BUILD@ | ||||
SRCDIR=@CMAKE_SOURCE_DIR@ | SRCDIR=@CMAKE_SOURCE_DIR@ | ||||
BINDIR=@CMAKE_BINARY_DIR@ | BINDIR=@CMAKE_BINARY_DIR@ | ||||
BUILDDIR32=@OSX_X86_BUILD@ | |||||
if [ $# -gt 0 ]; then | |||||
if [ "$1" = "universal" ]; then | |||||
UNIVERSAL=1 | |||||
fi | |||||
fi | |||||
cd $BINDIR | cd $BINDIR | ||||
mkdir -p "$APPROOT/Contents/Resources" | mkdir -p "$APPROOT/Contents/Resources" | ||||
install -m 755 vncviewer/vncviewer "$APPROOT/Contents/MacOS/TigerVNC Viewer" | install -m 755 vncviewer/vncviewer "$APPROOT/Contents/MacOS/TigerVNC Viewer" | ||||
if [ $UNIVERSAL = 1 ]; then | |||||
if [ ! -d $BUILDDIR32 ]; then | |||||
echo ERROR: 32-bit build directory $BUILDDIR32 does not exist | |||||
exit 1 | |||||
fi | |||||
if [ ! -f $BUILDDIR32/Makefile ]; then | |||||
echo ERROR: 32-bit build directory $BUILDDIR32 is not configured | |||||
exit 1 | |||||
fi | |||||
pushd $BUILDDIR32 | |||||
make | |||||
popd | |||||
lipo -create -arch i386 $BUILDDIR32/vncviewer/vncviewer -arch x86_64 \ | |||||
"$APPROOT/Contents/MacOS/TigerVNC Viewer" \ | |||||
-output "$APPROOT/Contents/MacOS/TigerVNC Viewer" | |||||
fi | |||||
install -m 644 $SRCDIR/release/tigervnc.icns "$APPROOT/Contents/Resources/" | install -m 644 $SRCDIR/release/tigervnc.icns "$APPROOT/Contents/Resources/" | ||||
install -m 644 release/Info.plist "$APPROOT/Contents/" | install -m 644 release/Info.plist "$APPROOT/Contents/" | ||||
[Setup] | [Setup] | ||||
#ifdef WIN64 | #ifdef WIN64 | ||||
ArchitecturesInstallIn64BitMode=x64 | ArchitecturesInstallIn64BitMode=x64 | ||||
AppName=TigerVNC 64-bit | |||||
AppVerName=TigerVNC 64-bit @VERSION@ (@BUILD@) | |||||
#else | |||||
AppName=TigerVNC | |||||
AppVerName=TigerVNC v@VERSION@ (@BUILD@) | |||||
#endif | #endif | ||||
AppName=TigerVNC | |||||
AppVerName=TigerVNC @VERSION@ (@BUILD@) | |||||
AppVersion=@VERSION@ | AppVersion=@VERSION@ | ||||
AppPublisher=TigerVNC project | AppPublisher=TigerVNC project | ||||
AppPublisherURL=https://tigervnc.org | AppPublisherURL=https://tigervnc.org | ||||
DefaultDirName={pf}\TigerVNC | DefaultDirName={pf}\TigerVNC | ||||
#ifdef WIN64 | |||||
DefaultGroupName=TigerVNC 64-bit | |||||
#else | |||||
DefaultGroupName=TigerVNC | DefaultGroupName=TigerVNC | ||||
#endif | |||||
LicenseFile=@CMAKE_SOURCE_DIR@\LICENCE.TXT | LicenseFile=@CMAKE_SOURCE_DIR@\LICENCE.TXT | ||||
[Files] | [Files] |
[Setup] | [Setup] | ||||
#ifdef WIN64 | #ifdef WIN64 | ||||
ArchitecturesInstallIn64BitMode=x64 | ArchitecturesInstallIn64BitMode=x64 | ||||
AppName=TigerVNC Server 64-bit | |||||
AppVerName=TigerVNC Server 64-bit @VERSION@ (@BUILD@) | |||||
#else | |||||
#endif | |||||
AppName=TigerVNC Server | AppName=TigerVNC Server | ||||
AppVerName=TigerVNC Server v@VERSION@ (@BUILD@) | AppVerName=TigerVNC Server v@VERSION@ (@BUILD@) | ||||
#endif | |||||
AppVersion=@VERSION@ | AppVersion=@VERSION@ | ||||
AppPublisher=TigerVNC project | AppPublisher=TigerVNC project | ||||
AppPublisherURL=https://tigervnc.org | AppPublisherURL=https://tigervnc.org | ||||
DefaultDirName={pf}\TigerVNC Server | DefaultDirName={pf}\TigerVNC Server | ||||
#ifdef WIN64 | |||||
DefaultGroupName=TigerVNC Server 64-bit | |||||
#else | |||||
DefaultGroupName=TigerVNC Server | DefaultGroupName=TigerVNC Server | ||||
#endif | |||||
LicenseFile=@CMAKE_SOURCE_DIR@\LICENCE.TXT | LicenseFile=@CMAKE_SOURCE_DIR@\LICENCE.TXT | ||||
[Dirs] | [Dirs] |
// encodings, so we need to make sure we get a fresh string every | // encodings, so we need to make sure we get a fresh string every | ||||
// time. | // time. | ||||
snprintf(buffer, sizeof(buffer), | snprintf(buffer, sizeof(buffer), | ||||
_("TigerVNC Viewer %d-bit v%s\n" | |||||
_("TigerVNC Viewer v%s\n" | |||||
"Built on: %s\n" | "Built on: %s\n" | ||||
"Copyright (C) 1999-%d TigerVNC Team and many others (see README.rst)\n" | "Copyright (C) 1999-%d TigerVNC Team and many others (see README.rst)\n" | ||||
"See https://www.tigervnc.org for information on TigerVNC."), | "See https://www.tigervnc.org for information on TigerVNC."), | ||||
(int)sizeof(size_t)*8, PACKAGE_VERSION, | |||||
BUILD_TIMESTAMP, 2022); | |||||
PACKAGE_VERSION, BUILD_TIMESTAMP, 2022); | |||||
return buffer; | return buffer; | ||||
} | } |
BEGIN | BEGIN | ||||
VALUE "Comments", "\0" | VALUE "Comments", "\0" | ||||
VALUE "CompanyName", "TigerVNC Project\0" | VALUE "CompanyName", "TigerVNC Project\0" | ||||
#ifdef WIN64 | |||||
VALUE "FileDescription", "TigerVNC Client for Win64\0" | |||||
VALUE "ProductName", "TigerVNC Client for Win64\0" | |||||
#else | |||||
VALUE "FileDescription", "TigerVNC Client for Win32\0" | |||||
VALUE "ProductName", "TigerVNC Client for Win32\0" | |||||
#endif | |||||
VALUE "FileDescription", "TigerVNC Client\0" | |||||
VALUE "ProductName", "TigerVNC Client\0" | |||||
VALUE "FileVersion", "@RCVERSION@\0" | VALUE "FileVersion", "@RCVERSION@\0" | ||||
VALUE "InternalName", "vncviewer\0" | VALUE "InternalName", "vncviewer\0" | ||||
VALUE "LegalCopyright", "Copyright (C) 1999-2022 TigerVNC Team and many others (see README.rst)\0" | VALUE "LegalCopyright", "Copyright (C) 1999-2022 TigerVNC Team and many others (see README.rst)\0" |
BEGIN | BEGIN | ||||
VALUE "Comments", "\0" | VALUE "Comments", "\0" | ||||
VALUE "CompanyName", "TigerVNC Project\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 "ProductName", "TigerVNC Server for Win32\0" | |||||
#endif | |||||
VALUE "FileDescription", "TigerVNC Server\0" | |||||
VALUE "ProductName", "TigerVNC Server\0" | |||||
VALUE "FileVersion", __RCVERSIONSTR | VALUE "FileVersion", __RCVERSIONSTR | ||||
VALUE "InternalName", "winvnc\0" | VALUE "InternalName", "winvnc\0" | ||||
VALUE "LegalCopyright", "Copyright (C) 1999-2022 TigerVNC Team and many others (see README.rst)\0" | VALUE "LegalCopyright", "Copyright (C) 1999-2022 TigerVNC Team and many others (see README.rst)\0" |
BEGIN | BEGIN | ||||
VALUE "Comments", "\0" | VALUE "Comments", "\0" | ||||
VALUE "CompanyName", "TigerVNC Project\0" | VALUE "CompanyName", "TigerVNC Project\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 "ProductName", "TigerVNC Server Hooking DLL for Win32\0" | |||||
#endif | |||||
VALUE "FileDescription", "TigerVNC Server Hooking DLL\0" | |||||
VALUE "ProductName", "TigerVNC Server Hooking DLL\0" | |||||
VALUE "FileVersion", __RCVERSIONSTR | VALUE "FileVersion", __RCVERSIONSTR | ||||
VALUE "InternalName", "\0" | VALUE "InternalName", "\0" | ||||
VALUE "LegalCopyright", "Copyright (C) 1999-2005 [many holders]\0" | VALUE "LegalCopyright", "Copyright (C) 1999-2005 [many holders]\0" |