Merge pull request #2599 from unxed/iterm_fix
[far2l.git] / NetRocks / CMakeLists.txt
blob77731285abfe27adf8caf4aaefc1a82c5c93ff22
1 project(NetRocks)
3 set(SOURCES
4 src/Erroring.cpp
5 src/Globals.cpp
6 src/SitesConfig.cpp
7 src/NetRocks.cpp
8 src/PluginImpl.cpp
9 src/PluginPanelItems.cpp
10 src/PooledStrings.cpp
11 src/GetItems.cpp
12 src/BackgroundTasks.cpp
13 src/Location.cpp
14 src/ConnectionsPool.cpp
15 src/ImportFarFtpSites.cpp
16 src/Host/HostLocal.cpp
17 src/Host/HostRemote.cpp
18 src/Host/InitDeinitCmd.cpp
19 src/UI/DialogUtils.cpp
20 src/UI/Settings/ConfigurePlugin.cpp
21 src/UI/Settings/SiteConnectionEditor.cpp
22 src/UI/Settings/ExtraSiteSettings.cpp
23 src/UI/Settings/ProxySettings.cpp
24 src/UI/Settings/ConfigureProtocolSFTPSCP.cpp
25 src/UI/Settings/ConfigureProtocolFTP.cpp
26 src/UI/Settings/ConfigureProtocolSMB.cpp
27 src/UI/Settings/ConfigureProtocolNFS.cpp
28 src/UI/Settings/ConfigureProtocolWebDAV.cpp
29 src/UI/Settings/ConfigureProtocolSHELL.cpp
30 src/Protocol/SHELL/WayToShellConfig.cpp
31 src/UI/Activities/Confirm.cpp
32 src/UI/Activities/ConfirmXfer.cpp
33 src/UI/Activities/ConfirmOverwrite.cpp
34 src/UI/Activities/ConfirmChangeMode.cpp
35 src/UI/Activities/SimpleOperationProgress.cpp
36 src/UI/Activities/ComplexOperationProgress.cpp
37 src/UI/Activities/AbortOperationRequest.cpp
38 src/UI/Activities/InteractiveLogin.cpp
39 src/UI/Activities/ConfirmNewServerIdentity.cpp
40 src/UI/Activities/WhatOnError.cpp
41 src/UI/Activities/BackgroundTasksUI.cpp
42 src/Op/Utils/ProgressStateUpdate.cpp
43 src/Op/Utils/Enumer.cpp
44 src/Op/Utils/IOBuffer.cpp
45 src/Op/OpBase.cpp
46 src/Op/OpConnect.cpp
47 src/Op/OpCheckDirectory.cpp
48 src/Op/OpChangeMode.cpp
49 src/Op/OpEnumDirectory.cpp
50 src/Op/OpXfer.cpp
51 src/Op/OpRemove.cpp
52 src/Op/OpMakeDirectory.cpp
53 src/Op/OpExecute.cpp
54 src/Op/OpGetLinkTarget.cpp
55 src/Protocol/SplitLocationSpecification.cpp
56 src/Protocol/Protocol.cpp
60 set(PROTOCOL_SOURCES
61 src/Erroring.cpp
62 src/Host/HostRemoteBroker.cpp
65 add_executable (NetRocks-FILE
66     ${PROTOCOL_SOURCES}
67     src/Protocol/File/ProtocolFile.cpp
68     src/Host/HostLocal.cpp
71 add_executable (NetRocks-SHELL
72     ${PROTOCOL_SOURCES}
73     src/Protocol/SHELL/ProtocolSHELL.cpp
74     src/Protocol/SHELL/ProtocolSHELL_ExecCmd.cpp
75     src/Protocol/SHELL/WayToShellConfig.cpp
76     src/Protocol/SHELL/WayToShell.cpp
77     src/Protocol/SHELL/Request.cpp
78     src/Protocol/SHELL/Parse.cpp
79     src/Protocol/SHELL/RemoteSh.cpp
80     src/Protocol/ShellParseUtils.cpp
83 # get rid of warning: dynamic exception specifications are deprecated in C++11
84 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
86 target_link_libraries(NetRocks-FILE utils)
87 target_include_directories(NetRocks-FILE PRIVATE src)
88 set_target_properties(NetRocks-FILE
89     PROPERTIES
90     RUNTIME_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/NetRocks/plug"
91     PREFIX ""
92     SUFFIX ".broker")
93 target_compile_options(NetRocks-FILE PUBLIC -DNETROCKS_PROTOCOL)
95 target_link_libraries(NetRocks-SHELL utils)
96 target_include_directories(NetRocks-SHELL PRIVATE src)
97 set_target_properties(NetRocks-SHELL
98     PROPERTIES
99     RUNTIME_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/NetRocks/plug"
100     PREFIX ""
101     SUFFIX ".broker")
102 target_compile_options(NetRocks-SHELL PUBLIC -DNETROCKS_PROTOCOL)
104 add_custom_command(TARGET NetRocks-SHELL POST_BUILD
105     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/Protocol/SHELL/Helpers
106     COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/Protocol/SHELL/Helpers "${INSTALL_DIR}/Plugins/NetRocks/plug/SHELL"
110 if (LIBSSH_FOUND AND ((NOT DEFINED NR_SFTP) OR NR_SFTP))
111     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_SFTP")
112     add_executable (NetRocks-SFTP
113         ${PROTOCOL_SOURCES}
114         src/Protocol/SSH/SSHConnection.cpp
115         src/Protocol/SSH/ProtocolSFTP.cpp
116         src/Protocol/SSH/ProtocolSCP.cpp
117         src/Protocol/FileStatsOverride.cpp
118         src/Protocol/ShellParseUtils.cpp
119     )
120     target_link_libraries(NetRocks-SFTP utils ${LIBSSH_LIBRARIES})
121     target_include_directories(NetRocks-SFTP PRIVATE src ${LIBSSH_INCLUDE_DIRS})
122     set_target_properties(NetRocks-SFTP
123         PROPERTIES
124         RUNTIME_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/NetRocks/plug"
125         PREFIX ""
126         SUFFIX ".broker")
127 endif ()
129 if (LIBSMBCLIENT_FOUND AND ((NOT DEFINED NR_SMB) OR NR_SMB))
130     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_SMB")
131     add_executable (NetRocks-SMB
132         ${PROTOCOL_SOURCES}
133         src/Protocol/SMB/ProtocolSMB.cpp
134         src/Protocol/SMB/NMBEnum.cpp
135     )
136     target_link_libraries(NetRocks-SMB utils ${LIBSMBCLIENT_LIBRARIES})
137     target_include_directories(NetRocks-SMB PRIVATE src ${LIBSMBCLIENT_INCLUDE_DIRS})
138     set_target_properties(NetRocks-SMB
139         PROPERTIES
140         RUNTIME_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/NetRocks/plug"
141         PREFIX ""
142         SUFFIX ".broker")
143 endif ()
145 if (LIBNFS_FOUND AND ((NOT DEFINED NR_NFS) OR NR_NFS))
146     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_NFS")
147     add_executable (NetRocks-NFS
148         ${PROTOCOL_SOURCES}
149         src/Protocol/NFS/ProtocolNFS.cpp
150     )
151     target_link_libraries(NetRocks-NFS utils ${LIBNFS_LIBRARIES})
152     target_include_directories(NetRocks-NFS PRIVATE src ${LIBNFS_INCLUDE_DIRS})
153     set_target_properties(NetRocks-NFS
154         PROPERTIES
155         RUNTIME_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/NetRocks/plug"
156         PREFIX ""
157         SUFFIX ".broker")
158 endif ()
161 if (LIBNEON_FOUND AND ((NOT DEFINED NR_WEBDAV) OR NR_WEBDAV))
162     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_WEBDAV")
163     add_executable (NetRocks-WebDAV
164         ${PROTOCOL_SOURCES}
165         src/Protocol/WebDAV/ProtocolWebDAV.cpp
166     )
167     target_link_libraries(NetRocks-WebDAV utils ${LIBNEON_LIBRARIES})
168     target_include_directories(NetRocks-WebDAV PRIVATE src ${LIBNEON_INCLUDE_DIRS})
169     set_target_properties(NetRocks-WebDAV
170         PROPERTIES
171         RUNTIME_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/NetRocks/plug"
172         PREFIX ""
173         SUFFIX ".broker")
174 endif ()
176     add_executable (NetRocks-FTP
177         ${PROTOCOL_SOURCES}
178         src/Protocol/FTP/ProtocolFTP.cpp
179         src/Protocol/FTP/FTPConnection.cpp
180         src/Protocol/FTP/FTPParseMLST.cpp
181         src/Protocol/FTP/FTPParseLIST.cpp
182         src/Protocol/DirectoryEnumCache.cpp
183     )
184     target_link_libraries(NetRocks-FTP utils)
185     target_include_directories(NetRocks-FTP PRIVATE src)
186 if (OPENSSL_FOUND AND ((NOT DEFINED NR_OPENSSL) OR NR_OPENSSL))
187     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_OPENSSL")
188     target_link_libraries(NetRocks-FTP ${OPENSSL_LIBRARIES})
189     target_include_directories(NetRocks-FTP PRIVATE ${OPENSSL_INCLUDE_DIR})
190 endif ()
191     set_target_properties(NetRocks-FTP
192         PROPERTIES
193         RUNTIME_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/NetRocks/plug"
194         PREFIX ""
195         SUFFIX ".broker")
198 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FAR_HAS_NAMELESS_UNIONS")
200 add_library (NetRocks MODULE ${SOURCES})
202 target_link_libraries(NetRocks utils far2l)
204 target_include_directories(NetRocks PRIVATE src)
205 target_include_directories(NetRocks PRIVATE ../WinPort)
206 target_include_directories(NetRocks PRIVATE ../far2l/far2sdk)
208 target_compile_definitions(NetRocks PRIVATE)
210 set_target_properties(NetRocks
211     PROPERTIES
212         LIBRARY_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/NetRocks/plug"
213         PREFIX ""
214         SUFFIX ".far-plug-wide")
216 add_custom_command(TARGET NetRocks POST_BUILD
217     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/configs
218     COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/configs "${INSTALL_DIR}/Plugins/NetRocks")