LISP ONLY: maintain the emacs lisp plugin generator
Add a generator for CMakeLists.txt, remove autotools input generator. Add missing extern declarations for node registrations in <plugin-name>.h. Remove extern from the <plugin-name>_main_t declaration in <plugin-name>.c, so it won't come up undefined at runtime. Reposition forward node declaration relative to CLIB_MARCH_VARIANT conditional, to avoid multiple definition / "<plugin-name>_node changed size from X to Y" warnings. Change-Id: I8cc00bca5c40fa3ea00549411a3a9027f97a4826 Signed-off-by: Dave Barach <dave@barachs.net>
This commit is contained in:
@ -23,7 +23,7 @@
|
|||||||
(load-file "./periodic-skel.el")
|
(load-file "./periodic-skel.el")
|
||||||
(load-file "./pipe-skel.el")
|
(load-file "./pipe-skel.el")
|
||||||
(load-file "./plugin-all-apih-skel.el")
|
(load-file "./plugin-all-apih-skel.el")
|
||||||
(load-file "./plugin-am-skel.el")
|
(load-file "./plugin-cmake-skel.el")
|
||||||
(load-file "./plugin-api-skel.el")
|
(load-file "./plugin-api-skel.el")
|
||||||
(load-file "./plugin-h-skel.el")
|
(load-file "./plugin-h-skel.el")
|
||||||
(load-file "./plugin-main-skel.el")
|
(load-file "./plugin-main-skel.el")
|
||||||
|
@ -1,89 +0,0 @@
|
|||||||
;;; plugin-am-skel.el - vpp engine plug-in foo.am skeleton
|
|
||||||
;;;
|
|
||||||
;;; Copyright (c) 2016 Cisco and/or its affiliates.
|
|
||||||
;;; Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
;;; you may not use this file except in compliance with the License.
|
|
||||||
;;; You may obtain a copy of the License at:
|
|
||||||
;;;
|
|
||||||
;;; http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
;;;
|
|
||||||
;;; Unless required by applicable law or agreed to in writing, software
|
|
||||||
;;; distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
;;; See the License for the specific language governing permissions and
|
|
||||||
;;; limitations under the License.
|
|
||||||
|
|
||||||
(require 'skeleton)
|
|
||||||
|
|
||||||
(define-skeleton skel-plugin-makefile-am-fragment
|
|
||||||
"Insert a plug-in 'foo.am' skeleton "
|
|
||||||
nil
|
|
||||||
'(if (not (boundp 'plugin-name))
|
|
||||||
(setq plugin-name (read-string "Plugin name: ")))
|
|
||||||
'(setq PLUGIN-NAME (upcase plugin-name))
|
|
||||||
"
|
|
||||||
# Copyright (c) <current-year> <your-organization>
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the \"License\");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at:
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an \"AS IS\" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
vppapitestplugins_LTLIBRARIES += " plugin-name "_test_plugin.la
|
|
||||||
vppplugins_LTLIBRARIES += " plugin-name "_plugin.la
|
|
||||||
" plugin-name "_plugin_la_LIBADD =
|
|
||||||
|
|
||||||
" plugin-name "_plugin_la_SOURCES = \\
|
|
||||||
" plugin-name "/node.c \\
|
|
||||||
" plugin-name "/" plugin-name ".c \\
|
|
||||||
" plugin-name "/" plugin-name "_periodic.c \\
|
|
||||||
" plugin-name "/" plugin-name ".h \\
|
|
||||||
" plugin-name "/" plugin-name "_all_api_h.h \\
|
|
||||||
" plugin-name "/" plugin-name "_msg_enum.h
|
|
||||||
|
|
||||||
API_FILES += " plugin-name "/" plugin-name ".api
|
|
||||||
|
|
||||||
nobase_apiinclude_HEADERS += \\
|
|
||||||
" plugin-name "/" plugin-name "_all_api_h.h \\
|
|
||||||
" plugin-name "/" plugin-name "_msg_enum.h \\
|
|
||||||
" plugin-name "/" plugin-name ".api.h
|
|
||||||
|
|
||||||
" plugin-name "_test_plugin_la_SOURCES = \\
|
|
||||||
" plugin-name "/" plugin-name "_test.c \\
|
|
||||||
" plugin-name "/" plugin-name ".api.h
|
|
||||||
|
|
||||||
if CPU_X86_64
|
|
||||||
" plugin-name "_multiversioning_sources = \\
|
|
||||||
" plugin-name "/node.c
|
|
||||||
|
|
||||||
if CC_SUPPORTS_AVX2
|
|
||||||
###############################################################
|
|
||||||
# AVX2
|
|
||||||
###############################################################
|
|
||||||
lib" plugin-name "_plugin_avx2_la_SOURCES = $(" plugin-name "_multiversioning_sources)
|
|
||||||
lib" plugin-name "_plugin_avx2_la_CFLAGS = \\
|
|
||||||
$(AM_CFLAGS) @CPU_AVX2_FLAGS@ \\
|
|
||||||
-DCLIB_MARCH_VARIANT=avx2
|
|
||||||
noinst_LTLIBRARIES += lib" plugin-name "_plugin_avx2.la
|
|
||||||
" plugin-name "_plugin_la_LIBADD += lib" plugin-name "_plugin_avx2.la
|
|
||||||
endif
|
|
||||||
|
|
||||||
if CC_SUPPORTS_AVX512
|
|
||||||
###############################################################
|
|
||||||
# AVX512
|
|
||||||
###############################################################
|
|
||||||
lib" plugin-name "_plugin_avx512_la_SOURCES = $(" plugin-name "_multiversioning_sources)
|
|
||||||
lib" plugin-name "_plugin_avx512_la_CFLAGS = \\
|
|
||||||
$(AM_CFLAGS) @CPU_AVX512_FLAGS@ \\
|
|
||||||
-DCLIB_MARCH_VARIANT=avx512
|
|
||||||
noinst_LTLIBRARIES += lib" plugin-name "_plugin_avx512.la
|
|
||||||
" plugin-name "_plugin_la_LIBADD += lib" plugin-name "_plugin_avx512.la
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
")
|
|
59
extras/emacs/plugin-cmake-skel.el
Normal file
59
extras/emacs/plugin-cmake-skel.el
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
;;; plugin-cmake-skel.el - vpp engine plug-in foo.am skeleton
|
||||||
|
;;;
|
||||||
|
;;; Copyright (c) 2016 Cisco and/or its affiliates.
|
||||||
|
;;; Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
;;; you may not use this file except in compliance with the License.
|
||||||
|
;;; You may obtain a copy of the License at:
|
||||||
|
;;;
|
||||||
|
;;; http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
;;;
|
||||||
|
;;; Unless required by applicable law or agreed to in writing, software
|
||||||
|
;;; distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
;;; See the License for the specific language governing permissions and
|
||||||
|
;;; limitations under the License.
|
||||||
|
|
||||||
|
(require 'skeleton)
|
||||||
|
|
||||||
|
(define-skeleton skel-plugin-cmakelists-text-fragment
|
||||||
|
"Insert a plug-in 'CMakeLists.txt' skeleton "
|
||||||
|
nil
|
||||||
|
'(if (not (boundp 'plugin-name))
|
||||||
|
(setq plugin-name (read-string "Plugin name: ")))
|
||||||
|
'(setq PLUGIN-NAME (upcase plugin-name))
|
||||||
|
|
||||||
|
"
|
||||||
|
# Copyright (c) <current-year> <your-organization>
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the \"License\");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at:
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an \"AS IS\" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
add_vpp_plugin("plugin-name"
|
||||||
|
SOURCES
|
||||||
|
" plugin-name ".c
|
||||||
|
node.c
|
||||||
|
" plugin-name "_periodic.c
|
||||||
|
" plugin-name ".h
|
||||||
|
|
||||||
|
MULTIARCH_SOURCES
|
||||||
|
node.c
|
||||||
|
|
||||||
|
API_FILES
|
||||||
|
" plugin-name".api
|
||||||
|
|
||||||
|
INSTALL_HEADERS
|
||||||
|
" plugin-name "_all_api_h.h
|
||||||
|
" plugin-name "_msg_enum.h
|
||||||
|
|
||||||
|
API_TEST_SOURCES
|
||||||
|
" plugin-name "_test.c
|
||||||
|
)
|
||||||
|
")
|
@ -62,10 +62,10 @@ typedef struct {
|
|||||||
ethernet_main_t * ethernet_main;
|
ethernet_main_t * ethernet_main;
|
||||||
} " plugin-name "_main_t;
|
} " plugin-name "_main_t;
|
||||||
|
|
||||||
" plugin-name "_main_t " plugin-name "_main;
|
extern " plugin-name "_main_t " plugin-name "_main;
|
||||||
|
|
||||||
vlib_node_registration_t " plugin-name "_node;
|
extern vlib_node_registration_t " plugin-name "_node;
|
||||||
vlib_node_registration_t " plugin-name "_periodic_node;
|
extern vlib_node_registration_t " plugin-name "_periodic_node;
|
||||||
|
|
||||||
/* Periodic function events */
|
/* Periodic function events */
|
||||||
#define " PLUGIN-NAME "_EVENT1 1
|
#define " PLUGIN-NAME "_EVENT1 1
|
||||||
|
@ -74,7 +74,7 @@ nil
|
|||||||
#define REPLY_MSG_ID_BASE sm->msg_id_base
|
#define REPLY_MSG_ID_BASE sm->msg_id_base
|
||||||
#include <vlibapi/api_helper_macros.h>
|
#include <vlibapi/api_helper_macros.h>
|
||||||
|
|
||||||
extern " plugin-name "_main_t " plugin-name "_main;
|
" plugin-name "_main_t " plugin-name "_main;
|
||||||
|
|
||||||
/* List of message types that this plugin understands */
|
/* List of message types that this plugin understands */
|
||||||
|
|
||||||
|
@ -75,10 +75,11 @@ static u8 * format_" plugin-name "_trace (u8 * s, va_list * args)
|
|||||||
format_mac_address, t->new_dst_mac);
|
format_mac_address, t->new_dst_mac);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
#endif /* CLIB_MARCH_VARIANT */
|
|
||||||
|
|
||||||
vlib_node_registration_t " plugin-name "_node;
|
vlib_node_registration_t " plugin-name "_node;
|
||||||
|
|
||||||
|
#endif /* CLIB_MARCH_VARIANT */
|
||||||
|
|
||||||
#define foreach_" plugin-name "_error \\
|
#define foreach_" plugin-name "_error \\
|
||||||
_(SWAPPED, \"Mac swap packets processed\")
|
_(SWAPPED, \"Mac swap packets processed\")
|
||||||
|
|
||||||
|
@ -63,10 +63,11 @@ static u8 * format_" plugin-name "_trace (u8 * s, va_list * args)
|
|||||||
t->sw_if_index, t->next_index);
|
t->sw_if_index, t->next_index);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
#endif /* CLIB_MARCH_VARIANT */
|
|
||||||
|
|
||||||
vlib_node_registration_t " plugin-name "_node;
|
vlib_node_registration_t " plugin-name "_node;
|
||||||
|
|
||||||
|
#endif /* CLIB_MARCH_VARIANT */
|
||||||
|
|
||||||
#define foreach_" plugin-name "_error \\
|
#define foreach_" plugin-name "_error \\
|
||||||
_(SWAPPED, \"Mac swap packets processed\")
|
_(SWAPPED, \"Mac swap packets processed\")
|
||||||
|
|
||||||
|
@ -24,12 +24,12 @@
|
|||||||
(setq plugin-flavor
|
(setq plugin-flavor
|
||||||
(read-string "Dispatch type [dual or qs]: "))
|
(read-string "Dispatch type [dual or qs]: "))
|
||||||
(setq PLUGIN-NAME (upcase plugin-name))
|
(setq PLUGIN-NAME (upcase plugin-name))
|
||||||
(find-file (concat plugin-name ".am"))
|
|
||||||
(skel-plugin-makefile-am-fragment)
|
|
||||||
(setq cmd-args (concat "mkdir -p " plugin-name))
|
(setq cmd-args (concat "mkdir -p " plugin-name))
|
||||||
(shell-command cmd-args)
|
(shell-command cmd-args)
|
||||||
(setq cd-args (concat start-dir "/" plugin-name))
|
(setq cd-args (concat start-dir "/" plugin-name))
|
||||||
(setq default-directory cd-args)
|
(setq default-directory cd-args)
|
||||||
|
(find-file "CMakeLists.txt")
|
||||||
|
(skel-plugin-cmakelists-text-fragment)
|
||||||
(find-file (concat plugin-name ".api"))
|
(find-file (concat plugin-name ".api"))
|
||||||
(skel-plugin-api)
|
(skel-plugin-api)
|
||||||
(find-file (concat plugin-name "_all_api_h.h"))
|
(find-file (concat plugin-name "_all_api_h.h"))
|
||||||
|
Reference in New Issue
Block a user