@@ -58,6 +58,8 @@ option(WITH_24BPP "Allow 24 bpp" ON)
5858option (WITH_IPv6 "Enable IPv6 Support" ON )
5959option (WITH_WEBSOCKETS "Build with websockets support" ON )
6060option (WITH_SASL "Build with SASL support" ON )
61+ option (WITH_EXAMPLES "Build examples" ON )
62+ option (WITH_TESTS "Build tests" ON )
6163
6264
6365
@@ -210,6 +212,7 @@ check_function_exists(strerror LIBVNCSERVER_HAVE_STRERROR)
210212check_function_exists (strstr LIBVNCSERVER_HAVE_STRSTR )
211213
212214check_symbol_exists (htobe64 "endian.h" LIBVNCSERVER_HAVE_HTOBE64 )
215+ check_symbol_exists (htobe64 "sys/endian.h" LIBVNCSERVER_HAVE_HTOBE64 )
213216check_symbol_exists (OSSwapHostToBigInt64 "libkern/OSByteOrder.h" LIBVNCSERVER_HAVE_OSSWAPHOSTTOBIGINT64 )
214217
215218if (WITH_THREADS AND Threads_FOUND)
@@ -604,26 +607,28 @@ if(FFMPEG_FOUND)
604607 )
605608endif (FFMPEG_FOUND )
606609
607-
608- foreach (e ${LIBVNCSERVER_EXAMPLES} )
609- add_executable (examples_${e} ${LIBVNCSRVEXAMPLE_DIR} /${e}.c )
610- set_target_properties (examples_${e} PROPERTIES OUTPUT_NAME ${e} )
611- set_target_properties (examples_${e} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /examples )
612- target_link_libraries (examples_${e} vncserver ${CMAKE_THREAD_LIBS_INIT} ${CARBON_LIBRARY} ${IOKIT_LIBRARY} ${IOSURFACE_LIBRARY} )
613- endforeach (e ${LIBVNCSERVER_EXAMPLES} )
614-
615- foreach (e ${LIBVNCCLIENT_EXAMPLES} )
616- add_executable (client_examples_${e} ${LIBVNCCLIEXAMPLE_DIR} /${e}.c ${LIBVNCCLIEXAMPLE_DIR} /${${e}_EXTRA_SOURCES} )
617- set_target_properties (client_examples_${e} PROPERTIES OUTPUT_NAME ${e} )
618- set_target_properties (client_examples_${e} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /client_examples )
619- target_link_libraries (client_examples_${e} vncclient ${CMAKE_THREAD_LIBS_INIT} ${SDL2_LIBRARY} ${GTK2_LIBRARIES} ${FFMPEG_LIBRARIES} )
620- endforeach (e ${LIBVNCCLIENT_EXAMPLES} )
621-
610+ if (WITH_EXAMPLES)
611+ foreach (e ${LIBVNCSERVER_EXAMPLES} )
612+ add_executable (examples_${e} ${LIBVNCSRVEXAMPLE_DIR} /${e}.c )
613+ set_target_properties (examples_${e} PROPERTIES OUTPUT_NAME ${e} )
614+ set_target_properties (examples_${e} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /examples )
615+ target_link_libraries (examples_${e} vncserver ${CMAKE_THREAD_LIBS_INIT} ${CARBON_LIBRARY} ${IOKIT_LIBRARY} ${IOSURFACE_LIBRARY} )
616+ endforeach (e ${LIBVNCSERVER_EXAMPLES} )
617+
618+ foreach (e ${LIBVNCCLIENT_EXAMPLES} )
619+ add_executable (client_examples_${e} ${LIBVNCCLIEXAMPLE_DIR} /${e}.c ${LIBVNCCLIEXAMPLE_DIR} /${${e}_EXTRA_SOURCES} )
620+ set_target_properties (client_examples_${e} PROPERTIES OUTPUT_NAME ${e} )
621+ set_target_properties (client_examples_${e} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /client_examples )
622+ target_link_libraries (client_examples_${e} vncclient ${CMAKE_THREAD_LIBS_INIT} ${SDL2_LIBRARY} ${GTK2_LIBRARIES} ${FFMPEG_LIBRARIES} )
623+ endforeach (e ${LIBVNCCLIENT_EXAMPLES} )
624+ endif ( WITH_EXAMPLES )
622625
623626#
624627# them tests
625628#
626629
630+ if (WITH_TESTS)
631+
627632if (UNIX )
628633 set (ADDITIONAL_TEST_LIBS m)
629634endif (UNIX )
@@ -695,6 +700,8 @@ if(LIBVNCSERVER_WITH_WEBSOCKETS)
695700 add_test (NAME wstest COMMAND test_wstest )
696701endif (LIBVNCSERVER_WITH_WEBSOCKETS )
697702
703+ endif (WITH_TESTS )
704+
698705#
699706# this gets the libraries needed by TARGET in "-libx -liby ..." form
700707#
@@ -724,22 +731,65 @@ get_link_libraries(PRIVATE_LIBS vncclient)
724731configure_file (${CMAKE_CURRENT_SOURCE_DIR} /libvncclient.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR} /libvncclient.pc @ONLY )
725732
726733if (LIBVNCSERVER_INSTALL)
727- install (TARGETS vncserver DESTINATION ${CMAKE_INSTALL_LIBDIR} )
728- install (TARGETS vncclient DESTINATION ${CMAKE_INSTALL_LIBDIR} )
729- install (FILES
730- rfb/keysym.h
731- rfb/threading.h
732- rfb/rfb.h
733- rfb/rfbclient.h
734- ${CMAKE_CURRENT_BINARY_DIR} /rfb/rfbconfig.h
735- rfb/rfbproto.h
736- rfb/rfbregion.h
737- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /rfb
738- )
739-
740- install (FILES
741- ${CMAKE_CURRENT_BINARY_DIR} /libvncserver.pc
742- ${CMAKE_CURRENT_BINARY_DIR} /libvncclient.pc
743- DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig
744- )
734+ set (INSTALL_HEADER_FILES
735+ rfb/keysym.h
736+ rfb/threading.h
737+ rfb/rfb.h
738+ rfb/rfbclient.h
739+ ${CMAKE_CURRENT_BINARY_DIR} /rfb/rfbconfig.h
740+ rfb/rfbproto.h
741+ rfb/rfbregion.h
742+ )
743+
744+ set_property (TARGET vncclient PROPERTY PUBLIC_HEADER ${INSTALL_HEADER_FILES} )
745+ set_property (TARGET vncserver PROPERTY PUBLIC_HEADER ${INSTALL_HEADER_FILES} )
746+ if (WIN32 )
747+ INSTALL (TARGETS vncclient vncserver
748+ EXPORT LibVNCServerTargets
749+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR} "
750+ LIBRARY DESTINATION "${CMAKE_INSTALL_BINDIR} "
751+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR} "
752+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /rfb
753+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
754+ )
755+ else ()
756+ INSTALL (TARGETS vncclient vncserver
757+ EXPORT LibVNCServerTargets
758+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR} "
759+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR} "
760+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR} "
761+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /rfb
762+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
763+ )
764+ endif ()
765+
766+ # Install cmake configure files
767+ install (EXPORT LibVNCServerTargets
768+ NAMESPACE
769+ "LibVNCServer::"
770+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/LibVNCServer"
771+ )
772+
773+ include (CMakePackageConfigHelpers )
774+ configure_package_config_file (
775+ ${PROJECT_SOURCE_DIR} /cmake/Modules/LibVNCServerConfig.cmake.in
776+ ${CMAKE_BINARY_DIR} /LibVNCServerConfig.cmake
777+ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/LibVNCServer"
778+ )
779+ # Install cmake version configure file
780+ write_basic_package_version_file (
781+ "${CMAKE_BINARY_DIR} /LibVNCServerConfigVersion.cmake"
782+ VERSION ${PARA_VERSION}
783+ COMPATIBILITY AnyNewerVersion )
784+ install (FILES
785+ "${CMAKE_BINARY_DIR} /LibVNCServerConfigVersion.cmake"
786+ "${CMAKE_BINARY_DIR} /LibVNCServerConfig.cmake"
787+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/LibVNCServer" )
788+
789+
790+ install (FILES
791+ ${CMAKE_CURRENT_BINARY_DIR} /libvncserver.pc
792+ ${CMAKE_CURRENT_BINARY_DIR} /libvncclient.pc
793+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig
794+ )
745795endif ()
0 commit comments