Excellent point, @okyeron, so it should be fairly straightforward to test with any Windows machine and a teensy.
@artfwo:
Thanks for pointing that out. As you can tell, I am learning a lot but not quite self-sufficient yet, I am afraid. When trying with the MinGW 64bit, I get:
$ make install
Making install in src
make[1]: Entering directory '/home/<username>/monome/liblo-0.30/src'
Making install in .
make[2]: Entering directory '/home/<username>/monome/liblo-0.30/src'
CC liblo_la-address.lo
CC liblo_la-send.lo
CC liblo_la-message.lo
CC liblo_la-server.lo
CC liblo_la-method.lo
CC liblo_la-blob.lo
CC liblo_la-bundle.lo
CC liblo_la-timetag.lo
CC liblo_la-pattern_match.lo
CC liblo_la-version.lo
CC liblo_la-server_thread.lo
CCLD liblo.la
libtool: error: can't build x86_64-w64-mingw32 shared library unless -no-undefined is specified
make[2]: *** [Makefile:728: liblo.la] Error 1
make[2]: Leaving directory '/home/<username>/monome/liblo-0.30/src'
make[1]: *** [Makefile:965: install-recursive] Error 1
make[1]: Leaving directory '/home/<username>/monome/liblo-0.30/src'
make: *** [Makefile:470: install-recursive] Error 1
Now, if I specify LDFLAGS=-no-undefined I get:
$ make LDFLAGS=-no-undefined install
Making install in src
make[1]: Entering directory '/home/<username>/monome/liblo-0.30/src'
Making install in .
make[2]: Entering directory '/home/<username>/monome/liblo-0.30/src'
CCLD liblo.la
CC testlo-testlo.o
CCLD testlo.exe
./.libs/lt-testlo.c: In function 'main':
./.libs/lt-testlo.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-testlo.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-testlo.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './testlo.exe': No such file
../libtool: line 11093: ./testlo.exe: No such file or directory
CC subtest-subtest.o
CCLD subtest.exe
./.libs/lt-subtest.c: In function 'main':
./.libs/lt-subtest.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-subtest.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-subtest.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './subtest.exe': No such file
../libtool: line 11093: ./subtest.exe: No such file or directory
CC test_bidirectional_tcp-test_bidirectional_tcp.o
CCLD test_bidirectional_tcp.exe
./.libs/lt-test_bidirectional_tcp.c: In function 'main':
./.libs/lt-test_bidirectional_tcp.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-test_bidirectional_tcp.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-test_bidirectional_tcp.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './test_bidirectional_tcp.exe': No such file
../libtool: line 11093: ./test_bidirectional_tcp.exe: No such file or directory
CXX cpp_test-cpp_test.o
CXXLD cpp_test.exe
./.libs/lt-cpp_test.c: In function 'main':
./.libs/lt-cpp_test.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-cpp_test.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-cpp_test.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './cpp_test.exe': No such file
../libtool: line 11093: ./cpp_test.exe: No such file or directory
make[3]: Entering directory '/home/<username>/monome/liblo-0.30/src'
/usr/bin/mkdir -p '/mingw64/lib'
/bin/sh ../libtool --mode=install /usr/bin/install -c liblo.la '/mingw64/lib'
libtool: install: /usr/bin/install -c .libs/liblo.dll.a /mingw64/lib/liblo.dll.a
libtool: install: base_file=`basename liblo.la`
libtool: install: dlpath=`/bin/sh 2>&1 -c '. .libs/'liblo.la'i; echo liblo-7.dll'`
libtool: install: dldir=/mingw64/lib/`dirname ../bin/liblo-7.dll`
libtool: install: test -d /mingw64/lib/../bin || mkdir -p /mingw64/lib/../bin
libtool: install: /usr/bin/install -c .libs/liblo-7.dll /mingw64/lib/../bin/liblo-7.dll
libtool: install: chmod a+x /mingw64/lib/../bin/liblo-7.dll
libtool: install: if test -n '' && test -n 'strip --strip-unneeded'; then eval 'strip --strip-unneeded /mingw64/lib/../bin/liblo-7.dll' || exit 0; fi
libtool: install: /usr/bin/install -c .libs/liblo.lai /mingw64/lib/liblo.la
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/<username>/monome/liblo-0.30/src'
make[2]: Leaving directory '/home/<username>/monome/liblo-0.30/src'
Making install in tools
make[2]: Entering directory '/home/<username>/monome/liblo-0.30/src/tools'
Making install in .
make[3]: Entering directory '/home/<username>/monome/liblo-0.30/src/tools'
CC oscsend-oscsend.o
CCLD oscsend.exe
./.libs/lt-oscsend.c: In function 'main':
./.libs/lt-oscsend.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscsend.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscsend.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './oscsend.exe': No such file
../../libtool: line 11093: ./oscsend.exe: No such file or directory
CC oscdump-oscdump.o
CCLD oscdump.exe
./.libs/lt-oscdump.c: In function 'main':
./.libs/lt-oscdump.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscdump.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscdump.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './oscdump.exe': No such file
../../libtool: line 11093: ./oscdump.exe: No such file or directory
CC oscsendfile-oscsendfile.o
CCLD oscsendfile.exe
./.libs/lt-oscsendfile.c: In function 'main':
./.libs/lt-oscsendfile.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscsendfile.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscsendfile.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './oscsendfile.exe': No such file
../../libtool: line 11093: ./oscsendfile.exe: No such file or directory
make[4]: Entering directory '/home/<username>/monome/liblo-0.30/src/tools'
CCLD oscsend.exe
./.libs/lt-oscsend.c: In function 'main':
./.libs/lt-oscsend.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscsend.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscsend.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './oscsend.exe': No such file
../../libtool: line 11093: ./oscsend.exe: No such file or directory
CCLD oscdump.exe
./.libs/lt-oscdump.c: In function 'main':
./.libs/lt-oscdump.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscdump.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscdump.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './oscdump.exe': No such file
../../libtool: line 11093: ./oscdump.exe: No such file or directory
CCLD oscsendfile.exe
./.libs/lt-oscsendfile.c: In function 'main':
./.libs/lt-oscsendfile.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscsendfile.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-oscsendfile.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './oscsendfile.exe': No such file
../../libtool: line 11093: ./oscsendfile.exe: No such file or directory
/usr/bin/mkdir -p '/mingw64/bin'
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/home/<username>/monome/liblo-0.30/src/tools'
make[3]: Leaving directory '/home/<username>/monome/liblo-0.30/src/tools'
make[2]: Leaving directory '/home/<username>/monome/liblo-0.30/src/tools'
make[1]: Leaving directory '/home/<username>/monome/liblo-0.30/src'
Making install in examples
make[1]: Entering directory '/home/<username>/monome/liblo-0.30/examples'
CC example_client.o
CCLD example_client.exe
./.libs/lt-example_client.c: In function 'main':
./.libs/lt-example_client.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-example_client.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-example_client.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './example_client.exe': No such file
../libtool: line 11093: ./example_client.exe: No such file or directory
CC example_server.o
CCLD example_server.exe
./.libs/lt-example_server.c: In function 'main':
./.libs/lt-example_server.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-example_server.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-example_server.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './example_server.exe': No such file
../libtool: line 11093: ./example_server.exe: No such file or directory
CC nonblocking_server_example.o
CCLD nonblocking_server_example.exe
./.libs/lt-nonblocking_server_example.c: In function 'main':
./.libs/lt-nonblocking_server_example.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-nonblocking_server_example.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-nonblocking_server_example.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './nonblocking_server_example.exe': No such file
../libtool: line 11093: ./nonblocking_server_example.exe: No such file or directory
CC example_tcp_echo_server.o
CCLD example_tcp_echo_server.exe
./.libs/lt-example_tcp_echo_server.c: In function 'main':
./.libs/lt-example_tcp_echo_server.c:318:16: warning: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-example_tcp_echo_server.c:318:25: error: '_P_WAIT' undeclared (first use in this function)
318 | rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
| ^~~~~~~
./.libs/lt-example_tcp_echo_server.c:318:25: note: each undeclared identifier is reported only once for each function it appears in
strip: './example_tcp_echo_server.exe': No such file
../libtool: line 11093: ./example_tcp_echo_server.exe: No such file or directory
CXX cpp_example.o
cpp_example.cpp: In function ‘int main()’:
cpp_example.cpp:96:9: error: ‘usleep’ was not declared in this scope; did you mean ‘sleep’?
96 | usleep(10*1000);
| ^~~~~~
| sleep
make[1]: *** [Makefile:466: cpp_example.o] Error 1
make[1]: Leaving directory '/home/<username>/monome/liblo-0.30/examples'
make: *** [Makefile:470: install-recursive] Error 1
Oh man, I feel like a complete noob right now…