@@ -17,6 +17,8 @@ include(CheckCSourceRuns) | |||
include(CMakeMacroLibtoolFile) | |||
include(cmake/TargetLinkDirectories.cmake) | |||
project(tigervnc) | |||
set(VERSION 1.12.80) | |||
@@ -177,18 +179,11 @@ if(ENABLE_H264) | |||
set(H264_LIBS "WIN") # may be LIBAV in the future | |||
set(H264_LIBRARIES ole32 mfplat mfuuid wmcodecdspuuid) | |||
else() | |||
check_include_files(libavcodec/avcodec.h HAVE_AVCODEC_H) | |||
check_include_files(libavutil/avutil.h HAVE_AVUTIL_H) | |||
check_include_files(libswscale/swscale.h HAVE_SWSCALE_H) | |||
if (HAVE_AVCODEC_H AND HAVE_AVUTIL_H AND HAVE_SWSCALE_H) | |||
find_path(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h) | |||
find_library(AVCODEC_LIBRARY avcodec) | |||
find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h) | |||
find_library(AVUTIL_LIBRARY avutil) | |||
find_path(SWSCALE_INCLUDE_DIR libswscale/swscale.h) | |||
find_library(SWSCALE_LIBRARY swscale) | |||
include_directories(${AVCODEC_INCLUDE_DIR} ${AVUTIL_INCLUDE_DIR} ${SWSCALE_INCLUDE_DIR}) | |||
set(H264_LIBRARIES ${AVCODEC_LIBRARY} ${AVUTIL_LIBRARY} ${SWSCALE_LIBRARY}) | |||
find_package(Ffmpeg) | |||
if (AVCODEC_FOUND AND AVUTIL_FOUND AND SWSCALE_FOUND) | |||
set(H264_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIRS} ${AVUTIL_INCLUDE_DIRS} ${SWSCALE_INCLUDE_DIRS}) | |||
set(H264_LIBRARIES ${AVCODEC_LIBRARIES} ${AVUTIL_LIBRARIES} ${SWSCALE_LIBRARIES}) | |||
set(H264_LIBRARY_DIRS ${AVCODEC_LIBRARY_DIRS} ${AVUTIL_LIBRARY_DIRS} ${SWSCALE_LIBRARY_DIRS}) | |||
add_definitions("-D__STDC_CONSTANT_MACROS") | |||
add_definitions("-DHAVE_H264") | |||
set(H264_LIBS "LIBAV") |
@@ -0,0 +1,17 @@ | |||
find_package(PkgConfig) | |||
if (PKG_CONFIG_FOUND) | |||
pkg_check_modules(AVCODEC libavcodec) | |||
pkg_check_modules(AVUTIL libavutil) | |||
pkg_check_modules(SWSCALE libswscale) | |||
else() | |||
find_path(AVCODEC_INCLUDE_DIRS NAMES avcodec.h PATH_SUFFIXES libavcodec) | |||
find_library(AVCODEC_LIBRARIES NAMES avcodec) | |||
find_package_handle_standard_args(AVCODEC DEFAULT_MSG AVCODEC_LIBRARIES AVCODEC_INCLUDE_DIRS) | |||
find_path(AVUTIL_INCLUDE_DIRS NAMES avutil.h PATH_SUFFIXES libavutil) | |||
find_library(AVUTIL_LIBRARIES NAMES avutil) | |||
find_package_handle_standard_args(AVUTIL DEFAULT_MSG AVUTIL_LIBRARIES AVUTIL_INCLUDE_DIRS) | |||
find_path(SWSCALE_INCLUDE_DIRS NAMES swscale.h PATH_SUFFIXES libswscale) | |||
find_library(SWSCALE_LIBRARIES NAMES swscale) | |||
find_package_handle_standard_args(SWSCALE DEFAULT_MSG SWSCALE_LIBRARIES SWSCALE_INCLUDE_DIRS) | |||
endif() |
@@ -1,40 +1,9 @@ | |||
# - Find Pixman | |||
# Find the Pixman libraries | |||
# | |||
# This module defines the following variables: | |||
# PIXMAN_FOUND - true if PIXMAN_INCLUDE_DIR & PIXMAN_LIBRARY are found | |||
# PIXMAN_LIBRARIES - Set when PIXMAN_LIBRARY is found | |||
# PIXMAN_INCLUDE_DIRS - Set when PIXMAN_INCLUDE_DIR is found | |||
# | |||
# PIXMAN_INCLUDE_DIR - where to find pixman.h, etc. | |||
# PIXMAN_LIBRARY - the Pixman library | |||
# | |||
#============================================================================= | |||
# Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com> | |||
# | |||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||
# you may not use this file except in compliance with the License. | |||
# You may obtain a copy of the License at | |||
# | |||
# http://www.apache.org/licenses/LICENSE-2.0 | |||
# | |||
# Unless required by applicable law or agreed to in writing, software | |||
# distributed under the License is distributed on an "AS IS" BASIS, | |||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
# See the License for the specific language governing permissions and | |||
# limitations under the License. | |||
#============================================================================= | |||
find_path(PIXMAN_INCLUDE_DIR NAMES pixman.h PATH_SUFFIXES pixman-1) | |||
find_library(PIXMAN_LIBRARY NAMES pixman-1) | |||
find_package_handle_standard_args(pixman-1 DEFAULT_MSG PIXMAN_LIBRARY PIXMAN_INCLUDE_DIR) | |||
if(PIXMAN-1_FOUND) | |||
set(PIXMAN_LIBRARIES ${PIXMAN_LIBRARY}) | |||
set(PIXMAN_INCLUDE_DIRS ${PIXMAN_INCLUDE_DIR}) | |||
find_package(PkgConfig) | |||
if (PKG_CONFIG_FOUND) | |||
pkg_check_modules(PIXMAN pixman-1) | |||
else() | |||
find_path(PIXMAN_INCLUDE_DIRS NAMES pixman.h PATH_SUFFIXES pixman-1) | |||
find_library(PIXMAN_LIBRARIES NAMES pixman-1) | |||
find_package_handle_standard_args(PIXMAN DEFAULT_MSG PIXMAN_LIBRARIES PIXMAN_INCLUDE_DIRS) | |||
endif() | |||
mark_as_advanced(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARY) |
@@ -20,7 +20,7 @@ if(BUILD_STATIC) | |||
set(JPEG_LIBRARIES "-Wl,-Bstatic -ljpeg -Wl,-Bdynamic") | |||
set(ZLIB_LIBRARIES "-Wl,-Bstatic -lz -Wl,-Bdynamic") | |||
set(PIXMAN_LIBRARY "-Wl,-Bstatic -lpixman-1 -Wl,-Bdynamic") | |||
set(PIXMAN_LIBRARIES "-Wl,-Bstatic -lpixman-1 -Wl,-Bdynamic") | |||
# gettext is included in libc on many unix systems | |||
if(NOT LIBC_HAS_DGETTEXT) |
@@ -0,0 +1,12 @@ | |||
# Compatibility replacement of target_link_directories() for older cmake | |||
if(${CMAKE_VERSION} VERSION_LESS "3.13.0") | |||
function(target_link_directories TARGET SCOPE) | |||
get_target_property(INTERFACE_LINK_LIBRARIES ${TARGET} INTERFACE_LINK_LIBRARIES) | |||
foreach(DIRECTORY ${ARGN}) | |||
list(INSERT INTERFACE_LINK_LIBRARIES 0 "-L${DIRECTORY}") | |||
endforeach() | |||
set_target_properties(${TARGET} PROPERTIES | |||
INTERFACE_LINK_LIBRARIES "${INTERFACE_LINK_LIBRARIES}") | |||
endfunction() | |||
endif() |
@@ -1,15 +1,13 @@ | |||
include_directories(${CMAKE_SOURCE_DIR}/common) | |||
set(NETWORK_SOURCES | |||
add_library(network STATIC | |||
Socket.cxx | |||
TcpSocket.cxx) | |||
if(NOT WIN32) | |||
set(NETWORK_SOURCES ${NETWORK_SOURCES} UnixSocket.cxx) | |||
target_sources(network PRIVATE UnixSocket.cxx) | |||
endif() | |||
add_library(network STATIC ${NETWORK_SOURCES}) | |||
if(WIN32) | |||
target_link_libraries(network ws2_32) | |||
endif() |
@@ -16,16 +16,15 @@ add_library(rdr STATIC | |||
ZlibInStream.cxx | |||
ZlibOutStream.cxx) | |||
set(RDR_LIBRARIES ${ZLIB_LIBRARIES} os) | |||
target_link_libraries(rdr ${ZLIB_LIBRARIES} os) | |||
if(GNUTLS_FOUND) | |||
set(RDR_LIBRARIES ${RDR_LIBRARIES} ${GNUTLS_LIBRARIES}) | |||
target_link_libraries(rdr ${GNUTLS_LIBRARIES}) | |||
endif() | |||
if(WIN32) | |||
set(RDR_LIBRARIES ${RDR_LIBRARIES} ws2_32) | |||
target_link_libraries(rdr ws2_32) | |||
endif() | |||
target_link_libraries(rdr ${RDR_LIBRARIES}) | |||
if(UNIX) | |||
libtool_create_control_file(rdr) | |||
endif() |
@@ -1,6 +1,6 @@ | |||
include_directories(${CMAKE_SOURCE_DIR}/common ${JPEG_INCLUDE_DIR} ${PIXMAN_INCLUDE_DIR}) | |||
include_directories(${CMAKE_SOURCE_DIR}/common ${JPEG_INCLUDE_DIR} ${PIXMAN_INCLUDE_DIRS} ${H264_INCLUDE_DIRS}) | |||
set(RFB_SOURCES | |||
add_library(rfb STATIC | |||
Blacklist.cxx | |||
Congestion.cxx | |||
CConnection.cxx | |||
@@ -64,48 +64,40 @@ set(RFB_SOURCES | |||
encodings.cxx | |||
util.cxx) | |||
target_link_libraries(rfb os rdr) | |||
target_link_libraries(rfb ${JPEG_LIBRARIES} ${PIXMAN_LIBRARIES}) | |||
target_link_directories(rfb PUBLIC ${PIXMAN_LIBRARY_DIRS}) | |||
if(ENABLE_H264 AND NOT H264_LIBS STREQUAL "NONE") | |||
set(RFB_SOURCES ${RFB_SOURCES} H264Decoder.cxx H264DecoderContext.cxx) | |||
target_sources(rfb PRIVATE H264Decoder.cxx H264DecoderContext.cxx) | |||
if(H264_LIBS STREQUAL "LIBAV") | |||
set(RFB_SOURCES ${RFB_SOURCES} H264LibavDecoderContext.cxx) | |||
target_sources(rfb PRIVATE H264LibavDecoderContext.cxx) | |||
elseif(H264_LIBS STREQUAL "WIN") | |||
set(RFB_SOURCES ${RFB_SOURCES} H264WinDecoderContext.cxx) | |||
target_sources(rfb PRIVATE H264WinDecoderContext.cxx) | |||
endif() | |||
target_link_libraries(rfb ${H264_LIBRARIES}) | |||
target_link_directories(rfb PUBLIC ${H264_LIBRARY_DIRS}) | |||
endif() | |||
if(UNIX) | |||
set(RFB_SOURCES ${RFB_SOURCES} Logger_syslog.cxx) | |||
target_sources(rfb PRIVATE Logger_syslog.cxx) | |||
endif() | |||
if(WIN32) | |||
include_directories(${CMAKE_SOURCE_DIR}/win) | |||
set(RFB_SOURCES ${RFB_SOURCES} WinPasswdValidator.cxx) | |||
target_sources(rfb PRIVATE WinPasswdValidator.cxx) | |||
endif(WIN32) | |||
set(RFB_LIBRARIES ${JPEG_LIBRARIES} ${PIXMAN_LIBRARY} os rdr) | |||
if(UNIX AND NOT APPLE) | |||
set(RFB_SOURCES ${RFB_SOURCES} UnixPasswordValidator.cxx | |||
UnixPasswordValidator.h pam.c pam.h) | |||
set(RFB_LIBRARIES ${RFB_LIBRARIES} ${PAM_LIBS}) | |||
target_sources(rfb PRIVATE UnixPasswordValidator.cxx pam.c) | |||
target_link_libraries(rfb ${PAM_LIBS}) | |||
endif() | |||
if(GNUTLS_FOUND) | |||
set(RFB_SOURCES | |||
${RFB_SOURCES} | |||
CSecurityTLS.cxx | |||
SSecurityTLS.cxx | |||
) | |||
set(RFB_LIBRARIES | |||
${RFB_LIBRARIES} | |||
${GNUTLS_LIBRARIES} | |||
) | |||
target_sources(rfb PRIVATE CSecurityTLS.cxx SSecurityTLS.cxx) | |||
target_link_libraries(rfb ${GNUTLS_LIBRARIES}) | |||
endif() | |||
add_library(rfb STATIC ${RFB_SOURCES}) | |||
target_link_libraries(rfb ${RFB_LIBRARIES}) | |||
if(UNIX) | |||
libtool_create_control_file(rfb) | |||
endif() |
@@ -3,7 +3,6 @@ include_directories(${GETTEXT_INCLUDE_DIR}) | |||
include_directories(${CMAKE_SOURCE_DIR}/common) | |||
add_library(test_util STATIC util.cxx) | |||
target_link_libraries(test_util ${H264_LIBRARIES}) | |||
add_executable(convperf convperf.cxx) | |||
target_link_libraries(convperf test_util rfb) | |||
@@ -16,21 +15,20 @@ target_link_libraries(encperf test_util rfb) | |||
if (BUILD_VIEWER) | |||
include_directories(${FLTK_INCLUDE_DIR}) | |||
set(FBPERF_SOURCES | |||
add_executable(fbperf | |||
fbperf.cxx | |||
${CMAKE_SOURCE_DIR}/vncviewer/PlatformPixelBuffer.cxx | |||
${CMAKE_SOURCE_DIR}/vncviewer/Surface.cxx) | |||
if(WIN32) | |||
set(FBPERF_SOURCES ${FBPERF_SOURCES} ${CMAKE_SOURCE_DIR}/vncviewer/Surface_Win32.cxx) | |||
target_sources(fbperf PRIVATE ${CMAKE_SOURCE_DIR}/vncviewer/Surface_Win32.cxx) | |||
elseif(APPLE) | |||
set(FBPERF_SOURCES | |||
${FBPERF_SOURCES} ${CMAKE_SOURCE_DIR}/vncviewer/Surface_OSX.cxx | |||
${FBPERF_SOURCES} ${CMAKE_SOURCE_DIR}/vncviewer/keysym2ucs.c | |||
${FBPERF_SOURCES} ${CMAKE_SOURCE_DIR}/vncviewer/cocoa.mm) | |||
target_sources(fbperf PRIVATE | |||
${CMAKE_SOURCE_DIR}/vncviewer/Surface_OSX.cxx | |||
${CMAKE_SOURCE_DIR}/vncviewer/keysym2ucs.c | |||
${CMAKE_SOURCE_DIR}/vncviewer/cocoa.mm) | |||
else() | |||
set(FBPERF_SOURCES ${FBPERF_SOURCES} ${CMAKE_SOURCE_DIR}/vncviewer/Surface_X11.cxx) | |||
target_sources(fbperf PRIVATE ${CMAKE_SOURCE_DIR}/vncviewer/Surface_X11.cxx) | |||
endif() | |||
add_executable(fbperf ${FBPERF_SOURCES}) | |||
target_link_libraries(fbperf test_util rfb ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES}) | |||
if(WIN32) | |||
target_link_libraries(fbperf msimg32) |
@@ -2,7 +2,8 @@ include_directories(${FLTK_INCLUDE_DIR}) | |||
include_directories(${GETTEXT_INCLUDE_DIR}) | |||
include_directories(${CMAKE_SOURCE_DIR}/common) | |||
set(VNCVIEWER_SOURCES | |||
add_executable(vncviewer | |||
menukey.cxx | |||
BaseTouchHandler.cxx | |||
CConn.cxx | |||
@@ -21,39 +22,35 @@ set(VNCVIEWER_SOURCES | |||
MonitorIndicesParameter.cxx | |||
vncviewer.cxx) | |||
if(WIN32 AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug") | |||
set_target_properties(vncviewer PROPERTIES WIN32_EXECUTABLE TRUE) | |||
endif() | |||
if(WIN32) | |||
# Since vncviewer.rc is generated, local includes will be looking | |||
# in the wrong directory. We need to help it out. | |||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}) | |||
configure_file(vncviewer.rc.in vncviewer.rc) | |||
set(VNCVIEWER_SOURCES | |||
${VNCVIEWER_SOURCES} | |||
${CMAKE_CURRENT_BINARY_DIR}/vncviewer.rc) | |||
target_sources(vncviewer PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.rc) | |||
endif() | |||
if(WIN32) | |||
set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Win32TouchHandler.cxx win32.c) | |||
target_sources(vncviewer PRIVATE Win32TouchHandler.cxx win32.c) | |||
elseif(APPLE) | |||
set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} cocoa.mm osx_to_qnum.c) | |||
target_sources(vncviewer PRIVATE cocoa.mm osx_to_qnum.c) | |||
else() | |||
set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} GestureHandler.cxx XInputTouchHandler.cxx xkb_to_qnum.c) | |||
target_sources(vncviewer PRIVATE GestureHandler.cxx XInputTouchHandler.cxx xkb_to_qnum.c) | |||
endif() | |||
if(WIN32) | |||
set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Surface_Win32.cxx) | |||
target_sources(vncviewer PRIVATE Surface_Win32.cxx) | |||
elseif(APPLE) | |||
set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Surface_OSX.cxx) | |||
else() | |||
set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Surface_X11.cxx) | |||
endif() | |||
if(WIN32 AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug") | |||
add_executable(vncviewer WIN32 ${VNCVIEWER_SOURCES}) | |||
target_sources(vncviewer PRIVATE Surface_OSX.cxx) | |||
else() | |||
add_executable(vncviewer ${VNCVIEWER_SOURCES}) | |||
target_sources(vncviewer PRIVATE Surface_X11.cxx) | |||
endif() | |||
target_link_libraries(vncviewer rfb network rdr os ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES} ${H264_LIBRARIES}) | |||
target_link_libraries(vncviewer rfb network rdr os ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES}) | |||
if(WIN32) | |||
target_link_libraries(vncviewer msimg32) |
@@ -1,4 +1,4 @@ | |||
set(RFB_WIN32_SOURCES | |||
add_library(rfb_win32 STATIC | |||
AboutDialog.cxx | |||
Clipboard.cxx | |||
CurrentUser.cxx | |||
@@ -32,9 +32,7 @@ set(RFB_WIN32_SOURCES | |||
WMWindowCopyRect.cxx) | |||
if(BUILD_WINVNC) | |||
set(RFB_WIN32_SOURCES ${RFB_WIN32_SOURCES} CleanDesktop.cxx) | |||
target_sources(rfb_win32 PRIVATE ${RFB_WIN32_SOURCES} CleanDesktop.cxx) | |||
endif() | |||
add_library(rfb_win32 STATIC ${RFB_WIN32_SOURCES}) | |||
target_link_libraries(rfb_win32 user32.lib comctl32.lib wtsapi32.lib version.lib) |