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