mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-06-01 09:20:28 -05:00

This commit replaces all those fiddly little linking modules (be_all.c, be_none.c, be_ssh.c etc) with a single source file controlled by ifdefs, and introduces a function be_list() in setup.cmake that makes it easy to compile a version of it appropriate to each application. This is a net reduction in code according to 'git diff --stat', even though I've introduced more comments. It also gets rid of another pile of annoying little source files in the top-level directory that didn't deserve to take up so much room in 'ls'. More concretely, doing this has some maintenance advantages. Centralisation means less to maintain (e.g. n_ui_backends is worked out once in a way that makes sense everywhere), and also, 'appname' can now be reliably set per program. Previously, some programs got the wrong appname due to sharing the same linking module (e.g. Plink had appname="PuTTY"), which was a latent bug that would have manifested if I'd wanted to reuse the same string in another context. One thing I've changed in this rework is that Windows pterm no longer has the ConPTY backend in its backends[]: it now has an empty one. The special be_conpty.c module shouldn't really have been there in the first place: it was used in the very earliest uncommitted drafts of the ConPTY work, where I was using another method of selecting that backend, but now that Windows pterm has a dedicated backend_vt_from_conf() that refers to conpty_backend by name, it has no need to live in backends[] at all, just as it doesn't have to in Unix pterm.
204 lines
5.6 KiB
CMake
204 lines
5.6 KiB
CMake
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
|
|
|
add_sources_from_current_dir(utils
|
|
utils/arm_arch_queries.c
|
|
utils/block_signal.c
|
|
utils/cloexec.c
|
|
utils/dputs.c
|
|
utils/filename.c
|
|
utils/fontspec.c
|
|
utils/getticks.c
|
|
utils/get_username.c
|
|
utils/keysym_to_unicode.c
|
|
utils/make_dir_and_check_ours.c
|
|
utils/make_dir_path.c
|
|
utils/nonblock.c
|
|
utils/open_for_write_would_lose_data.c
|
|
utils/pgp_fingerprints.c
|
|
utils/pollwrap.c
|
|
utils/signal.c
|
|
utils/x11_ignore_error.c
|
|
# Compiled icon pixmap files
|
|
putty-xpm.c
|
|
putty-config-xpm.c
|
|
pterm-xpm.c
|
|
pterm-config-xpm.c
|
|
# We want the ISO C implementation of ltime(), because we don't have
|
|
# a local better alternative
|
|
../utils/ltime.c)
|
|
add_sources_from_current_dir(eventloop
|
|
cliloop.c uxsel.c)
|
|
add_sources_from_current_dir(console
|
|
console.c)
|
|
add_sources_from_current_dir(settings
|
|
storage.c)
|
|
add_sources_from_current_dir(network
|
|
network.c fd-socket.c agent-socket.c peerinfo.c local-proxy.c x11.c)
|
|
add_sources_from_current_dir(sshcommon
|
|
noise.c)
|
|
add_sources_from_current_dir(sshclient
|
|
gss.c agent-client.c sharing.c)
|
|
add_sources_from_current_dir(sshserver
|
|
sftpserver.c procnet.c)
|
|
add_sources_from_current_dir(sftpclient
|
|
sftp.c)
|
|
add_sources_from_current_dir(otherbackends
|
|
serial.c)
|
|
add_sources_from_current_dir(agent
|
|
agent-client.c)
|
|
|
|
add_executable(fuzzterm
|
|
${CMAKE_SOURCE_DIR}/fuzzterm.c
|
|
${CMAKE_SOURCE_DIR}/logging.c
|
|
${CMAKE_SOURCE_DIR}/stubs/noprint.c
|
|
unicode.c
|
|
no-gtk.c)
|
|
be_list(fuzzterm FuZZterm)
|
|
add_dependencies(fuzzterm generated_licence_h)
|
|
target_link_libraries(fuzzterm
|
|
guiterminal eventloop charset settings utils)
|
|
|
|
add_executable(osxlaunch
|
|
osxlaunch.c)
|
|
|
|
add_sources_from_current_dir(plink no-gtk.c)
|
|
add_sources_from_current_dir(pscp no-gtk.c)
|
|
add_sources_from_current_dir(psftp no-gtk.c)
|
|
add_sources_from_current_dir(psocks no-gtk.c)
|
|
|
|
add_executable(psusan
|
|
psusan.c
|
|
${CMAKE_SOURCE_DIR}/stubs/nogss.c
|
|
${CMAKE_SOURCE_DIR}/ssh/scpserver.c
|
|
no-gtk.c
|
|
pty.c)
|
|
be_list(psusan psusan)
|
|
target_link_libraries(psusan
|
|
eventloop sshserver keygen settings network crypto utils)
|
|
installed_program(psusan)
|
|
|
|
add_library(puttygen-common OBJECT
|
|
${CMAKE_SOURCE_DIR}/stubs/notiming.c
|
|
keygen-noise.c
|
|
no-gtk.c
|
|
noise.c
|
|
storage.c
|
|
${CMAKE_SOURCE_DIR}/sshpubk.c
|
|
${CMAKE_SOURCE_DIR}/sshrand.c)
|
|
|
|
add_executable(puttygen
|
|
${CMAKE_SOURCE_DIR}/cmdgen.c
|
|
$<TARGET_OBJECTS:puttygen-common>)
|
|
target_link_libraries(puttygen keygen console crypto utils)
|
|
installed_program(puttygen)
|
|
|
|
add_executable(cgtest
|
|
${CMAKE_SOURCE_DIR}/cgtest.c
|
|
$<TARGET_OBJECTS:puttygen-common>)
|
|
target_link_libraries(cgtest keygen console crypto utils)
|
|
|
|
add_executable(testsc
|
|
${CMAKE_SOURCE_DIR}/test/testsc.c)
|
|
target_link_libraries(testsc keygen crypto utils)
|
|
|
|
add_executable(testzlib
|
|
${CMAKE_SOURCE_DIR}/test/testzlib.c
|
|
${CMAKE_SOURCE_DIR}/ssh/zlib.c)
|
|
target_link_libraries(testzlib utils)
|
|
|
|
add_executable(uppity
|
|
uppity.c
|
|
${CMAKE_SOURCE_DIR}/ssh/scpserver.c
|
|
no-gtk.c
|
|
pty.c
|
|
${CMAKE_SOURCE_DIR}/stubs/nogss.c)
|
|
be_list(uppity Uppity)
|
|
target_link_libraries(uppity
|
|
eventloop sshserver keygen settings network crypto utils)
|
|
|
|
if(GTK_FOUND)
|
|
add_sources_from_current_dir(utils
|
|
utils/align_label_left.c
|
|
utils/buildinfo_gtk_version.c
|
|
utils/get_label_text_dimensions.c
|
|
utils/get_x11_display.c
|
|
utils/our_dialog.c
|
|
utils/string_width.c
|
|
columns.c)
|
|
add_sources_from_current_dir(guiterminal
|
|
window.c unifont.c dialog.c config-gtk.c gtk-common.c config-unix.c unicode.c printing.c)
|
|
add_dependencies(guiterminal generated_licence_h) # dialog.c uses licence.h
|
|
|
|
add_executable(pageant
|
|
pageant.c
|
|
${CMAKE_SOURCE_DIR}/stubs/nogss.c
|
|
askpass.c
|
|
x11.c
|
|
noise.c
|
|
${CMAKE_SOURCE_DIR}/ssh/x11fwd.c
|
|
${CMAKE_SOURCE_DIR}/proxy/nosshproxy.c)
|
|
be_list(pageant Pageant)
|
|
target_link_libraries(pageant
|
|
eventloop console agent settings network crypto utils
|
|
${GTK_LIBRARIES})
|
|
installed_program(pageant)
|
|
|
|
add_executable(pterm
|
|
pterm.c
|
|
main-gtk-simple.c
|
|
${CMAKE_SOURCE_DIR}/stubs/nogss.c
|
|
${CMAKE_SOURCE_DIR}/proxy/nosshproxy.c
|
|
pty.c)
|
|
be_list(pterm pterm)
|
|
target_link_libraries(pterm
|
|
guiterminal eventloop settings charset utils
|
|
${GTK_LIBRARIES} ${X11_LIBRARIES})
|
|
installed_program(pterm)
|
|
|
|
add_executable(ptermapp
|
|
pterm.c
|
|
main-gtk-application.c
|
|
${CMAKE_SOURCE_DIR}/stubs/nocmdline.c
|
|
${CMAKE_SOURCE_DIR}/stubs/nogss.c
|
|
${CMAKE_SOURCE_DIR}/proxy/nosshproxy.c
|
|
pty.c)
|
|
be_list(ptermapp pterm)
|
|
target_link_libraries(ptermapp
|
|
guiterminal eventloop settings charset utils
|
|
${GTK_LIBRARIES} ${X11_LIBRARIES})
|
|
|
|
add_executable(putty
|
|
putty.c
|
|
main-gtk-simple.c)
|
|
be_list(putty PuTTY SSH SERIAL OTHERBACKENDS)
|
|
target_link_libraries(putty
|
|
guiterminal eventloop sshclient otherbackends settings
|
|
network crypto charset utils
|
|
${GTK_LIBRARIES} ${X11_LIBRARIES})
|
|
set_target_properties(putty
|
|
PROPERTIES LINK_INTERFACE_MULTIPLICITY 2)
|
|
installed_program(putty)
|
|
|
|
add_executable(puttyapp
|
|
putty.c
|
|
main-gtk-application.c
|
|
${CMAKE_SOURCE_DIR}/stubs/nocmdline.c)
|
|
be_list(puttyapp PuTTY SSH SERIAL OTHERBACKENDS)
|
|
target_link_libraries(puttyapp
|
|
guiterminal eventloop sshclient otherbackends settings
|
|
network crypto charset utils
|
|
${GTK_LIBRARIES} ${X11_LIBRARIES})
|
|
|
|
add_executable(puttytel
|
|
putty.c
|
|
main-gtk-simple.c
|
|
${CMAKE_SOURCE_DIR}/stubs/nogss.c
|
|
${CMAKE_SOURCE_DIR}/stubs/norand.c
|
|
${CMAKE_SOURCE_DIR}/proxy/nocproxy.c
|
|
${CMAKE_SOURCE_DIR}/proxy/nosshproxy.c)
|
|
be_list(puttytel PuTTYtel SERIAL OTHERBACKENDS)
|
|
target_link_libraries(puttytel
|
|
guiterminal eventloop otherbackends settings network charset utils
|
|
${GTK_LIBRARIES} ${X11_LIBRARIES})
|
|
endif()
|