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>
This commit is contained in:
Gerald Combs 2015-03-07 10:43:45 -08:00 committed by Anders Broman
parent df164dfc62
commit b255d8a1a1
8 changed files with 109 additions and 79 deletions

View File

@ -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)

View File

@ -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
)

View File

@ -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}
)

View File

@ -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:
*/

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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

View File

@ -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"