blob: 56313e938aeddadd043a8403197f700ff0719e74 [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 Ossman407a5c32011-05-26 14:48:29 +000032 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} cocoa.mm)
33endif()
34
Pierre Ossmanb4cb8762011-06-13 13:24:29 +000035if(WIN32)
Pierre Ossman403ac272017-01-02 17:00:41 +010036 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Surface_Win32.cxx)
Pierre Ossmanc18753c2011-06-17 07:35:56 +000037elseif(APPLE)
Pierre Ossman403ac272017-01-02 17:00:41 +010038 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Surface_OSX.cxx)
Pierre Ossmanc18753c2011-06-17 07:35:56 +000039else()
Pierre Ossman403ac272017-01-02 17:00:41 +010040 set(VNCVIEWER_SOURCES ${VNCVIEWER_SOURCES} Surface_X11.cxx)
Pierre Ossman13500692011-06-13 11:23:08 +000041endif()
42
Pierre Ossman4c699322014-07-21 16:22:43 +020043if(WIN32 AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
DRCc3a85172011-07-05 18:55:55 +000044 add_executable(vncviewer WIN32 ${VNCVIEWER_SOURCES})
45else()
46 add_executable(vncviewer ${VNCVIEWER_SOURCES})
47endif()
Pierre Ossmanf14bf332011-04-14 12:49:03 +000048
Pierre Ossman4e7d05c2016-05-13 15:34:34 +020049target_link_libraries(vncviewer rfb network rdr os ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES})
Peter Åstrand03327ae2011-04-19 12:31:44 +000050
Pierre Ossmande6a5802017-01-02 20:07:10 +010051if(WIN32)
52 target_link_libraries(vncviewer msimg32)
53endif()
54
Pierre Ossmanb27c1b22014-10-17 13:55:05 +020055if(APPLE)
Pierre Ossman2fa63f82016-12-05 15:26:21 +010056 target_link_libraries(vncviewer "-framework Cocoa")
57 target_link_libraries(vncviewer "-framework Carbon")
58 target_link_libraries(vncviewer "-framework IOKit")
Pierre Ossmanb27c1b22014-10-17 13:55:05 +020059endif()
60
Pierre Ossman448fd3a2012-03-27 10:28:18 +000061install(TARGETS vncviewer DESTINATION ${BIN_DIR})
DRCe66060d2011-06-25 03:02:10 +000062if(UNIX)
Pierre Ossman448fd3a2012-03-27 10:28:18 +000063 install(FILES vncviewer.man DESTINATION ${MAN_DIR}/man1 RENAME vncviewer.1)
Pierre Ossman0f2d1f62017-07-21 14:07:15 +020064
Pierre Ossman86ff9fd2017-07-19 10:56:21 +020065 configure_file(vncviewer.desktop.in.in vncviewer.desktop.in)
Pierre Ossman0f2d1f62017-07-21 14:07:15 +020066 find_program(INTLTOOL_MERGE_EXECUTABLE intltool-merge)
Brian P. Hinz39c07842017-08-08 22:21:14 -040067 if("${GETTEXT_VERSION_STRING}" VERSION_GREATER 0.18.99)
Pierre Ossman0f2d1f62017-07-21 14:07:15 +020068 add_custom_command(OUTPUT vncviewer.desktop
69 COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
70 --desktop --template vncviewer.desktop.in
71 -d ${CMAKE_SOURCE_DIR}/po -o vncviewer.desktop
72 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop.in
73 )
74 elseif(INTLTOOL_MERGE_EXECUTABLE)
75 add_custom_command(OUTPUT vncviewer.desktop
76 COMMAND sed -e 's/^Name/_Name/'
77 -e 's/^GenericName/_GenericName/'
78 -e 's/^Comment/_Comment/'
79 vncviewer.desktop.in > vncviewer.desktop.intl
80 COMMAND ${INTLTOOL_MERGE_EXECUTABLE}
81 -d ${CMAKE_SOURCE_DIR}/po
82 vncviewer.desktop.intl vncviewer.desktop
83 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop.in
84 )
85 else()
86 add_custom_command(OUTPUT vncviewer.desktop
87 COMMAND cp vncviewer.desktop.in vncviewer.desktop
88 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop.in
89 )
90 endif()
Pierre Ossman86ff9fd2017-07-19 10:56:21 +020091 add_custom_target(desktop ALL DEPENDS vncviewer.desktop)
Pierre Ossman35449992016-01-11 12:38:32 +010092 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop DESTINATION ${DATA_DIR}/applications)
Pierre Ossman0f2d1f62017-07-21 14:07:15 +020093
Pierre Ossman35449992016-01-11 12:38:32 +010094 foreach(res 16 22 24 32 48)
95 install(FILES ../media/icons/tigervnc_${res}.png DESTINATION ${DATA_DIR}/icons/hicolor/${res}x${res}/apps RENAME tigervnc.png)
96 endforeach()
97 install(FILES ../media/icons/tigervnc.svg DESTINATION ${DATA_DIR}/icons/hicolor/scalable/apps)
DRCe66060d2011-06-25 03:02:10 +000098endif()