Already a while ago I tried to compile PD for OS X using the X11 libraries instead of the Aqua version. Although some people on the list tried to help, I never managed to compile it properly. I am trying again now with similar results. Can someone have a look at my makefile and tell me what's wrong? I installed the Tcl/Tk libraries with fink and I also have the Aqua ones installed. Ideally, I would like to compile PD with x11 support (for x-forwarding) and also Jack and Portaudio support. To tell the truth, if the thing compiles with X11 and makes any sound at all, I'll be happy.
The makefile follows. Thanks.
-- ::: sam :::
VPATH = ../obj:./ OBJ_DIR = ../obj BIN_DIR = ../bin PDEXEC = $(BIN_DIR)/pd EXT= pd_darwin GUINAME= pd-gui
INSTALL_PREFIX = /usr/local GFLAGS = -DINSTALL_PREFIX="$(INSTALL_PREFIX)"
MANDIR = ${prefix}/man
MORECFLAGS = -DMACOSX -I/usr/X11R6/include -I../portaudio_v18/pa_common -I../portaudio_v18/pablio -I../portmidi_osx -Wno-error -DUSEAPI_PORTAUDIO -DPA_BIG_ENDIAN -DUSEAPI_JACK -DUSEAPI_JACK
INCLUDE = -I. GINCLUDE = $(INCLUDE) -I/sw/include -I/usr/X11R6/include GLIB = -lX11 -L/usr/X11R6/lib -L/sw/lib -ltcl -ltk
LDFLAGS = -Wl -L/sw/lib -ltclstub -ltkstub8.4 -L/usr/X11R6/lib -lX11 -framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework Carbon -framework CoreMIDI -framework Jack
LIB = -ldl -lm -lpthread
# remove -ldl if it fails!
OPT_CFLAGS = -O2
WARN_CFLAGS = -Wall -W -Wstrict-prototypes -Werror
-Wno-unused -Wno-parentheses -Wno-switch
ARCH_CFLAGS = -DPD -DUNIX
CFLAGS = $(ARCH_CFLAGS) $(WARN_CFLAGS) $(OPT_CFLAGS) $(MORECFLAGS)
# the sources
SYSSRC += s_midi_pm.c s_audio_pa.c ../portaudio_v18/pa_common/pa_lib.c ../portaudio_v18/pa_common/pa_trace.c ../portaudio_v18/pa_common/pa_convert.c ../portaudio_v18/pablio/pablio_pd.c ../portaudio_v18/pablio/ringbuffer_pd.c ../portaudio_v18/pa_mac_core/pa_mac_core.c ../portmidi_osx/pmdarwin.c ../portmidi_osx/pmmacosx.c ../portmidi_osx/pmutil.c ../portmidi_osx/portmidi.c ../portmidi_osx/ptdarwin.c s_audio_jack.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_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
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_mayer_fft.c d_fftroutine.c d_array.c d_global.c
d_delay.c d_resample.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 d_soundfile.c
$(SYSSRC)
OBJ = $(SRC:.c=.o) EXTERNS = ../extra/*/*.$(EXT)
GSRC = t_main.c t_tkcmd.c
GOBJ = $(GSRC:.c=.o)
# # ------------------ targets ------------------------------------ #
.PHONY: pd gui externs all
all: $(PDEXEC) $(BIN_DIR)/pd-watchdog $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend
$(BIN_DIR)/pdreceive $(BIN_DIR)/pd.tk externs
bin: $(PDEXEC) $(BIN_DIR)/pd-watchdog $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend
$(BIN_DIR)/pdreceive $(BIN_DIR)/pd.tk
$(OBJ) : %.o : %.c $(CC) $(CFLAGS) $(GFLAGS) $(INCLUDE) -c -o $(OBJ_DIR)/$*.o $*.c
$(GOBJ) : %.o : %.c $(CC) $(CFLAGS) $(GFLAGS) $(GINCLUDE) -c -o $(OBJ_DIR)/$*.o $*.c
pd: $(PDEXEC)
gui: $(BIN_DIR)/$(GUINAME)
pd-watchdog: $(BIN_DIR)/pd-watchdog
$(BIN_DIR)/pd-watchdog: s_watchdog.c cc -O2 $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog s_watchdog.c
$(BIN_DIR)/pdsend: u_pdsend.c cc $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pdsend u_pdsend.c
$(BIN_DIR)/pdreceive: u_pdreceive.c cc $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pdreceive u_pdreceive.c
$(PDEXEC): $(OBJ)
cd ../obj; $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $(OBJ)
$(LIB)
$(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC)
cd ../obj; $(CC) $(INCLUDE) -o $(BIN_DIR)/$(GUINAME) $(GOBJ)
$(GLIB)
$(BIN_DIR)/pd.tk: u_main.tk echo set pd_nt 2 > $(BIN_DIR)/pd.tk grep -v "set pd_nt" < u_main.tk >> $(BIN_DIR)/pd.tk
#this is for Max OSX only...
$(BIN_DIR)/pdtcl: $(GOBJ) $(GSRC)
cd ../obj; libtool -dynamic -o $(BIN_DIR)/pdtcl $(GOBJ)
/Library/Frameworks/Tk.framework/Versions/Current/Tk
/Library/Frameworks/Tcl.framework/Versions/Current/Tcl
/usr/lib/libSystem.B.dylib
externs: cd ../extra/bonk~;make pd_darwin cd ../extra/choice;make pd_darwin cd ../extra/expr~;make pd_darwin cd ../extra/fiddle~;make pd_darwin cd ../extra/loop~;make pd_darwin cd ../extra/lrshift~;make pd_darwin cd ../extra/pique;make pd_darwin
INSTDIR = $(DESTDIR)/$(INSTALL_PREFIX) MANINSTDIR = $(DESTDIR)/$(MANDIR)
install: all install -d $(INSTDIR)/lib/pd/bin install $(BIN_DIR)/$(GUINAME) $(INSTDIR)/lib/pd/bin/$(GUINAME) install $(BIN_DIR)/pd-watchdog $(INSTDIR)/lib/pd/bin/pd-watchdog install -m644 $(BIN_DIR)/pd.tk $(INSTDIR)/lib/pd/bin/pd.tk install -d $(INSTDIR)/bin install -m755 $(PDEXEC) $(INSTDIR)/bin/pd install -m 755 $(BIN_DIR)/pdsend $(INSTDIR)/bin/pdsend install -m 755 $(BIN_DIR)/pdreceive $(INSTDIR)/bin/pdreceive install -d $(INSTDIR)/lib/pd/extra install -d $(INSTDIR)/lib/pd/externs install -m 644 $(EXTERNS) $(INSTDIR)/lib/pd/extra cp -r ../doc $(INSTDIR)/lib/pd/ install -d $(INSTDIR)/include install -m644 m_pd.h $(INSTDIR)/include/m_pd.h install -d $(MANINSTDIR)/man1 gzip < ../man/pd.1 > $(MANINSTDIR)/man1/pd.1.gz chmod 644 $(MANINSTDIR)/man1/pd.1.gz gzip < ../man/pdsend.1 > $(MANINSTDIR)/man1/pdsend.1.gz chmod 644 $(MANINSTDIR)/man1/pdsend.1.gz gzip < ../man/pdreceive.1 > $(MANINSTDIR)/man1/pdreceive.1.gz chmod 644 $(MANINSTDIR)/man1/pdreceive.1.gz
local-clean:
-rm -f ../obj/* $(BIN_DIR)/pd $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend
$(BIN_DIR)/pdreceive $(BIN_DIR)/pd-watchdog m_stamp.c
-rm -f *~
-(cd ../doc/6.externs; rm -f *.pd_linux)
-rm -f makefile.dependencies
touch makefile.dependencies
chmod 666 makefile.dependencies
extra-clean:
-rm -f find ../extra/ -name "*.pd_*"
-rm -f tags
clean: extra-clean local-clean
distclean: clean
rm -rf config.cache config.log config.status makefile tags
autom4te-*.cache
echo all: > makefile
echo -e "\t./configure" >> makefile
echo -e "\tmake" >> makefile
tags: $(SRC) $(GSRC); ctags *.[ch]
depend: $(CC) $(INCLUDE) $(CFLAGS) -M $(SRC) > makefile.dependencies
uninstall: -rm -r $(INSTDIR)/lib/pd -rm $(INSTDIR)/bin/pd -rm $(INSTDIR)/bin/pdsend -rm $(INSTDIR)/bin/pdreceive -rm $(INSTDIR)/include/m_pd.h -rm $(MANINSTDIR)/man/man1/pd.1.gz -rm $(MANINSTDIR)/man/man1/pdsend.1.gz -rm $(MANINSTDIR)/man/man1/pdreceive.1.gz
include makefile.dependencies