<div dir="ltr">I use the simple way...<br><br>Gentoo&#39;s crossdev<br><br>crossdev -t i686-w64-mingw32<br>crossdev -t x86_64-w64-mingw32<br><br><div class="gmail_quote">On Wed, Oct 20, 2010 at 2:39 AM, Gianluca Varenni <span dir="ltr">&lt;<a href="mailto:gianluca.varenni@cacetech.com">gianluca.varenni@cacetech.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">That should work.<br>
<br>
Can you tell me the exact steps and environment that you use to target 32bit<br>
with MINGW64?<br>
<div class="im"><br>
Have a nice day<br>
GV<br>
<br>
<br>
<br>
--------------------------------------------------<br>
</div><div class="im">From: &quot;Alon Bar-Lev&quot; &lt;<a href="mailto:alon.barlev@gmail.com">alon.barlev@gmail.com</a>&gt;<br>
</div>Sent: Tuesday, October 19, 2010 10:33 AM<br>
<div><div></div><div class="h5">To: &lt;<a href="mailto:winpcap-users@winpcap.org">winpcap-users@winpcap.org</a>&gt;<br>
Subject: Re: [Winpcap-users] [PATCH] mingw build<br>
<br>
&gt; Hi,<br>
&gt;<br>
&gt; No I don&#39;t use -m32, you can build cross compile that targets 32bit<br>
&gt; without multilib...<br>
&gt; But it is not such important.<br>
&gt;<br>
&gt; What I am suggesting is a simple Makefile rule, or just use the<br>
&gt; autoconf provided with libpcap anyway... but if not, please consider<br>
&gt; the following, then #include config.h, and use its constants to<br>
&gt; conditionally do whatever.<br>
&gt;<br>
&gt; target: config.h<br>
&gt;<br>
&gt; config.h:<br>
&gt;        -rm config.h config.h.tmp<br>
&gt;        touch config.h.tmp<br>
&gt;        echo &quot;#include &lt;windows.h&gt;&quot; &gt; conftest.c<br>
&gt;        echo &quot;#include &lt;ntddndis.h&gt;&quot; &gt;&gt; conftest.c<br>
&gt;        $(CC) -c conftest.c &gt; /dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;#define<br>
&gt; HAVE_NTDDNDIS_H 1&quot; &gt;&gt; config.h.tmp || true<br>
&gt;        echo &quot;#include &lt;windows.h&gt;&quot; &gt; conftest.c<br>
&gt;        echo &quot;#include &lt;ddk/ntddndis.h&gt;&quot; &gt;&gt; conftest.c<br>
&gt;        $(CC) -c conftest.c &gt; /dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;#define<br>
&gt; HAVE_DDK_NTDDNDIS_H 1&quot; &gt;&gt; config.h.tmp || true<br>
&gt;        echo &quot;int getaddrinfo();int main(void){getaddrinfo();}&quot; &gt;<br>
&gt; conftest.c<br>
&gt;        $(CC) conftest.c -lws2_32 &gt; /dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;#define<br>
&gt; HAVE_GETADDRINFO 1&quot; &gt;&gt; config.h.tmp || true<br>
&gt;        mv config.h.tmp config.h<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Oct 19, 2010 at 6:51 PM, Gianluca Varenni<br>
&gt; &lt;<a href="mailto:gianluca.varenni@cacetech.com">gianluca.varenni@cacetech.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --------------------------------------------------<br>
&gt;&gt; From: &quot;Alon Bar-Lev&quot; &lt;<a href="mailto:alon.barlev@gmail.com">alon.barlev@gmail.com</a>&gt;<br>
&gt;&gt; Sent: Tuesday, October 19, 2010 12:16 AM<br>
&gt;&gt; To: &lt;<a href="mailto:winpcap-users@winpcap.org">winpcap-users@winpcap.org</a>&gt;<br>
&gt;&gt; Subject: Re: [Winpcap-users] [PATCH] mingw build<br>
&gt;&gt;<br>
&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; This is incorrect:<br>
&gt;&gt;&gt; ---<br>
&gt;&gt;&gt; #ifdef __MINGW32__<br>
&gt;&gt;&gt; +#ifdef __MINGW64__<br>
&gt;&gt;&gt; +#include &lt;ntddndis.h&gt;<br>
&gt;&gt;&gt; +#else /*__MINGW64__*/<br>
&gt;&gt;&gt; #include &lt;ddk/ntddndis.h&gt;<br>
&gt;&gt;&gt; +#endif /*__MINGW64__*/<br>
&gt;&gt;&gt; #else<br>
&gt;&gt;&gt; ---<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; As mingw-w64 can be used as both 32bit and 64bit (i686-w64-mingw32,<br>
&gt;&gt;&gt; x86_64-w64-mingw32).<br>
&gt;&gt;&gt; So you fix this for 64bit but if you use 32bit you will get the same<br>
&gt;&gt;&gt; error.<br>
&gt;&gt;<br>
&gt;&gt; I think I know what you mean now (after searching more on the internet).<br>
&gt;&gt; You<br>
&gt;&gt; are using MINGW64 *and* the option -m32 to generate 32bit binaries. I<br>
&gt;&gt; didn&#39;t<br>
&gt;&gt; know about the existence of -m32 ...<br>
&gt;&gt;<br>
&gt;&gt; Regarding the addition of the ddk include in the makefile, the reason why<br>
&gt;&gt; I<br>
&gt;&gt; didn&#39;t do that is because I couldn&#39;t find a definition of the default<br>
&gt;&gt; include folder for that specific toolchain (and that works on mingw,<br>
&gt;&gt; mingw64, mingw64 with -m32, linux, windows, cygwin). Ideally the addition<br>
&gt;&gt; should be something like<br>
&gt;&gt;<br>
&gt;&gt; CFLAGS = ........  -I ${default_include_dir}/ddk<br>
&gt;&gt;<br>
&gt;&gt; but I haven&#39;t  found what is the right env variable that I should put in<br>
&gt;&gt; place of &quot;default_include_dir&quot;. I don&#39;t want to put an absolute path<br>
&gt;&gt; there.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m definitely open to suggestions...<br>
&gt;&gt;<br>
&gt;&gt; Have a nice day<br>
&gt;&gt; GV<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; What I recommend is to add ddk include file LAST in the CPP search<br>
&gt;&gt;&gt; list in make file.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Same goes to:<br>
&gt;&gt;&gt; +/*<br>
&gt;&gt;&gt; + * Mingw64 has its own implementation of getaddrinfo, mingw32 no<br>
&gt;&gt;&gt; + */<br>
&gt;&gt;&gt; +#ifndef __MINGW64__<br>
&gt;&gt;&gt; +<br>
&gt;&gt;&gt; +<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Best to have it done in Makefile, by trying to compile something with<br>
&gt;&gt;&gt; getaddrinfo and create mini config.h file.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If you want I can create such a patch. And if we do this, we can also<br>
&gt;&gt;&gt; check if the ddk is needed or not using the same method.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Regards,<br>
&gt;&gt;&gt; Alon Bar-Lev.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Tue, Oct 19, 2010 at 12:19 AM, Gianluca Varenni<br>
&gt;&gt;&gt; &lt;<a href="mailto:gianluca.varenni@cacetech.com">gianluca.varenni@cacetech.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I reworked the patch originally provided by Alon Bar-Lev (thanks!) a<br>
&gt;&gt;&gt;&gt; bit<br>
&gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt;&gt; have WinPcap 4.1.2 compile under MINGW32 and MINGW64, Windows and Linux<br>
&gt;&gt;&gt;&gt; cross compilation.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; You can find it at<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; <a href="http://www.winpcap.org/install/bin/WinPcap_4_1_2_mingw_win.patch" target="_blank">http://www.winpcap.org/install/bin/WinPcap_4_1_2_mingw_win.patch</a><br>
&gt;&gt;&gt;&gt; <a href="http://www.winpcap.org/install/bin/WinPcap_4_1_2_mingw_linux.patch" target="_blank">http://www.winpcap.org/install/bin/WinPcap_4_1_2_mingw_linux.patch</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; MD5&#39;s are as follows:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; 6cecf64649cfd4f32553025d2b6daa96 *WinPcap_4_1_2_mingw_linux.patch<br>
&gt;&gt;&gt;&gt; 8b341ba39bb0b621c81f5c8df7e7536a *WinPcap_4_1_2_mingw_win.patch<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Due to a big mess with line endings in the source code of WinPcap 4.1.2<br>
&gt;&gt;&gt;&gt; (some files have the CR/LF line ending, some have the LF one), the<br>
&gt;&gt;&gt;&gt; patch<br>
&gt;&gt;&gt;&gt; that was working on Windows  (with patch.exe coming from cygwin or<br>
&gt;&gt;&gt;&gt; MSYS)<br>
&gt;&gt;&gt;&gt; was<br>
&gt;&gt;&gt;&gt; not working on linux, and viceversa. So I created two patch files for<br>
&gt;&gt;&gt;&gt; WinPcap 4.1.2.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; The resulting patched WinPcap 4.1.2 was tested on<br>
&gt;&gt;&gt;&gt; - Cygwin 1.7<br>
&gt;&gt;&gt;&gt; - MSYS+MINGW64 (I used the TDM-GCC one at <a href="http://tdm-gcc.tdragon.net/" target="_blank">http://tdm-gcc.tdragon.net/</a>)<br>
&gt;&gt;&gt;&gt; - MSYS+MINGW32 (I used the TDM-GCC one at <a href="http://tdm-gcc.tdragon.net/" target="_blank">http://tdm-gcc.tdragon.net/</a>)<br>
&gt;&gt;&gt;&gt; - MINGW32 on a debian &quot;squeeze&quot; machine<br>
&gt;&gt;&gt;&gt; - MINGW64 on a debian &quot;squeeze&quot; machine<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Also, the same patches were committed on the WinPcap repository +<br>
&gt;&gt;&gt;&gt; libpcap<br>
&gt;&gt;&gt;&gt; repository (HEAD and libpcap_1.1 branch).<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Have a nice day<br>
&gt;&gt;&gt;&gt; GV<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; --------------------------------------------------<br>
&gt;&gt;&gt;&gt; From: &quot;Gianluca Varenni&quot; &lt;<a href="mailto:gianluca.varenni@cacetech.com">gianluca.varenni@cacetech.com</a>&gt;<br>
&gt;&gt;&gt;&gt; Sent: Tuesday, October 12, 2010 9:43 AM<br>
&gt;&gt;&gt;&gt; To: &lt;<a href="mailto:winpcap-users@winpcap.org">winpcap-users@winpcap.org</a>&gt;<br>
&gt;&gt;&gt;&gt; Subject: Re: [Winpcap-users] [PATCH] mingw build<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; --------------------------------------------------<br>
&gt;&gt;&gt;&gt; &gt; From: &quot;Guy Harris&quot; &lt;<a href="mailto:guy@alum.mit.edu">guy@alum.mit.edu</a>&gt;<br>
&gt;&gt;&gt;&gt; &gt; Sent: Wednesday, October 06, 2010 5:02 PM<br>
&gt;&gt;&gt;&gt; &gt; To: &lt;<a href="mailto:winpcap-users@winpcap.org">winpcap-users@winpcap.org</a>&gt;<br>
&gt;&gt;&gt;&gt; &gt; Subject: Re: [Winpcap-users] [PATCH] mingw build<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; On Sep 14, 2010, at 9:17 AM, Alon Bar-Lev wrote:<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;&gt; 4. grammar.y - any idea why we need pcap_parse if yacc defines it<br>
&gt;&gt;&gt;&gt; &gt;&gt;&gt; anyway instead of yyparse?<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Because<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; 1) WinPcap is based on libpcap;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; 2) libpcap was originally written back when many UN*Xes had only the<br>
&gt;&gt;&gt;&gt; &gt;&gt; old<br>
&gt;&gt;&gt;&gt; &gt;&gt; AT&amp;T YACC, which only defined yyparse().<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; The current top-of-trunk version of grammar.y, at least, defines<br>
&gt;&gt;&gt;&gt; &gt;&gt; pcap_parse() only if YYBISON is not defined, which presumably means<br>
&gt;&gt;&gt;&gt; &gt;&gt; &quot;not<br>
&gt;&gt;&gt;&gt; &gt;&gt; Bison&quot;.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;&gt; 5. yacc does not accept -y argument.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Earlier versions of GNUmakefile mirrored the UN*X Makefile.in, and<br>
&gt;&gt;&gt;&gt; &gt;&gt; had<br>
&gt;&gt;&gt;&gt; &gt;&gt; a<br>
&gt;&gt;&gt;&gt; &gt;&gt; YACC variable that ran Bison, rather than YACC, with the &quot;-y&quot; flag<br>
&gt;&gt;&gt;&gt; &gt;&gt; (which,<br>
&gt;&gt;&gt;&gt; &gt;&gt; for Bison, means &quot;act like YACC and produce y.tab.c and y.tab.h<br>
&gt;&gt;&gt;&gt; &gt;&gt; files&quot;).<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; The 4.1.2 version runs whatever make sets YACC to refer to, with the<br>
&gt;&gt;&gt;&gt; &gt;&gt; YFLAGS flag.  Is there some reason why that was done?<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; No idea. The original GNUMakefile was contributed by someone and<br>
&gt;&gt;&gt;&gt; &gt; included<br>
&gt;&gt;&gt;&gt; &gt; into the WinPcap sources.<br>
&gt;&gt;&gt;&gt; &gt; I modified GNUMakefile to<br>
&gt;&gt;&gt;&gt; &gt; 1. define &quot;BISON = bison&quot; and &quot;FLEX = flex&quot;<br>
&gt;&gt;&gt;&gt; &gt; 2. use ${BISON} to compile grammar.y<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Was this to support parser-generators *other* than Bison?  Unless<br>
&gt;&gt;&gt;&gt; &gt;&gt; there&#39;s<br>
&gt;&gt;&gt;&gt; &gt;&gt; a compelling reason not to run Bison, it should probably go back to<br>
&gt;&gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt;&gt;&gt; &gt;&gt; way it was, using Bison - that&#39;ll fix that problem *and* the<br>
&gt;&gt;&gt;&gt; &gt;&gt; previous<br>
&gt;&gt;&gt;&gt; &gt;&gt; problem, with no changes required to grammar.y.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; If there *is* a compelling reason not to run Bison, then<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; 1) it should not include &quot;-y&quot;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; 2) either it should not do &quot;-p pcap_&quot;, if whatever version of YACC<br>
&gt;&gt;&gt;&gt; &gt;&gt; is<br>
&gt;&gt;&gt;&gt; &gt;&gt; being used doesn&#39;t support &quot;-p&quot;, or:<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; 2a) grammar.y should check for YYBISON *and* some other #define<br>
&gt;&gt;&gt;&gt; &gt;&gt; named<br>
&gt;&gt;&gt;&gt; &gt;&gt; appropriately for whatever parser-generator is being used<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; 2b) it should do &quot;-D{that #define name}&quot;.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;&gt; 7. Minor modification of (char*)A += code.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; (I.e., &quot;casting lvalues considered harmful - and possibly rejected<br>
&gt;&gt;&gt;&gt; &gt;&gt; by<br>
&gt;&gt;&gt;&gt; &gt;&gt; some<br>
&gt;&gt;&gt;&gt; &gt;&gt; compilers.&quot;)<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; I will commit it on the libpcap git repository as soon as possible.<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; Have a nice day<br>
&gt;&gt;&gt;&gt; &gt; GV<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; &gt;&gt; Winpcap-users mailing list<br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="mailto:Winpcap-users@winpcap.org">Winpcap-users@winpcap.org</a><br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users" target="_blank">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; &gt; Winpcap-users mailing list<br>
&gt;&gt;&gt;&gt; &gt; <a href="mailto:Winpcap-users@winpcap.org">Winpcap-users@winpcap.org</a><br>
&gt;&gt;&gt;&gt; &gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users" target="_blank">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; Winpcap-users mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:Winpcap-users@winpcap.org">Winpcap-users@winpcap.org</a><br>
&gt;&gt;&gt;&gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users" target="_blank">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Winpcap-users mailing list<br>
&gt;&gt;&gt; <a href="mailto:Winpcap-users@winpcap.org">Winpcap-users@winpcap.org</a><br>
&gt;&gt;&gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users" target="_blank">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Winpcap-users mailing list<br>
&gt;&gt; <a href="mailto:Winpcap-users@winpcap.org">Winpcap-users@winpcap.org</a><br>
&gt;&gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users" target="_blank">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; Winpcap-users mailing list<br>
&gt; <a href="mailto:Winpcap-users@winpcap.org">Winpcap-users@winpcap.org</a><br>
&gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users" target="_blank">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>
&gt;<br>
_______________________________________________<br>
Winpcap-users mailing list<br>
<a href="mailto:Winpcap-users@winpcap.org">Winpcap-users@winpcap.org</a><br>
<a href="https://www.winpcap.org/mailman/listinfo/winpcap-users" target="_blank">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>
</div></div></blockquote></div><br></div>