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 "./pipe-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-h-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;
|
||||
} " 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;
|
||||
vlib_node_registration_t " plugin-name "_periodic_node;
|
||||
extern vlib_node_registration_t " plugin-name "_node;
|
||||
extern vlib_node_registration_t " plugin-name "_periodic_node;
|
||||
|
||||
/* Periodic function events */
|
||||
#define " PLUGIN-NAME "_EVENT1 1
|
||||
|
@ -74,7 +74,7 @@ nil
|
||||
#define REPLY_MSG_ID_BASE sm->msg_id_base
|
||||
#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 */
|
||||
|
||||
|
@ -75,10 +75,11 @@ static u8 * format_" plugin-name "_trace (u8 * s, va_list * args)
|
||||
format_mac_address, t->new_dst_mac);
|
||||
return s;
|
||||
}
|
||||
#endif /* CLIB_MARCH_VARIANT */
|
||||
|
||||
vlib_node_registration_t " plugin-name "_node;
|
||||
|
||||
#endif /* CLIB_MARCH_VARIANT */
|
||||
|
||||
#define foreach_" plugin-name "_error \\
|
||||
_(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);
|
||||
return s;
|
||||
}
|
||||
#endif /* CLIB_MARCH_VARIANT */
|
||||
|
||||
vlib_node_registration_t " plugin-name "_node;
|
||||
|
||||
#endif /* CLIB_MARCH_VARIANT */
|
||||
|
||||
#define foreach_" plugin-name "_error \\
|
||||
_(SWAPPED, \"Mac swap packets processed\")
|
||||
|
||||
|
@ -24,12 +24,12 @@
|
||||
(setq plugin-flavor
|
||||
(read-string "Dispatch type [dual or qs]: "))
|
||||
(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))
|
||||
(shell-command cmd-args)
|
||||
(setq cd-args (concat start-dir "/" plugin-name))
|
||||
(setq default-directory cd-args)
|
||||
(find-file "CMakeLists.txt")
|
||||
(skel-plugin-cmakelists-text-fragment)
|
||||
(find-file (concat plugin-name ".api"))
|
||||
(skel-plugin-api)
|
||||
(find-file (concat plugin-name "_all_api_h.h"))
|
||||
|
Reference in New Issue
Block a user