]> git.meshlink.io Git - meshlink/blob - src/CMakeLists.txt
Improve CMake build system.
[meshlink] / src / CMakeLists.txt
1 #include(GenerateExportHeader)
2 #generate_export_header(meshlink BASE_NAME meshlink)
3
4 set(MESHLINK_SOURCES
5         adns.c
6         buffer.c
7         chacha-poly1305/chacha-poly1305.c
8         chacha-poly1305/chacha.c
9         chacha-poly1305/poly1305.c
10         conf.c
11         connection.c
12         crypto.c
13         devtools.c
14         discovery.c
15         dropin.c
16         ed25519/add_scalar.c
17         ed25519/ecdh.c
18         ed25519/ecdsa.c
19         ed25519/ecdsagen.c
20         ed25519/fe.c
21         ed25519/ge.c
22         ed25519/key_exchange.c
23         ed25519/keypair.c
24         ed25519/sc.c
25         ed25519/seed.c
26         ed25519/sha512.c
27         ed25519/sign.c
28         ed25519/verify.c
29         edge.c
30         event.c
31         graph.c
32         hash.c
33         list.c
34         logger.c
35         mdns.c
36         meshlink.c
37         meta.c
38         net.c
39         net_packet.c
40         net_setup.c
41         net_socket.c
42         netutl.c
43         node.c
44         prf.c
45         protocol.c
46         protocol_auth.c
47         protocol_edge.c
48         protocol_key.c
49         protocol_misc.c
50         route.c
51         splay_tree.c
52         sptps.c
53         submesh.c
54         utcp-test.c
55         utcp.c
56         utils.c
57         xoshiro.c
58 )
59
60 set(MESHLINK_PUBLIC_HEADERS
61         ../include/meshlink.h
62         ../include/meshlink++.h
63 )
64
65 add_library(meshlink ${MESHLINK_SOURCES})
66
67 target_compile_features(meshlink PUBLIC c_std_11)
68 target_include_directories(meshlink PUBLIC
69         $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
70         $<INSTALL_INTERFACE:include/meshlink>
71 )
72 target_link_libraries(meshlink PRIVATE Threads::Threads)
73 set_target_properties(meshlink PROPERTIES
74         PUBLIC_HEADER "${MESHLINK_PUBLIC_HEADERS}"
75         C_VISIBILITY_PRESET hidden
76         C_STANDARD 11
77 )
78
79 include(GNUInstallDirs)
80 install(TARGETS meshlink
81         LIBRARY
82         LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
83         PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/meshlink
84 )