Migration to GitLab
[6bed4] / CMakeLists.txt
1 message(FATAL_ERROR "This repository has moved to GitLab\n\nGet 6bed4 from\n\thttps://gitlab.com/arpa2/6bed4/\n")
2
3 project (6bed4 C)
4 cmake_minimum_required (VERSION 2.6)
5 set (VERSION "0.0.1")
6 cmake_policy (SET CMP0053 NEW)
7
8 add_definitions (-DLINUX)
9
10 option (DEBUG
11         "Switch on output and flags that aid developpers in debugging"
12         OFF)
13
14 if (DEBUG)
15         add_compile_options (-DDEBUG -ggdb3 -O0 -fstack-protector)
16 endif()
17
18 add_executable (6bed4peer "src/6bed4peer.c")
19 add_executable (6bed4router "src/6bed4router.c")
20
21 install (PROGRAMS
22         ${CMAKE_BINARY_DIR}/6bed4peer
23         ${CMAKE_BINARY_DIR}/6bed4router
24         DESTINATION sbin)
25 install (FILES
26         ${CMAKE_SOURCE_DIR}/doc/man/6bed4peer.man
27         ${CMAKE_SOURCE_DIR}/doc/man/6bed4router.man
28         DESTINATION ${SHARE_INSTALL_PREFIX}/man/man8)
29
30
31 #
32 # Setup a number of parameters.  Until we get 6bed4 standardised,
33 # these are preliminary values that MUST NOT be assumed static.
34 #
35 # This is why CMake will present a warning, but it will still
36 # go ahead with the values.  They can be changed at will using
37 # any tool that interacts with the CMakeCache.txt file or that
38 # overrides the settings at build time.
39 #
40 # Please beware that the values contain the information in a
41 # number of different forms.  In a perfect world, we would
42 # derive values from one another.  In a portable world, for
43 # now at least, we resort to letting you maintain consistency.
44 #
45
46 if (NOT ND_OPT_DESTINATION_LINKADDR)
47         message ("\nSTEALING an experimental Neighbor Discovery Option Type 253 for Destination Link-Layer Address -- please configure your local override\n")
48         set (ND_OPT_DESTINATION_LINKADDR 253
49                 CACHE STRING "Neighbor Discovery Option Type for Destination Link-Layer Address; Configure an unused value until this is standardised"
50         )
51 else ()
52         message (WARNING
53                 "Using experimental Neighbour Discovery Option Type ${ND_OPT_DESTINATION_LINKADDR}")
54 endif ()
55
56 if (NOT UDP_PORT_6BED4)
57         message ("\nSTEALING an experimental UDP port number 25790 or 0x64be -- please configure your local override\n")
58         set (UDP_PORT_6BED4 25790
59                 CACHE STRING "Decimal UDP Port to use in this 6bed4 setup; Must be consistent with other settings that mention it in different forms; Configure an unused value until this is standardised"
60         )
61         set (SERVER_6BED4_PORT_TXT "\"25790\""
62                 CACHE STRING "Decimal string representation of the UDP Port to use; Must be consistent with UDP_PORT_6BED4"
63         )
64         set (SERVER_6BED4_PORT_BINSTR "\"\\xbe\\x64\""
65                 CACHE STRING "Binary string representation of the UDP Port to use; Unsigned 16 bits in network byte order; Must be consistent with UDP_PORT_6BED4"
66         )
67 else ()
68         message (WARNING
69                 "Using experimental UDP port number ${UDP_PORT_6BED4}")
70 endif ()
71
72 if (NOT SERVER_6BED4_IPV4_TXT)
73         message ("\nSTEALING an expermental 6bed4 server IP address 145.136.0.1 -- please configure your local override\n")
74         set (SERVER_6BED4_IPV4_TXT "\"145.136.0.1\""
75                 CACHE STRING "String representation of decimal IP address of the 6bed4 server to use; Must be consistent with other settings that mention it in different forms"
76         )
77         set (SERVER_6BED4_IPV4_INT32 252183167
78                 CACHE STRING "Unsinged 32-bit integer form of the IP address of the 6bed4 server; Higher bits are for coarser routing; Must be consistent with SERVER_6BED4_IPV4_TXT"
79         )
80         set (SERVER_6BED4_IPV4_INT0 145
81                 CACHE STRING "Decimal form of the byte 1/4 of the IP address of the 6bed4 server; Must be consistent with SERVER_6BED4_IPV4_TXT"
82         )
83         set (SERVER_6BED4_IPV4_INT1 136
84                 CACHE STRING "Decimal form of the byte 2/4 of the IP address of the 6bed4 server; Must be consistent with SERVER_6BED4_IPV4_TXT"
85         )
86         set (SERVER_6BED4_IPV4_INT2 0
87                 CACHE STRING "Decimal form of the byte 3/4 of the IP address of the 6bed4 server; Must be consistent with SERVER_6BED4_IPV4_TXT"
88         )
89         set (SERVER_6BED4_IPV4_INT3 1
90                 CACHE STRING "Decimal form of the byte 4/4 of the IP address of the 6bed4 server; Must be consistent with SERVER_6BED4_IPV4_TXT"
91         )
92         set (SERVER_6BED4_IPV4_BINSTR "\"\\x91\\x88\\x00\\x01\""
93                 CACHE STRING "Binary string representation of the IP address of the 6bed4 server; Must be consistent with SERVER_6BED4_IPV4_TXT"
94         )
95 else ()
96         message (WARNING
97                 "Using experimental server IP address ${SERVER_6BED4_IPV4_TXT}")
98 endif ()
99
100 set (SERVER_6BED4_IPV4_PORT_TXT "\"145.136.0.1:25790\""
101         CACHE STRING "Textual representation of the 6bed4 server IPv4 address and port number; Must be consistent with SERVER_6BED4_IPV4_TXT and UDP_PORT_6BED4"
102 )
103 set (SERVER_6BED4_PORT_IPV4_ADDRSTR "\"\\xbe\\x64\\x91\\x88\\x00\\x01\""
104         CACHE STRING "Binary string representation of the 6bed4 server port number followed by the IPv4 address; Must be the concatenation of SERVER_6BED4_PORT_BINSTR and SERVER_6BED4_IPV4_BINSTR"
105 )
106 set (SERVER_6BED4_PORT_IPV4_MACSTR "\"\\xbc\\x64\\x91\\x88\\x00\\x01\""
107         CACHE STRING "Binary string representation of the 6bed4 server port number and IPv4 address as a MAC address; Must be equal to SERVER_6BED4_PORT_IPV4_ADDRSTR except for an applied XOR with 0x02 on the first byte"
108 )
109
110 set (INTERFACE_NAME_6BED4 "6bed4"
111         CACHE STRING "The name of the network interface created by 6bed4peer and 6bed4router.  The default name is \"6bed4\" which may conflict with local naming policies for interfaces, or scripts.  It is the clearest name, so it is the default, but you can override it if you need to.")
112
113 option (LOCAL_OVERRIDES_PORT0 "Addresses PREFIX6BED4:x:x:0:x have no meaning to 6bed4 and will be treated as local addresses of the 6bed4router" ON)
114
115
116 configure_file (
117         ${CMAKE_SOURCE_DIR}/src/nonstd.h.in
118         ${CMAKE_BINARY_DIR}/src/nonstd.h
119         IMMEDIATE @ONLY
120 )
121
122 include_directories (${CMAKE_BINARY_DIR}/src)
123
124 add_definitions (-DINTERFACE_NAME_6BED4="${INTERFACE_NAME_6BED4}")
125
126 if (LOCAL_OVERRIDES_PORT0)
127         add_definitions (-DLOCAL_OVERRIDES_PORT0=yes)
128 endif ()
129
130
131 #
132 # Packaging
133 #
134 include (CPack)