Make Lua taps work in out-of-source-tree builds.
authorJeff Morriss <jeff.morriss.ws@gmail.com>
Fri, 1 Aug 2014 20:14:23 +0000 (16:14 -0400)
committerEvan Huus <eapache@gmail.com>
Sun, 3 Aug 2014 17:26:25 +0000 (17:26 +0000)
make-taps.pl needs to know where to find the source files in order to build
the taps.

This makes the wslua test suite run in autofoo out-of-source-tree builds too.
To make it work with cmake builds requires putting all the epan/wslua/ output
(or at least init.lua) in epan/wslua/ instead of epan/.

Change-Id: I1b3c517f08d3c752ee03cb89482ee4951ceb5bf3
Reviewed-on: https://code.wireshark.org/review/3348
Petri-Dish: Evan Huus <eapache@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Evan Huus <eapache@gmail.com>
epan/wslua/CMakeLists.txt
epan/wslua/Makefile.am
epan/wslua/Makefile.nmake
epan/wslua/make-taps.pl

index 6bb30756d731e805582f84ac785eac7e86cae119..c374f2c99aa92bf499f165787d9ee4742fc80e24 100644 (file)
@@ -71,6 +71,7 @@ ADD_CUSTOM_COMMAND(
       ${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
index 85203ced2d5cbce6ed5626b1dac82741f70f37ed..0c2b0528486df8c0b23956c0d103df0dbfbb0ae3 100644 (file)
@@ -3,17 +3,17 @@
 # Wireshark - Network traffic analyzer
 # By Gerald Combs <gerald@wireshark.org>
 # Copyright 1998 Gerald Combs
-# 
+#
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
 # as published by the Free Software Foundation; either version 2
 # of the License, or (at your option) any later version.
-# 
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
-# 
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
@@ -104,11 +104,8 @@ taps_used = \
        ../dissectors/packet-h225.h \
        ../dissectors/packet-ieee80211.h
 
-taps: $(taps_used)
-       touch taps
-
-taps_wslua.c: make-taps.pl taps
-       $(PERL) $(srcdir)/make-taps.pl taps taps_wslua.c taps.txt
+taps_wslua.c: make-taps.pl $(srcdir)/taps $(taps_used)
+       $(PERL) $(srcdir)/make-taps.pl $(srcdir)/taps taps_wslua.c taps.txt $(srcdir)
 
 taps.txt: taps_wslua.c
 
@@ -119,9 +116,6 @@ register_wslua.c: declare_wslua.h
 declare_wslua.h: make-reg.pl $(wslua_modules) taps_wslua.c
        $(PERL) $(srcdir)/make-reg.pl $(wslua_modules);
 
-dummy:
-       touch dummy
-
 init.lua: template-init.lua make-init-lua.pl ../ftypes/ftypes.h ../../wiretap/wtap.h  ../proto.h ../stat_groups.h
        $(PERL) $(srcdir)/make-init-lua.pl $(top_srcdir) $(srcdir)/template-init.lua > init.lua
 
index 7e3c60ed2e82e8ee96086f63f8ce7bb1663698dd..22c33772dab5363726a5cde8fade92f2c301abfa 100644 (file)
@@ -77,7 +77,7 @@ taps: $(TAPS_USED)
        touch taps
 
 taps_wslua.c: make-taps.pl taps
-       $(PERL) make-taps.pl taps taps_wslua.c taps.txt
+       $(PERL) make-taps.pl taps taps_wslua.c taps.txt .
 
 taps.txt: taps_wslua.c
 
index 0c7327fdcb7b58dae45e32beea816d7c16a95c50..bd709aa0064939ac8bcb7e0c4e85fabe5b8e78ae 100755 (executable)
@@ -73,19 +73,19 @@ my %enums = ();
 sub dotap {
        my ($tname,$fname,$sname,@enums) = @_;
        my $buf = '';
-       
+
        open FILE, "< $fname";
        while(<FILE>) {
                $buf .= $_;
        }
        close FILE;
-       
+
        $buf =~ s@/\*.*?\*/@@;
 
        for my $ename (@enums) {
                $enums{$ename} = [];
                my $a = $enums{$ename};
-               
+
                my $enumre = "typedef\\s+enum[^{]*{([^}]*)}[\\s\\n]*" . ${ename} . "[\\s\\n]*;";
                if ($buf =~ s/$enumre//ms ) {
                        $types{$ename} = "/*$ename*/ lua_pushnumber(L,(lua_Number)v->%s);";
@@ -127,13 +127,13 @@ sub dotap {
 
        for my $n (sort keys %elems) {
                my $fmt = $types{$elems{$n}};
-               
+
                if ($fmt) {
                        $code .= "\tlua_pushstring(L,\"$n\"); ";
                        $code .= sprintf($fmt,$n,$n) . " lua_settable(L,-3);\n";
                        $doc .= "\t$n: $comments{$elems{$n}}\n";
                }
-               
+
        }
 
        $code .= "}\n\n";
@@ -148,6 +148,7 @@ sub dotap {
 open TAPSFILE, "< $ARGV[0]";
 open CFILE, "> $ARGV[1]";
 open DOCFILE, "> $ARGV[2]";
+my $srcdir=$ARGV[3] . "/";
 
 print CFILE  <<"HEADER";
 /*  This file is autogenerated from ./taps by ./make-taps.pl */
@@ -165,6 +166,7 @@ while (<TAPSFILE>) {
        s@#.*@@;
        next if /^\s*$/;
        my ($tname,$fname,$sname,@enums) = split /\s+/;
+       $fname=$srcdir . "/" . $fname;
        my ($c,$doc) = dotap($tname,$fname,$sname,@enums);
        print CFILE "#include \"$fname\"\n";
        print CFILE $c;
@@ -180,7 +182,7 @@ TBLHDR
        {"$tname", $functs{$tname} },
 TBLELEM
        }
-       
+
 print CFILE  <<"TBLFTR";
        {"frame",NULL},
        {NULL,NULL}
@@ -211,7 +213,7 @@ tap_extractor_t wslua_get_tap_extractor(const gchar* name) {
        for(t = tappables; t->name; t++ ) {
                if (g_str_equal(t->name,name)) return t->extractor;
        }
-       
+
        return NULL;
 }