diff options
author | Gerald Combs <gerald@wireshark.org> | 2015-03-07 10:43:45 -0800 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2015-03-12 16:37:51 +0000 |
commit | b255d8a1a19cb40a9d04f33e483aa18c3e0a38c8 (patch) | |
tree | 41c3f462178e9b8b79860d39fa74ae19d4bfb8b7 /epan | |
parent | df164dfc62ae3377057a865a1e4a66119e8a3b2c (diff) |
CMake: Update wslua build and test.
Process wslua/CMakeLists.txt using add_subdirectory instead of
include. Generate files in the build directory instead of the source
directory.
Copy lua scripts to DATAFILE_DIR instead of DATAFILE_DIR/lua. That's
where init.lua looks for console.lua.
Always set WIRESHARK_RUN_FROM_BUILD_DIRECTORY when testing. We
presumably want to test our source files and not files which may or
may not be in the system path.
When we're running from the build directory look for lua scripts in both
the Autotools and CMake build locations.
Change-Id: Ic15ab8c58ff1b170d000c9b3e0a329af2ec44b7b
Reviewed-on: https://code.wireshark.org/review/7590
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/CMakeLists.txt | 5 | ||||
-rw-r--r-- | epan/wslua/CMakeLists.txt | 144 | ||||
-rw-r--r-- | epan/wslua/init_wslua.c | 9 | ||||
-rw-r--r-- | epan/wslua/wslua_dir.c | 8 | ||||
-rw-r--r-- | epan/wslua/wslua_util.c | 8 |
5 files changed, 100 insertions, 74 deletions
diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt index ad7aaba690..24881aba57 100644 --- a/epan/CMakeLists.txt +++ b/epan/CMakeLists.txt @@ -31,7 +31,9 @@ endif() if (HAVE_LIBLUA) - include( wslua/CMakeLists.txt ) + add_subdirectory( wslua ) + WSLUA_GENERATE_TAP_SRC() + WSLUA_GENERATE_REG_SRC() endif() source_group(wslua FILES ${WSLUA_FILES}) @@ -43,6 +45,7 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/dissectors ${CMAKE_CURRENT_SOURCE_DIR}/ftypes ${CMAKE_CURRENT_SOURCE_DIR}/wslua + ${CMAKE_CURRENT_BINARY_DIR}/wslua ${CMAKE_CURRENT_SOURCE_DIR}/nghttp2 ) diff --git a/epan/wslua/CMakeLists.txt b/epan/wslua/CMakeLists.txt index c374f2c99a..e3c2b75a2b 100644 --- a/epan/wslua/CMakeLists.txt +++ b/epan/wslua/CMakeLists.txt @@ -19,91 +19,98 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# This file is to be included/run from epan/CMakeLists.txt - set(WSLUA_MODULES - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/lua_bitop.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/lrexlib.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/lrexlib_glib.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/lrexlib_glib_f.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_int64.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_tvb.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_proto.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_tree.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_pinfo.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_listener.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_gui.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_dir.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_util.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_field.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_file.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_struct.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_dumper.c - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/wslua_internals.c + ${CMAKE_CURRENT_SOURCE_DIR}/lua_bitop.c + ${CMAKE_CURRENT_SOURCE_DIR}/lrexlib.c + ${CMAKE_CURRENT_SOURCE_DIR}/lrexlib_glib.c + ${CMAKE_CURRENT_SOURCE_DIR}/lrexlib_glib_f.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_int64.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_tvb.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_proto.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_tree.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_pinfo.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_listener.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_gui.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_dir.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_util.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_field.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_file.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_struct.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_dumper.c + ${CMAKE_CURRENT_SOURCE_DIR}/wslua_internals.c ) +set (WSLUA_MODULES ${WSLUA_MODULES} PARENT_SCOPE) set(WSLUA_FILES ${WSLUA_MODULES} - taps_wslua.c - register_wslua.c - wslua/init_wslua.c -) - -# Used with untypical CWD -set(WSLUA_TAPS_USED - ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-http.h - ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-ip.h - ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-udp.h - ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-h225.h - ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-ieee80211.h + ${CMAKE_CURRENT_BINARY_DIR}/taps_wslua.c + ${CMAKE_CURRENT_BINARY_DIR}/register_wslua.c + ${CMAKE_CURRENT_SOURCE_DIR}/init_wslua.c + PARENT_SCOPE ) # make-taps.pl depends on the current working directory # to find the dissector files (contents of taps file # depend on this actually, so just changing the paths # in these lists won't help). -ADD_CUSTOM_COMMAND( - OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/taps_wslua.c - ${CMAKE_CURRENT_BINARY_DIR}/taps.txt - COMMAND ${PERL_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/make-taps.pl - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/taps - ${CMAKE_CURRENT_BINARY_DIR}/taps_wslua.c - ${CMAKE_CURRENT_BINARY_DIR}/taps.txt - ${CMAKE_CURRENT_SOURCE_DIR}/wslua - WORKING_DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR}/wslua - DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/taps - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/make-taps.pl - # Only here to add dependencies for the taps "source"files - ${WSLUA_TAPS_USED} -) -ADD_CUSTOM_COMMAND( - OUTPUT - declare_wslua.h - register_wslua.c - COMMAND ${PERL_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/make-reg.pl - ${WSLUA_MODULES} - DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/make-reg.pl - ${WSLUA_MODULES} - # ${CMAKE_CURRENT_BINARY_DIR}/taps_wslua.c -) +macro(WSLUA_GENERATE_TAP_SRC) + # Used with untypical CWD + set(WSLUA_TAPS_USED + ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-http.h + ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-ip.h + ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-udp.h + ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-h225.h + ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-ieee80211.h + ) + + ADD_CUSTOM_COMMAND( + OUTPUT + ${CMAKE_BINARY_DIR}/epan/wslua/taps_wslua.c + ${CMAKE_BINARY_DIR}/epan/wslua/taps.txt + COMMAND ${PERL_EXECUTABLE} + ${CMAKE_SOURCE_DIR}/epan/wslua/make-taps.pl + ${CMAKE_SOURCE_DIR}/epan/wslua/taps + ${CMAKE_BINARY_DIR}/epan/wslua/taps_wslua.c + ${CMAKE_BINARY_DIR}/epan/wslua/taps.txt + ${CMAKE_SOURCE_DIR}/epan/wslua + WORKING_DIRECTORY + ${CMAKE_SOURCE_DIR}/epan/wslua + DEPENDS + ${CMAKE_SOURCE_DIR}/epan/wslua/taps + ${CMAKE_SOURCE_DIR}/epan/wslua/make-taps.pl + # Only here to add dependencies for the taps "source"files + ${WSLUA_TAPS_USED} + ) +endmacro() + +macro(WSLUA_GENERATE_REG_SRC) + ADD_CUSTOM_COMMAND( + OUTPUT + ${CMAKE_BINARY_DIR}/epan/wslua/declare_wslua.h + ${CMAKE_BINARY_DIR}/epan/wslua/register_wslua.c + COMMAND ${PERL_EXECUTABLE} + ${CMAKE_SOURCE_DIR}/epan/wslua/make-reg.pl + ${WSLUA_MODULES} + WORKING_DIRECTORY + ${CMAKE_BINARY_DIR}/epan/wslua + DEPENDS + ${CMAKE_SOURCE_DIR}/epan/wslua/make-reg.pl + ${WSLUA_MODULES} + # ${CMAKE_CURRENT_BINARY_DIR}/taps_wslua.c + ) +endmacro() ADD_CUSTOM_COMMAND( OUTPUT init.lua COMMAND ${PERL_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/make-init-lua.pl + ${CMAKE_CURRENT_SOURCE_DIR}/make-init-lua.pl ${CMAKE_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/template-init.lua + ${CMAKE_CURRENT_SOURCE_DIR}/template-init.lua > init.lua DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/make-init-lua.pl - ${CMAKE_CURRENT_SOURCE_DIR}/wslua/template-init.lua + ${CMAKE_CURRENT_SOURCE_DIR}/make-init-lua.pl + ${CMAKE_CURRENT_SOURCE_DIR}/template-init.lua ${CMAKE_SOURCE_DIR}/epan/ftypes/ftypes.h ${CMAKE_SOURCE_DIR}/wiretap/wtap.h ${CMAKE_SOURCE_DIR}/epan/epan.h @@ -119,10 +126,9 @@ set_target_properties(wsluaauxiliary PROPERTIES FOLDER "Auxiliary") install( FILES - wslua/console.lua - wslua/dtd_gen.lua + console.lua + dtd_gen.lua ${CMAKE_CURRENT_BINARY_DIR}/init.lua DESTINATION ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME} ) - diff --git a/epan/wslua/init_wslua.c b/epan/wslua/init_wslua.c index 6e044ea811..86474817cc 100644 --- a/epan/wslua/init_wslua.c +++ b/epan/wslua/init_wslua.c @@ -814,9 +814,15 @@ int wslua_init(register_cb cb, gpointer client_data) { /* load system's init.lua */ if (running_in_build_directory()) { - /* Running from build directory, load generated file */ + /* Running from build directory, try the source directory (Autotools) */ filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "epan" G_DIR_SEPARATOR_S "wslua" G_DIR_SEPARATOR_S "init.lua", get_progfile_dir()); + if (( ! file_exists(filename))) { + /* Try the CMake output directory */ + g_free(filename); + filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "init.lua", + get_progfile_dir()); + } } else { filename = get_datafile_path("init.lua"); } @@ -923,4 +929,3 @@ lua_State* wslua_state(void) { return L; } * vi: set shiftwidth=4 tabstop=4 expandtab: * :indentSize=4:tabSize=4:noTabs=true: */ - diff --git a/epan/wslua/wslua_dir.c b/epan/wslua/wslua_dir.c index 163006989f..9965a2f498 100644 --- a/epan/wslua/wslua_dir.c +++ b/epan/wslua/wslua_dir.c @@ -302,9 +302,15 @@ WSLUA_CONSTRUCTOR Dir_global_config_path(lua_State* L) { char* filename; if (running_in_build_directory()) { - /* Running in build directory, set datafile_path to wslua source directory */ + /* Running in build directory, try the source directory (Autotools) */ filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "epan" G_DIR_SEPARATOR_S "wslua" G_DIR_SEPARATOR_S "%s", get_datafile_dir(), fname); + if (( ! file_exists(filename))) { + /* Try the CMake output directory */ + g_free(filename); + filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", + get_progfile_dir(), fname); + } } else { filename = get_datafile_path(fname); } diff --git a/epan/wslua/wslua_util.c b/epan/wslua/wslua_util.c index cef3daf870..f26adefced 100644 --- a/epan/wslua/wslua_util.c +++ b/epan/wslua/wslua_util.c @@ -165,9 +165,15 @@ char* wslua_get_actual_filename(const char* fname) { g_free(filename); if (running_in_build_directory()) { - /* Running in build directory, try wslua source directory */ + /* Running in build directory, try the source directory (Autotools) */ filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "epan" G_DIR_SEPARATOR_S "wslua" G_DIR_SEPARATOR_S "%s", get_datafile_dir(), fname_clean); + if (( ! file_exists(filename))) { + /* Try the CMake output directory */ + g_free(filename); + filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", + get_progfile_dir(), fname_clean); + } if ( file_exists(filename) ) { return filename; } |