tcpdump mailing list archives

Re: Need precompiled source files in libpcap


From: Yang Luo <hsluoyb () gmail com>
Date: Thu, 30 Jun 2016 14:27:11 -0700

On Thu, Jun 30, 2016 at 2:14 PM, Guy Harris <guy () alum mit edu> wrote:

On Jun 30, 2016, at 12:59 PM, Yang Luo <hsluoyb () gmail com> wrote:

But I encountered an issue here, the built out scanner.h and scanner.c
will report these errors:

1>  gencode.c
1>..\scanner.h(239): fatal error C1083: Cannot open include file:
'unistd.h': No such file or directory
1>  grammar.c
1>..\scanner.h(239): fatal error C1083: Cannot open include file:
'unistd.h': No such file or directory
1>..\scanner.c(2787): fatal error C1083: Cannot open include file:
'unistd.h': No such file or directory

It seems that these generated source files want to include a UN*X only
file "unistd.h", which is not available on Windows, like you said in the
next reply. I think I need to switch some options to let Flex not use
"unistd.h", how to do it?

OK. I found the solution. I changed the bat to:

win_flex -Ppcap_ -7 --nounistd --outfile=..\scanner.c
--header-file=..\scanner.h ..\scanner.l
win_bison -ppcap_ --yacc --output=..\grammar.c --defines ..\grammar.y

And Flex won't let the generated source filess require "unistd.h" any
more.


When this bat is done, I think I will make MSVC run this bat every time
before a build process starts, is this solution OK for you?

That'd one way to do it.  Another way is to have the project define
YY_NO_UNISTD_H - that's what CMake does.


Agreed, I will use the project definition way then, which has been done in
https://github.com/the-tcpdump-group/libpcap/pull/508



And installing flex and bison for Windows are not also very friendly.

        https://twitter.com/geraldcombs/status/735870968451629056

In fact I didn't catch the meaning very well.. What's a "IKEA motorcycle
engine"? I think "IKEA" is a furniture vendor? What does it has to do with
the motorcycle engine?

A lot of the furniture that IKEA sells is un-assembled, so you take it
home in a flat package and assemble it at home.

For furniture, that works.

But if IKEA sold motorcycle engines that way, it wouldn't work as well:


http://www-psych.stanford.edu/~bt/diagrams/papers/animationearli04_files/image012.png

You'd have a *lot* more work to do to assemble it, and you'd have to know
a *lot* more in order to do it right.


Aha, good to learn it:) It's definitely a bad idea to ask users to assembly
a motorcycle engine.



Does it mean that building open source on Windows is very painful and
inconvenient?

Pretty much, yes.

When you want to build open-source software on a UN*X, as long as you have
all of the necessary tools and libraries installed, it's usually just
./configure; make; make install - or maybe

        mkdir build
        cd build
        cmake ..
        make
        make install

if it's using CMake, and the necessary tools and libraries are usually
either

        1) installed by default;

        2) installable as a package provided by the OS developer;

        3) installable from a third-party binary package;

        4) installable from source.

A lot of this is because most UN*Xes are very similar, with the
differences mostly being relatively minor annoyances.

On Windows, you may need built-for-Windows - or even ported-to-Windows -
versions of the same tools and libraries, and the autotools (configure
script) often don't work.  If the project uses CMake, it might work,
although even there you may have to do a bunch of "if(WIN32)" in the CMake
files.


Using CMake for libpcap's Windows version building can be a future work.
Currently, let's make the hand-crafted MSVC project building process work
first.


Cheers,
Yang
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers


Current thread: