blob: 3c18646327ed8dcde366ff2cd37e09c7ed4cca61 [file] [log] [blame]
Pierre Ossman5156d5e2011-03-09 09:42:34 +00001include_directories(${FLTK_INCLUDE_DIR})
Pierre Ossmanb232b5f2011-04-28 14:38:04 +00002include_directories(${GETTEXT_INCLUDE_DIR})
Pierre Ossman5156d5e2011-03-09 09:42:34 +00003
4include_directories(${CMAKE_SOURCE_DIR}/common)
Pierre Ossmanf14bf332011-04-14 12:49:03 +00005set(VNCVIEWER_SOURCES
Martin Koegler498ef462011-09-04 07:04:43 +00006 menukey.cxx
Pierre Ossman5156d5e2011-03-09 09:42:34 +00007 CConn.cxx
8 DesktopWindow.cxx
9 UserDialog.cxx
Pierre Ossman561ff0c2011-05-13 14:04:59 +000010 ServerDialog.cxx
Pierre Ossman403ac272017-01-02 17:00:41 +010011 Surface.cxx
Pierre Ossmand463b572011-05-16 12:04:43 +000012 OptionsDialog.cxx
Pierre Ossmanac13abe2014-02-07 14:46:26 +010013 PlatformPixelBuffer.cxx
Pierre Ossmand50b3d12011-04-15 07:46:56 +000014 Viewport.cxx
Pierre Ossman5156d5e2011-03-09 09:42:34 +000015 parameters.cxx
Pierre Ossmand014d052011-03-09 13:28:12 +000016 keysym2ucs.c
Pierre Ossman5156d5e2011-03-09 09:42:34 +000017 vncviewer.cxx)
18
Pierre Ossman407a5c32011-05-26 14:48:29 +000019if(WIN32)
Pierre Ossmanca937762012-03-27 12:30:19 +000020 # Since vncviewer.rc is generated, local includes will be looking
21 # in the wrong directory. We need to help it out.
22 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
23 configure_file(vncviewer.rc.in vncviewer.rc)
24 set(VNCVIEWER_SOURCES
25 ${VNCVIEWER_SOURCES}
26 ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.rc)
Pierre Ossman407a5c32011-05-26 14:48:29 +000027endif()
28
Pierre Ossmanca937762012-03-27 12:30:19 +000029if(WIN32)
30 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} win32.c)
31elseif(APPLE)
Pierre Ossman0c158662017-07-13 15:54:11 +020032 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} cocoa.mm osx_to_qnum.c)
33else()
34 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} xkb_to_qnum.c)
Pierre Ossman407a5c32011-05-26 14:48:29 +000035endif()
36
Pierre Ossmanb4cb8762011-06-13 13:24:29 +000037if(WIN32)
Pierre Ossman403ac272017-01-02 17:00:41 +010038 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Surface_Win32.cxx)
Pierre Ossmanc18753c2011-06-17 07:35:56 +000039elseif(APPLE)
Pierre Ossman403ac272017-01-02 17:00:41 +010040 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Surface_OSX.cxx)
Pierre Ossmanc18753c2011-06-17 07:35:56 +000041else()
Pierre Ossman403ac272017-01-02 17:00:41 +010042 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Surface_X11.cxx)
Pierre Ossman13500692011-06-13 11:23:08 +000043endif()
44
Pierre Ossman4c699322014-07-21 16:22:43 +020045if(WIN32 AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
DRCc3a85172011-07-05 18:55:55 +000046 add_executable(vncviewer WIN32 ${VNCVIEWER_SOURCES})
47else()
48 add_executable(vncviewer ${VNCVIEWER_SOURCES})
49endif()
Pierre Ossmanf14bf332011-04-14 12:49:03 +000050
Pierre Ossman4e7d05c2016-05-13 15:34:34 +020051target_link_libraries(vncviewer rfb network rdr os ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES})
Peter Åstrand03327ae2011-04-19 12:31:44 +000052
Pierre Ossmande6a5802017-01-02 20:07:10 +010053if(WIN32)
54 target_link_libraries(vncviewer msimg32)
55endif()
56
Pierre Ossmanb27c1b22014-10-17 13:55:05 +020057if(APPLE)
Pierre Ossman2fa63f82016-12-05 15:26:21 +010058 target_link_libraries(vncviewer "-framework Cocoa")
59 target_link_libraries(vncviewer "-framework Carbon")
60 target_link_libraries(vncviewer "-framework IOKit")
Pierre Ossmanb27c1b22014-10-17 13:55:05 +020061endif()
62
Pierre Ossman448fd3a2012-03-27 10:28:18 +000063install(TARGETS vncviewer DESTINATION ${BIN_DIR})
DRCe66060d2011-06-25 03:02:10 +000064if(UNIX)
Pierre Ossman448fd3a2012-03-27 10:28:18 +000065 install(FILES vncviewer.man DESTINATION ${MAN_DIR}/man1 RENAME vncviewer.1)
Pierre Ossman0f2d1f62017-07-21 14:07:15 +020066
Pierre Ossman86ff9fd2017-07-19 10:56:21 +020067 configure_file(vncviewer.desktop.in.in vncviewer.desktop.in)
Pierre Ossman0f2d1f62017-07-21 14:07:15 +020068 find_program(INTLTOOL_MERGE_EXECUTABLE intltool-merge)
Brian P. Hinz39c07842017-08-08 22:21:14 -040069 if("${GETTEXT_VERSION_STRING}" VERSION_GREATER 0.18.99)
Pierre Ossman0f2d1f62017-07-21 14:07:15 +020070 add_custom_command(OUTPUT vncviewer.desktop
71 COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
72 --desktop --template vncviewer.desktop.in
73 -d ${CMAKE_SOURCE_DIR}/po -o vncviewer.desktop
74 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop.in
75 )
76 elseif(INTLTOOL_MERGE_EXECUTABLE)
77 add_custom_command(OUTPUT vncviewer.desktop
78 COMMAND sed -e 's/^Name/_Name/'
79 -e 's/^GenericName/_GenericName/'
80 -e 's/^Comment/_Comment/'
81 vncviewer.desktop.in > vncviewer.desktop.intl
82 COMMAND ${INTLTOOL_MERGE_EXECUTABLE}
83 -d ${CMAKE_SOURCE_DIR}/po
84 vncviewer.desktop.intl vncviewer.desktop
85 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop.in
86 )
87 else()
88 add_custom_command(OUTPUT vncviewer.desktop
89 COMMAND cp vncviewer.desktop.in vncviewer.desktop
90 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop.in
91 )
92 endif()
Pierre Ossman86ff9fd2017-07-19 10:56:21 +020093 add_custom_target(desktop ALL DEPENDS vncviewer.desktop)
Pierre Ossman35449992016-01-11 12:38:32 +010094 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop DESTINATION ${DATA_DIR}/applications)
Pierre Ossman0f2d1f62017-07-21 14:07:15 +020095
Pierre Ossman35449992016-01-11 12:38:32 +010096 foreach(res 16 22 24 32 48)
97 install(FILES ../media/icons/tigervnc_${res}.png DESTINATION ${DATA_DIR}/icons/hicolor/${res}x${res}/apps RENAME tigervnc.png)
98 endforeach()
99 install(FILES ../media/icons/tigervnc.svg DESTINATION ${DATA_DIR}/icons/hicolor/scalable/apps)
DRCe66060d2011-06-25 03:02:10 +0000100endif()