On Jul 13, 2005, at 9:50 AM, Loris Degioanni wrote:

Yes, in a genera way, we should a a pre-release building (and possibly testing?) procedure, carried on by one person (or a limited group of people) after the CVS has been locked.

Note that this procedure needs to include at least one person with a Windows development environment (and the time to start up that environment, if it's not usually up and running), as well as one or more UN*X environments; preferably, it should include a person with both MSVC++ and Cygwin (and MinGW32?) development environments.

and give examples of what's added to all those files.
Ethereal avoids problems such as these by not doing Win32 projects - builds are done with command-line "nmake" - and having both the nmake files and the Makefile.am files include Makefile.common files, so that there's only *one* list of files.


The approach we've always used for our tools (WinDump, WinPcap, now ntar) is two separate "makefiles" for Unix and Windows. This is more complex for the developers of the tools, but makes life simple for the users that download your source code.

("We" here meaning the Ethereal developers....)

Unfortunately, at least in our experience, the extra complexity turned into extra bugs - people quite frequently added files to Makefile.am but not Makefile.nmake (I don't remember whether any developers mainly using Windows added to Makefile.nmake but not Makefile.am or not). Those problems, at least, went away when we went to a common Makefile.common used by both.

If there were a mechanism to generate the appropriate MSVC++ project files from a description file that could either be included by Makefile.am (or *be* Makefile.am), or to generate the MSVC++ project files and the Makefile.am or Makefile.in file from a common description file (using tools available in source form, not Windows- only or Linux-only or OS X-only or Solaris-only or... binary tools), that'd be useful, as long as we didn't lose any configure-script functionality and as long as we could still use, at least on UN*X, all the same "generate stuff at build time" techniques we use now (i.e., as long as there's no loss of useful functionality in the build process).

libpcap and tcpdump are less demanding, but they still require a fair bit of configure-script fun.

(Maybe it's lack of experience, but I've always needed at least some hours to set-up the Ethereal build envronment, while with WinDump it's a matter of seconds).

Is that an issue of setting up the environment for MSVC++ (I vaguely remember hearing of some .bat script that is used to set environment variables for command-line builds), or of downloading and installing libraries, headers, and tools, or something else? Once it's set up, I've found that I can just do

nmake -f Makefile.nmake clean (so that if a header changed the source files that depend on it change)
    nmake -f Makefile.nmake

and the build works.

Moreover, Windows developers normally like to use the MS integrated IDEs better than gcc/gdb/make.

You could, I guess, set it up as a "Makefile project".

-
This is the tcpdump-workers list.
Visit https://lists.sandelman.ca/ to unsubscribe.

Reply via email to