diff --git a/CMakeLists.txt b/CMakeLists.txt index 78d93d1a82..efe27a9553 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1401,18 +1401,18 @@ if(LUA_FOUND) ) add_custom_command(TARGET copy_data_files PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different - "${CMAKE_BINARY_DIR}/epan/init.lua" - "${DATAFILE_DIR}/lua" + "${CMAKE_BINARY_DIR}/epan/wslua/init.lua" + "${DATAFILE_DIR}" ) add_custom_command(TARGET copy_data_files PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/epan/wslua/console.lua" - "${DATAFILE_DIR}/lua" + "${DATAFILE_DIR}" ) add_custom_command(TARGET copy_data_files PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/epan/wslua/dtd_gen.lua" - "${DATAFILE_DIR}/lua" + "${DATAFILE_DIR}" ) add_dependencies(copy_data_files wsluaauxiliary) endif(LUA_FOUND) 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; } diff --git a/test/config.sh b/test/config.sh index b496f0b383..8e05e21111 100755 --- a/test/config.sh +++ b/test/config.sh @@ -21,6 +21,10 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # +# The files we want to test are in the build directory. +WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 +export WIRESHARK_RUN_FROM_BUILD_DIRECTORY + # Set WS_SYSTEM to our system type, e.g. Windows, Linux, Darwin # http://support.microsoft.com/kb/100843 if [ -n "${OS#Windows}" ] ; then diff --git a/test/suite-nameres.sh b/test/suite-nameres.sh index 5ed5fecdc7..8cef34f731 100755 --- a/test/suite-nameres.sh +++ b/test/suite-nameres.sh @@ -157,7 +157,7 @@ name_resolution_cleanup_step() { name_resolution_prep_step() { CUSTOM_PROFILE_PATH="$CONF_PATH/profiles/$CUSTOM_PROFILE_NAME" - TS_NR_ENV="WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 ${HOME_ENV}=${HOME_PATH}" + TS_NR_ENV="${HOME_ENV}=${HOME_PATH}" name_resolution_cleanup_step mkdir -p "$CUSTOM_PROFILE_PATH"