# On Mac OS X, this needs to be defined to enable dlopen and weak linking # support. Its safe on other platforms since gcc only checks this env var on # Apple's gcc. ifeq ($(shell uname -s),Darwin) export MACOSX_DEPLOYMENT_TARGET = 10.3 endif VPATH = ../obj:./ OBJ_DIR = ../obj BIN_DIR = ../bin EXT= @EXT@ PDEXEC = $(BIN_DIR)/pd$(EXT) GUINAME= @GUINAME@ # pd-watchdog or pd.com? PID= @PID@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ includedir = @includedir@ libdir = @libdir@ mandir = @mandir@ GFLAGS = -DINSTALL_PREFIX=\"$(prefix)\" # varibles to match packages/Makefile.buildlayout so that they can be easily # overridden when building Pd-extended builds. libpddir = $(libdir)/pd pddocdir = $(libpddir)/doc libpdbindir = $(libpddir)/bin CPPFLAGS = @CPPFLAGS@ MORECFLAGS = @MORECFLAGS@ GINCLUDE = $(CPPFLAGS) @GUIFLAGS@ GLIB = @LIBS@ LDFLAGS = @LDFLAGS@ LIB = @PDLIB@ WARN_CFLAGS = -Wall -W -Wstrict-prototypes \ -Wno-unused -Wno-unused-parameter -Wno-parentheses -Wno-switch ARCH_CFLAGS = -DPD CFLAGS = @CFLAGS@ $(ARCH_CFLAGS) $(WARN_CFLAGS) $(CPPFLAGS) $(MORECFLAGS) # the sources SYSSRC += @SYSSRC@ #windows stuff PDDLL = pd.dll STRIP = strip --strip-unneeded -R .note -R .comment ASIOSRC = @ASIOSRC@ ASIOOBJ = $(ASIOSRC:.cpp=.o) HEADERS = g_all_guis.h m_imp.h s_audio_alsa.h s_audio_paring.h t_tk.h \ g_canvas.h m_pd.h s_audio_pablio.h s_stuff.h ASIOSRC = @ASIOSRC@ ASIOOBJ = $(ASIOSRC:.cpp=.o) 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_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 x_list.c d_soundfile.c \ $(SYSSRC) OBJ = $(SRC:.c=.o) GSRC = t_main.c t_tkcmd.c GOBJ = $(GSRC:.c=.o) # 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: pd gui externs all all: $(BIN_DIR)/$(GUINAME) $(PDEXEC) $(BIN_DIR)/$(PID) $(BIN_DIR)/pdsend \ $(BIN_DIR)/pdreceive $(BIN_DIR)/pd.tk bin: $(PDEXEC) $(BIN_DIR)/$(PID) $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend \ $(BIN_DIR)/pdreceive $(BIN_DIR)/pd.tk $(OBJ) : %.o : %.c $(CC) $(CFLAGS) $(GFLAGS) -c -o $(OBJ_DIR)/$*.o $*.c $(GOBJ) : %.o : %.c $(CC) $(CFLAGS) $(GFLAGS) $(GINCLUDE) -c -o $(OBJ_DIR)/$*.o $*.c $(ASIOOBJ): %.o : %.cpp $(CXX) $(CFLAGS) -c -o $(OBJ_DIR)/$*.o $*.cpp pd: $(PDEXEC) gui: $(BIN_DIR)/$(GUINAME) pd-watchdog: $(BIN_DIR)/pd-watchdog $(BIN_DIR): test -d $(BIN_DIR) || mkdir -p $(BIN_DIR) $(BIN_DIR)/pd-watchdog: s_watchdog.c $(BIN_DIR) $(CC) $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog s_watchdog.c $(BIN_DIR)/pdsend: u_pdsend.c $(BIN_DIR) $(CC) $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pdsend u_pdsend.c $(LIB) $(BIN_DIR)/pdreceive: u_pdreceive.c $(BIN_DIR) $(CC) $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pdreceive u_pdreceive.c $(LIB) $(BIN_DIR)/pd: $(OBJ) $(BIN_DIR) cd ../obj; $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $(OBJ) \ $(LIB) $(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC) cd $(OBJ_DIR); $(CC) $(CFLAG) $(LIB) -o $(BIN_DIR)/$(GUINAME) $(GOBJ) \ $(GLIB) $(BIN_DIR)/pd.tk: u_main.tk cp u_main.tk $(BIN_DIR)/pd.tk #this is for Max OSX only... $(BIN_DIR)/libPdTcl.dylib: $(GOBJ) $(GSRC) cd $(OBJ_DIR) && $(CC) $(CFLAGS) -dynamiclib -read_only_relocs warning \ -o $(BIN_DIR)/libPdTcl.dylib $(GOBJ) \ -F@TCLTK_FRAMEWORKS_PATH@ \ -framework Tcl -framework Tk -framework System \ -Wl,-install_name,@executable_path/../Resources/bin/libPdTcl.dylib install_name_tool -change @TCLTK_FRAMEWORKS_PATH@/Tcl.framework/Versions/8.4/Tcl\ @executable_path/../Frameworks/Tcl.framework/Versions/8.4/Tcl \ -change @TCLTK_FRAMEWORKS_PATH@/Tk.framework/Versions/8.4/Tk \ @executable_path/../Frameworks/Tk.framework/Versions/8.4/Tk \ ../bin/libPdTcl.dylib # this is for mingw /cygwin $(BIN_DIR)/pd.com: s_entry.o cd $(OBJ_DIR); $(CC) $(LDFLAGS) -o pd.com s_entry.o $(LIBS) \ -L$(BIN_DIR) -lpd; $(STRIP) -s pd.com cp $(OBJ_DIR)/pd.com $(BIN_DIR) $(BIN_DIR)/pdtcl.dll: $(GOBJ) cd $(BIN_DIR); dllwrap $(CFLAGS) --output-def pdtcl.def \ --output-lib=pdtcl.a --dllname=pdtcl.dll $(OBJ_DIR)/t_tkcmd.o $(LIB) $(GLIB) strip --strip-unneeded $(BIN_DIR)/pdtcl.dll $(BIN_DIR)/pd.exe: pd.dll pd.exe pd.exe: $(OBJ) $(BIN_DIR) cd $(OBJ_DIR); $(CC) $(CFLAGS) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) s_entry.o $(LIB) \ -L$(BIN_DIR) -lpd $(STRIP) -s $(BIN_DIR)/pd.exe pd.dll: $(OBJ) $(ASIOOBJ) cd $(OBJ_DIR); $(CXX) -shared $(LDFLAGS) -o pd.dll -mno-cygwin $(OBJ) $(ASIOOBJ) $(LIB) \ -Wl,--export-all-symbols -Wl,--out-implib=pd.a; $(STRIP) $(OBJ_DIR)/pd.dll cp $(OBJ_DIR)/pd.dll $(BIN_DIR) externs: cd ../extra/bonk~;make @EXTERNTARGET@ cd ../extra/choice;make @EXTERNTARGET@ cd ../extra/expr~;make @EXTERNTARGET@ cd ../extra/fiddle~;make @EXTERNTARGET@ cd ../extra/loop~;make @EXTERNTARGET@ cd ../extra/lrshift~;make @EXTERNTARGET@ cd ../extra/pique;make @EXTERNTARGET@ cd ../extra/sigmund~;make @EXTERNTARGET@ BINARYMODE=@binarymode@ ABOUT_FILE=$(pddocdir)/1.manual/1.introduction.txt install: all install -d $(libpdbindir) install $(BIN_DIR)/$(GUINAME) $(libpdbindir)/$(GUINAME) install $(BIN_DIR)/$(PID) $(libpdbindir)/$(PID) install -m644 $(BIN_DIR)/pd.tk $(libpdbindir)/pd.tk install -d $(DESTDIR)$(bindir) install $(BINARYMODE) $(PDEXEC) $(DESTDIR)$(bindir)/$(PDEXEC) install -m755 $(BIN_DIR)/pdsend $(DESTDIR)$(bindir)/pdsend install -m755 $(BIN_DIR)/pdreceive $(DESTDIR)$(bindir)/pdreceive for dir in $(shell ls -1 ../doc | grep -v CVS); do \ echo "installing $$dir"; \ install -d $(pddocdir)/$$dir ; \ install -p ../doc/$$dir/*.* $(pddocdir)/$$dir ; \ done for dir in $(shell ls -1 ../doc/7.stuff | grep -v CVS); do \ echo "installing 7.stuff/$$dir"; \ install -d $(pddocdir)/7.stuff/$$dir ; \ install -p ../doc/7.stuff/$$dir/*.* $(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 cp -pr ../extra $(libpddir)/ rm -f $(libpddir)/extra/*/*.o install -d $(DESTDIR)$(includedir) install -m644 m_pd.h $(DESTDIR)$(includedir)/m_pd.h install -d $(DESTDIR)$(mandir)/man1 gzip < ../man/pd.1 > $(DESTDIR)$(mandir)/man1/pd.1.gz chmod 644 $(DESTDIR)$(mandir)/man1/pd.1.gz gzip < ../man/pdsend.1 > $(DESTDIR)$(mandir)/man1/pdsend.1.gz chmod 644 $(DESTDIR)$(mandir)/man1/pdsend.1.gz gzip < ../man/pdreceive.1 > $(DESTDIR)$(mandir)/man1/pdreceive.1.gz chmod 644 $(DESTDIR)$(mandir)/man1/pdreceive.1.gz ifeq (CYGWIN_NT-5.1,$(UNAME)) @echo "copying $(UNAME) libs" cp /bin/cygwin1.dll $(DESTDIR)/bin cp /bin/tcl84.dll $(DESTDIR)/bin cp /bin/tk84.dll $(DESTDIR)/bin cp /bin/tclsh84.exe $(DESTDIR)/bin cp /bin/wish84.exe $(DESTDIR)/bin cp /bin/tclpip84.dll $(DESTDIR)/bin cp -pr /cygdrive/c/MinGW/lib/tk8.4 $(DESTDIR)/share/ cp -pr /cygdrive/c/MinGW/lib/tcl8.4 $(DESTDIR)/share/ endif @echo "Pd install succeeded." local-clean: -rm -f ../obj/* $(BIN_DIR)/pd* $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend* \ $(BIN_DIR)/pdreceive* $(BIN_DIR)/$(PID) m_stamp.c -rm -f `find ../portaudio -name "*.o"` -rm -f *~ -(cd ../doc/6.externs; rm -f *.pd_linux; rm -f *.dll) -rm -f makefile.dependencies touch makefile.dependencies chmod 666 makefile.dependencies extra-clean: -rm -f `find ../extra/ -name "*.pd_*"` -rm -f `find ../extra/ -name "*.dll*"` -rm -f tags clean: extra-clean local-clean distclean: clean -rm -f config.cache config.log config.status makefile tags \ autom4te.cache/output.* autom4te.cache/traces.* autom4te.cache/requests -rmdir autom4te.cache -rm -rf autom4te-*.cache tags: $(SRC) $(GSRC); ctags *.[ch] depend: makefile.dependencies makefile.dependencies: makefile $(CC) $(CFLAGS) -M $(SRC) > makefile.dependencies uninstall: rm -f -r $(libpddir) rm -f $(DESTDIR)$(bindir)/pd rm -f $(DESTDIR)$(bindir)/pdsend rm -f $(DESTDIR)$(bindir)/pdreceive rm -f $(DESTDIR)$(includedir)/m_pd.h rm -f $(DESTDIR)$(mandir)/man1/pd.1.gz rm -f $(DESTDIR)$(mandir)/man1/pdsend.1.gz rm -f $(DESTDIR)$(mandir)/man1/pdreceive.1.gz include makefile.dependencies