[PD] Jack support on Windows
Hans-Christoph Steiner
hans at at.or.at
Tue Jan 22 02:55:24 CET 2013
Getting closer... try the newly attached makefile.
.hc
On 01/21/2013 07:25 PM, Esteban Viveros wrote:
> 2013/1/21 Hans-Christoph Steiner <hans at at.or.at>
>
>> once you get the asiosdk2.2.zip, then unzip it into ~/pure-data/pd/asio so
>> that there is a folder called ASIOSDK2 like this:
>> ~/pure-data/pd/asio/ASIOSDK2
>>
>
> Ok! It's done.
>
> New log file
>
>
-------------- next part --------------
# how Miller builds Pd on Windows:
# http://lists.puredata.info/pipermail/pd-dev/2004-10/002981.html
CC = gcc
CXX = g++
cvs_root_dir = ../..
pd_src = $(cvs_root_dir)/pd
DLL_DIR = $(pd_src)/src
BIN_DIR = ../bin
VPATH = $(pd_src)/src
prefix = /usr/local/pd
exec_prefix = $(prefix)
includedir = $(prefix)/include
libdir = $(exec_prefix)/lib
mandir = $(prefix)/man
bindir = $(exec_prefix)/bin
GFLAGS = -DINSTALL_PREFIX=\"$(prefix)\"
# varibles to match packages/Makefile.buildlayout so that they can be easily
# overridden when building Pd-extended builds. <hans at at.or.at>
libpddir = $(prefix)
pddocdir = $(libpddir)/doc
libpdbindir = $(libpddir)/bin
PDEXEC = pd.exe
PDDLL = pd.dll
DLLWRAP= dllwrap
MORECFLAGS = -O3 -funroll-loops -fomit-frame-pointer
PADIR = $(pd_src)/portaudio
ASIODIR = $(pd_src)/asio/ASIOSDK2
ASIOINC = -I$(ASIODIR)/common -I$(ASIODIR)/host -I$(ASIODIR)/host/pc
INCPA = -I$(PADIR) -I$(PADIR)/include -I$(PADIR)/src/common -I$(PADIR)/src/os/win $(ASIOINC)
INCLUDE = -I$(pd_src)/src -I"$(PROGRAMFILES)/Jack/includes"
GINCLUDE = -I/usr/local/include $(INCLUDE)
LDFLAGS = -L"$(PROGRAMFILES)/Jack/lib"
LIBS = -lm -lwsock32 -lwinmm -lole32 -lpthreadGC2 "$(PROGRAMFILES)/Jack/lib/libjack.lib"
OPT_CFLAGS =
WARN_CFLAGS = -Wall -W -Wstrict-prototypes -Wno-unused \
-Wno-unused-parameter -Wno-parentheses -Wno-switch
# Some old code in asio/ASIOSDK2/common/combase.h needs to be ignored,
# we do this by setting the WINVER macro to min Windows XP aka 5.1.
# Also, for SetDllDirectory() s_loader.c, we need a minium of Windows
# XP SP1. WINVER isnt' fine-grained enough for that, so we use the
# next minor version of Windows, 5.2.
ARCH_CFLAGS = -DPD -DPD_INTERNAL -DPA_USE_ASIO -DPA_USE_WMME -DWINVER=0x0502 \
-DUSEAPI_MMIO -DUSEAPI_PORTAUDIO -DUSEAPI_JACK -DJACK_XRUN \
-mms-bitfields -DWISHAPP='"wish85.exe"'
CFLAGS += $(ARCH_CFLAGS) $(WARN_CFLAGS) $(OPT_CFLAGS) $(MORECFLAGS)
STRIP = strip --strip-unneeded -R .note -R .comment
# the sources
PASRC = s_audio_pa.c s_audio_paring.c s_audio_jack.c \
s_audio_mmio.c s_midi_mmio.c \
$(PADIR)/src/common/pa_stream.c \
$(PADIR)/src/common/pa_trace.c \
$(PADIR)/src/common/pa_process.c \
$(PADIR)/src/common/pa_front.c \
$(PADIR)/src/common/pa_dither.c \
$(PADIR)/src/common/pa_cpuload.c \
$(PADIR)/src/common/pa_converters.c \
$(PADIR)/src/common/pa_allocation.c \
$(PADIR)/src/common/pa_ringbuffer.c \
$(PADIR)/src/os/win/pa_win_hostapis.c \
$(PADIR)/src/os/win/pa_win_util.c \
$(PADIR)/src/os/win/pa_win_waveformat.c \
$(PADIR)/src/os/win/pa_win_coinitialize.c \
$(PADIR)/src/hostapi/wmme/pa_win_wmme.c
ASIOSRC = $(PADIR)/src/hostapi/asio/iasiothiscallresolver.cpp \
$(PADIR)/src/hostapi/asio/pa_asio.cpp \
$(ASIODIR)/common/asio.cpp \
$(ASIODIR)/host/asiodrivers.cpp \
$(ASIODIR)/host/pc/asiolist.cpp
#VSRC = s_audio_vst.c
PMDIR = ../portmidi
PMINCLUDE = -I$(PMDIR)/pm_common -I$(PMDIR)/pm_win -I$(PMDIR)/porttime -DNEWBUFFER
PMSRC = $(PMDIR)/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 = $(PMSRC:.c=.o)
HEADERS = g_all_guis.h m_imp.h g_canvas.h m_pd.h s_stuff.h g_magicglass.h \
$(wildcard ../portaudio/common/*.h) s_audio_paring.h scandir.h \
../portaudio/src/os/win/pa_win_coinitialize.h
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_all_guis.c \
m_pd.c m_class.c m_obj.c m_atom.c m_memory.c m_binbuf.c \
m_conf_pdextended.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_math.c d_array.c d_global.c \
d_delay.c d_resample.c \
x_arithmetic.c x_connective.c \
x_acoustics.c d_soundfile.c \
e_fft.c e_gfxstub.c e_dac.c e_midi.c \
g_magicglass.c \
scandir.c \
import.c path.c print.c closebang.c initbang.c loadbang.c
# FFTW
#SRC += d_fft_fftw.c d_fftroutine.c
# Mayer FFT
SRC += d_fft_mayer.c d_fftroutine.c
SRSRC = u_pdsend.c u_pdreceive.c
OBJ = $(SRC:.c=.o)
SROBJ = $(SRSRC:.c=.o)
PAOBJ = $(PASRC:.c=.o)
ASIOOBJ = $(ASIOSRC:.cpp=.o)
#VOBJ = $(VSRC:.c=.o)
OBJC = $(OBJ) $(PAOBJ) $(ASIOOBJ) $(PMOBJ)
# get version from m_pd.h to use in doc/1.manual/1.introduction.txt
PD_MAJOR_VERSION := $(shell grep PD_MAJOR_VERSION m_pd.h | \
sed 's|^.define *PD_MAJOR_VERSION *\([0-9]*\).*|\1|' )
PD_MINOR_VERSION := $(shell grep PD_MINOR_VERSION m_pd.h | \
sed 's|^.define *PD_MINOR_VERSION *\([0-9]*\).*|\1|' )
PD_BUGFIX_VERSION := $(shell grep PD_BUGFIX_VERSION m_pd.h | \
sed 's|^.define *PD_BUGFIX_VERSION *\([0-9]*\).*|\1|' )
PD_TEST_VERSION := $(shell grep PD_TEST_VERSION m_pd.h | \
sed 's|^.define *PD_TEST_VERSION *"\(.*\)".*|\1|' )
PD_VERSION := $(PD_MAJOR_VERSION).$(PD_MINOR_VERSION).$(PD_BUGFIX_VERSION)
ifneq ($(PD_TEST_VERSION),)
PD_VERSION := $(PD_VERSION)-$(PD_TEST_VERSION)
endif
#
# ------------------ targets ------------------------------------
#
.PHONY: all install clean testbin
all: $(PDDLL) $(PDEXEC) pdsend.exe pdreceive.exe pd.com
$(OBJ) : %.o : %.c
$(CC) $(CFLAGS) $(GFLAGS) $(INCLUDE) -c -o $*.o $*.c
$(GOBJ) : %.o : %.c
$(CC) $(CFLAGS) $(GFLAGS) $(GINCLUDE) -c -o $*.o $*.c
$(SROBJ) : %.o : %.c
$(CC) $(CFLAGS) $(GFLAGS) $(INCLUDE) -c -o $*.o $*.c
$(PAOBJ) : %.o : %.c
$(CC) $(CFLAGS) $(GFLAGS) $(INCPA) -c -o $*.o $*.c
$(ASIOOBJ) : %.o : %.cpp
$(CXX) $(CFLAGS) $(INCPA) -c -o $*.o $*.cpp
$(PMOBJ) : %.o : %.c
$(CC) $(CFLAGS) $(GFLAGS) $(PMINCLUDE) -c -o $*.o $*.c
$(VOBJ) : %.o : %.c
$(CC) $(CFLAGS) $(GFLAGS) $(INCLUDE) -c -o $*.o $*.c
pdsend.exe: u_pdsend.o
$(CC) $(CFLAGS) $(LDFLAGS) -o pdsend.exe u_pdsend.o $(LIBS)
pdreceive.exe: u_pdreceive.o
$(CC) $(CFLAGS) $(LDFLAGS) -o pdreceive.exe u_pdreceive.o $(LIBS)
$(PDEXEC): s_entry.o pd.res
$(CC) $(LDFLAGS) -mwindows -o $(PDEXEC) s_entry.o pd.res $(LIBS) -L. -lpd
pd.com: s_entry.o
$(CC) $(LDFLAGS) -o pd.com s_entry.o $(LIBS) -L. -lpd
$(PDDLL): $(OBJC)
$(CXX) -shared $(LDFLAGS) -o $(PDDLL) $(OBJC) $(LIBS) \
-Wl,--export-all-symbols -Wl,--out-implib=pd.a;
pd.res: pd.rc
windres pd.rc -O coff -o pd.res
#vstschedlib.dll: $(VOBJ)
# $(DLLWRAP) --export-all-symbols --output-def vst.def \
# --output-lib=vst.a --dllname=vstschedlib.dll s_audio_vst.o pd.a $(LIBS)
# kludge to put stuff into the pd/bin dir for testing
testbin: $(PDEXEC) $(PDDLL) pd.com
echo "Copying files to $(BIN_DIR)"
install -d $(BIN_DIR)
install -p *.tcl $(BIN_DIR)
install -p $(PDDLL) $(BIN_DIR)
install -p pd.ico $(BIN_DIR)
install -p pd.com $(BIN_DIR)
install -p $(PDEXEC) $(BIN_DIR)
ABOUT_FILE=$(DESTDIR)$(pddocdir)/1.manual/1.introduction.txt
install: all
# locales don't have a MinGW makefile yet, but the pd-gui-rewrite one could work
# make libpddir=$(libpddir) -C ../po install
# the real install
install -d $(DESTDIR)$(bindir)/../tcl/
install -p ../tcl/*.tcl $(DESTDIR)$(bindir)/../tcl/
install -p ../tcl/pd.gif $(DESTDIR)$(bindir)/../tcl/
install -p $(PDEXEC) $(DESTDIR)$(bindir)/$(PDEXEC)
$(STRIP) $(DESTDIR)$(bindir)/$(PDEXEC)
install -p pd.com $(DESTDIR)$(bindir)/pd.com
$(STRIP) $(DESTDIR)$(bindir)/pd.com
install -p pd.dll $(DESTDIR)$(bindir)/pd.dll
$(STRIP) $(DESTDIR)$(bindir)/pd.dll
install -p pd.ico $(DESTDIR)$(bindir)/pd.ico
install -p pdsend.exe $(DESTDIR)$(bindir)/pdsend.exe
$(STRIP) $(DESTDIR)$(bindir)/pdsend.exe
install -p pdreceive.exe $(DESTDIR)$(bindir)/pdreceive.exe
$(STRIP) $(DESTDIR)$(bindir)/pdreceive.exe
for dir in $(shell ls -1 ../doc | grep -v CVS); do \
echo "installing $$dir"; \
install -d $(DESTDIR)$(pddocdir)/$$dir ; \
install -p ../doc/$$dir/*.* $(DESTDIR)$(pddocdir)/$$dir ; \
done
for dir in $(shell ls -1 ../doc/7.stuff | grep -v CVS); do \
echo "installing 7.stuff/$$dir"; \
install -d $(DESTDIR)$(pddocdir)/7.stuff/$$dir ; \
install -p ../doc/7.stuff/$$dir/*.* $(DESTDIR)$(pddocdir)/7.stuff/$$dir ; \
done
mv $(ABOUT_FILE) $(ABOUT_FILE).tmp
cat $(ABOUT_FILE).tmp | sed 's|PD_VERSION|Pd version $(PD_VERSION)|' \
> $(ABOUT_FILE)
rm $(ABOUT_FILE).tmp
install -d $(DESTDIR)/extra
install -p ../extra/output~.pd ../extra/output~-help.pd $(DESTDIR)/extra
install -d $(DESTDIR)$(includedir)
install -p m_pd.h $(DESTDIR)$(includedir)
install -d $(DESTDIR)$(includedir)/pdextended
install -p g_all_guis.h g_canvas.h m_imp.h m_pd.h s_stuff.h e_fft.h e_sqrt.h \
$(DESTDIR)$(includedir)/pdextended
@echo "Pd install succeeded."
clean:
-rm -f -- $(BIN_DIR)/*.*
-rm -f -- *.o *.a *.def
-rm -f -- pd*.exe pd*.dll pd.com
-rm -f -- $(OBJ) $(GOBJ) $(SROBJ) $(PAOBJ) $(ASIOOBJ) $(PMOBJ)
-rm -f makefile.dependencies
distclean: clean
rm -rf -- config.cache config.log config.status makefile tags \
autom4te-*.cache
tags: $(SRC) $(GSRC); ctags *.[ch]
depend: makefile.dependencies
makefile.dependencies: $(SRC) $(PASRC) $(HEADERS)
$(CC) $(INCLUDE) $(INCPA) $(CFLAGS) -M $(SRC) $(PASRC) $(HEADERS) \
> makefile.dependencies
uninstall:
-rm $(prefix)/bin/pd*.exe
-rm $(prefix)/bin/pd*.com
-rm $(prefix)/bin/pd*.dll
-rm $(prefix)/bin/*.tcl
test_locations:
@echo "PD_VERSION: $(PD_VERSION)"
@echo "PACKAGE_VERSION: $(PACKAGE_VERSION)"
@echo "CWD $(CWD)"
@echo "DESTDIR $(DESTDIR)"
@echo "PREFIX $(prefix)"
@echo "BINDIR $(bindir)"
@echo "LIBDIR $(libdir)"
@echo "OBJECTSDIR $(objectsdir)"
@echo "PDDOCDIR $(pddocdir)"
@echo "LIBPDDIR $(libpddir)"
@echo "LIBPDBINDIR $(libpdbindir)"
@echo "HELPDIR $(helpdir)"
@echo "MANUALSDIR $(manualsdir)"
@echo "EXAMPLESDIR $(examplesdir)"
include makefile.dependencies
More information about the Pd-list
mailing list