[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