aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2015-03-07 10:43:45 -0800
committerAnders Broman <a.broman58@gmail.com>2015-03-12 16:37:51 +0000
commitb255d8a1a19cb40a9d04f33e483aa18c3e0a38c8 (patch)
tree41c3f462178e9b8b79860d39fa74ae19d4bfb8b7
parentdf164dfc62ae3377057a865a1e4a66119e8a3b2c (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>
-rw-r--r--CMakeLists.txt8
-rw-r--r--epan/CMakeLists.txt5
-rw-r--r--epan/wslua/CMakeLists.txt144
-rw-r--r--epan/wslua/init_wslua.c9
-rw-r--r--epan/wslua/wslua_dir.c8
-rw-r--r--epan/wslua/wslua_util.c8
-rwxr-xr-xtest/config.sh4
-rwxr-xr-xtest/suite-nameres.sh2
8 files changed, 109 insertions, 79 deletions
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"