this is mainly for miller:
i'm currently trying to setup an AppVeyor CI-build [1] for native W32 builds. for starters i would like to use the src/makefile.msvc, but it seems that this depends on some weird "asiolib.lib" file. i guess this comes from steinberg's ASIO SDK, but the ASIOSDK2.3 download from their site does not contain such a file (and checking the bundled files i don't think that one can actually build that file from the SDK2.3)
so i wonder: where does this file come from?
do you simply reuse the lib/asio/ folder as it came with Pd<=0.43 (it eventually was removed from the distributed w32 packages; i don't know when, but 0.46 and 0.47 does not have a lib/asio/ folder anymore). or is there some canonical way to get these files? (a quick google search pointed me mostly to Pd...)
gfards IOhannes
I had a look and I'm baffled too.
Here's teh script I use to build Pd in microsoft visual C, running under wine:
---------------------
if [ ! -d ../drive_c/users/msp ] then echo ../drive_c/users/msp: no such directory; exit 1 else echo -n fi
cd ../drive_c/users/msp/ pwd rm -rf pd unzip /tmp/pd.zip cd pd/src if make MSCC="wine cl" MSLN="wine link" COPY=cp DELETE=rm \ SRCASIO= ASIOLIB=/NODEFAULTLIB:ole32 PAAPI=-DPA_USE_WMME PAASIO= then echo -n ; else exit 1; fi cd ../extra for i in bonk~ choice fiddle~ loop~ lrshift~ pique sigmund~ stdout pd~; do echo extern ----------------- $i ----------------- cd $i if make MSCC="wine cl" MSLN="wine link" COPY=cp DELETE=rm pd_nt then echo -n ; else exit 1; fi cd .. done exit 0
----------------
So ASIOLIB is redefined to contain... wait for it... nothing at all. Maybe you can just omit asiolib.lib from makefile.msvc now?
cheers Miller
On Mon, Jun 26, 2017 at 11:23:09PM +0200, IOhannes m zmölnig wrote:
this is mainly for miller:
i'm currently trying to setup an AppVeyor CI-build [1] for native W32 builds. for starters i would like to use the src/makefile.msvc, but it seems that this depends on some weird "asiolib.lib" file. i guess this comes from steinberg's ASIO SDK, but the ASIOSDK2.3 download from their site does not contain such a file (and checking the bundled files i don't think that one can actually build that file from the SDK2.3)
so i wonder: where does this file come from?
do you simply reuse the lib/asio/ folder as it came with Pd<=0.43 (it eventually was removed from the distributed w32 packages; i don't know when, but 0.46 and 0.47 does not have a lib/asio/ folder anymore). or is there some canonical way to get these files? (a quick google search pointed me mostly to Pd...)
gfards IOhannes
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
On 06/27/2017 12:33 AM, Miller Puckette wrote:
Maybe you can just omit asiolib.lib from makefile.msvc now?
ah interesting.
so i've tried to remove all the cruft from the makefile.msvc and now Pd builds on appveyor (both in i386 and amd64).
it also removes the VCSDK/VC9 cruft, which shouldn't actually be needed (afaict the ordinary workflow is to call a number of batch-files (vcvarsall.bat for the compiler, and SetEnv.cmd for the MS-SDK) to initialize some environment variables, including PATH, INCLUDES and LIB to make the compiler find the correct headers/libraries automatically).
this means that it should be much easier to build Pd with different versions of MSVC (without having to edit the makefile; i still haven't grokked how anybody is able to do serious stuff with a syntax that seems to be oblivious to quoting and escaping interacting with a system that heavily pushes towards backslashes and spaces in filenames)
@miller: could you try whether the attached makefile still works for your wine-builds. if not, I also have a slightly more ugly version that tries to follow the original behaviour a bit more strictly. i would of course be happy to receive any full build failures, in case of emergency.
(i'm not using a github pull-request for this, as it might require a few iterations to get the thing right).
gamsrd IOhannes
So far I'm getting...
s_entry.c(11) : fatal error C1083: Cannot open include file: 'windows.h': No suc h file or directory
Probably because I have to invoke it with the correct paths in the command line - I'll give that a look when I get home next.
cheers Miller
On Tue, Jun 27, 2017 at 09:27:34PM +0200, IOhannes m zmölnig wrote:
On 06/27/2017 12:33 AM, Miller Puckette wrote:
Maybe you can just omit asiolib.lib from makefile.msvc now?
ah interesting.
so i've tried to remove all the cruft from the makefile.msvc and now Pd builds on appveyor (both in i386 and amd64).
it also removes the VCSDK/VC9 cruft, which shouldn't actually be needed (afaict the ordinary workflow is to call a number of batch-files (vcvarsall.bat for the compiler, and SetEnv.cmd for the MS-SDK) to initialize some environment variables, including PATH, INCLUDES and LIB to make the compiler find the correct headers/libraries automatically).
this means that it should be much easier to build Pd with different versions of MSVC (without having to edit the makefile; i still haven't grokked how anybody is able to do serious stuff with a syntax that seems to be oblivious to quoting and escaping interacting with a system that heavily pushes towards backslashes and spaces in filenames)
@miller: could you try whether the attached makefile still works for your wine-builds. if not, I also have a slightly more ugly version that tries to follow the original behaviour a bit more strictly. i would of course be happy to receive any full build failures, in case of emergency.
(i'm not using a github pull-request for this, as it might require a few iterations to get the thing right).
gamsrd IOhannes
# Makefile for PD using Microsoft Visual C/C++ (MSVC) -- note defines # which will have to be adapted to whichever specific version of MSVC you # have lying around.
MSCC = cl MSLN = link COPY = copy DELETE = del
#VCSDK = "C:/Program Files/Microsoft SDKs/Windows/v6.0A" #VC = "C:/Program Files/Microsoft Visual Studio 9.0/VC"
PDINCLUDE = -I./
PDLIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:libcpmt /NODEFAULTLIB:oldnames \ /NODEFAULTLIB:libc /NODEFAULTLIB:uuid /NODEFAULTLIB:ole32 \ kernel32.lib \ wsock32.lib winmm.lib \ advapi32.lib setupapi.lib \ ../bin/pthreadVC.lib \ libcmt.lib oldnames.lib
AFLAGS = /D__i386__ # MSW, NT: legacy defines of Pd # WIN32: portmidi, portaudio # WINDOWS: portaudio # _WINDOWS: unused! CFLAGS = /nologo \ /W3 /Ox $(AFLAGS) \ /DMSW /DNT /DWIN32 /DWINDOWS /D_WINDOWS \ /DPD /DPD_INTERNAL \ /DUSEAPI_MMIO /DUSEAPI_PORTAUDIO \ /DPA_LITTLE_ENDIAN /DPA19 \ /D_CRT_SECURE_NO_WARNINGS LFLAGS = /nologo
SYSSRC = s_audio_pa.c s_audio_paring.c \ s_audio_mmio.c s_midi_pm.c
SRC = 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_clone.c \ g_all_guis.c g_bang.c g_hdial.c g_hslider.c g_mycanvas.c g_numbox.c \ g_toggle.c g_vdial.c g_vslider.c g_vumeter.c \ m_pd.c m_class.c m_obj.c m_atom.c m_memory.c m_binbuf.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 s_utf8.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_fft_fftsg.c d_array.c d_global.c \ d_delay.c d_resample.c d_soundfile.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_text.c x_gui.c x_list.c x_array.c \ x_scalar.c x_vexp.c x_vexp_if.c x_vexp_fun.c \ $(SYSSRC)
PADIR = ../portaudio/portaudio INCPA = -I$(PADIR)/include -I$(PADIR)/src/common -I$(PADIR)/src/os/win PASRC = $(PADIR)/src
PAOBJ = pa_stream.obj pa_trace.obj pa_process.obj \ pa_front.obj pa_dither.obj pa_cpuload.obj pa_converters.obj \ pa_allocation.obj pa_ringbuffer.obj \ pa_win_hostapis.obj pa_win_util.obj pa_win_waveformat.obj \ pa_win_wmme.obj # pa_win_wdmks.obj
PMDIR = ../portmidi/portmidi INCPM = -I$(PMDIR)/pm_common -I$(PMDIR)/pm_win -I$(PMDIR)/porttime -DNEWBUFFER SRCPM = $(PADIR)/pm_common/portmidi.c \ $(PMDIR)/pm_common/pmutil.c \ $(PMDIR)/porttime/porttime.c \ $(PMDIR)/porttime/ptwinmm.c \ $(PMDIR)/pm_win/pmwin.c \ $(PMDIR)/pm_win/pmwinmm.c
PMOBJ = portmidi.obj pmutil.obj porttime.obj ptwinmm.obj pmwin.obj pmwinmm.obj
OBJC = $(SRC:.c=.obj) $(PAOBJ) $(PMOBJ)
GSRC = t_main.c t_tkcmd.c
GOBJ = $(GSRC:.c=.obj)
ALLCF = $(CFLAGS) $(PDINCLUDE) $(INCPA) $(INCPM)
.SUFFIXES: .obj .c.obj: $(MSCC) /c $(ALLCF) /Tc$*.c
all: pd ../bin/pdsend.exe ../bin/pdreceive.exe
.PHONY: pd
pd: ../bin/pd.exe ../bin/pd.com
../bin/pd.exe: s_entry.obj ../bin/pd.lib $(MSLN) $(LFLAGS) /OUT:../bin/pd.exe /INCREMENTAL:NO s_entry.obj \ ../bin/pd.lib $(PDLIB)
../bin/pd.dll ../bin/pd.lib: $(OBJC) $(MSLN) /DLL /OUT:../bin/pd.dll /EXPORT:sys_main $(LFLAGS) $(OBJC) \ $(PDLIB)
../bin/pdsend.exe: u_pdsend.obj $(MSLN) $(LFLAGS) /out:../bin/pdsend.exe /INCREMENTAL:NO \ u_pdsend.obj $(PDLIB)
../bin/pdreceive.exe: u_pdreceive.obj $(MSLN) $(LFLAGS) /out:../bin/pdreceive.exe /INCREMENTAL:NO \ u_pdreceive.obj $(PDLIB)
../bin/pd.com: s_entry_com.obj ../bin/pd.lib $(MSLN) $(LFLAGS) /out:../bin/pd.com /INCREMENTAL:NO s_entry_com.obj \ ../bin/pd.lib $(PDLIB)
s_entry_com.obj: s_entry.c $(COPY) s_entry.c s_entry_com.c $(MSCC) /c -DCOMMANDVERSION s_entry_com.c $(DELETE) s_entry_com.c
PAAPI = -DPA_USE_WMME PACF= $(PAAPI) $(ALLCF) # explicit rules to compile portaudio sources: pa_stream.obj: $(PASRC)/common/pa_stream.c $(MSCC) /c $(PACF) $(PASRC)/common/pa_stream.c pa_trace.obj: $(PASRC)/common/pa_trace.c $(MSCC) /c $(PACF) $(PASRC)/common/pa_trace.c pa_process.obj: $(PASRC)/common/pa_process.c $(MSCC) /c $(PACF) $(PASRC)/common/pa_process.c pa_front.obj: $(PASRC)/common/pa_front.c $(MSCC) /c $(PACF) $(PASRC)/common/pa_front.c pa_dither.obj: $(PASRC)/common/pa_dither.c $(MSCC) /c $(PACF) $(PASRC)/common/pa_dither.c pa_cpuload.obj: $(PASRC)/common/pa_cpuload.c $(MSCC) /c $(PACF) $(PASRC)/common/pa_cpuload.c pa_converters.obj: $(PASRC)/common/pa_converters.c $(MSCC) /c $(PACF) $(PASRC)/common/pa_converters.c pa_allocation.obj: $(PASRC)/common/pa_allocation.c $(MSCC) /c $(PACF) $(PASRC)/common/pa_allocation.c pa_ringbuffer.obj: $(PASRC)/common/pa_ringbuffer.c $(MSCC) /c $(PACF) $(PASRC)/common/pa_ringbuffer.c
pa_win_hostapis.obj: $(PASRC)/os/win/pa_win_hostapis.c $(MSCC) /c $(PACF) $(PASRC)/os/win/pa_win_hostapis.c pa_win_util.obj: $(PASRC)/os/win/pa_win_util.c $(MSCC) /c $(PACF) $(PASRC)/os/win/pa_win_util.c pa_win_waveformat.obj: $(PASRC)/os/win/pa_win_waveformat.c $(MSCC) /c $(PACF) $(PASRC)/os/win/pa_win_waveformat.c pa_win_coinitialize.obj: $(PASRC)/os/win/pa_win_coinitialize.c $(MSCC) /c $(PACF) $(PASRC)/os/win/pa_win_coinitialize.c pa_win_wmme.obj: $(PASRC)/hostapi/wmme/pa_win_wmme.c $(MSCC) /c $(PACF) $(PASRC)/hostapi/wmme/pa_win_wmme.c pa_win_wdmks.obj: $(PADIR)/a_win_wdmks/pa_win_wdmks.c $(MSCC) /c $(PACF) \ -DWINVER=0x400 -DKSAUDIO_SPEAKER_DIRECTOUT \ $(PADIR)/pa_win_wdmks/pa_win_wdmks.c pa_asio.obj: $(PASRC)/hostapi/asio/pa_asio.cpp $(MSCC) /c $(PACF) $(PASRC)/hostapi/asio/pa_asio.cpp
portmidi.obj: $(PMDIR)/pm_common/portmidi.c $(MSCC) /c $(PACF) $(PMDIR)/pm_common/portmidi.c pmutil.obj: $(PMDIR)/pm_common/pmutil.c $(MSCC) /c $(PACF) $(PMDIR)/pm_common/pmutil.c pmwin.obj: $(PMDIR)/pm_win/pmwin.c $(MSCC) /c $(PACF) $(PMDIR)/pm_win/pmwin.c pmwinmm.obj: $(PMDIR)/pm_win/pmwinmm.c $(MSCC) /c $(PACF) $(PMDIR)/pm_win/pmwinmm.c porttime.obj: $(PMDIR)/porttime/porttime.c $(MSCC) /c $(PACF) $(PMDIR)/porttime/porttime.c ptwinmm.obj: $(PMDIR)/porttime/ptwinmm.c $(MSCC) /c $(PACF) $(PMDIR)/porttime/ptwinmm.c
# the following should also clean up "bin" but it doesn't because "bin" holds # precious stuff from elsewhere. clean: $(DELETE) *.obj
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
On 06/28/2017 03:04 AM, Miller Puckette wrote:
So far I'm getting...
s_entry.c(11) : fatal error C1083: Cannot open include file: 'windows.h': No suc h file or directory
Probably because I have to invoke it with the correct paths in the command line - I'll give that a look when I get home next.
the idea would be to change your workflow as little as possible :-)
here's another attempt that will add the VC9/VCSDK paths unless some envvariables have been set by the VC/SDK setup scripts.
please try again.
gfmadsr IOhannes