From: Sisyphus <sis...@op...> - 2011-01-12 10:33:35
|
Hi, In accordance with instructions at http://www.miscdebris.net/plplot_wiki/index.php?title=Configure_PLplot_for_cygwin I'm running: $ cmake -DCMAKE_INSTALL_PREFIX=~/dyn_lib -DENABLE_tk=OFF -DENABLE_tcl=OFF ../ That proceeds ok, but when I subsequently run 'make', the process errors out with: ##################################### Scanning dependencies of target cairo [ 56%] Building C object drivers/CMakeFiles/cairo.dir/cairo.c.o In file included from /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/windows.h:87, from /home/Rob/comp/plplot-5.9.7/drivers/cairo.c:62: /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:255: error: two or more data types in declaration specifiers /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:270: error: two or more data types in declaration specifiers /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:291: error: two or more data types in declaration specifiers /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:316: error: two or more data types in declaration specifiers /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:571: error: two or more data types in declaration specifiers /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:594: error: two or more data types in declaration specifiers make[2]: *** [drivers/CMakeFiles/cairo.dir/cairo.c.o] Error 1 make[1]: *** [drivers/CMakeFiles/cairo.dir/all] Error 2 make: *** [all] Error 2 ##################################### Lines 255, 270, 291, 316, 571 and 594 of winspool.h are all the same: DWORD Status; and they all occur somewhere in the midst of a 'typedef struct' declaration - eg: ##################################### 262: typedef struct _JOB_INFO_1W { 263: DWORD JobId; 264: LPWSTR pPrinterName; 265: LPWSTR pMachineName; 266: LPWSTR pUserName; 267: LPWSTR pDocument; 268: LPWSTR pDatatype; 269: LPWSTR pStatus; 270: DWORD Status; 271: DWORD Priority; 272: DWORD Position; 273: DWORD TotalPages; 274: DWORD PagesPrinted; 275: SYSTEMTIME Submitted; 276: } JOB_INFO_1W,*PJOB_INFO_1W,*LPJOB_INFO_1W; ##################################### Is the error message telling me that 'Status' has already been defined as a data type somewhere ? (If so, I failed to discover the location of that definition.) Any help appreciated. Cheers, Rob |
From: Arjen M. <arj...@de...> - 2011-01-12 14:08:26
|
Hi Rob, this is rather odd: DWORD is defined as an "unsigned long", but that ought to be okay. I have not used Cygwin in a pretty long while, I must admit (focusing on MinGW instead at the moment) and the structure definition seems perfectly okay as well. Can you check the various Cairo include files? It seems likely that the problem resides there. (I do not have it myself at the moment) Regards, Arjen On 2011-01-12 11:33, Sisyphus wrote: > Hi, > > In accordance with instructions at > http://www.miscdebris.net/plplot_wiki/index.php?title=Configure_PLplot_for_cygwin > I'm running: > > $ cmake -DCMAKE_INSTALL_PREFIX=~/dyn_lib -DENABLE_tk=OFF -DENABLE_tcl=OFF > ../ > > That proceeds ok, but when I subsequently run 'make', the process errors out > with: > > ##################################### > Scanning dependencies of target cairo > [ 56%] Building C object drivers/CMakeFiles/cairo.dir/cairo.c.o > In file included from > /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/windows.h:87, > from /home/Rob/comp/plplot-5.9.7/drivers/cairo.c:62: > /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:255: > error: two or more data types in declaration specifiers > /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:270: > error: two or more data types in declaration specifiers > /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:291: > error: two or more data types in declaration specifiers > /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:316: > error: two or more data types in declaration specifiers > /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:571: > error: two or more data types in declaration specifiers > /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../include/w32api/winspool.h:594: > error: two or more data types in declaration specifiers > make[2]: *** [drivers/CMakeFiles/cairo.dir/cairo.c.o] Error 1 > make[1]: *** [drivers/CMakeFiles/cairo.dir/all] Error 2 > make: *** [all] Error 2 > ##################################### > > Lines 255, 270, 291, 316, 571 and 594 of winspool.h are all the same: > > DWORD Status; > > and they all occur somewhere in the midst of a 'typedef struct' > declaration - eg: > > ##################################### > 262: typedef struct _JOB_INFO_1W { > 263: DWORD JobId; > 264: LPWSTR pPrinterName; > 265: LPWSTR pMachineName; > 266: LPWSTR pUserName; > 267: LPWSTR pDocument; > 268: LPWSTR pDatatype; > 269: LPWSTR pStatus; > 270: DWORD Status; > 271: DWORD Priority; > 272: DWORD Position; > 273: DWORD TotalPages; > 274: DWORD PagesPrinted; > 275: SYSTEMTIME Submitted; > 276: } JOB_INFO_1W,*PJOB_INFO_1W,*LPJOB_INFO_1W; > ##################################### > > Is the error message telling me that 'Status' has already been defined as a > data type somewhere ? (If so, I failed to discover the location of that > definition.) > > Any help appreciated. > > Cheers, > Rob > > > > ------------------------------------------------------------------------------ > Protect Your Site and Customers from Malware Attacks > Learn about various malware tactics and how to avoid them. Understand > malware threats, the impact they can have on your business, and how you > can protect your company and customers by using code signing. > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > Plplot-general mailing list > Plp...@li... > https://lists.sourceforge.net/lists/listinfo/plplot-general > > DISCLAIMER: This message is intended exclusively for the addressee(s) and may contain confidential and privileged information. If you are not the intended recipient please notify the sender immediately and destroy this message. Unauthorized use, disclosure or copying of this message is strictly prohibited. The foundation 'Stichting Deltares', which has its seat at Delft, The Netherlands, Commercial Registration Number 41146461, is not liable in any way whatsoever for consequences and/or damages resulting from the improper, incomplete and untimely dispatch, receipt and/or content of this e-mail. |
From: Sisyphus <sis...@op...> - 2011-01-13 01:24:24
|
----- Original Message ----- From: "Arjen Markus" <arj...@de...> To: "Sisyphus" <sis...@op...> Cc: "plplot" <plp...@li...> Sent: Thursday, January 13, 2011 1:08 AM Subject: Re: [Plplot-general] plplot-5.9.7 won't build on Cygwin-1.7.7 > Hi Rob, > > this is rather odd: DWORD is defined as an "unsigned long", but > that ought to be okay. I have not used Cygwin in a pretty long > while, I must admit (focusing on MinGW instead at the moment) > and the structure definition seems perfectly okay as well. > > Can you check the various Cairo include files? It seems likely > that the problem resides there. (I do not have it myself at > the moment) Finally found the culprit. In Xlib.h: #define Status int In drivers/cairo.c it's therefore just a matter of including windows.h before the X11 includes. But then I get: ################################## [ 56%] Building C object drivers/CMakeFiles/cairo.dir/cairo.c.o Linking C shared module cairo.dll CMakeFiles/cairo.dir/cairo.c.o:cairo.c:(.text+0x4373): undefined reference to `_SetBkColor@8' CMakeFiles/cairo.dir/cairo.c.o:cairo.c:(.text+0x43cf): undefined reference to `_ExtTextOutA@32' CMakeFiles/cairo.dir/cairo.c.o:cairo.c:(.text+0x43f0): undefined reference to `_SetBkColor@8' CMakeFiles/cairo.dir/cairo.c.o:cairo.c:(.text+0x487c): undefined reference to `_cairo_win32_surface_create' collect2: ld returned 1 exit status make[2]: *** [drivers/cairo.dll] Error 1 make[1]: *** [drivers/CMakeFiles/cairo.dir/all] Error 2 make: *** [all] Error 2 ################################## `_SetBkColor@8' and `_ExtTextOutA@32' will be resolved by linking to libgdi32.a. How do I make that happen ? But I haven't yet found `_cairo_win32_surface_create' in any of the libraries. I can find it in the 'native' win32 libcairo.dll.a, but we're linking to the *cygwin* version of libcairo.dll.a, and it just doesn't have that symbol. I guess this means that either Cygwin's cairo library needs to have a 'cairo_win32_surface_create' function, or the function needs to be avoided in the plplot (drivers/cairo.c) source when we build on Cygwin. If I build afresh, having disabled the cairo driver, 'make' errors out with: ################################# Scanning dependencies of target test_xwin_dyndriver [ 61%] Generating test_dyndrivers_dir/xwin.rc Could not open driver module xwin libltdl error: The specified module could not be found. make[2]: *** [drivers/test_dyndrivers_dir/xwin.rc] Error 1 make[1]: *** [drivers/CMakeFiles/test_xwin_dyndriver.dir/all] Error 2 make: *** [all] Error 2 ################################# That's all I've got time for, for the moment ... more later. Thanks Arjen. I'm also more interested in MinGW (where plplot builds fine, btw) than Cygwin - just a bit curious as to why it's not so straightforward on Cygwin. Cheers, Rob |
From: Arjen M. <arj...@de...> - 2011-01-13 07:34:12
|
Hi Rob, this does show that we need to pay some attention to Cygwin. Wrt _cairo_win32_surface_create: I know nothing about Cairo, so I will have to leave that to somebody else. I am not sure we can use xwin on Windows, but the error should not have occurred in any case. Thanks for reporting these issues. I will try and have a look at these Cygwin problems in the coming weeks. Regards, Arjen On 2011-01-13 02:10, Sisyphus wrote: > > Finally found the culprit. In Xlib.h: > > #define Status int > > In drivers/cairo.c it's therefore just a matter of including windows.h > before the X11 includes. > But then I get: > > ################################## > [ 56%] Building C object drivers/CMakeFiles/cairo.dir/cairo.c.o > Linking C shared module cairo.dll > CMakeFiles/cairo.dir/cairo.c.o:cairo.c:(.text+0x4373): undefined > reference to `_SetBkColor@8' > CMakeFiles/cairo.dir/cairo.c.o:cairo.c:(.text+0x43cf): undefined > reference to `_ExtTextOutA@32' > CMakeFiles/cairo.dir/cairo.c.o:cairo.c:(.text+0x43f0): undefined > reference to `_SetBkColor@8' > CMakeFiles/cairo.dir/cairo.c.o:cairo.c:(.text+0x487c): undefined > reference to `_cairo_win32_surface_create' > collect2: ld returned 1 exit status > make[2]: *** [drivers/cairo.dll] Error 1 > make[1]: *** [drivers/CMakeFiles/cairo.dir/all] Error 2 > make: *** [all] Error 2 > ################################## > > `_SetBkColor@8' and `_ExtTextOutA@32' will be resolved by linking to > libgdi32.a. How do I make that happen ? > > But I haven't yet found `_cairo_win32_surface_create' in any of the > libraries. > I can find it in the 'native' win32 libcairo.dll.a, but we're linking to > the *cygwin* version of libcairo.dll.a, and it just doesn't have that > symbol. > > I guess this means that either Cygwin's cairo library needs to have a > 'cairo_win32_surface_create' function, or the function needs to be > avoided in the plplot (drivers/cairo.c) source when we build on Cygwin. > > If I build afresh, having disabled the cairo driver, 'make' errors out > with: > > ################################# > Scanning dependencies of target test_xwin_dyndriver > [ 61%] Generating test_dyndrivers_dir/xwin.rc > Could not open driver module xwin > libltdl error: The specified module could not be found. > make[2]: *** [drivers/test_dyndrivers_dir/xwin.rc] Error 1 > make[1]: *** [drivers/CMakeFiles/test_xwin_dyndriver.dir/all] Error 2 > make: *** [all] Error 2 > ################################# > > That's all I've got time for, for the moment ... more later. > > Thanks Arjen. > > I'm also more interested in MinGW (where plplot builds fine, btw) than > Cygwin - just a bit curious as to why it's not so straightforward on > Cygwin. > > Cheers, > Rob > > DISCLAIMER: This message is intended exclusively for the addressee(s) and may contain confidential and privileged information. If you are not the intended recipient please notify the sender immediately and destroy this message. Unauthorized use, disclosure or copying of this message is strictly prohibited. The foundation 'Stichting Deltares', which has its seat at Delft, The Netherlands, Commercial Registration Number 41146461, is not liable in any way whatsoever for consequences and/or damages resulting from the improper, incomplete and untimely dispatch, receipt and/or content of this e-mail. |