[PD-dev] compile pd with cygwin
Patrice Colet
pat at mamalala.org
Mon Dec 3 07:29:35 CET 2007
Martin Peach a écrit :
> Patrice Colet wrote:
>> Hello!
>>
>> I've added -mno-cygwin and -I/cygdrive/c/Mingw/include
>> -L/cygdrive/c/Mingw/lib because:
>>
>> 1° The __WIN32 flag doesn't work with cygwin
>> 2° there is a cruel conflict with errno.h cygwin version.
>>
>> So it's not possible to compile with cygwin without mingw, unless using
>> voodoo...
>>
> Well it seems like the Windows API that mingw provides is essential for
> the audio and midi interfaces, unless you have a precompiled portmidi
> and portaudio. The rest could be done in cygwin's pseudo-unix, probably
> not GEM though. I think if there was a tcl/tk for cygwin it would be
> even more compatible with the unix version.
I'm trying right now the voodoo solution, because magiks are so
interesting...
cc -g -O2 -DPD -Wall -W -Wstrict-prototypes -Wno-unused
-Wno-parentheses -Wno-s
witch -DUSEAPI_PORTAUDIO -DPA_LITTLE_ENDIAN -DPA19 -DPD_INTERNAL
-I../por
taudio/pa_common -I../portaudio/pablio -I../portaudio/pa_asio
-I../portmidi/pm
_common -I../portmidi/porttime -I../portmidi/pm_win -I../portmidi/pm_win_ds
-mms-bitfields -M g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c
g_template
.c g_io.c g_scalar.c g_traversal.c g_guiconnect.c g_readwrite.c
g_editor.c g_all
_guis.c g_bang.c g_hdial.c g_hslider.c g_mycanvas.c g_numbox.c
g_toggle.c g_vdia
l.c g_vslider.c g_vumeter.c m_pd.c m_class.c m_obj.c m_atom.c m_memory.c
m_binbu
f.c m_conf.c m_glob.c m_sched.c s_main.c s_inter.c s_file.c s_print.c
s_loader.c
s_path.c s_entry.c s_audio.c s_midi.c d_ugen.c d_ctl.c d_arithmetic.c
d_osc.c d
_filter.c d_dac.c d_misc.c d_math.c d_fft.c d_array.c d_global.c
d_delay.c d_res
ample.c x_arithmetic.c x_connective.c x_interface.c x_midi.c x_misc.c
x_time.c x
_acoustics.c x_net.c x_qlist.c x_gui.c x_list.c d_soundfile.c
s_midi_pm.c s
_audio_pa.c s_audio_pablio.c s_audio_paring.c
../portaudio/pa_common/pa_
allocation.c ../portaudio/pa_common/pa_converters.c
../portaud
io/pa_common/pa_cpuload.c ../portaudio/pa_common/pa_dither.c
../portaudio/pa_common/pa_front.c
../portaudio/pa_common/pa_
process.c ../portaudio/pa_common/pa_skeleton.c
../portaud
io/pa_common/pa_stream.c ../portaudio/pa_common/pa_trace.c
../portaudio/pa_win/pa_win_util.c
../portaudio/pa_win/pa_win
_hostapis.c ../portaudio/pa_win_wmme/pa_win_wmme.c
../portaud
io/pa_win_ds/pa_win_ds.c
../portaudio/pa_win_ds/dsound_wrapper.c
../portmidi/pm_common/pmutil.c
../portmidi/
pm_common/portmidi.c ../portmidi/pm_win/pmdll.c
../portmidi/pm_win/pmwin.c
../portmidi/pm_win/pmwinmm.c
../portmidi/porttime/ptwinmm.c d_fft_mayer.c
d_fftroutine.c
> makefile.dependencies
cc -g -O2 -DPD -Wall -W -Wstrict-prototypes -Wno-unused
-Wno-parentheses -Wno-s
witch -DUSEAPI_PORTAUDIO -DPA_LITTLE_ENDIAN -DPA19 -DPD_INTERNAL
-I../por
taudio/pa_common -I../portaudio/pablio -I../portaudio/pa_asio
-I../portmidi/pm
_common -I../portmidi/porttime -I../portmidi/pm_win -I../portmidi/pm_win_ds
-mms-bitfields -DINSTALL_PREFIX=\"/usr/local\" -c -o
../obj/m_binbuf.o m_binb
uf.c
m_binbuf.c: In function `binbuf_read':
m_binbuf.c:733: attention : d'eclaration implicite de la fonction <<
lseek >>
m_binbuf.c:738: attention : d'eclaration implicite de la fonction <<
close >>
m_binbuf.c:741: attention : d'eclaration implicite de la fonction << read >>
cd ../obj; cc -o ../bin/pd g_canvas.o g_graph.o g_text.o g_rtext.o
g_array.o
g_template.o g_io.o g_scalar.o g_traversal.o g_guiconnect.o
g_readwrite.o g_edit
or.o g_all_guis.o g_bang.o g_hdial.o g_hslider.o g_mycanvas.o g_numbox.o
g_toggl
e.o g_vdial.o g_vslider.o g_vumeter.o m_pd.o m_class.o m_obj.o m_atom.o
m_memory
.o m_binbuf.o m_conf.o m_glob.o m_sched.o s_main.o s_inter.o s_file.o
s_print.o
s_loader.o s_path.o s_entry.o s_audio.o s_midi.o d_ugen.o d_ctl.o
d_arithmetic.o
d_osc.o d_filter.o d_dac.o d_misc.o d_math.o d_fft.o d_array.o
d_global.o d_del
ay.o d_resample.o x_arithmetic.o x_connective.o x_interface.o x_midi.o
x_misc.o
x_time.o x_acoustics.o x_net.o x_qlist.o x_gui.o x_list.o d_soundfile.o
s_midi_p
m.o s_audio_pa.o s_audio_pablio.o s_audio_paring.o
../portaudio/pa_common/pa_all
ocation.o ../portaudio/pa_common/pa_converters.o
../portaudio/pa_common/pa_cpulo
ad.o ../portaudio/pa_common/pa_dither.o
../portaudio/pa_common/pa_front.o ../por
taudio/pa_common/pa_process.o ../portaudio/pa_common/pa_skeleton.o
../portaudio/
pa_common/pa_stream.o ../portaudio/pa_common/pa_trace.o
../portaudio/pa_win/pa_w
in_util.o ../portaudio/pa_win/pa_win_hostapis.o
../portaudio/pa_win_wmme/pa_win_
wmme.o ../portaudio/pa_win_ds/pa_win_ds.o
../portaudio/pa_win_ds/dsound_wrapper.
o ../portmidi/pm_common/pmutil.o ../portmidi/pm_common/portmidi.o
../portmidi/pm
_win/pmdll.o ../portmidi/pm_win/pmwin.o ../portmidi/pm_win/pmwinmm.o
../portmidi
/porttime/ptwinmm.o d_fft_mayer.o d_fftroutine.o \
-ldl -lm -lpthreadGC2 -lwsock32 -lwinmm -lole32 -lstdc++
m_binbuf.o: dans la fonction << binbuf_read >>:
/home/pat/pdextended/pd-extended/pd-extended/pd/src/m_binbuf.c:736:
r'ef'erence
ind'efinie vers << __imp___iob >>
/home/pat/pdextended/pd-extended/pd-extended/pd/src/m_binbuf.c:729:
r'ef'erence
ind'efinie vers << __imp___iob >>
/home/pat/pdextended/pd-extended/pd-extended/pd/src/m_binbuf.c:743:
r'ef'erence
ind'efinie vers << __imp___iob >>
m_binbuf.o: dans la fonction << binbuf_write >>:
/home/pat/pdextended/pd-extended/pd-extended/pd/src/m_binbuf.c:829:
r'ef'erence
ind'efinie vers << __imp___iob >>
s_main.o: dans la fonction << sys_argparse >>:
/home/pat/pdextended/pd-extended/pd-extended/pd/src/s_main.c:872:
r'ef'erence in
d'efinie vers << __imp___iob >>
s_main.o:/home/pat/pdextended/pd-extended/pd-extended/pd/src/s_main.c:278:
encor
e plus de r'ef'erences ind'efinies suivent vers << __imp___iob >>
collect2: ld a retourn'e 1 code d''etat d'ex'ecution
make: *** [../bin/pd] Erreur 1
The source code modification is a little bit more complicated because
cygwin uses headers from both msw and unix.
pa and pm seems to be built :), but I'm stuck on this last error caused
by stdio.h, cygwin provides mingw headers, and the _imp____iob stuff is
into /usr/include/mingw/stdio.h:
in /usr/include/mingw/stdio.h line 146
#ifndef __DECLSPEC_SUPPORTED
extern FILE (*_imp___iob)[]; /* A pointer to an array of FILE */
#define _iob (*_imp___iob) /* An array of FILE */
so I've included it like this:
#ifdef __CYGWIN__
#include <mingw/stdio.h>
#else
#include <stdio.h>
#endif
This code seems to work for other files (I've tried it on g_canvas.c),
but only if I put, like a Sorcerer's Apprentice, _mingw.h into
/usr/include. Well, mingw seems not well implemented in cygwin.
I've also tried a turn by removing #ifndef __DECLSPEC_SUPPORTED just to
see if it is related, but no luck...
This issue remains mysterious.
Also I'm still optimistic about Gem because ogl and some other graphic
stuff are implemented by cygwin.
More information about the Pd-dev
mailing list