CMake: generate .json from .api files
[vpp.git] / src / vnet / CMakeLists.txt
1 # Copyright (c) 2018 Cisco and/or its affiliates.
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at:
5 #
6 #     http://www.apache.org/licenses/LICENSE-2.0
7 #
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
13
14 add_definitions (-DWITH_LIBSSL=1)
15 set(VNET_SRCS
16   adj/adj_bfd.c
17   adj/adj.c
18   adj/adj_delegate.c
19   adj/adj_glean.c
20   adj/adj_l2.c
21   adj/adj_mcast.c
22   adj/adj_midchain.c
23   adj/adj_nbr.c
24   adj/adj_nsh.c
25   adj/rewrite.c
26   bfd/bfd_api.c
27   bfd/bfd_cli.c
28   bfd/bfd_main.c
29   bfd/bfd_protocol.c
30   bfd/bfd_udp.c
31   bier/bier_api.c
32   bier/bier_bift_table.c
33   bier/bier_bit_string.c
34   bier/bier_disp_dispatch_node.c
35   bier/bier_disp_entry.c
36   bier/bier_disp_lookup_node.c
37   bier/bier_disp_table.c
38   bier/bier_drop.c
39   bier/bier_entry.c
40   bier/bier_fmask.c
41   bier/bier_fmask_db.c
42   bier/bier_imp.c
43   bier/bier_imp_node.c
44   bier/bier_input.c
45   bier/bier_lookup.c
46   bier/bier_output.c
47   bier/bier_table.c
48   bier/bier_test.c
49   bier/bier_types.c
50   bier/bier_update.c
51   bonding/bond_api.c
52   bonding/cli.c
53   bonding/device.c
54   bonding/node.c
55   buffer.c
56   classify/classify_api.c
57   classify/flow_classify.c
58   classify/flow_classify_node.c
59   classify/in_out_acl.c
60   classify/ip_classify.c
61   classify/policer_classify.c
62   classify/vnet_classify.c
63   config.c
64   cop/cop_api.c
65   cop/cop.c
66   cop/ip4_whitelist.c
67   cop/ip6_whitelist.c
68   cop/node1.c
69   devices/af_packet/af_packet_api.c
70   devices/af_packet/af_packet.c
71   devices/af_packet/cli.c
72   devices/af_packet/device.c
73   devices/af_packet/node.c
74   devices/devices.c
75   devices/netlink.c
76   devices/netmap/cli.c
77   devices/netmap/device.c
78   devices/netmap/netmap_api.c
79   devices/netmap/netmap.c
80   devices/netmap/node.c
81   devices/pipe/pipe_api.c
82   devices/pipe/pipe.c
83   devices/tap/cli.c
84   devices/tap/tap.c
85   devices/tap/tapv2_api.c
86   devices/virtio/device.c
87   devices/virtio/node.c
88   devices/virtio/vhost_user_api.c
89   devices/virtio/vhost_user.c
90   devices/virtio/vhost_user_input.c
91   devices/virtio/vhost_user_output.c
92   devices/virtio/virtio.c
93   dhcp/client.c
94   dhcp/dhcp4_proxy_node.c
95   dhcp/dhcp6_client_common_dp.c
96   dhcp/dhcp6_ia_na_client_cp.c
97   dhcp/dhcp6_ia_na_client_dp.c
98   dhcp/dhcp6_pd_client_cp.c
99   dhcp/dhcp6_pd_client_dp.c
100   dhcp/dhcp6_proxy_node.c
101   dhcp/dhcp_api.c
102   dhcp/dhcp_client_detect.c
103   dhcp/dhcp_proxy.c
104   dns/dns.c
105   dns/reply_node.c
106   dns/request_node.c
107   dns/resolver_process.c
108   dpo/classify_dpo.c
109   dpo/dpo.c
110   dpo/drop_dpo.c
111   dpo/dvr_dpo.c
112   dpo/interface_rx_dpo.c
113   dpo/interface_tx_dpo.c
114   dpo/ip6_ll_dpo.c
115   dpo/ip_null_dpo.c
116   dpo/l3_proxy_dpo.c
117   dpo/load_balance.c
118   dpo/load_balance_map.c
119   dpo/lookup_dpo.c
120   dpo/mpls_disposition.c
121   dpo/mpls_label_dpo.c
122   dpo/punt_dpo.c
123   dpo/receive_dpo.c
124   dpo/replicate_dpo.c
125   ethernet/arp.c
126   ethernet/format.c
127   ethernet/init.c
128   ethernet/interface.c
129   ethernet/node.c
130   ethernet/p2p_ethernet_api.c
131   ethernet/p2p_ethernet.c
132   ethernet/p2p_ethernet_input.c
133   ethernet/pg.c
134   ethernet/sfp.c
135   feature/feature_api.c
136   feature/feature.c
137   feature/registration.c
138   fib/fib_api.c
139   fib/fib_attached_export.c
140   fib/fib_bfd.c
141   fib/fib.c
142   fib/fib_entry.c
143   fib/fib_entry_cover.c
144   fib/fib_entry_delegate.c
145   fib/fib_entry_src_adj.c
146   fib/fib_entry_src_api.c
147   fib/fib_entry_src.c
148   fib/fib_entry_src_default_route.c
149   fib/fib_entry_src_interface.c
150   fib/fib_entry_src_interpose.c
151   fib/fib_entry_src_lisp.c
152   fib/fib_entry_src_mpls.c
153   fib/fib_entry_src_rr.c
154   fib/fib_entry_src_special.c
155   fib/fib_node.c
156   fib/fib_node_list.c
157   fib/fib_path.c
158   fib/fib_path_ext.c
159   fib/fib_path_list.c
160   fib/fib_table.c
161   fib/fib_test.c
162   fib/fib_types.c
163   fib/fib_urpf_list.c
164   fib/fib_walk.c
165   fib/ip4_fib.c
166   fib/ip6_fib.c
167   fib/mpls_fib.c
168   flow/flow.c
169   flow/flow_cli.c
170   geneve/decap.c
171   geneve/encap.c
172   geneve/geneve_api.c
173   geneve/geneve.c
174   gre/gre_api.c
175   gre/gre.c
176   gre/interface.c
177   gre/node.c
178   gre/pg.c
179   handoff.c
180   hdlc/hdlc.c
181   hdlc/node.c
182   hdlc/pg.c
183   interface_api.c
184   interface.c
185   interface_cli.c
186   interface_format.c
187   interface_output.c
188   interface_stats.c
189   ipfix-export/flow_api.c
190   ipfix-export/flow_report.c
191   ipfix-export/flow_report_classify.c
192   ip/format.c
193   ip/icmp4.c
194   ip/icmp6.c
195   ip/ip46_cli.c
196   ip/ip4_format.c
197   ip/ip4_forward.c
198   ip/ip4_input.c
199   ip/ip4_mtrie.c
200   ip/ip4_options.c
201   ip/ip4_pg.c
202   ip/ip4_punt_drop.c
203   ip/ip4_reassembly.c
204   ip/ip4_source_and_port_range_check.c
205   ip/ip4_source_check.c
206   ip/ip6_format.c
207   ip/ip6_forward.c
208   ip/ip6_hop_by_hop.c
209   ip/ip6_input.c
210   ip/ip6_ll_table.c
211   ip/ip6_ll_types.c
212   ip/ip6_neighbor.c
213   ip/ip6_pg.c
214   ip/ip6_punt_drop.c
215   ip/ip6_reassembly.c
216   ip/ip_api.c
217   ip/ip.c
218   ip/ip_checksum.c
219   ip/ip_frag.c
220   ip/ip_init.c
221   ip/ip_in_out_acl.c
222   ipip/ipip_api.c
223   ipip/ipip.c
224   ipip/ipip_cli.c
225   ip/ip_neighbor.c
226   ipip/node.c
227   ipip/sixrd.c
228   ip/ip_types_api.c
229   ip/lookup.c
230   ip/ping.c
231   ip/punt_api.c
232   ip/punt.c
233   ip/rd_cp.c
234   ipsec/ah_decrypt.c
235   ipsec/ah_encrypt.c
236   ipsec/esp_decrypt.c
237   ipsec/esp_encrypt.c
238   ipsec/esp_format.c
239   ipsec-gre/interface.c
240   ipsec-gre/ipsec_gre_api.c
241   ipsec-gre/ipsec_gre.c
242   ipsec-gre/node.c
243   ipsec/ikev2.c
244   ipsec/ikev2_cli.c
245   ipsec/ikev2_crypto.c
246   ipsec/ikev2_format.c
247   ipsec/ikev2_payload.c
248   ipsec/ipsec_api.c
249   ipsec/ipsec.c
250   ipsec/ipsec_cli.c
251   ipsec/ipsec_format.c
252   ipsec/ipsec_if.c
253   ipsec/ipsec_if_in.c
254   ipsec/ipsec_input.c
255   ipsec/ipsec_output.c
256   l2/feat_bitmap.c
257   l2/l2_api.c
258   l2/l2_bd.c
259   l2/l2_bvi.c
260   l2/l2_efp_filter.c
261   l2/l2_fib.c
262   l2/l2_flood.c
263   l2/l2_fwd.c
264   l2/l2_in_out_acl.c
265   l2/l2_input.c
266   l2/l2_input_classify.c
267   l2/l2_input_vtr.c
268   l2/l2_learn.c
269   l2/l2_output.c
270   l2/l2_output_classify.c
271   l2/l2_patch.c
272   l2/l2_rw.c
273   l2/l2_vtr.c
274   l2/l2_xcrw.c
275   l2tp/decap.c
276   l2tp/encap.c
277   l2tp/l2tp_api.c
278   l2tp/l2tp.c
279   l2tp/pg.c
280   lawful-intercept/lawful_intercept.c
281   lawful-intercept/node.c
282   lisp-cp/control.c
283   lisp-cp/gid_dictionary.c
284   lisp-cp/lisp_api.c
285   lisp-cp/lisp_cli.c
286   lisp-cp/lisp_cp_dpo.c
287   lisp-cp/lisp_msg_serdes.c
288   lisp-cp/lisp_types.c
289   lisp-cp/one_api.c
290   lisp-cp/one_cli.c
291   lisp-cp/packets.c
292   lisp-gpe/decap.c
293   lisp-gpe/interface.c
294   lisp-gpe/lisp_gpe_adjacency.c
295   lisp-gpe/lisp_gpe_api.c
296   lisp-gpe/lisp_gpe.c
297   lisp-gpe/lisp_gpe_fwd_entry.c
298   lisp-gpe/lisp_gpe_sub_interface.c
299   lisp-gpe/lisp_gpe_tenant.c
300   lisp-gpe/lisp_gpe_tunnel.c
301   llc/llc.c
302   llc/node.c
303   llc/pg.c
304   lldp/lldp_api.c
305   lldp/lldp_cli.c
306   lldp/lldp_input.c
307   lldp/lldp_node.c
308   lldp/lldp_output.c
309   mfib/ip4_mfib.c
310   mfib/ip6_mfib.c
311   mfib/mfib_entry.c
312   mfib/mfib_forward.c
313   mfib/mfib_itf.c
314   mfib/mfib_signal.c
315   mfib/mfib_table.c
316   mfib/mfib_test.c
317   mfib/mfib_types.c
318   misc.c
319   mpls/interface.c
320   mpls/mpls_api.c
321   mpls/mpls.c
322   mpls/mpls_features.c
323   mpls/mpls_input.c
324   mpls/mpls_lookup.c
325   mpls/mpls_output.c
326   mpls/mpls_tunnel.c
327   mpls/pg.c
328   osi/node.c
329   osi/osi.c
330   osi/pg.c
331   pg/cli.c
332   pg/edit.c
333   pg/init.c
334   pg/input.c
335   pg/output.c
336   pg/pg_api.c
337   pg/stream.c
338   policer/node_funcs.c
339   policer/policer_api.c
340   policer/policer.c
341   policer/xlate.c
342   ppp/node.c
343   ppp/pg.c
344   ppp/ppp.c
345   qos/qos_api.c
346   qos/qos_egress_map.c
347   qos/qos_mark.c
348   qos/qos_record.c
349   qos/qos_types.c
350   replication.c
351   sctp/sctp_api.c
352   sctp/sctp.c
353   sctp/sctp_format.c
354   sctp/sctp_input.c
355   sctp/sctp_output.c
356   sctp/sctp_pg.c
357   session/application.c
358   session/application_interface.c
359   session/application_namespace.c
360   session-apps/echo_client.c
361   session-apps/echo_server.c
362   session-apps/http_server.c
363   session-apps/proxy.c
364   session/segment_manager.c
365   session/session_api.c
366   session/session.c
367   session/session_cli.c
368   session/session_lookup.c
369   session/session_node.c
370   session/session_rules_table.c
371   session/session_table.c
372   session/session_test.c
373   session/transport.c
374   snap/node.c
375   snap/pg.c
376   snap/snap.c
377   span/node.c
378   span/span_api.c
379   span/span.c
380   srmpls/sr_mpls_api.c
381   srmpls/sr_mpls_policy.c
382   srmpls/sr_mpls_steering.c
383   srp/format.c
384   srp/interface.c
385   srp/node.c
386   srp/pg.c
387   srv6/sr_api.c
388   srv6/sr.c
389   srv6/sr_localsid.c
390   srv6/sr_policy_rewrite.c
391   srv6/sr_steering.c
392   tcp/tcp_api.c
393   tcp/tcp.c
394   tcp/tcp_format.c
395   tcp/tcp_input.c
396   tcp/tcp_newreno.c
397   tcp/tcp_output.c
398   tcp/tcp_pg.c
399   tcp/tcp_syn_filter4.c
400   tls/tls.c
401   udp/udp_api.c
402   udp/udp.c
403   udp/udp_encap.c
404   udp/udp_encap_node.c
405   udp/udp_format.c
406   udp/udp_input.c
407   udp/udp_local.c
408   udp/udp_pg.c
409   unix/gdb_funcs.c
410   unix/pcap.c
411   unix/tap_api.c
412   unix/tapcli.c
413   unix/tuntap.c
414   util/radix.c
415   util/refcount.c
416   util/trajectory.c
417   vxlan/decap.c
418   vxlan/encap.c
419   vxlan-gpe/decap.c
420   vxlan-gpe/encap.c
421   vxlan-gpe/vxlan_gpe_api.c
422   vxlan-gpe/vxlan_gpe.c
423   vxlan/vxlan_api.c
424   vxlan/vxlan.c
425 )
426
427 vpp_add_api_files(vnet_api_headers
428   vxlan-gpe/vxlan_gpe.api
429   ip/ip.api
430   ip/rd_cp.api
431   ip/ip_types.api
432   ip/punt.api
433   fib/fib_types.api
434   devices/virtio/vhost_user.api
435   devices/af_packet/af_packet.api
436   devices/tap/tapv2.api
437   devices/netmap/netmap.api
438   devices/pipe/pipe.api
439   l2tp/l2tp.api
440   bier/bier.api
441   ipsec-gre/ipsec_gre.api
442   cop/cop.api
443   ipsec/ipsec.api
444   lisp-gpe/lisp_gpe.api
445   lldp/lldp.api
446   vxlan/vxlan.api
447   srmpls/sr_mpls.api
448   pg/pg.api
449   bonding/bond.api
450   dns/dns.api
451   feature/feature.api
452   dhcp/dhcp.api
453   dhcp/dhcp6_pd_client_cp.api
454   dhcp/dhcp6_ia_na_client_cp.api
455   sctp/sctp.api
456   ipip/ipip.api
457   qos/qos.api
458   interface.api
459   udp/udp.api
460   lisp-cp/one.api
461   lisp-cp/lisp.api
462   mpls/mpls.api
463   l2/l2.api
464   geneve/geneve.api
465   tcp/tcp.api
466   unix/tap.api
467   srv6/sr.api
468   gre/gre.api
469   span/span.api
470   policer/policer.api
471   session/session.api
472   ethernet/p2p_ethernet.api
473   ipfix-export/ipfix_export.api
474   classify/classify.api
475   bfd/bfd.api
476 )
477
478 add_library(vnet SHARED ${VNET_SRCS})
479
480 vpp_library_set_multiarch_sources(vnet
481   bonding/node.c
482   ip/ip4_forward.c
483   ip/ip4_input.c
484   l2/l2_output.c
485   devices/virtio/vhost_user_input.c
486   devices/virtio/vhost_user_output.c
487 )
488 target_link_libraries(vnet vlib ${OPENSSL_LIBRARIES})
489 add_dependencies(vnet api_headers)
490
491 #
492 # Install
493 #
494 install(TARGETS vnet DESTINATION lib)