diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..b94d9b60 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,156 @@ +cmake_minimum_required(VERSION 3.7) +project(putty LANGUAGES C) + +include(cmake/setup.cmake) + +# Scan the docs directory first, so that when we start calling +# installed_program(), we'll know if we have man pages available +add_subdirectory(doc) + +add_compile_definitions(HAVE_CMAKE_H) + +include_directories(terminal) + +add_library(utils STATIC + ${GENERATED_COMMIT_C}) +add_dependencies(utils cmake_commit_c) +add_subdirectory(utils) +add_subdirectory(stubs) + +add_library(logging OBJECT + logging.c) + +add_library(eventloop STATIC + callback.c timing.c) + +add_library(console STATIC + clicons.c console.c) + +add_library(settings STATIC + cmdline.c settings.c) + +add_library(crypto STATIC + proxy/cproxy.c proxy/sshproxy.c) +add_subdirectory(crypto) + +add_library(network STATIC + errsock.c logging.c x11disp.c + proxy/proxy.c + proxy/http.c + proxy/socks4.c + proxy/socks5.c + proxy/telnet.c + proxy/local.c + proxy/interactor.c) + +add_library(keygen STATIC + import.c) +add_subdirectory(keygen) + +add_library(agent STATIC + sshpubk.c pageant.c aqsync.c) + +add_library(guiterminal STATIC + terminal/terminal.c terminal/bidi.c + ldisc.c config.c dialog.c + $<TARGET_OBJECTS:logging>) + +add_library(noterminal STATIC + stubs/no-term.c ldisc.c) + +add_library(all-backends OBJECT + pinger.c) + +add_library(sftpclient STATIC + psftpcommon.c) +add_subdirectory(ssh) + +add_library(otherbackends STATIC + $<TARGET_OBJECTS:all-backends> + $<TARGET_OBJECTS:logging>) +add_subdirectory(otherbackends) + +add_executable(testcrypt + test/testcrypt.c sshpubk.c ssh/crc-attack-detector.c) +target_link_libraries(testcrypt + keygen crypto utils ${platform_libraries}) + +add_executable(test_host_strfoo + utils/host_strchr_internal.c) +target_compile_definitions(test_host_strfoo PRIVATE TEST) +target_link_libraries(test_host_strfoo utils ${platform_libraries}) + +add_executable(test_decode_utf8 + utils/decode_utf8.c) +target_compile_definitions(test_decode_utf8 PRIVATE TEST) +target_link_libraries(test_decode_utf8 utils ${platform_libraries}) + +add_executable(test_tree234 + utils/tree234.c) +target_compile_definitions(test_tree234 PRIVATE TEST) +target_link_libraries(test_tree234 utils ${platform_libraries}) + +add_executable(test_wildcard + utils/wildcard.c) +target_compile_definitions(test_wildcard PRIVATE TEST) +target_link_libraries(test_wildcard utils ${platform_libraries}) + +add_executable(test_cert_expr + utils/cert-expr.c) +target_compile_definitions(test_cert_expr PRIVATE TEST) +target_link_libraries(test_cert_expr utils ${platform_libraries}) + +add_executable(bidi_gettype + terminal/bidi_gettype.c) +target_link_libraries(bidi_gettype guiterminal utils ${platform_libraries}) + +add_executable(bidi_test + terminal/bidi_test.c) +target_link_libraries(bidi_test guiterminal utils ${platform_libraries}) + +add_executable(plink + ${platform}/plink.c) +# Note: if we ever port Plink to a platform where we can't implement a +# serial backend, this be_list command will need to become platform- +# dependent, so that it only sets the SERIAL option on platforms where +# that backend exists. For the moment, though, we have serial port +# backends for both our platforms, so we can do this unconditionally. +be_list(plink Plink SSH SERIAL OTHERBACKENDS) +target_link_libraries(plink + eventloop noterminal console sshclient otherbackends settings network crypto + utils + ${platform_libraries}) +installed_program(plink) + +add_executable(pscp + pscp.c) +be_list(pscp PSCP SSH) +target_link_libraries(pscp + sftpclient eventloop console sshclient settings network crypto utils + ${platform_libraries}) +installed_program(pscp) + +add_executable(psftp + psftp.c) +be_list(psftp PSFTP SSH) +target_link_libraries(psftp + sftpclient eventloop console sshclient settings network crypto utils + ${platform_libraries}) +installed_program(psftp) + +add_executable(psocks + ${platform}/psocks.c + psocks.c + stubs/no-rand.c + proxy/nocproxy.c + proxy/nosshproxy.c + ssh/portfwd.c) +target_link_libraries(psocks + eventloop console network utils + ${platform_libraries}) + +foreach(subdir ${platform} ${extra_dirs}) + add_subdirectory(${subdir}) +endforeach() + +configure_file(cmake/cmake.h.in ${GENERATED_SOURCES_DIR}/cmake.h) |