Tools
Tool installation This chapter will describe the tool installation of the various tools used to build Ethereal. The next chapters will explain the tool usage for some of the specific development tasks. Several different tools are needed to build Ethereal. These tools have their roots in the unix environment, but win32 ports are also available. Therefore the tools are available in three different "flavours": Unix: as described above, the tools should be commonly available on the supported unix platforms Win32 cygwin: cygwin provides a unix emulation layer with a lot of unix based tools on the win32 platform Win32 native: native Win32 tools, no emulation required Don't expect a lot of documentation regarding these tools in this document. If you need further documentation of a specific tool, you should find lot's of useful information elsewhere, as these tools are commonly used. The following will only do a very brief description of what the particular tool is doing, how it is used in the Ethereal project and how it can be installed and (rudimentary) tested. At the end of this chapter, some recommendations are given, for the easiest way to get your development platform up and running.
Win32: Cygwin Cygwin provides a unix emulation layer with a lot of unix based tools on the win32 platform. Although cygwin consists of several seperate packages, the installation and update is done through only a single setup.exe, which acts similar like other unix package managers (like the RedHat Package Manager for example). You will find this network based setup.exe at: click on one of the "Install Cygwin now" appearances, this will start the download of the setup.exe. After the download completed, start this setup.exe on your machine. It will ask you for some settings, the defaults should usually work well. The setup will then download and install a basic set of packages. Under: "Start -> Programs -> Cygwin -> Cygwin Bash Shell" you should now be able to start a new cygwin bash shell (similar to the command line in win32, but more powerful). If you want to add additional cygwin packages, you should start the setup.exe again, and select them in the packages window.
C compiler
Unix: GCC (GNU compiler collection) The gcc C compiler is used for all unix-like platforms. XXX: is this true?
Win32 cygwin: GCC (GNU compiler collection) Although some effort is currently made to use gcc from the cygwin environment, the mainline is still using Microsoft Visual Studio's compiler.
Win32 native: Microsoft Visual C compiler Note! The Microsoft Visual Studio is not free software. This is a tool you have to buy before you use it! The mainline for generating Ethereal on the windows platform, is using the Microsoft Visual Studio version 6 compiler cl.exe (and it's nmake, as described below). Warning! There are problems reported with the more recent "Visual Studio .net" version, as it requires to ship a XXX.dll together with the compiled exe, which might make it incompatible with the GPL.
make
Unix: GNU make XXX
Win32 cygwin: GNU make Although some effort is made to use make from the cygwin environment, the mainline is still using Microsoft Visual Studio's nmake.
Win32 native: nmake nmake is part of the Microsoft Visual Studio suite, see comment above. Instead of using the the workspace (.dsw) and projects (.dsp) files, the traditional nmake makefiles are used. This has one main reason: it makes it much easier to maintain changes simultaneous with the gcc toolchain makefile.am files as both filetypes are similar. However, as no Visual Studio workspace/project files are available, this makes it hard to use the Visual Studio IDE e.g. for using the integrated debugging feature.
python Python is an interpreter based programming language. The homepage of the python project is: . Python is used to XXX. Python version 2.2 and above should be working fine.
Unix: python XXX
Win32 cygwin: python Python is available as the python package from the cygwin setup. After correct installation, typing inside the cygwin bash: $ python -V should result in something like: Python 2.3.3 However, the version string may vary.
Win32 native: python Have a look at to download the latest stable release. You can download a setup there, which will install the python system typically into: C:\python23 or similiar.
perl Perl is an interpreter based programming language. The homepage of the perl project is: . Perl is used to XXX. Perl version XXX and above should be working fine.
Unix: perl XXX
Win32 cygwin: perl Perl is available as the perl package from the cygwin setup.
Win32 native: perl A native Win32 perl package can be obtained from . The installation should be straightforward. After correct installation, typing inside the command line (cmd.exe): > perl -v should result in something like: However, the version string may vary.
sed Sed it the streaming editor. It makes it easy for example to replace specially marked texts inside a source code file. The Ethereal build process uses this to stamp version strings into various places.
Unix: sed XXX
Win32 cygwin: sed Sed is available as the sed package from the cygwin setup. After correct installation, typing inside the cygwin bash: $ sed --version should result in something like: However, the version string may vary.
Win32 native: sed The authors don't know of any working win32 native sed implementation.
diff (optional) Diff is used to get a file of all differences between two source files/trees. The diff tool isn't needed for building ethereal, but it's needed if you are going to commit your changes back to the ethereal community.
Unix: diff XXX
Win32 cygwin: GNU diff Diff is available as the diff package from the cygwin setup. After correct installation, typing inside the cygwin bash: $ diff --version should result in something like: However, the version string may vary.
Win32 native: diff The authors don't know of any working win32 native diff implementation.
patch (optional) The patch utility is used to merge a diff file into your own source tree. This tool is only needed, if you want to apply a diff file from someone else (probably from the developer mailing list) to your own source tree.
Unix: patch XXX
Win32 cygwin: patch Patch is available as the patch package from the cygwin setup. After correct installation, typing inside the cygwin bash: $ patch --version should result in something like: However, the version string may vary.
Win32 native: patch I don't know of any working win32 native patch implementation.
yacc (bison) XXX
lexx (flex) XXX
Win32: wget XXX http_proxy
Win32: NSIS The NSIS (Nullsoft Scriptable Install System) is used to generate a setup.exe from all the files needed to be installed, including all required DLL's and such. To install it, simply download the latest final version (currently: 2.0 final) from and start the downloaded installer. You will need NSIS version 2 or higher, to build an installer with the modern user interface, and for a much smaller installer (using the lzma compression).
Subversion (SVN) client (optional) The Ethereal project uses subversion (or short SVN) to keep track of all the changes done in the source code. The project has switched from CVS to SVN some time ago. XXX add link to "Obtaining the sources" If you want to work with the source code and planning to commit your changes back Ethereal, it is recommended to use a SVN client to get the latest source files. There is a book on subversion available: A good subversion client for Win32 can be found at: XXX add more text here.
Tool summary for win32 platforms The recommended tools are highlighted in bold face. The mandatory tools Tool Cygwin packet Win32 native C compiler gcc MSVC make make MSVC nmake python interpreter (XXX: which one is recommended?) python perl interpreter (XXX: which one is recommended?) perl sed sed - bash bash -
The optional tools Tool Cygwin packet Win32 native diff diff - patch patch - nsis -