Wireshark-dev: Re: [Wireshark-dev] Building 0.99.4 under MacOS X (fixes)
From: Andreas Fink <andreas@xxxxxxxx>
Date: Thu, 4 Jan 2007 14:09:25 +0100

On 04.01.2007, at 13:09, Guy Harris wrote:

Andreas Fink wrote:

Here is how I configure

export PATH="/usr/X11R6/bin:/usr/bin:/bin:/usr/local/bin:/sbin:/usr/ 
sbin:/usr/local/sbin"
export LDFLAGS="-lz -L/usr/local/lib -Wl,-search_paths_first -Wl,- 
single_module"

So why is the "-lz" necessary?  The configure script should add that for 
you.


Pure automatism... some libraries needed it so I'm used to have it everywhere.
And if those libraries are not built with MacOS X version of libz we had unreadable tracefiles sometimes.


export CFLAGS="-arch ppc -arch i386 -g -Os -fno-omit-frame-pointer - 
Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -I/usr/local/include/ 
cairo"

I assume the -I/usr/local/include/cairo is for building GTK+, not for 
building Wireshark.

True but it needed it to find some header file from Cairo. Might be a left over from previous install and long fixed



Are the -Os and -fno-omit-frame-pointer just preferences for your build, 
or are they necessary?

my preference...
I successfully built previous versions of wireshark before with this config line...


export CPPFLAGS=""
export CXXFLAGS="-arch ppc -arch i386 -g -Os fno-omit-frame-pointer - 
fno-exceptions -fno-rtti -Wl,-syslibroot,/Developer/SDKs/ 
MacOSX10.4u.sdk -I/usr/local/include/cairo"

Is that for the libraries being built along with Wireshark?  (There's 
currently no C++ code in Wireshark, unless I've missed something.)

ok skip the C++ stuff then... I did run once into having proper CFLAGS but not CXXFLAGS and was looking for the error for weeks as only one tool was using C++ (that was with mysql at the time where all the libs are C but the tools are C++), So this was my safeguard procedure.


./configure --mandir=/usr/share/man --with-ssl --enable-threads -- 
enable-usr-local --with-lua --enable-adns --disable-dependency-tracking

Should the man pages be installed in /usr/share/man, or 
/usr/local/share/man?

I prefer to use /usr/share/man as usually my MANPATH is not set to point to /usr/local/share/man...
and on most systems I see PATH is expanded to user local but not MANPATH...
Bu this is my pure personal preference.



Problem #1: LDFLAGS make ./configure fail.

I would need to add -Wl,-single_module to LDFLAGS (otherwise we get  
errors speaking about multi module)

The page at


says

The static linker ld(1) supports building dylibs as either 
-multi_module or -single_module. Conceptually, a multi-module dylib is 
like a group of smaller dylibs - one per source file. The extra 
meta-data in a multi-module dylib allowed (pre-10.4) dyld to delay 
binding and running initializers on the individual modules. In Mac OS X 
10.4 dyld ignores all multi-module meta-data and completely binds and 
runs all initializers the same as if it were built single-module. In 
general, building dylibs -single_module is preferred. The one case where 
multi-module is still useful is it allows internal functions of a dylib 
to be interposable. For instance, libSystem.dylib is built multi_module 
so that malloc() can be overridden and all uses of malloc in libSystem 
(e.g. strdup) would be redirected to use the overridden version.

so it appears that it's the right flag to use when building dylibs.
Unfortunately, it's *only* usable when building a dylib, which is why...

Hmm. compiling the other libraries took it without a problem. Someone should ignore this option when not creating dylibs.


I can not do this like above because ./configure not wanting to compile.

...that fails.  I'll look into whether there's a way to force it in 
libtool, as that's probably the right way to ensure that it's used when 
building only dylibs (although building plugins as bundles might have to 
leave it out).

Fine so far.

Problem #2: Missing LUA files

The files wslua/dtd_gen.lua and wslua/console.lua seem to be missing  
(Make looks for them)
Copying them over from the previous install directory solves this.  
Why are those missing?

Missing from SVN, or from the release tarball?  I assume it's the 
release tarball, as they're both in the epan/wslua directory; perhaps 
epan/wslua/Makefile.am has to put them in the right macro.

the files are NOT in the release tar.gz I downloaded today.


Problem #3: IRDA plugin fails complaining about  
_proto_reg_handoff_sir multiple defined.

...

fix: edit file packet-sir.c and rename the function  
"proto_reg_handoff_sir to irda_proto_reg_handoff_sir

Or proto_reg_handoff_irsir(), to parallel proto_register_irsir().

and the only  
call to it in proto_register_irsir as well

I've checked in a change to do the aforementioned rename - and to get 
rid of the call in proto_register_irsir(), as handoff registration 
routines are supposed to be called after *all* registration routines are 
called.


Fine. Now  i only have to get rid of eroneoulsy installed fontconfig (MacOS X already has fontconfig)  and then it should work again I guess and I'm then off to build the PKG with all the dependencies.
The only thing which will not be included is gnutls as that one seems to be a pain to build as universal library.
Hopefully this version will have a proper libpcap for WLAN on MacBook Pro too.






Andreas Fink
Fink Consulting GmbH
---------------------------------------------------------------
Tel: +41-61-6666332 Fax: +41-61-6666331  Mobile: +41-79-2457333
Address: Clarastrasse 3, 4058 Basel, Switzerland
---------------------------------------------------------------
ICQ: 8239353
MSN: afink@xxxxxxxxxxxxxxxxxx AIM: smsrelay Skype: andreasfink
Yahoo: finkconsulting SMS: +41792457333