No reason to check for Cryptopp < 5.5
[amule.git] / src / CMakeLists.txt
blobb9c9e937d749ce117efcb72fa5825e1247fd27ff
1 set (LIBS_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs")
2 set (INCLUDE_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
3 set (SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
4 set (EC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/ec/cpp")
6 add_custom_command (
7         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pixmaps/flags_xpm/CountryFlags.h
8         COMMAND ${CMAKE_COMMAND} -DHEADER_FILE="${CMAKE_CURRENT_BINARY_DIR}/pixmaps/flags_xpm/CountryFlags.h" -P ${CMAKE_CURRENT_SOURCE_DIR}/pixmaps/flags_xpm/CMakeLists.txt
9         WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/pixmaps/flags_xpm"
12 add_custom_command (
13         OUTPUT ${EC_INCLUDE_DIR}/ECCodes.h
14         COMMAND ${CMAKE_COMMAND} -DHEADER_FILE="${CMAKE_CURRENT_BINARY_DIR}/libs/ec/cpp/ECCodes.h" -P ${CMAKE_CURRENT_SOURCE_DIR}/libs/ec/abstracts/CMakeLists.txt
15         WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/libs/ec/abstracts"
18 add_custom_command (
19         OUTPUT ${EC_INCLUDE_DIR}/ECTagTypes.h
20         COMMAND ${CMAKE_COMMAND} -DHEADER_FILE="${CMAKE_CURRENT_BINARY_DIR}/libs/ec/cpp/ECTagTypes.h" -P ${CMAKE_CURRENT_SOURCE_DIR}/libs/ec/abstracts/CMakeLists.txt
21         WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/libs/ec/abstracts"
24 add_custom_target (generate_CountryFlags.h DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pixmaps/flags_xpm/CountryFlags.h)
25 add_custom_target (generate_ECCodes.h DEPENDS ${EC_INCLUDE_DIR}/ECCodes.h)
26 add_custom_target (generate_ECTagTypes.h DEPENDS ${EC_INCLUDE_DIR}/ECTagTypes.h)
27 set_source_files_properties (${CMAKE_CURRENT_BINARY_DIR}/pixmaps/flags_xpm/CountryFlags.h PROPERTIES GENERATED TRUE)
28 set_source_files_properties (${EC_INCLUDE_DIR}/ECCodes.h PROPERTIES GENERATED TRUE)
29 set_source_files_properties (${EC_INCLUDE_DIR}/ECTagTypes.h PROPERTIES GENERATED TRUE)
30 include (${CMAKE_SOURCE_DIR}/cmake/source-vars.cmake)
32 if (BUILD_UTIL)
33         add_subdirectory (utils)
34 endif()
36 if (BUILD_WEBSERVER)
37         add_subdirectory (webserver)
38 endif()
40 if (INSTALL_SKINS)
41         add_subdirectory (skins)
42 endif()
45 if (ENABLE_IP2COUNTRY)
46         set_source_files_properties (${IP2COUNTRY}
47                 PROPERTIES COMPILE_FLAGS "-I${CMAKE_CURRENT_BINARY_DIR} -I${CMAKE_CURRENT_SOURCE_DIR}/pixmaps/flags_xpm"
48         )
49 endif()
51 if (NEED_LIB)
52         add_subdirectory (libs)
53 endif()
55 if (BUILD_AMULECMD)
56         add_executable (amulecmd
57                 DataToText.cpp
58                 ExternalConnector.cpp
59                 LoggerConsole.cpp
60                 NetworkFunctions.cpp
61                 OtherFunctions.cpp
62                 TextClient.cpp
63         )
65         if (WIN32)
66                 target_sources (amulecmd
67                         PRIVATE ${CMAKE_SOURCE_DIR}/version.rc
68                 )
69         endif()
71         target_compile_definitions (amulecmd
72                 PRIVATE wxUSE_GUI=0
73         )
75         target_include_directories (amulecmd
76                 PRIVATE ${SRC_DIR}
77         )
79         target_link_libraries (amulecmd
80                 mulecommon
81                 mulesocket
82                 ec
83         )
85         if (HAVE_BFD)
86                 target_link_libraries (amulecmd ${LIBBFD})
87         endif (HAVE_BFD)
89         if (HAVE_LIBREADLINE)
90                 target_link_libraries (amulecmd ${READLINE_LIBRARIES})
91         endif()
93         install (TARGETS amulecmd
94                 RUNTIME DESTINATION bin
95         )
96 endif (BUILD_AMULECMD)
98 if (BUILD_DAEMON)
99         add_executable (amuled
100                 ${CORE_SOURCES}
101                 ${COMMON_SOURCES}
102                 amuled.cpp
103         )
105         if (WIN32)
106                 target_sources (amuled
107                         PRIVATE ${CMAKE_SOURCE_DIR}/version.rc
108                 )
109         endif()
111         target_compile_definitions (amuled
112                 PRIVATE AMULE_DAEMON
113                 PRIVATE wxUSE_GUI=0
114         )
116         target_include_directories (amuled
117                 PRIVATE ${SRC_DIR}
118         )
120         target_link_libraries (amuled
121                 ec
122                 muleappcommon
123                 muleappcore
124                 mulecommon
125                 mulesocket
126                 wxWidgets::NET
127         )
129         if (HAVE_BFD)
130                 target_link_libraries (amuled
131                         ${LIBBFD}
132                 )
133         endif()
135         if (WIN32)
136                 target_link_libraries (amuled
137                         shlwapi.lib
138                 )
139         endif()
141         install (TARGETS amuled
142                 RUNTIME DESTINATION bin
143         )
144 endif()
146 if (BUILD_ED2K)
147         add_executable (ed2k
148                 ED2KLinkParser.cpp
149                 MagnetURI.cpp
150                 MuleCollection.cpp
151         )
153         if (WIN32)
154                 target_sources (ed2k
155                         PRIVATE ${CMAKE_SOURCE_DIR}/version.rc
156                 )
157         endif()
159         target_compile_definitions (ed2k
160                 PRIVATE "USE_STD_STRING"
161         )
163         if (WIN32)
164                 target_link_libraries (ed2k
165                         shlwapi.lib
166                 )
167         endif()
169         install (TARGETS ed2k
170                 RUNTIME DESTINATION bin
171         )
172 endif()
174 if (BUILD_MONOLITHIC)
175         add_executable (amule
176                 ${COMMON_SOURCES}
177                 ${CORE_SOURCES}
178                 ${GUI_SOURCES}
179                 CaptchaDialog.cpp
180                 CaptchaGenerator.cpp
181                 PartFileConvert.cpp
182                 PartFileConvertDlg.cpp
183         )
185         if (WIN32)
186                 target_sources (amule
187                         PRIVATE ${CMAKE_SOURCE_DIR}/version.rc
188                 )
189         endif()
191         target_link_libraries (amule
192                 ec
193                 muleappcommon
194                 muleappcore
195                 muleappgui
196                 mulecommon
197                 mulesocket
198                 $<$<VERSION_LESS:${wxWidgets_VERSION_STRING},3.1.2>:wxWidgets::ADV>
199                 wxWidgets::NET
200         )
202         if (HAVE_BFD)
203                 target_link_libraries (amule ${LIBBFD})
204         endif()
206         if (WIN32)
207                 target_link_libraries (amule
208                         shlwapi.lib
209                 )
211                 set_target_properties (amule
212                         PROPERTIES WIN32_EXECUTABLE TRUE
213                 )
214         endif()
216         install (TARGETS amule
217                 RUNTIME DESTINATION bin
218         )
219 endif (BUILD_MONOLITHIC)
221 if (BUILD_REMOTEGUI)
222         add_executable (amulegui
223                 ${COMMON_SOURCES}
224                 ${GUI_SOURCES}
225                 kademlia/utils/UInt128.cpp
226                 amule-remote-gui.cpp
227         )
229         if (WIN32)
230                 target_sources (amulegui
231                         PRIVATE ${CMAKE_SOURCE_DIR}/version.rc
232                 )
233         endif()
235         target_compile_definitions (amulegui
236                 PRIVATE "CLIENT_GUI"
237         )
239         target_include_directories (amulegui
240                 PRIVATE ${SRC_DIR}
241         )
243         target_link_libraries (amulegui
244                 ec
245                 muleappcommon
246                 muleappgui
247                 mulecommon
248                 mulesocket
249                 $<$<VERSION_LESS:${wxWidgets_VERSION_STRING},3.1.2>:wxWidgets::ADV>
250                 wxWidgets::NET
251         )
253         if (ENABLE_IP2COUNTRY)
254                 target_compile_definitions (amulegui
255                         PRIVATE ENABLE_IP2COUNTRY
256                 )
258         target_link_directories (amulegui
259                 ${LIBGEOIP}
260         )
261         endif()
263         if (HAVE_BFD)
264                 target_link_libraries (amulegui
265                         ${LIBBFD}
266                 )
267         endif()
269         if (WIN32)
270                 set_target_properties (amulegui
271                         PROPERTIES WIN32_EXECUTABLE TRUE
272                 )
273         endif()
275         install (TARGETS amulegui
276                 RUNTIME DESTINATION bin
277         )
278 endif()
280 if (NEED_LIB_MULEAPPCOMMON)
281         add_library (muleappcommon STATIC
282                 ${UPNP_SOURCES}
283                 CFile.cpp
284                 ClientCredits.cpp
285                 DataToText.cpp
286                 ED2KLink.cpp
287                 Friend.cpp
288                 GapList.cpp
289                 MagnetURI.cpp
290                 MemFile.cpp
291                 NetworkFunctions.cpp
292                 OtherFunctions.cpp
293                 Packet.cpp
294                 RLE.cpp
295                 SafeFile.cpp
296                 SHA.cpp
297                 Tag.cpp
298                 TerminationProcess.cpp
299                 Timer.cpp
300         )
302         target_compile_definitions (muleappcommon
303                 PUBLIC HAVE_CONFIG_H
304                 PRIVATE wxUSE_GUI=0
305                 PRIVATE WXUSINGDLL
306         )
308         target_include_directories (muleappcommon
309                 PUBLIC ${amule_BINARY_DIR}
310                 PUBLIC ${EC_INCLUDE_DIR}
311                 PRIVATE ${INCLUDE_INCLUDE_DIR}
312                 PRIVATE ${LIBS_INCLUDE_DIR}
313                 PRIVATE ${wxWidgets_INCLUDE_DIRS}
314                 PRIVATE ${ZLIB_INCLUDE_DIR}
315         )
317         add_dependencies (muleappcommon
318                 generate_ECCodes.h
319                 generate_ECTagTypes.h
320         )
322         if (ENABLE_UPNP)
323                 target_link_libraries (muleappcommon
324                         PUBLIC UPNP::Shared
325                 )
326         endif()
327 endif()
329 if (NEED_LIB_MULEAPPCORE)
330         if (BISON_FOUND)
331                 bison_target (Parser.cpp
332                         ${CMAKE_CURRENT_SOURCE_DIR}/Parser.y
333                         ${CMAKE_CURRENT_BINARY_DIR}/Parser.cpp
334                         COMPILE_FLAGS "-t -d -v"
335                 )
337                 set (PARSER ${CMAKE_CURRENT_BINARY_DIR}/Parser.cpp)
338         else()
339                 set (PARSER ${CMAKE_CURRENT_SOURCE_DIR}/Parser.cpp)
340         endif (BISON_FOUND)
342         if (FLEX_FOUND)
343                 if (FLEX_MATCH)
344                         set (FLEX_FLAGS "--header-file=${CMAKE_CURRENT_BINARY_DIR}/Scanner.h")
346                         set_source_files_properties (Parser.cpp
347                                 COMPILE_FLAGS "-I${CMAKE_CURRENT_BINARY_DIR}"
348                         )
349                 endif()
351                 flex_target (Scanner.cpp
352                         ${CMAKE_CURRENT_SOURCE_DIR}/Scanner.l
353                         ${CMAKE_CURRENT_BINARY_DIR}/Scanner.cpp
354                         COMPILE_FLAGS "${FLEX_FLAGS}"
355                 )
357                 flex_target (IPFilterScanner.cpp
358                         ${CMAKE_CURRENT_SOURCE_DIR}/IPFilterScanner.l
359                         ${CMAKE_CURRENT_BINARY_DIR}/IPFilterScanner.cpp
360                         COMPILE_FLAGS "-Pyyip"
361                 )
363                 set (SCANNER ${CMAKE_CURRENT_BINARY_DIR}/Scanner.cpp)
364                 set (IPFILTERSCANNER ${CMAKE_CURRENT_BINARY_DIR}/IPFilterScanner.cpp)
365         else()
366                 set (SCANNER ${CMAKE_CURRENT_SOURCE_DIR}/Scanner.cpp)
367                 set (IPFILTERSCANNER ${CMAKE_CURRENT_SOURCE_DIR}/IPFilterScanner.cpp)
368         endif()
370         add_library (muleappcore STATIC
371                 ${IPFILTERSCANNER}
372                 ${PARSER}
373                 ${SCANNER}
374                 kademlia/kademlia/Entry.cpp
375                 kademlia/kademlia/Indexed.cpp
376                 kademlia/kademlia/SearchManager.cpp
377                 kademlia/routing/RoutingBin.cpp
378                 kademlia/utils/UInt128.cpp
379                 AsyncDNS.cpp
380                 CanceledFileList.cpp
381                 DeadSourceList.cpp
382                 FileArea.cpp
383                 FileAutoClose.cpp
384                 PlatformSpecific.cpp
385                 RandomFunctions.cpp
386                 RC4Encrypt.cpp
387                 StateMachine.cpp
388                 TerminationProcessAmuleweb.cpp
389                 ThreadScheduler.cpp
390                 UPnPBase.cpp
391         )
393         target_compile_definitions (muleappcore
394                 PRIVATE HAVE_CONFIG_H
395                 PRIVATE wxUSE_GUI=0
396                 PRIVATE WXUSINGDLL
397         )
399         target_include_directories (muleappcore
400                 PRIVATE ${CMAKE_BINARY_DIR}
401                 PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
402                 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
403                 PRIVATE ${INCLUDE_INCLUDE_DIR}
404                 PRIVATE ${LIBS_INCLUDE_DIR}
405                 PRIVATE ${wxWidgets_INCLUDE_DIRS}
406         )
408         if (ENABLE_UPNP)
409                 target_include_directories (muleappcore
410                         PRIVATE $<TARGET_PROPERTY:UPNP::Shared,INTERFACE_INCLUDE_DIRECTORIES>
411                 )
412         endif()
414         target_link_libraries (muleappcore
415                 CRYPTOPP::CRYPTOPP
416         )
417 endif()
419 if (NEED_LIB_MULEAPPGUI)
420         add_library (muleappgui STATIC
421                 ${IP2COUNTRY}
422                 extern/wxWidgets/listctrl.cpp
423                 BarShader.cpp
424                 ColorFrameCtrl.cpp
425                 EditServerListDlg.cpp
426                 FileDetailListCtrl.cpp
427                 MuleCollection.cpp
428                 MuleColour.cpp
429                 MuleGifCtrl.cpp
430                 MuleListCtrl.cpp
431                 MuleNotebook.cpp
432                 MuleTextCtrl.cpp
433                 muuli_wdr.cpp
434         )
436         if (IP2COUNTRY AND GEOIP_INCLUDE_DIR)
437                 target_include_directories (muleappgui
438                         PRIVATE ${GEOIP_INCLUDE_DIR}
439                 )
440         endif()
442         target_compile_definitions (muleappgui
443                 PRIVATE WXUSINGDLL
444         )
446         target_include_directories (muleappgui
447                 PRIVATE ${INCLUDE_INCLUDE_DIR}
448                 PRIVATE ${LIBS_INCLUDE_DIR}
449         )
451         target_link_libraries (muleappgui
452                 wxWidgets::CORE
453         )
455         if (ENABLE_IP2COUNTRY)
456                 add_dependencies (muleappgui
457                         generate_CountryFlags.h)
458         endif()
459 endif()
461 IF (NEED_LIB_MULESOCKET)
462         add_library (mulesocket STATIC
463                 LibSocket.cpp
464         )
466         target_compile_definitions (mulesocket
467                 PRIVATE wxUSE_GUI=0
468         )
469         
470         target_include_directories (mulesocket
471                 PUBLIC ${INCLUDE_INCLUDE_DIR}
472                 PUBLIC ${LIBS_INCLUDE_DIR}
473         )
475         if (ENABLE_BOOST)
476                 target_include_directories (mulesocket
477                         PRIVATE ${Boost_INCLUDE_DIR}
478                         PRIVATE ${wxWidgets_INCLUDE_DIRS}
479                 )
481                 target_link_libraries (mulesocket
482                         ${Boost_LIBRARIES}
483                         wxWidgets::BASE
484                 )
485         else()
486                 target_link_libraries (mulesocket
487                         wxWidgets::NET
488                 )
489         endif()
490 endif()