[PD-dev] building Pd with makefile.msvc

Miller Puckette msp at ucsd.edu
Wed Jun 28 03:04:50 CEST 2017


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 at lists.iem.at
> https://lists.puredata.info/listinfo/pd-dev




More information about the Pd-dev mailing list