Martin's 'net' library builds on all platforms, so you could check there for differences. On Ubuntu, 'meld' is an awesome GUI tool for seeing the differences between versions of a file. 'opendiff' aka FileMerge is a similarly awesome tool on Mac OS X.
.hc
On Oct 28, 2011, at 3:58 PM, Roman Haefeli wrote:
Hi Hans, IOhannes
I'm trying to put iemnet into Pd-extended and adapted the externals/Makefile accordingly, after I tested it here on my Ubuntu machine. One day later, Pd-extended builds succeeded only on Linuxes, but failed on OS X and Windows (where I haven't tested it).
The reasons seem to be different, though.
Excerpt from Windows build log:
<windowslog>------------------------------------------------------ make -C /home/pd/auto-build/pd-extended/externals/iem/iemnet CFLAGS="-DPD -DHAVE_G_CANVAS_H -I/home/pd/auto-build/pd-extended/pd/src -Wall -W -ggdb -I/home/pd/auto-build/pd-extended/externals/Gem -mms-bitfields -DMSW -DNT -D'O_NONBLOCK=1' -D'srand48(n)=srand((n))' -D'drand48()=((double)rand()/RAND_MAX)' -D'bzero(p,n)=memset(p,0,n)'" \ PD_PATH=/home/pd/auto-build/pd-extended/pd PD_INCLUDE=/home/pd/auto-build/pd-extended/pd/src make[3]: Entering directory `/home/pd/auto-build/pd-extended/externals/iem/iemnet' gcc -I"/home/pd/auto-build/pd-extended/pd/src/pd" -I"/home/pd/auto-build/pd-extended/pd/src" -DPD -DVERSION='"0.1"' -mms-bitfields -D'O_NONBLOCK=1' -DPD -DHAVE_G_CANVAS_H -I/home/pd/auto-build/pd-extended/pd/src -Wall -W -ggdb -I/home/pd/auto-build/pd-extended/externals/Gem -mms-bitfields -DMSW -DNT -D'O_NONBLOCK=1' -D'srand48(n)=srand((n))' -D'drand48()=((double)rand()/RAND_MAX)' -D'bzero(p,n)=memset(p,0,n)' -o "tcpserver.o" -c "tcpserver.c" In file included from tcpserver.c:30:0: iemnet.h: In function 'debug_dummy': iemnet.h:255:37: warning: unused parameter 'format' tcpserver.c: In function 'tcpserver_fixindex': tcpserver.c:149:7: warning: format '%d' expects type 'int', but argument 5 has type 't_int' tcpserver.c: In function 'tcpserver_send_client': tcpserver.c:285:61: warning: unused parameter 's' tcpserver.c: In function 'tcpserver_broadcast': tcpserver.c:308:59: warning: unused parameter 's' tcpserver.c: In function 'tcpserver_broadcastbut': tcpserver.c:328:18: warning: unused variable 'chunk' tcpserver.c:325:7: warning: unused variable 'client' tcpserver.c:323:62: warning: unused parameter 's' tcpserver.c: In function 'tcpserver_defaulttarget': tcpserver.c:358:5: warning: format '%d' expects type 'int', but argument 4 has type 't_int' tcpserver.c: In function 'tcpserver_send_socket': tcpserver.c:380:61: warning: unused parameter 's' tcpserver.c: In function 'tcpserver_connectpoll': tcpserver.c:490:63: warning: pointer targets in passing argument 3 of 'accept' differ in signedness c:\mingw\bin../lib/gcc/mingw32/4.5.2/../../../../include/winsock2.h:536:35: note: expected 'int *' but argument is of type 'unsigned int *' tcpserver.c: At top level: tcpserver.c:323:13: warning: 'tcpserver_broadcastbut' defined but not used gcc -I"/home/pd/auto-build/pd-extended/pd/src/pd" -I"/home/pd/auto-build/pd-extended/pd/src" -DPD -DVERSION='"0.1"' -mms-bitfields -D'O_NONBLOCK=1' -DPD -DHAVE_G_CANVAS_H -I/home/pd/auto-build/pd-extended/pd/src -Wall -W -ggdb -I/home/pd/auto-build/pd-extended/externals/Gem -mms-bitfields -DMSW -DNT -D'O_NONBLOCK=1' -D'srand48(n)=srand((n))' -D'drand48()=((double)rand()/RAND_MAX)' -D'bzero(p,n)=memset(p,0,n)' -o "iemnet.o" -c "iemnet.c" In file included from iemnet.c:25:0: iemnet.h: In function 'debug_dummy': iemnet.h:255:37: warning: unused parameter 'format' iemnet.c: In function 'iemnet_debuglevel': iemnet.c:137:29: warning: unused parameter 'x' iemnet.c: At top level: iemnet.h:255:13: warning: 'debug_dummy' defined but not used gcc -I"/home/pd/auto-build/pd-extended/pd/src/pd" -I"/home/pd/auto-build/pd-extended/pd/src" -DPD -DVERSION='"0.1"' -mms-bitfields -D'O_NONBLOCK=1' -DPD -DHAVE_G_CANVAS_H -I/home/pd/auto-build/pd-extended/pd/src -Wall -W -ggdb -I/home/pd/auto-build/pd-extended/externals/Gem -mms-bitfields -DMSW -DNT -D'O_NONBLOCK=1' -D'srand48(n)=srand((n))' -D'drand48()=((double)rand()/RAND_MAX)' -D'bzero(p,n)=memset(p,0,n)' -o "iemnet_data.o" -c "iemnet_data.c" In file included from iemnet_data.c:28:0: iemnet.h: In function 'debug_dummy': iemnet.h:255:37: warning: unused parameter 'format' gcc -I"/home/pd/auto-build/pd-extended/pd/src/pd" -I"/home/pd/auto-build/pd-extended/pd/src" -DPD -DVERSION='"0.1"' -mms-bitfields -D'O_NONBLOCK=1' -DPD -DHAVE_G_CANVAS_H -I/home/pd/auto-build/pd-extended/pd/src -Wall -W -ggdb -I/home/pd/auto-build/pd-extended/externals/Gem -mms-bitfields -DMSW -DNT -D'O_NONBLOCK=1' -D'srand48(n)=srand((n))' -D'drand48()=((double)rand()/RAND_MAX)' -D'bzero(p,n)=memset(p,0,n)' -o "iemnet_receiver.o" -c "iemnet_receiver.c" In file included from iemnet_receiver.c:28:0: iemnet.h: In function 'debug_dummy': iemnet.h:255:37: warning: unused parameter 'format' iemnet_receiver.c: In function 'iemnet__receiver_readthread': iemnet_receiver.c:114:3: warning: comparison between signed and unsigned integer expressions iemnet_receiver.c:136:17: error: 'MSG_DONTWAIT' undeclared (first use in this function) iemnet_receiver.c:136:17: note: each undeclared identifier is reported only once for each function it appears in iemnet_receiver.c:146:63: warning: pointer targets in passing argument 2 of 'recvfrom' differ in signedness c:\mingw\bin../lib/gcc/mingw32/4.5.2/../../../../include/winsock2.h:548:32: note: expected 'char *' but argument is of type 'unsigned char *' make[3]: *** [iemnet_receiver.o] Error 1 make[3]: Leaving directory `/home/pd/auto-build/pd-extended/externals/iem/iemnet' make[2]: *** [iemnet] Error 2 make[2]: Leaving directory `/home/pd/auto-build/pd-extended/externals' make[1]: *** [externals_install] Error 2 make[1]: Leaving directory `/home/pd/auto-build/pd-extended/packages' make: *** [prebuilt_install] Error 2 </windowslog>------------------------------------------------------------------
I don't have a clue what MSG_DONTWAIT is. I think I need some help (from IOhannes?) to get this one fixed.
From the OS X log:
<maclog>----------------------------------------------------------------------- make -C /Users/pd/auto-build/pd-extended/externals/iem/iemnet CFLAGS="-DPD -DHAVE_G_CANVAS_H -I/Users/pd/auto-build/pd-extended/pd/src -Wall -W -ggdb -I/Users/pd/auto-build/pd-extended/externals/Gem -I/sw/include -I/Users/pd/auto-build/pd-extended/externals/pdp/include -DMACOSX -DUNIX -Dunix -DDL_OPEN" \ PD_PATH=/Users/pd/auto-build/pd-extended/pd PD_INCLUDE=/Users/pd/auto-build/pd-extended/pd/src cc -I"/Users/pd/auto-build/pd-extended/pd/src/pd" -I"/Users/pd/auto-build/pd-extended/pd/src" -DPD -DVERSION='"0.1"' -fPIC -I/sw/include -I/Applications/Pd-extended.app/Contents/Resources/include -DPD -DHAVE_G_CANVAS_H -I/Users/pd/auto-build/pd-extended/pd/src -Wall -W -ggdb -I/Users/pd/auto-build/pd-extended/externals/Gem -I/sw/include -I/Users/pd/auto-build/pd-extended/externals/pdp/include -DMACOSX -DUNIX -Dunix -DDL_OPEN -o "tcpserver.o" -c "tcpserver.c" cc1: error: /Users/pd/auto-build/pd-extended/pd/src/pd: not a directory make[3]: *** [tcpserver.o] Error 1 make[2]: *** [iemnet] Error 2 make[1]: *** [externals_install] Error 2 make: *** [extended_install] Error 2 </maclog>-----------------------------------------------------------------------
The problem here seems to be that the Pd build directory was not clean and thus there is still the pd binary lying around. Since the iemnet Makefile defines ALL_CFLAGS as:
ALL_CFLAGS = -I"$(PD_INCLUDE)/pd" -I"$(PD_INCLUDE)"
where the former is there to make it find Pd headers also in the pd directory (since Pd 0.43), it stumbles across the binary pd files in the src directory and complains that it is not a directory.
What is the best solution here? Cleaning the pd/src directory before building the externals? Including the headers from the install location instead of the source location? Removing '-I"$(PD_INCLUDE)/pd"' from ALL_CFLAGS (which actually should stay there for future Pd versions)?
Altough I had the same error once on Linux (I didn't do 'make clean'), it doesn't happen in the Linux autobuilds, probably because the pd/src directory is clean at the time of externals build.
Hints/help is appreciated.
Roman
Pd-dev mailing list Pd-dev@iem.at http://lists.puredata.info/listinfo/pd-dev
----------------------------------------------------------------------------
I spent 33 years and four months in active military service and during that period I spent most of my time as a high class muscle man for Big Business, for Wall Street and the bankers. - General Smedley Butler